decocms 4.377.0 → 4.378.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-BpGw--vV.js → AlertCircle-BL9C11v5.js} +1 -1
- package/dist/client/assets/{AreaChart-DVh_2CwD.js → AreaChart-BCsb1eiZ.js} +1 -1
- package/dist/client/assets/{ArrowLeft-BBVlcmSt.js → ArrowLeft-TUZw6Woj.js} +1 -1
- package/dist/client/assets/{ArrowRight-uJGmmnv8.js → ArrowRight-BV-Z5nWg.js} +1 -1
- package/dist/client/assets/{ArrowUp-CoAUqmuY.js → ArrowUp-DcL5fPvo.js} +1 -1
- package/dist/client/assets/{CartesianChart-BgA0Qtuf.js → CartesianChart-C8E3Kw-7.js} +1 -1
- package/dist/client/assets/{CheckCircle-ETp2UGkq.js → CheckCircle-Dl7A-bG0.js} +1 -1
- package/dist/client/assets/{ChevronUp-iqE9pTFp.js → ChevronUp-bb9oyJa0.js} +1 -1
- package/dist/client/assets/{Copy01--en4dKgi.js → Copy01-Dn4l-4a-.js} +1 -1
- package/dist/client/assets/{CreditCard01-CF04wUbq.js → CreditCard01-XNOZWeGM.js} +1 -1
- package/dist/client/assets/{DotsVertical-Dl7YYUvF.js → DotsVertical-Dt4wv0EU.js} +1 -1
- package/dist/client/assets/{Download01-CZ-cWwqe.js → Download01-iMp1Qx1F.js} +1 -1
- package/dist/client/assets/{ErrorBarContext-C_51j9Ff.js → ErrorBarContext-l-kn9PLx.js} +1 -1
- package/dist/client/assets/{Eye-BL52dF4t.js → Eye-3KuA1Y7O.js} +1 -1
- package/dist/client/assets/{Globe01-D-xqqC1P.js → Globe01-BNKnmHqV.js} +1 -1
- package/dist/client/assets/{Globe04-CnGbH-w4.js → Globe04-0q2xP2kX.js} +1 -1
- package/dist/client/assets/{Image01-D3fbwb1A.js → Image01-CEn4L9qZ.js} +1 -1
- package/dist/client/assets/{Key01-BRHz0J7i.js → Key01-Crg-gzCo.js} +1 -1
- package/dist/client/assets/{LayoutLeft-BR9B9Uz4.js → LayoutLeft-C-m_bDFS.js} +1 -1
- package/dist/client/assets/{Line-BXRvqz0O.js → Line-DJxwfsSL.js} +1 -1
- package/dist/client/assets/{Link01-CIdGrv0f.js → Link01-Bh8XxL8g.js} +1 -1
- package/dist/client/assets/{LinkExternal01-fMLHNRBT.js → LinkExternal01-C6vmvib1.js} +1 -1
- package/dist/client/assets/{Monitor01-CUm8GJYb.js → Monitor01-Dzd2i2TD.js} +1 -1
- package/dist/client/assets/{Package-BeI4XESV.js → Package-zRgcryK5.js} +1 -1
- package/dist/client/assets/{Palette-BOYmXu66.js → Palette-BPlCKhxV.js} +1 -1
- package/dist/client/assets/{Play-BoxOAYQY.js → Play-HTakcWif.js} +1 -1
- package/dist/client/assets/{Plus-B0XT7kf8.js → Plus-BjUVJgIK.js} +1 -1
- package/dist/client/assets/{SearchLg-BlJaD9eR.js → SearchLg-b9Yg6t2Y.js} +1 -1
- package/dist/client/assets/{SearchMd-B8DQYRPW.js → SearchMd-DbrPLKwX.js} +1 -1
- package/dist/client/assets/{Sector-p8z_kA8J.js → Sector-BxuPFiQ1.js} +1 -1
- package/dist/client/assets/{Settings02-CnHgg4-R.js → Settings02-Cfj0U0no.js} +1 -1
- package/dist/client/assets/{Share07-BLTCTwud.js → Share07-q4yqk4wN.js} +1 -1
- package/dist/client/assets/{Stars01-LCEyBl5Z.js → Stars01-zx4PrHn4.js} +1 -1
- package/dist/client/assets/{Sun-Dcl1Qw_c.js → Sun-DxH7Ufsz.js} +1 -1
- package/dist/client/assets/{Tool01-aYyiPW8-.js → Tool01-CxNPwJlb.js} +1 -1
- package/dist/client/assets/{Tool02-CPIWbRhH.js → Tool02-DQfCYGH0.js} +1 -1
- package/dist/client/assets/{Trash01-O1aZhBi7.js → Trash01-CRMYtUIf.js} +1 -1
- package/dist/client/assets/{TrendUp01-Bag9pnaT.js → TrendUp01-CSfieBqS.js} +1 -1
- package/dist/client/assets/{Upload01-CUPYDw9I.js → Upload01-B7KGq2Xu.js} +1 -1
- package/dist/client/assets/{User01-CZOhVcFU.js → User01-BaBASwac.js} +1 -1
- package/dist/client/assets/{UserSquare-xY7aCsvJ.js → UserSquare-jWZ4K295.js} +1 -1
- package/dist/client/assets/{Users01-BPs9TI2M.js → Users01-DZM8fE-C.js} +1 -1
- package/dist/client/assets/{X-x1f6IJn8.js → X-DrgZ2IHU.js} +1 -1
- package/dist/client/assets/{XCircle-bhS1DjQq.js → XCircle-D-Ljd-mw.js} +1 -1
- package/dist/client/assets/{XClose-DJX__swp.js → XClose-CwSiPt5t.js} +1 -1
- package/dist/client/assets/{Zap-CfJC6pES.js → Zap-CJL5AQoB.js} +1 -1
- package/dist/client/assets/{ZoomOut-BXSD96xb.js → ZoomOut-CkEHdkkv.js} +1 -1
- package/dist/client/assets/{access-gate-CIxYybF1.js → access-gate-ApTW_ZBN.js} +1 -1
- package/dist/client/assets/{add-connection-dialog-BP7iM-9U.js → add-connection-dialog-DAMZAdjf.js} +1 -1
- package/dist/client/assets/{agent-analytics-gmwKv0wU.js → agent-analytics-CyPBDf01.js} +1 -1
- package/dist/client/assets/agent-app-mOzGwpWw.js +1 -0
- package/dist/client/assets/{agent-assets-CJkjsRGZ.js → agent-assets-CLHeNP70.js} +1 -1
- package/dist/client/assets/{agent-automation-CKv85wVR.js → agent-automation-BRedTzhp.js} +1 -1
- package/dist/client/assets/{agent-automations-dWdakcNy.js → agent-automations-D65B39vC.js} +1 -1
- package/dist/client/assets/{agent-connect-sources-DuEfOhDE.js → agent-connect-sources-DwOg9602.js} +1 -1
- package/dist/client/assets/agent-deck-DiylZjYN.js +1 -0
- package/dist/client/assets/{agent-e2e-DngESQK5.js → agent-e2e-CTi5nqOc.js} +1 -1
- package/dist/client/assets/{agent-experiments-DndV4qWf.js → agent-experiments-lSFgWzEh.js} +1 -1
- package/dist/client/assets/agent-file-CEXQLvN-.js +1 -0
- package/dist/client/assets/{agent-git-Bun_byZu.js → agent-git-BlXHgqe0.js} +1 -1
- package/dist/client/assets/{agent-hosting-_yuR1DpC.js → agent-hosting-CjVegYqO.js} +1 -1
- package/dist/client/assets/{agent-icon-DfdSMHk3.js → agent-icon-BpV8H0Kb.js} +1 -1
- package/dist/client/assets/agent-library-file-Cnj_s_ZV.js +1 -0
- package/dist/client/assets/{agent-monitor-BePlvtxo.js → agent-monitor-C39p1dMa.js} +1 -1
- package/dist/client/assets/{agent-overview-D-xUFh5m.js → agent-overview-Dw5ZPOKa.js} +1 -1
- package/dist/client/assets/agent-settings-CoVnhy6_.js +1 -0
- package/dist/client/assets/agent-site-editor-Bly4gEXY.js +24 -0
- package/dist/client/assets/agent-site-editor-code-Dsipxnbb.js +2 -0
- package/dist/client/assets/{agent-site-editor-content-Dtl21q2k.js → agent-site-editor-content-oAD5ERex.js} +2 -2
- package/dist/client/assets/{agent-site-editor-preview-D4tdhz1h.js → agent-site-editor-preview-DMY-bRXd.js} +3 -3
- package/dist/client/assets/agent-view-fqs1B853.js +1 -0
- package/dist/client/assets/{agent-view-guard-BtbjAA1B.js → agent-view-guard-NlE6Cpah.js} +1 -1
- package/dist/client/assets/{agents-list-Dt2PPUuO.js → agents-list-iVlh68DJ.js} +1 -1
- package/dist/client/assets/{ai-providers-C-TXNfNO.js → ai-providers-BA415uVk.js} +1 -1
- package/dist/client/assets/{alert-dialog-CqnandRo.js → alert-dialog-CEnBoihu.js} +1 -1
- package/dist/client/assets/{alert-B2kqVKWb.js → alert-nZf0wg2B.js} +1 -1
- package/dist/client/assets/{api-keys-DSPf-tM3.js → api-keys-CNPQdajZ.js} +1 -1
- package/dist/client/assets/api-keys-YFO0QnLb.js +1 -0
- package/dist/client/assets/app-editor-zj6N2Lm8.js +1 -0
- package/dist/client/assets/{asset-utils-BT4Ne0sM.js → asset-utils-HbMTuFLs.js} +1 -1
- package/dist/client/assets/{auth-B51j9jUd.js → auth-CKq_yfpj.js} +1 -1
- package/dist/client/assets/{auth-catchall-sRD64Ua_.js → auth-catchall-CmYjgstL.js} +1 -1
- package/dist/client/assets/{auth-entry-DM-t9BR_.js → auth-entry-Dll4-psh.js} +1 -1
- package/dist/client/assets/{auth-split-layout-DhgxwIyv.js → auth-split-layout-ozxyHiR-.js} +1 -1
- package/dist/client/assets/{authenticate-and-persist-oauth-Du-8ZY-3.js → authenticate-and-persist-oauth-DStZKch8.js} +1 -1
- package/dist/client/assets/{automation-list-row-DUyTkYnj.js → automation-list-row-SV4qEKuR.js} +1 -1
- package/dist/client/assets/{automation-runs-iliFo_Lf.js → automation-runs-BC4AfZCr.js} +1 -1
- package/dist/client/assets/{automations-Bw4S0ob0.js → automations-BFk3tCRs.js} +1 -1
- package/dist/client/assets/{autosend-CVFKErlq.js → autosend-TBNFb-yT.js} +1 -1
- package/dist/client/assets/{avatar-CTtVGSeH.js → avatar-BDUloavG.js} +1 -1
- package/dist/client/assets/{badge-Bn4xdWKf.js → badge-DuL4ETl9.js} +1 -1
- package/dist/client/assets/{block-document-DcjBpFtX.js → block-document-BYxITRZz.js} +1 -1
- package/dist/client/assets/{blocks-preview-workspace-context-CE4TkRwM.js → blocks-preview-workspace-context-CcEzS5re.js} +1 -1
- package/dist/client/assets/{breadcrumb-DZSBetBn.js → breadcrumb-CeAmNahf.js} +1 -1
- package/dist/client/assets/{buckets-CfuKv1Yu.js → buckets-Cbnkelsv.js} +1 -1
- package/dist/client/assets/{build-improve-prompt-doc-CnzelPJa.js → build-improve-prompt-doc-CbVfRpur.js} +1 -1
- package/dist/client/assets/{bulk-category-panel-DriiAxWT.js → bulk-category-panel-BbsQR7pn.js} +1 -1
- package/dist/client/assets/{calendar-TTCnbmpS.js → calendar-DX5Za7yg.js} +1 -1
- package/dist/client/assets/{capability-load-error-BqupCjyY.js → capability-load-error-ClI5KIrr.js} +1 -1
- package/dist/client/assets/category-editor-BPPX0THU.js +1 -0
- package/dist/client/assets/{chart-0rI7XswZ.js → chart-BeW96Xyg.js} +1 -1
- package/dist/client/assets/{chat-context-bDkom7PB.js → chat-context-DULfSCD5.js} +1 -1
- package/dist/client/assets/{chat-draft-DmLylIfC.js → chat-draft-CEYNAfUq.js} +1 -1
- package/dist/client/assets/{checkbox-DguCm5iq.js → checkbox-_DYgtxp0.js} +1 -1
- package/dist/client/assets/{choose-editor-BkDCbLK_.js → choose-editor-CauIefX-.js} +1 -1
- package/dist/client/assets/{cli-auth-success-DH7kWVXp.js → cli-auth-success-BtgfCOuS.js} +1 -1
- package/dist/client/assets/{client-icons-DvtvjJpb.js → client-icons-zdNSJEEn.js} +1 -1
- package/dist/client/assets/{collapsible-CU2r5Cts.js → collapsible---A-jh-n.js} +1 -1
- package/dist/client/assets/{collection-detail-BeZE_OzU.js → collection-detail-BqKQO8JF.js} +1 -1
- package/dist/client/assets/{collection-display-button-facophLz.js → collection-display-button-C8OBiIuA.js} +1 -1
- package/dist/client/assets/{collection-search-D4IWKZBl.js → collection-search-BPekTu5Q.js} +1 -1
- package/dist/client/assets/{collection-table-wrapper-CKRTLUNR.js → collection-table-wrapper-LBsnn_CU.js} +1 -1
- package/dist/client/assets/{collection-tabs-DuZ3-S7z.js → collection-tabs-Djj9-mzS.js} +1 -1
- package/dist/client/assets/{combobox-5xSVBVf2.js → combobox-_VPjsPr7.js} +1 -1
- package/dist/client/assets/{command-Bgz8JJH0.js → command-B5HRG-qx.js} +1 -1
- package/dist/client/assets/{companion-mcps-section-D8OUnB38.js → companion-mcps-section-BuA06R5b.js} +1 -1
- package/dist/client/assets/{connect-2dCioIhn.js → connect-DtRIpCDv.js} +1 -1
- package/dist/client/assets/{connect-layout-nlesAGLA.js → connect-layout-FslM2t-i.js} +1 -1
- package/dist/client/assets/{connection-DH9btBfI.js → connection-DlXZEqsN.js} +1 -1
- package/dist/client/assets/{connection-card-DdYTI-Nb.js → connection-card-D-l0MD9k.js} +1 -1
- package/dist/client/assets/{connection-detail-DTaKY7hs.js → connection-detail-r5iK6FaZ.js} +1 -1
- package/dist/client/assets/{connection-form-helpers-I8o9oFyO.js → connection-form-helpers-Bmo7KEqX.js} +1 -1
- package/dist/client/assets/{connections-Cma51BMt.js → connections-dt9Je8G_.js} +1 -1
- package/dist/client/assets/{create-organization-dialog-BRJel0ET.js → create-organization-dialog-BLROZtzP.js} +1 -1
- package/dist/client/assets/{decofile-api-kxpv61v3.js → decofile-api-kAUyINZr.js} +1 -1
- package/dist/client/assets/{decopilot-DItMbQCu.js → decopilot-uHjtkyFB.js} +1 -1
- package/dist/client/assets/{dialog-DqR4X4jD.js → dialog-BJW64_pz.js} +1 -1
- package/dist/client/assets/{discover-C5CHE7rM.js → discover-CzGsx9DW.js} +1 -1
- package/dist/client/assets/{domain-settings-DUVdv8iq.js → domain-settings-Bdrgl21H.js} +1 -1
- package/dist/client/assets/{download-app-dialog-DBq9OIW-.js → download-app-dialog-BXRsjbOU.js} +1 -1
- package/dist/client/assets/{drawer-DcltEitH.js → drawer-CA10Cx7y.js} +1 -1
- package/dist/client/assets/{editor-D7IDrZ5A.js → editor-C1ywYtVp.js} +1 -1
- package/dist/client/assets/{empty-state-Co5qq3oI.js → empty-state-ClQL-f6j.js} +1 -1
- package/dist/client/assets/{empty-state-DIzR_wr9.js → empty-state-Dlx610Ei.js} +1 -1
- package/dist/client/assets/{extract-connection-data-DZuvEegC.js → extract-connection-data-Gt9dSRWj.js} +1 -1
- package/dist/client/assets/{feature-gate-Cx8YkCCu.js → feature-gate-CmEcE6-E.js} +1 -1
- package/dist/client/assets/{feature-paywall-DZigtnb6.js → feature-paywall-CrsknzkG.js} +1 -1
- package/dist/client/assets/{file-explorer-qGPjaegg.js → file-explorer-CNYg6RIh.js} +1 -1
- package/dist/client/assets/{file-preview-B2nEfu5l.js → file-preview-Ds5U_YIc.js} +1 -1
- package/dist/client/assets/{file-share-button-DZqsZ8jc.js → file-share-button-Bka3waFe.js} +1 -1
- package/dist/client/assets/{file-type-icon-DoCd9H0G.js → file-type-icon-CFqni3Pt.js} +1 -1
- package/dist/client/assets/{folder-icon-CXxjmxd3.js → folder-icon-ClSesIJT.js} +1 -1
- package/dist/client/assets/{form-Co95Q_Yg.js → form-PqqHm2ke.js} +1 -1
- package/dist/client/assets/{gateway-client-BpNIm5Jn.js → gateway-client-1Q0B7yUT.js} +1 -1
- package/dist/client/assets/{general-DmEpfTOj.js → general-Ds1cv5sP.js} +1 -1
- package/dist/client/assets/{github-icon-DRbuJmJM.js → github-icon-DWCqyx5T.js} +1 -1
- package/dist/client/assets/{home-Ui_P1zNp.js → home-BR3CYkzh.js} +1 -1
- package/dist/client/assets/{hooks-CEOxduy2.js → hooks-7pWlJVDL.js} +1 -1
- package/dist/client/assets/{hooks-Bm0239iZ.js → hooks-Cd7x818_.js} +1 -1
- package/dist/client/assets/{icon-button-CUavSbqA.js → icon-button-Bk7-zdBH.js} +1 -1
- package/dist/client/assets/{index-DEuBeZyZ.js → index-62BdN9Ut.js} +1 -1
- package/dist/client/assets/{index-HN5gToi8.js → index-B4qGPwHI.js} +1 -1
- package/dist/client/assets/{index-Ccb8J2-u.js → index-BFMwAh_0.js} +1 -1
- package/dist/client/assets/{index-CmhYNoiR.js → index-Bc_L0MMf.js} +1 -1
- package/dist/client/assets/{index-DezIICsH.js → index-BloKHCFa.js} +1 -1
- package/dist/client/assets/{index-Dg9ofyOC.js → index-CE75dRQm.js} +1 -1
- package/dist/client/assets/{index-CYOjzKwG.js → index-CjQWIUB0.js} +9 -9
- package/dist/client/assets/{index-eG2IWUX5.js → index-D-TKqkm8.js} +1 -1
- package/dist/client/assets/{index-CP_l4FUF.js → index-D5GksOol.js} +1 -1
- package/dist/client/assets/{index-2LLbB-lb.js → index-DB5ywwwN.js} +1 -1
- package/dist/client/assets/{index-B6dWWluW.js → index-DMLW-bKi.js} +1 -1
- package/dist/client/assets/{index-DoQDGqwe.js → index-DOIParHz.js} +1 -1
- package/dist/client/assets/{index-CWHIV6oZ.js → index-DQYXHmk_.js} +1 -1
- package/dist/client/assets/{index-redirect-BrDjHxW8.js → index-redirect-ad5yNpaJ.js} +1 -1
- package/dist/client/assets/{index-YFgkZJZa.js → index-xG65Tv25.js} +1 -1
- package/dist/client/assets/{infiniteQueryObserver-Bh30DgM5.js → infiniteQueryObserver-Af1XrGxW.js} +1 -1
- package/dist/client/assets/{infra-billing-B9q0Y09E.js → infra-billing-B49h8jGh.js} +1 -1
- package/dist/client/assets/{input-Dh-XqN1D.js → input-D89CfzOY.js} +1 -1
- package/dist/client/assets/{input-DsiBTQvq.js → input-Djk7_c4C.js} +1 -1
- package/dist/client/assets/{input-D0QZTiCP.js → input-x7HdNC4u.js} +1 -1
- package/dist/client/assets/{integration-icon-51fv1ZD9.js → integration-icon-B1mADLb6.js} +1 -1
- package/dist/client/assets/{label-D5WrAAlW.js → label-C3pyZMIz.js} +1 -1
- package/dist/client/assets/{last-preview-page-BXmf8KT4.js → last-preview-page-BNpv-zpc.js} +1 -1
- package/dist/client/assets/{layout-Bt9GDku1.js → layout-DeMvB5F_.js} +1 -1
- package/dist/client/assets/{legacy-agents-deep-DXqm-_4D.js → legacy-agents-deep-qXc7zhtl.js} +1 -1
- package/dist/client/assets/{legacy-main-redirect-DUnphxj9.js → legacy-main-redirect-Bdm09hjr.js} +1 -1
- package/dist/client/assets/{library-G0Z3LZYZ.js → library-BokZ1AIy.js} +1 -1
- package/dist/client/assets/{login-BOvlg5d3.js → login-C9rpjQul.js} +1 -1
- package/dist/client/assets/{markdown-B8bZJCAc.js → markdown-CmV6VyeN.js} +1 -1
- package/dist/client/assets/{mcp-app-renderer-DrhwVs_O.js → mcp-app-renderer-CZXE8Q2L.js} +1 -1
- package/dist/client/assets/{mcp-oauth-DYbEQhpI.js → mcp-oauth-vwa44Lu2.js} +1 -1
- package/dist/client/assets/{members-Dr93JJNd.js → members-tiUutfvd.js} +1 -1
- package/dist/client/assets/{message-templates-bV4CIdDO.js → message-templates-ztimz7-8.js} +1 -1
- package/dist/client/assets/{mini-report-page-BPw9qVKi.js → mini-report-page-BU5QVlVY.js} +1 -1
- package/dist/client/assets/{mock-board-CWk29Gb2.js → mock-board-CYGeAeWm.js} +3 -3
- package/dist/client/assets/{monaco-editor-BdguqmZl.js → monaco-editor-BnSB3UlK.js} +1 -1
- package/dist/client/assets/{monitoring-stats-row-CkbBz1UJ.js → monitoring-stats-row-C_3OByxZ.js} +1 -1
- package/dist/client/assets/{multi-select-DzRx1K38.js → multi-select-D2lhtEI_.js} +1 -1
- package/dist/client/assets/{mustache-CMyVHRRJ.js → mustache-B8ouMKD_.js} +1 -1
- package/dist/client/assets/{oauth-callback-ClmQEIKF.js → oauth-callback-5b15t98P.js} +1 -1
- package/dist/client/assets/{oauth-callback-ai-provider-BEcODIVJ.js → oauth-callback-ai-provider-B5ZOTUG2.js} +1 -1
- package/dist/client/assets/{onboarding-CGzZ0sv3.js → onboarding-BiG1CXWT.js} +1 -1
- package/dist/client/assets/{optimistic-project-sidebar-views-Cgmf7zN9.js → optimistic-project-sidebar-views-BP6ahYVp.js} +1 -1
- package/dist/client/assets/{org-file-open-context-DTalcU5B.js → org-file-open-context-Crt2BXIO.js} +1 -1
- package/dist/client/assets/{organization-choice-D-JcqdGW.js → organization-choice-uSI3Hvk_.js} +1 -1
- package/dist/client/assets/{orgs-BtMMolaf.js → orgs-DVuGQ4r0.js} +1 -1
- package/dist/client/assets/{page-seo-form-DgcBoMvO.js → page-seo-form-DAS2k5dJ.js} +1 -1
- package/dist/client/assets/{pair-DemjNpBj.js → pair-rZlEea28.js} +1 -1
- package/dist/client/assets/{plan-ladder-BAj8pVXN.js → plan-ladder-Z3EBG2QJ.js} +1 -1
- package/dist/client/assets/{popover-BDsdyOa0.js → popover-qR-A91mO.js} +1 -1
- package/dist/client/assets/{post-calendar-DcQoeE7n.js → post-calendar-CPQnSzEI.js} +1 -1
- package/dist/client/assets/{post-editor-B4rRC8Z0.js → post-editor-CvxwbvhC.js} +1 -1
- package/dist/client/assets/{preview-content-lWpEisgY.js → preview-content-BoKQ4lvh.js} +1 -1
- package/dist/client/assets/{preview-dialog-CGjkTXFC.js → preview-dialog-BLXSWbJM.js} +1 -1
- package/dist/client/assets/{primitives-mwl1HK2Q.js → primitives-CXvEunpg.js} +1 -1
- package/dist/client/assets/{profile-C6XwXDvx.js → profile-DioTORUW.js} +1 -1
- package/dist/client/assets/{project-app-view-CeQOBEDv.js → project-app-view-CH0NcGlm.js} +1 -1
- package/dist/client/assets/{project-feed-DZGrJGjO.js → project-feed-DWV2Ijqa.js} +1 -1
- package/dist/client/assets/{project-icon-CYFTX0ei.js → project-icon-Bhvhs0Sb.js} +1 -1
- package/dist/client/assets/project-reports-GFbxxtyO.js +1 -0
- package/dist/client/assets/project-tasks-Co3kTouv.js +1 -0
- package/dist/client/assets/{prompts-Dv-GcOvr.js → prompts-63xdIpGm.js} +1 -1
- package/dist/client/assets/record-editor-CNHZphC1.js +1 -0
- package/dist/client/assets/{redirect-editor-BdjRJxFl.js → redirect-editor-DcEiXWVP.js} +1 -1
- package/dist/client/assets/registry-B-BoWinl.js +2 -0
- package/dist/client/assets/{registry-layout-BMafZ5yV.js → registry-layout-B_NSu6Ni.js} +1 -1
- package/dist/client/assets/{reports-FHtNLX4Y.js → reports-4M5W5fE_.js} +1 -1
- package/dist/client/assets/reports-Bu9LJ9Ir.js +1 -0
- package/dist/client/assets/{reports-onboarding-cDW-coF4.js → reports-onboarding-Q9OPS-W6.js} +1 -1
- package/dist/client/assets/{reports-tab-DRrkUjk6.js → reports-tab-BaZkX-oW.js} +2 -2
- package/dist/client/assets/{repositories-BhilcMMp.js → repositories-0g4CNguU.js} +1 -1
- package/dist/client/assets/{repository-import-picker-Bax0Ys6D.js → repository-import-picker-BaIAm8RZ.js} +1 -1
- package/dist/client/assets/{repository-picker-Bn8vQeF9.js → repository-picker-H-yjRtBz.js} +1 -1
- package/dist/client/assets/{require-capability-DJvejuvq.js → require-capability-BtBUl5HB.js} +1 -1
- package/dist/client/assets/{required-auth-layout-DijuWP2w.js → required-auth-layout-CveQBep9.js} +1 -1
- package/dist/client/assets/{reset-password-DglLwMaI.js → reset-password-CG3hWwFA.js} +1 -1
- package/dist/client/assets/{resizable-B7owW6MA.js → resizable-CV3Zt6hw.js} +1 -1
- package/dist/client/assets/{review-settings-CXfVBzZC.js → review-settings-BZvEKnql.js} +1 -1
- package/dist/client/assets/{rich-text-link-control-CyCGWHOW.js → rich-text-link-control-DSAdUuWs.js} +1 -1
- package/dist/client/assets/{roles-ejZYkZ6t.js → roles-D2QfWwJI.js} +1 -1
- package/dist/client/assets/{route-BJXtplSb.js → route--MqbvbyV.js} +1 -1
- package/dist/client/assets/{route-DtQGV8Z2.js → route-Du7d3cDr.js} +1 -1
- package/dist/client/assets/{route-ChK4fAMe.js → route-mAV3gllf.js} +1 -1
- package/dist/client/assets/{route-page-header-B-rxUb24.js → route-page-header-B6RMBdio.js} +1 -1
- package/dist/client/assets/{runnable-block-editor-BQFY4Ksm.js → runnable-block-editor-Da1CFdE3.js} +1 -1
- package/dist/client/assets/{sandbox-lifecycle-context-AQUs6AFU.js → sandbox-lifecycle-context-7XEpsGyB.js} +1 -1
- package/dist/client/assets/{schema-C4X_eAAo.js → schema-CDnRKndH.js} +1 -1
- package/dist/client/assets/{scroll-area-Du8UsKeI.js → scroll-area-Bd3Jch8g.js} +1 -1
- package/dist/client/assets/{search-input-CM184Dyg.js → search-input-87g5mPOs.js} +1 -1
- package/dist/client/assets/{search-toggle-h5tgNilJ.js → search-toggle-BDiBVbuX.js} +1 -1
- package/dist/client/assets/{secrets-C-lTnGEG.js → secrets-Bvj_mEwv.js} +1 -1
- package/dist/client/assets/{sections-editor-D0m9PhGS.js → sections-editor-DmpkPzb4.js} +1 -1
- package/dist/client/assets/{select-g-w30c24.js → select-CoXQnVLL.js} +1 -1
- package/dist/client/assets/{select-model-gEzliQOG.js → select-model-Wm7faOLQ.js} +1 -1
- package/dist/client/assets/{seo-editor-BPo4kRlr.js → seo-editor-CPsuMHdn.js} +1 -1
- package/dist/client/assets/{separator-7sui0Fav.js → separator-DQ0-uLKs.js} +1 -1
- package/dist/client/assets/{settings-tab-CfC2MRU1.js → settings-tab-ChP_AH3u.js} +1 -1
- package/dist/client/assets/{sheet-BUl-sicB.js → sheet-tn1TcRey.js} +1 -1
- package/dist/client/assets/{shell-layout-BZqlKsir.js → shell-layout-DWdV0NI3.js} +1 -1
- package/dist/client/assets/{sidebar-CPKilcwl.js → sidebar-BUb7URWX.js} +1 -1
- package/dist/client/assets/{skill-preview-Bz3po8au.js → skill-preview-CVlIy2W9.js} +1 -1
- package/dist/client/assets/{skills-DJUf3GIG.js → skills-Krb4erdR.js} +1 -1
- package/dist/client/assets/{sso-CuVFM4fO.js → sso-Df42gDam.js} +1 -1
- package/dist/client/assets/{store-BObHOaSl.js → store-Dlzza2q4.js} +1 -1
- package/dist/client/assets/store-registry-DjpsAIwJ.js +2 -0
- package/dist/client/assets/{switch-BkWjUh3b.js → switch-qxBseLl7.js} +1 -1
- package/dist/client/assets/{synced-repos-DMBpwLPD.js → synced-repos-DqXTKrkq.js} +1 -1
- package/dist/client/assets/{table-Cgik5tMu.js → table--SjnJFTw.js} +1 -1
- package/dist/client/assets/{tabs-D6DrxGeZ.js → tabs-C6yBBVdT.js} +1 -1
- package/dist/client/assets/{task-board-2k-uoSLs.js → task-board-DQrnQAri.js} +1 -1
- package/dist/client/assets/{task-route-DrRxY0nT.js → task-route-DRhJcx7H.js} +1 -1
- package/dist/client/assets/{task-status-BhuVWcoS.js → task-status-CkoiMk-J.js} +1 -1
- package/dist/client/assets/{taskboard-analytics-BFNAPJBW.js → taskboard-analytics-BtEL_4wP.js} +1 -1
- package/dist/client/assets/{tasks-DG1OcC7g.js → tasks-CZ8ZJqTl.js} +1 -1
- package/dist/client/assets/tasks-DXoS1Ulq.js +1 -0
- package/dist/client/assets/{textarea-CovrZz8K.js → textarea-DHB5xdEY.js} +1 -1
- package/dist/client/assets/{thread-button-BB6LlWOo.js → thread-button-BBLFOVZM.js} +1 -1
- package/dist/client/assets/{thread-intent-8XYbh09e.js → thread-intent-OHNeU6ZY.js} +1 -1
- package/dist/client/assets/{thread-route-WZYEwowr.js → thread-route-BMvI62tD.js} +1 -1
- package/dist/client/assets/{thread-route-BsC8SJWi.js → thread-route-Bcs3wyQ-.js} +1 -1
- package/dist/client/assets/{thread-sheet-body-5hLxkhK5.js → thread-sheet-body-B8Zy8rxz.js} +1 -1
- package/dist/client/assets/{toggle-group-CWZE6JlL.js → toggle-group-DVkdzTSY.js} +1 -1
- package/dist/client/assets/{toolbar-icon-button-9rzGLI8m.js → toolbar-icon-button-CfzWkGOL.js} +1 -1
- package/dist/client/assets/{tooltip-BnHO0L1T.js → tooltip-BZmzyIaP.js} +1 -1
- package/dist/client/assets/{track-BbStZhrC.js → track-BBfq2yMi.js} +1 -1
- package/dist/client/assets/{types-DvShnTes.js → types-Do0xd9Aa.js} +1 -1
- package/dist/client/assets/{usage-stats-CcuLTdk3.js → usage-stats-Dlprp1eo.js} +1 -1
- package/dist/client/assets/{use-ai-providers-C3B5OJd2.js → use-ai-providers-DUUKwFbJ.js} +1 -1
- package/dist/client/assets/{use-automations-CFkOYf-5.js → use-automations-C-YX5CdN.js} +1 -1
- package/dist/client/assets/{use-autosave-CKZwfgya.js → use-autosave-BI7Ot8e2.js} +1 -1
- package/dist/client/assets/{use-connect-companion-B3ckafDg.js → use-connect-companion-GUv6wWp6.js} +1 -1
- package/dist/client/assets/{use-connection-DUVU7eGV.js → use-connection-G7yROV9s.js} +1 -1
- package/dist/client/assets/{use-copy-DY9I7P-7.js → use-copy-DN3LiCNc.js} +1 -1
- package/dist/client/assets/{use-create-virtual-mcp-Dh_o3Zx4.js → use-create-virtual-mcp-DQpZHSmH.js} +1 -1
- package/dist/client/assets/{use-date-fns-locale-BLS86No4.js → use-date-fns-locale-BflqCMZC.js} +1 -1
- package/dist/client/assets/{use-debounced-autosave-BNvvO95z.js → use-debounced-autosave-CxbqpnDi.js} +1 -1
- package/dist/client/assets/{use-debounced-value-r1XKphMG.js → use-debounced-value-BjBrwBSU.js} +1 -1
- package/dist/client/assets/{use-deco-credits-lU6JrDzK.js → use-deco-credits-CgT1oUO0.js} +1 -1
- package/dist/client/assets/{use-decopilot-events-Dp_lKIIA.js → use-decopilot-events-C5eL2vN5.js} +1 -1
- package/dist/client/assets/{use-delete-connection-HZmId2iz.js → use-delete-connection-CC_UvUh1.js} +1 -1
- package/dist/client/assets/{use-deployment-admin-Cm1UuVTX.js → use-deployment-admin-Ca4Ongb4.js} +1 -1
- package/dist/client/assets/{use-entitlements-DWxVAJxA.js → use-entitlements-D8hKWVln.js} +1 -1
- package/dist/client/assets/{use-fast-preview-draft-url-Bf_X-e_8.js → use-fast-preview-draft-url-DDaZseE8.js} +1 -1
- package/dist/client/assets/{use-file-configs-CJfLUHHE.js → use-file-configs-D9nUTPCq.js} +1 -1
- package/dist/client/assets/{use-in-settings-CAfJdjYT.js → use-in-settings-BGukubgK.js} +1 -1
- package/dist/client/assets/{use-infinite-scroll-qMPerkhe.js → use-infinite-scroll-DJtUp1if.js} +1 -1
- package/dist/client/assets/{use-join-requests-SxxM57AZ.js → use-join-requests-CRjHe8jx.js} +1 -1
- package/dist/client/assets/{use-main-panel-tabs-COVQ4Wex.js → use-main-panel-tabs-D1-yZtcm.js} +1 -1
- package/dist/client/assets/{use-mcp-auth-status-DVrXcLKB.js → use-mcp-auth-status-BoUE6vw4.js} +1 -1
- package/dist/client/assets/{use-mcp-client-CKA2sIwU.js → use-mcp-client-CC0fhC91.js} +1 -1
- package/dist/client/assets/{use-mcp-prompts-DE4REbAO.js → use-mcp-prompts-D7atKrBK.js} +1 -1
- package/dist/client/assets/{use-mcp-tools-cf_3McKe.js → use-mcp-tools-C869cdoP.js} +1 -1
- package/dist/client/assets/{use-members-BRE2LhmF.js → use-members-fcC39t_f.js} +1 -1
- package/dist/client/assets/{use-mobile-CHhQgtca.js → use-mobile-Bb870tYP.js} +1 -1
- package/dist/client/assets/{use-navigate-to-agent-Djfw27LM.js → use-navigate-to-agent-C6D_a-kW.js} +1 -1
- package/dist/client/assets/{use-open-billing-url-DKkR7vzl.js → use-open-billing-url-1sGhOQSq.js} +1 -1
- package/dist/client/assets/{use-org-auth-client-CAcsWldM.js → use-org-auth-client-vE4Pc_0R.js} +1 -1
- package/dist/client/assets/{use-org-fs-BDRs1nGW.js → use-org-fs-BFN_tOhY.js} +1 -1
- package/dist/client/assets/{use-org-repo-syncs-B7VtOI9r.js → use-org-repo-syncs-DSpHYbEt.js} +1 -1
- package/dist/client/assets/{use-org-sso-BSfoUe9v.js → use-org-sso-CCL9H8Md.js} +1 -1
- package/dist/client/assets/{use-organization-roles-DGXGarko.js → use-organization-roles-jcuV0X0M.js} +1 -1
- package/dist/client/assets/{use-organization-settings-DMTnOC9F.js → use-organization-settings-SLacPxBA.js} +1 -1
- package/dist/client/assets/{use-panel-navigate-DsfJ5CnG.js → use-panel-navigate-4bAe01fl.js} +1 -1
- package/dist/client/assets/{use-project-native-view-presence-DO75rspu.js → use-project-native-view-presence-BtG_CQpG.js} +1 -1
- package/dist/client/assets/{use-project-scope-D7zltUB-.js → use-project-scope-zhTjgc0e.js} +1 -1
- package/dist/client/assets/{use-registry-connections-Cud6Tp7Y.js → use-registry-connections-avIOsHOS.js} +1 -1
- package/dist/client/assets/{use-releases-DhVORkc4.js → use-releases-ztjuJmZh.js} +1 -1
- package/dist/client/assets/{use-reports-diagnostic-CHmCI7DH.js → use-reports-diagnostic-DhePw_-e.js} +1 -1
- package/dist/client/assets/{use-route-default-main-BF--CCuF.js → use-route-default-main-D86uMXL0.js} +1 -1
- package/dist/client/assets/{use-secrets-DswdlPTV.js → use-secrets-Hlp3YK_C.js} +1 -1
- package/dist/client/assets/{use-section-preview-base-Bgp0TLUR.js → use-section-preview-base-BuZhIre7.js} +1 -1
- package/dist/client/assets/{use-session-runtime-CYJDaHgf.js → use-session-runtime-cf6Pq7fw.js} +1 -1
- package/dist/client/assets/{use-tags-0RxYQeHO.js → use-tags-CZ82MMEx.js} +1 -1
- package/dist/client/assets/{use-task-board-analytics-Ktp8e2wv.js → use-task-board-analytics-CcRT6UyN.js} +1 -1
- package/dist/client/assets/{use-task-metadata-DDXxqvLf.js → use-task-metadata-Caq2SDvW.js} +1 -1
- package/dist/client/assets/{use-thread-outputs-wulxiuJj.js → use-thread-outputs-CM7z862Q.js} +1 -1
- package/dist/client/assets/{use-view-mode-DsHVKKIn.js → use-view-mode-DTzfn05x.js} +1 -1
- package/dist/client/assets/{use-virtual-mcp-CvJ-G4DR.js → use-virtual-mcp-BbYqC9l9.js} +1 -1
- package/dist/client/assets/useInfiniteQuery-DyEIABsM.js +1 -0
- package/dist/client/assets/{useQueries-CUCIFE87.js → useQueries-BDS4YELf.js} +1 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-B1T_Arg7.js +1 -0
- package/dist/client/assets/{users-CPf4QiX8.js → users-DwddhXbX.js} +1 -1
- package/dist/client/assets/{utils-BRPWk8ib.js → utils--dqqWKKP.js} +1 -1
- package/dist/client/assets/{variant-calendar-CfKNwrvV.js → variant-calendar-QZ7p-U4L.js} +1 -1
- package/dist/client/assets/{variant-matcher-override-CSFFk5sG.js → variant-matcher-override-s7PStIHS.js} +1 -1
- package/dist/client/assets/{view-mode-toggle-BduMFYYO.js → view-mode-toggle-I_Ej_Wa1.js} +1 -1
- package/dist/client/assets/{virtual-mcp-CDHqDYVI.js → virtual-mcp-BvWwFBmC.js} +1 -1
- package/dist/client/index.html +1 -1
- package/dist/server/cli.js +1 -1
- package/dist/server/server.js +1 -1
- package/package.json +1 -1
- package/dist/client/assets/agent-app-h4eJVd5U.js +0 -1
- package/dist/client/assets/agent-deck-Cg8Utg8g.js +0 -1
- package/dist/client/assets/agent-file-B1Q9d3_o.js +0 -1
- package/dist/client/assets/agent-library-file-DIb4hWWG.js +0 -1
- package/dist/client/assets/agent-settings-wgb9T58o.js +0 -1
- package/dist/client/assets/agent-site-editor-DnmHDk2B.js +0 -24
- package/dist/client/assets/agent-site-editor-code-J9_fgDSP.js +0 -2
- package/dist/client/assets/agent-view-DEXyutQz.js +0 -1
- package/dist/client/assets/api-keys-fPrGPt8I.js +0 -1
- package/dist/client/assets/app-editor-IiEXQSTb.js +0 -1
- package/dist/client/assets/category-editor-BNPTO4Gn.js +0 -1
- package/dist/client/assets/project-reports-bU4am2h1.js +0 -1
- package/dist/client/assets/project-tasks-A0hhN8Nq.js +0 -1
- package/dist/client/assets/record-editor-oUEdcyF3.js +0 -1
- package/dist/client/assets/registry-CPfrLNMd.js +0 -2
- package/dist/client/assets/reports-CyWZrUZL.js +0 -1
- package/dist/client/assets/store-registry-CvihOVf3.js +0 -2
- package/dist/client/assets/tasks-CL9cD9cE.js +0 -1
- package/dist/client/assets/useInfiniteQuery-PxeoVj0b.js +0 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-BzRPI9az.js +0 -1
package/dist/server/cli.js
CHANGED
|
@@ -2076,7 +2076,7 @@ Usage: deco services <up|down|status>`),process.exit(1)}}var o0$=L(()=>{xg()});f
|
|
|
2076
2076
|
`.execute($);if(Number(W.rows[0]?.cnt)===0){console.warn(`Failed to migrate ${G}/${K}, keeping in old table`);continue}}await Gu`
|
|
2077
2077
|
DELETE FROM kysely_migration WHERE name = ${Q}
|
|
2078
2078
|
`.execute($)}}async function E5$($){await JY4($),await GY4($);let Z=new w5$({db:$,provider:{getMigrations:()=>Promise.resolve(rs0)}}),{error:Q,results:X}=await Z.migrateToLatest(),Y=0;if(X?.forEach((J)=>{if(J.status==="Success")Y++;else if(J.status==="Error")console.error(`Failed to execute migration "${J.migrationName}"`)}),Q)throw console.error("Failed to migrate"),console.error(Q),Q;return Y}async function KY4($){let{keepOpen:Z=!1,database:Q,skipBetterAuth:X=!1}=$??{},Y="skipped";if(!X&&!Q)Y=await Dt0();let J=Q??l$(),G=async()=>{if(!Z&&!Q)await uL(J).catch((K)=>{console.warn("Warning: Error closing database:",K)})};try{let K=await E5$(J.db);return await G(),{betterAuth:Y,kysely:K}}catch(K){throw await G(),K}}async function WY4(){let $=l$(),Z=new w5$({db:$.db,provider:{getMigrations:()=>Promise.resolve(rs0)}}),{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 P5$=L(()=>{O5$();Lt0();iQ()});async function CJ0($){let Z={...process.env},Q=z90($,Z);console.log(aR1(Q.settings.encryptionKey));let X=Q.settings.betterAuthSecret||(Q.settings.localMode?I$$(Q.settings.dataDir):""),{ensureServices:Y}=await Promise.resolve().then(() => (_Y0(),CY0)),{outputs:J,services:G}=await Y({home:Q.settings.dataDir,externalDatabaseUrl:Q.externalDatabaseUrl,externalNatsUrl:Q.externalNatsUrl});if(!Q.skipMigrations){let{migrateBetterAuth:W}=await Promise.resolve().then(() => (Lt0(),k$$));await W(J.databaseUrl);let{createDatabase:H}=await Promise.resolve().then(() => (iQ(),i1$)),{migrateToLatest:F}=await Promise.resolve().then(() => (P5$(),z5$)),U=H(J.databaseUrl);await F({keepOpen:!0,database:U,skipBetterAuth:!0})}let K={...Q.settings,betterAuthSecret:X,databaseUrl:J.databaseUrl,natsUrls:J.natsUrls,...J.s3?{s3Endpoint:J.s3.endpoint,s3Bucket:J.s3.bucket,s3AccessKeyId:J.s3.accessKeyId,s3SecretAccessKey:J.s3.secretAccessKey,s3ForcePathStyle:J.s3.forcePathStyle}:{}};return r0$(K),{settings:K,services:G.map((W)=>({name:W.name==="PostgreSQL"?"Postgres":W.name,port:W.port})),managedServiceNames:G.filter((W)=>W.owner==="managed").map((W)=>W.name)}}var as0=L(()=>{xg();V$$();t1()});var q5$={};e(q5$,{updateService:()=>oz,subscribeCliState:()=>$e0,setTuiConsoleIntercepted:()=>_J0,setServerUrl:()=>To,setMigrationsDone:()=>Ao,setDevMode:()=>FY4,resetCliStateForTests:()=>HY4,isTuiConsoleIntercepted:()=>vJ0,getCliState:()=>es0,addLogEntry:()=>pL});function A5$(){return[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}]}function T5$(){return{services:A5$(),migrationsStatus:"pending",serverUrl:null,logs:[]}}function HY4(){xY=T5$()}function Po(){for(let $ of ss0)$()}function es0(){return xY}function $e0($){return ss0.add($),()=>ss0.delete($)}function oz($){xY={...xY,services:xY.services.map((Z)=>Z.name===$.name?$:Z)},Po()}function Ao(){xY={...xY,migrationsStatus:"done"},Po()}function To($){xY={...xY,serverUrl:$},Po()}function pL($){let Z=[...xY.logs,$];xY={...xY,logs:Z.length>500?Z.slice(-500):Z},Po()}function FY4(){xY={...xY,services:[...A5$(),{name:"API",status:"pending",port:0},{name:"Vite",status:"pending",port:0}]},Po()}function _J0($){R5$=$}function vJ0(){return R5$}var xY,ss0,R5$=!1;var rz=L(()=>{xY=T5$();ss0=new Set});import{createServer as M5$}from"net";function UY4($){return new Promise((Z)=>{let Q=M5$();Q.once("error",()=>Z(!1)),Q.listen($,"0.0.0.0",()=>{Q.close(()=>Z(!0))})})}async function Ro($){if(await UY4($))return $;let Z=await new Promise((Q,X)=>{let Y=M5$();Y.once("error",X),Y.listen(0,"0.0.0.0",()=>{let J=Y.address(),G=typeof J==="object"&&J?J.port:0;Y.close(()=>Q(G))})});return console.warn(`Port ${$} is in use, using port ${Z} instead.`),Z}var Ze0=()=>{};var Xe0={};e(Xe0,{startDevServer:()=>BY4,pipeToLogStore:()=>Qe0});import{join as NY4}from"path";function Qe0($){let Z=$.getReader(),Q=new TextDecoder,X="";function Y(){let J=X.split(`
|
|
2079
|
-
`);X=J.pop()??"";for(let G of J){let K=Bun.stripANSI(G).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;pL({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:K})}}(async()=>{try{for(;;){let{done:J,value:G}=await Z.read();if(J)break;X+=Q.decode(G,{stream:!0}),Y()}}catch{}if(X.trim()){let J=Bun.stripANSI(X).replace(/^\[\d+\]\s*/,"").trim();if(J)pL({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:J})}})()}async function BY4($){let{baseUrl:Z,noTui:Q}=$,X=process.env.HOST==="0.0.0.0"&&Boolean(process.env.PORT),Y=X?process.env.PORT:$.vitePort,J=Z||`http://localhost:${Y}`,G=X?await Ro(Number(Y)+1):await Ro(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await CJ0({port:String(G),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let O of W)oz({name:O.name,status:"ready",port:O.port});Ao();let F=NY4(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:J,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)Qe0(N.stdout),Qe0(N.stderr);To(J),oz({name:"Vite",status:"ready",port:Number(Y)}),oz({name:"API",status:"ready",port:Number(K.port)});let D=async(O)=>{if(N.kill(O),await N.exited,H.length>0){let{stopServices:w}=await Promise.resolve().then(() => (_Y0(),CY0));await w(K.dataDir)}};return process.on("SIGINT",()=>D("SIGINT")),process.on("SIGTERM",()=>D("SIGTERM")),{port:Number(Y),process:N}}var Ye0=L(()=>{as0();rz();Ze0()});var xJ0;var Je0=L(()=>{xJ0={name:"decocms",version:"4.377.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 LY4,Text as I5$}from"ink";import{jsx as OY4,jsxs as V5$}from"react/jsx-runtime";function k5$({version:$}){return V5$(LY4,{flexDirection:"column",marginTop:1,children:[ZJ0.map((Z,Q)=>OY4(I5$,{color:QJ0[Q],children:Z},Q)),V5$(I5$,{dimColor:!0,children:[" v",$]})]})}var S5$=L(()=>{Ko()});import{Box as az,Text as nL}from"ink";import{Spinner as wY4}from"@inkjs/ui";import{jsx as $3,jsxs as Ku}from"react/jsx-runtime";function C5$({status:$}){if($==="pending")return $3(wY4,{label:""});return $3(nL,{color:"green",children:"\u2713"})}function jY4($){return`${$.name}: ${$.port||"...."}`}function _5$({services:$,migrationsStatus:Z,home:Q,serverUrl:X}){return Ku(az,{flexDirection:"column",paddingBottom:1,children:[$3(k5$,{version:xJ0.version}),$3(az,{marginBottom:1,children:$3(nL,{dimColor:!0,children:"\u2500".repeat(80)})}),$3(az,{children:Ku(nL,{dimColor:!0,children:["Home: ",Q]})}),Ku(az,{gap:2,children:[$.map((Y)=>Ku(az,{gap:1,children:[$3(nL,{children:jY4(Y)}),$3(C5$,{status:Y.status})]},Y.name)),Ku(az,{gap:1,children:[$3(nL,{children:"Migrations"}),$3(C5$,{status:Z})]})]}),$3(az,{children:X?Ku(nL,{children:["Open in browser: ",$3(nL,{color:"cyan",children:X})]}):$3(nL,{dimColor:!0,children:"Starting..."})})]})}var v5$=L(()=>{Je0();S5$()});import{Box as EY4,Text as qo}from"ink";import{jsx as Ge0,jsxs as Ke0}from"react/jsx-runtime";function zY4($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function x5$({logs:$}){return Ge0(EY4,{flexDirection:"column",children:$.map((Z,Q)=>{if(Z.rawLine)return Ge0(qo,{dimColor:!0,children:Z.rawLine},Q);let X=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return Ke0(qo,{children:[Ke0(qo,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),Ge0(qo,{color:zY4(Z.status),children:Z.status}),Ke0(qo,{dimColor:!0,children:[" ",X.padStart(8)]})]},Q)})})}var f5$=()=>{};var We0={};e(We0,{App:()=>TY4});import{Box as PY4}from"ink";import{useSyncExternalStore as AY4}from"react";import{jsx as b5$,jsxs as RY4}from"react/jsx-runtime";function TY4({home:$}){let Z=AY4($e0,es0);return RY4(PY4,{flexDirection:"column",children:[b5$(_5$,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),b5$(x5$,{logs:Z.logs})]})}var He0=L(()=>{v5$();f5$();rz()});var qG="thread-gate",uN="decopilot-hosted-harness",lN="decopilot-hosted-harness-sandboxed",MG="automations",tL="background-tools",sz="task-board-github-reads";var y5$="12";function g5$($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:y5$,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var h5$=()=>{};import qY4 from"pg";async function l5$($,Z){let{databaseUrl:Q,lockTimeoutMs:X=MY4}=$,Y=$.log??((W)=>console.log(W)),J=new qY4.Client({connectionString:Q});await J.connect();let G=Date.now(),K=!1;try{while(!K){if(K=(await J.query("SELECT pg_try_advisory_lock($1) AS locked",[u5$.toString()])).rows[0]?.locked===!0,K)break;if(Date.now()-G>=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 B$(IY4)}let W=Date.now()-G;if(W>1000)Y(`[dbos] waited ${W}ms for the migration lock; another process migrated first`);return await Z()}finally{if(K)try{await J.query("SELECT pg_advisory_unlock($1)",[u5$.toString()])}catch{}await J.end().catch(()=>{})}}var u5$=8314027461559302n,MY4=600000,IY4=500;var m5$=L(()=>{i$()});function VY4(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function Fe0($,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 c5$(){let $=VY4();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:Fe0($,"--cpu-prof-dir")??process.cwd(),name:Fe0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(Fe0($,"--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 d5$(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let Q=iz();if(!Q)return;let X={};try{let{heapStats:Y}=await import("bun:jsc"),J=Y(),G=Object.entries(J.objectTypeCounts).sort((K,W)=>W[1]-K[1]).slice(0,20);X={objectCount:J.objectCount,heapSize:J.heapSize,top:Object.fromEntries(G)}}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(()=>{}),fJ0=setInterval(()=>void Z().catch(()=>{}),$),fJ0.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(fJ0)clearInterval(fJ0)}}var fJ0;var i5$=()=>{};import*as kY4 from"bun:jsc";function p5$(){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{SY4()}catch(J){return console.error("[stall-watchdog] failed to start sampling profiler:",J),()=>{}}let Q,X=performance.now()+Z,Y=()=>{let J=performance.now(),G=J-X;X=J+Z;let K=[];try{K=CY4()?.traces??[]}catch{}if(G>$&&K.length>0){let W=new Map;for(let F of K){let U=F.frames.find((D)=>D.sourceURL&&!/Unknown Executable/.test(D.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(G),samplesInWindow:K.length,top:H}))}Q=setTimeout(Y,Z),Q.unref?.()};return Q=setTimeout(Y,Z),Q.unref?.(),()=>{if(Q)clearTimeout(Q)}}var SY4,CY4;var n5$=L(()=>{({startSamplingProfiler:SY4,samplingProfilerStackTraces:CY4}=kY4)});function t5$(){c5$();let $=[d5$(),y1$(),p5$()];return()=>{for(let Z of $)Z()}}var o5$=L(()=>{Gt0();i5$();n5$()});var ez=v((r5$)=>{Object.defineProperty(r5$,"__esModule",{value:!0});r5$.RepublishHeaders=r5$.DirectMsgHeaders=r5$.JsHeaders=r5$.AdvisoryKind=void 0;r5$.isOrderedPushConsumerOptions=_Y4;r5$.isPullConsumer=vY4;r5$.isPushConsumer=xY4;r5$.isBoundPushConsumerOptions=fY4;function _Y4($){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 vY4($){return $.isPullConsumer()}function xY4($){return $.isPushConsumer()}function fY4($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}r5$.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"};r5$.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"};r5$.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};r5$.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var Z3=v((s5$)=>{Object.defineProperty(s5$,"__esModule",{value:!0});s5$.TD=s5$.TE=s5$.Empty=void 0;s5$.encode=dY4;s5$.decode=iY4;s5$.Empty=new Uint8Array(0);s5$.TE=new TextEncoder;s5$.TD=new TextDecoder;function cY4(...$){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 dY4(...$){let Z=[];for(let Q=0;Q<$.length;Q++)Z.push(s5$.TE.encode($[Q]));if(Z.length===0)return s5$.Empty;if(Z.length===1)return Z[0];return cY4(...Z)}function iY4($){if(!$||$.length===0)return"";return s5$.TD.decode($)}});var Q3=v((Z9$)=>{Object.defineProperty(Z9$,"__esModule",{value:!0});Z9$.errors=Z9$.PermissionViolationError=Z9$.NoRespondersError=Z9$.TimeoutError=Z9$.RequestError=Z9$.ProtocolError=Z9$.ConnectionError=Z9$.DrainingConnectionError=Z9$.ClosedConnectionError=Z9$.AuthorizationError=Z9$.UserAuthenticationExpiredError=Z9$.InvalidOperationError=Z9$.InvalidArgumentError=Z9$.InvalidSubjectError=void 0;class Ne0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}Z9$.InvalidSubjectError=Ne0;class bJ0 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 bJ0(`${$} ${Z}`,Q)}}Z9$.InvalidArgumentError=bJ0;class Be0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}Z9$.InvalidOperationError=Be0;class yJ0 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new yJ0($);return null}}Z9$.UserAuthenticationExpiredError=yJ0;class gJ0 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 gJ0($);return null}}Z9$.AuthorizationError=gJ0;class De0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}Z9$.ClosedConnectionError=De0;class Le0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}Z9$.DrainingConnectionError=Le0;class Oe0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}Z9$.ConnectionError=Oe0;class we0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}Z9$.ProtocolError=we0;class je0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof hJ0}}Z9$.RequestError=je0;class Ee0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}Z9$.TimeoutError=Ee0;class hJ0 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}Z9$.NoRespondersError=hJ0;class uJ0 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,J=$.match(/(Publish|Subscription) to "(\S+)"/);if(J){if(Q=J[1].toLowerCase(),X=J[2],Q==="subscription"){let G=$.match(/using queue "(\S+)"/);if(G)Y=G[1]}}return new uJ0($,Q,X,Y)}}Z9$.PermissionViolationError=uJ0;Z9$.errors={AuthorizationError:gJ0,ClosedConnectionError:De0,ConnectionError:Oe0,DrainingConnectionError:Le0,InvalidArgumentError:bJ0,InvalidOperationError:Be0,InvalidSubjectError:Ne0,NoRespondersError:hJ0,PermissionViolationError:uJ0,ProtocolError:we0,RequestError:je0,TimeoutError:Ee0,UserAuthenticationExpiredError:yJ0}});var XW=v((G9$)=>{Object.defineProperty(G9$,"__esModule",{value:!0});G9$.SimpleMutex=G9$.Perf=void 0;G9$.extend=WJ4;G9$.render=HJ4;G9$.timeout=FJ4;G9$.delay=UJ4;G9$.deadline=NJ4;G9$.deferred=Pe0;G9$.debugDeferred=BJ4;G9$.shuffle=DJ4;G9$.collect=LJ4;G9$.jitter=J9$;G9$.backoff=OJ4;G9$.nanos=wJ4;G9$.millis=jJ4;G9$.randomToken=PJ4;var KJ4=Z3(),ze0=Q3();function WJ4($,...Z){for(let Q=0;Q<Z.length;Q++){let X=Z[Q];Object.keys(X).forEach(function(Y){$[Y]=X[Y]})}return $}function HJ4($){return KJ4.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function FJ4($,Z=!0){let Q=Z?new ze0.TimeoutError:null,X,Y,J=new Promise((G,K)=>{X={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(Q===null)K(new ze0.TimeoutError);else K(Q)},$)});return Object.assign(J,X)}function UJ4($=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 NJ4($,Z=1000){let Q=Pe0(),X=setTimeout(()=>{Q.reject(new ze0.TimeoutError)},Z);try{return await Promise.race([$,Q])}finally{clearTimeout(X)}}function Pe0(){let $={},Z=new Promise((Q,X)=>{$={resolve:Q,reject:X}});return Object.assign(Z,$)}function BJ4(){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 DJ4($){for(let Z=$.length-1;Z>0;Z--){let Q=Math.floor(Math.random()*(Z+1));[$[Z],$[Q]]=[$[Q],$[Z]]}return $}async function LJ4($){let Z=[];for await(let Q of $)Z.push(Q);return Z}class X9${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})}),$}}G9$.Perf=X9$;class Y9${max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=Pe0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}G9$.SimpleMutex=Y9$;function J9$($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function OJ4($=[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 J9$(Q>Z?$[Z]:$[Q])}}}function wJ4($){return $*1e6}function jJ4($){return Math.floor($/1e6)}var EJ4="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",mN=new Uint8Array(62);for(let $=0;$<62;$++)mN[$]=EJ4.charCodeAt($);var zJ4=218340105584896;function PJ4(){let $=Math.floor(Math.random()*zJ4),Z=$%62,Q=mN[Z];$=($-Z)/62,Z=$%62;let X=mN[Z];$=($-Z)/62,Z=$%62;let Y=mN[Z];$=($-Z)/62,Z=$%62;let J=mN[Z];$=($-Z)/62,Z=$%62;let G=mN[Z];$=($-Z)/62,Z=$%62;let K=mN[Z];$=($-Z)/62,Z=$%62;let W=mN[Z];$=($-Z)/62;let H=mN[$];return String.fromCharCode(Q,X,Y,J,G,K,W,H)}});var D9$=v((N9$)=>{Object.defineProperty(N9$,"__esModule",{value:!0});N9$.nuid=N9$.NuidImpl=void 0;var yJ4="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",oL=62,mJ0=12,F9$=10,W9$=33,gJ4=333,H9$=mJ0+F9$,Te0=new Uint8Array(oL);for(let $=0;$<oL;$++)Te0[$]=yJ4.charCodeAt($);var lJ0=4294967296,U9$=BigInt(oL)**BigInt(F9$),Mo=Number(U9$/(1n<<32n)),Ae0=Number(U9$%(1n<<32n));function hJ4($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function uJ4($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else hJ4($)}class Re0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(H9$),this.cbuf=new Uint8Array(mJ0),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(Mo+1)),this.seqLo=Math.floor(Math.random()*lJ0);while($++<8&&this.seqHi===Mo&&this.seqLo>=Ae0);if(this.seqHi===Mo&&this.seqLo>=Ae0)this.seqLo=0;this.inc=Math.random()*(gJ4-W9$)+W9$|0}setPre(){uJ4(this.cbuf);for(let $=0;$<mJ0;$++)this.buf[$]=Te0[this.cbuf[$]%oL]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let Q=H9$-1;Q>=mJ0;Q--){let X=Math.floor($/oL),J=($-X*oL)*lJ0+Z,G=Math.floor(J/oL),K=J-G*oL;this.buf[Q]=Te0[K],$=X,Z=G}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=lJ0)this.seqLo-=lJ0,this.seqHi+=1;if(this.seqHi>Mo||this.seqHi===Mo&&this.seqLo>=Ae0)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()}}N9$.NuidImpl=Re0;N9$.nuid=new Re0});var j9$=v((O9$)=>{Object.defineProperty(O9$,"__esModule",{value:!0});O9$.nuid=O9$.Nuid=void 0;var L9$=D9$();O9$.Nuid=L9$.NuidImpl;O9$.nuid=L9$.nuid});var dJ0=v((cJ0)=>{Object.defineProperty(cJ0,"__esModule",{value:!0});cJ0.nuid=cJ0.Nuid=void 0;var E9$=j9$();Object.defineProperty(cJ0,"Nuid",{enumerable:!0,get:function(){return E9$.Nuid}});Object.defineProperty(cJ0,"nuid",{enumerable:!0,get:function(){return E9$.nuid}})});var rL=v((z9$)=>{Object.defineProperty(z9$,"__esModule",{value:!0});z9$.DEFAULT_HOST=z9$.DEFAULT_PORT=z9$.Match=void 0;z9$.syncIterator=pJ4;z9$.createInbox=nJ4;var dJ4=dJ0(),iJ4=Q3();z9$.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function pJ4($){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 nJ4($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw iJ4.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${dJ4.nuid.next()}`}z9$.DEFAULT_PORT=4222;z9$.DEFAULT_HOST="127.0.0.1"});var Io=v((R9$)=>{Object.defineProperty(R9$,"__esModule",{value:!0});R9$.DataBuffer=void 0;var A9$=Z3();class T9${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 A9$.TE.encode($)}static toAscii($){return A9$.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}}R9$.DataBuffer=T9$});var $P=v((I9$)=>{Object.defineProperty(I9$,"__esModule",{value:!0});I9$.LF=I9$.CR=I9$.CRLF=I9$.CR_LF_LEN=I9$.CR_LF=void 0;I9$.setTransportFactory=Z34;I9$.defaultPort=Q34;I9$.getUrlParseFn=X34;I9$.newTransport=Y34;I9$.getResolveFn=J34;I9$.protoLen=M9$;I9$.extractProtocolMessage=G34;var sJ4=Z3(),eJ4=rL(),$34=Io(),X3;function Z34($){X3=$}function Q34(){return X3!==void 0&&X3.defaultPort!==void 0?X3.defaultPort:eJ4.DEFAULT_PORT}function X34(){return X3!==void 0&&X3.urlParseFn?X3.urlParseFn:void 0}function Y34(){if(!X3||typeof X3.factory!=="function")throw Error("transport fn is not set");return X3.factory()}function J34(){return X3!==void 0&&X3.dnsResolveFn?X3.dnsResolveFn:void 0}I9$.CR_LF=`\r
|
|
2079
|
+
`);X=J.pop()??"";for(let G of J){let K=Bun.stripANSI(G).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;pL({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:K})}}(async()=>{try{for(;;){let{done:J,value:G}=await Z.read();if(J)break;X+=Q.decode(G,{stream:!0}),Y()}}catch{}if(X.trim()){let J=Bun.stripANSI(X).replace(/^\[\d+\]\s*/,"").trim();if(J)pL({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:J})}})()}async function BY4($){let{baseUrl:Z,noTui:Q}=$,X=process.env.HOST==="0.0.0.0"&&Boolean(process.env.PORT),Y=X?process.env.PORT:$.vitePort,J=Z||`http://localhost:${Y}`,G=X?await Ro(Number(Y)+1):await Ro(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await CJ0({port:String(G),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let O of W)oz({name:O.name,status:"ready",port:O.port});Ao();let F=NY4(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:J,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)Qe0(N.stdout),Qe0(N.stderr);To(J),oz({name:"Vite",status:"ready",port:Number(Y)}),oz({name:"API",status:"ready",port:Number(K.port)});let D=async(O)=>{if(N.kill(O),await N.exited,H.length>0){let{stopServices:w}=await Promise.resolve().then(() => (_Y0(),CY0));await w(K.dataDir)}};return process.on("SIGINT",()=>D("SIGINT")),process.on("SIGTERM",()=>D("SIGTERM")),{port:Number(Y),process:N}}var Ye0=L(()=>{as0();rz();Ze0()});var xJ0;var Je0=L(()=>{xJ0={name:"decocms",version:"4.378.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 LY4,Text as I5$}from"ink";import{jsx as OY4,jsxs as V5$}from"react/jsx-runtime";function k5$({version:$}){return V5$(LY4,{flexDirection:"column",marginTop:1,children:[ZJ0.map((Z,Q)=>OY4(I5$,{color:QJ0[Q],children:Z},Q)),V5$(I5$,{dimColor:!0,children:[" v",$]})]})}var S5$=L(()=>{Ko()});import{Box as az,Text as nL}from"ink";import{Spinner as wY4}from"@inkjs/ui";import{jsx as $3,jsxs as Ku}from"react/jsx-runtime";function C5$({status:$}){if($==="pending")return $3(wY4,{label:""});return $3(nL,{color:"green",children:"\u2713"})}function jY4($){return`${$.name}: ${$.port||"...."}`}function _5$({services:$,migrationsStatus:Z,home:Q,serverUrl:X}){return Ku(az,{flexDirection:"column",paddingBottom:1,children:[$3(k5$,{version:xJ0.version}),$3(az,{marginBottom:1,children:$3(nL,{dimColor:!0,children:"\u2500".repeat(80)})}),$3(az,{children:Ku(nL,{dimColor:!0,children:["Home: ",Q]})}),Ku(az,{gap:2,children:[$.map((Y)=>Ku(az,{gap:1,children:[$3(nL,{children:jY4(Y)}),$3(C5$,{status:Y.status})]},Y.name)),Ku(az,{gap:1,children:[$3(nL,{children:"Migrations"}),$3(C5$,{status:Z})]})]}),$3(az,{children:X?Ku(nL,{children:["Open in browser: ",$3(nL,{color:"cyan",children:X})]}):$3(nL,{dimColor:!0,children:"Starting..."})})]})}var v5$=L(()=>{Je0();S5$()});import{Box as EY4,Text as qo}from"ink";import{jsx as Ge0,jsxs as Ke0}from"react/jsx-runtime";function zY4($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function x5$({logs:$}){return Ge0(EY4,{flexDirection:"column",children:$.map((Z,Q)=>{if(Z.rawLine)return Ge0(qo,{dimColor:!0,children:Z.rawLine},Q);let X=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return Ke0(qo,{children:[Ke0(qo,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),Ge0(qo,{color:zY4(Z.status),children:Z.status}),Ke0(qo,{dimColor:!0,children:[" ",X.padStart(8)]})]},Q)})})}var f5$=()=>{};var We0={};e(We0,{App:()=>TY4});import{Box as PY4}from"ink";import{useSyncExternalStore as AY4}from"react";import{jsx as b5$,jsxs as RY4}from"react/jsx-runtime";function TY4({home:$}){let Z=AY4($e0,es0);return RY4(PY4,{flexDirection:"column",children:[b5$(_5$,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),b5$(x5$,{logs:Z.logs})]})}var He0=L(()=>{v5$();f5$();rz()});var qG="thread-gate",uN="decopilot-hosted-harness",lN="decopilot-hosted-harness-sandboxed",MG="automations",tL="background-tools",sz="task-board-github-reads";var y5$="12";function g5$($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:y5$,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var h5$=()=>{};import qY4 from"pg";async function l5$($,Z){let{databaseUrl:Q,lockTimeoutMs:X=MY4}=$,Y=$.log??((W)=>console.log(W)),J=new qY4.Client({connectionString:Q});await J.connect();let G=Date.now(),K=!1;try{while(!K){if(K=(await J.query("SELECT pg_try_advisory_lock($1) AS locked",[u5$.toString()])).rows[0]?.locked===!0,K)break;if(Date.now()-G>=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 B$(IY4)}let W=Date.now()-G;if(W>1000)Y(`[dbos] waited ${W}ms for the migration lock; another process migrated first`);return await Z()}finally{if(K)try{await J.query("SELECT pg_advisory_unlock($1)",[u5$.toString()])}catch{}await J.end().catch(()=>{})}}var u5$=8314027461559302n,MY4=600000,IY4=500;var m5$=L(()=>{i$()});function VY4(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function Fe0($,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 c5$(){let $=VY4();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:Fe0($,"--cpu-prof-dir")??process.cwd(),name:Fe0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(Fe0($,"--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 d5$(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let Q=iz();if(!Q)return;let X={};try{let{heapStats:Y}=await import("bun:jsc"),J=Y(),G=Object.entries(J.objectTypeCounts).sort((K,W)=>W[1]-K[1]).slice(0,20);X={objectCount:J.objectCount,heapSize:J.heapSize,top:Object.fromEntries(G)}}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(()=>{}),fJ0=setInterval(()=>void Z().catch(()=>{}),$),fJ0.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(fJ0)clearInterval(fJ0)}}var fJ0;var i5$=()=>{};import*as kY4 from"bun:jsc";function p5$(){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{SY4()}catch(J){return console.error("[stall-watchdog] failed to start sampling profiler:",J),()=>{}}let Q,X=performance.now()+Z,Y=()=>{let J=performance.now(),G=J-X;X=J+Z;let K=[];try{K=CY4()?.traces??[]}catch{}if(G>$&&K.length>0){let W=new Map;for(let F of K){let U=F.frames.find((D)=>D.sourceURL&&!/Unknown Executable/.test(D.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(G),samplesInWindow:K.length,top:H}))}Q=setTimeout(Y,Z),Q.unref?.()};return Q=setTimeout(Y,Z),Q.unref?.(),()=>{if(Q)clearTimeout(Q)}}var SY4,CY4;var n5$=L(()=>{({startSamplingProfiler:SY4,samplingProfilerStackTraces:CY4}=kY4)});function t5$(){c5$();let $=[d5$(),y1$(),p5$()];return()=>{for(let Z of $)Z()}}var o5$=L(()=>{Gt0();i5$();n5$()});var ez=v((r5$)=>{Object.defineProperty(r5$,"__esModule",{value:!0});r5$.RepublishHeaders=r5$.DirectMsgHeaders=r5$.JsHeaders=r5$.AdvisoryKind=void 0;r5$.isOrderedPushConsumerOptions=_Y4;r5$.isPullConsumer=vY4;r5$.isPushConsumer=xY4;r5$.isBoundPushConsumerOptions=fY4;function _Y4($){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 vY4($){return $.isPullConsumer()}function xY4($){return $.isPushConsumer()}function fY4($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}r5$.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"};r5$.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"};r5$.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};r5$.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var Z3=v((s5$)=>{Object.defineProperty(s5$,"__esModule",{value:!0});s5$.TD=s5$.TE=s5$.Empty=void 0;s5$.encode=dY4;s5$.decode=iY4;s5$.Empty=new Uint8Array(0);s5$.TE=new TextEncoder;s5$.TD=new TextDecoder;function cY4(...$){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 dY4(...$){let Z=[];for(let Q=0;Q<$.length;Q++)Z.push(s5$.TE.encode($[Q]));if(Z.length===0)return s5$.Empty;if(Z.length===1)return Z[0];return cY4(...Z)}function iY4($){if(!$||$.length===0)return"";return s5$.TD.decode($)}});var Q3=v((Z9$)=>{Object.defineProperty(Z9$,"__esModule",{value:!0});Z9$.errors=Z9$.PermissionViolationError=Z9$.NoRespondersError=Z9$.TimeoutError=Z9$.RequestError=Z9$.ProtocolError=Z9$.ConnectionError=Z9$.DrainingConnectionError=Z9$.ClosedConnectionError=Z9$.AuthorizationError=Z9$.UserAuthenticationExpiredError=Z9$.InvalidOperationError=Z9$.InvalidArgumentError=Z9$.InvalidSubjectError=void 0;class Ne0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}Z9$.InvalidSubjectError=Ne0;class bJ0 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 bJ0(`${$} ${Z}`,Q)}}Z9$.InvalidArgumentError=bJ0;class Be0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}Z9$.InvalidOperationError=Be0;class yJ0 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new yJ0($);return null}}Z9$.UserAuthenticationExpiredError=yJ0;class gJ0 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 gJ0($);return null}}Z9$.AuthorizationError=gJ0;class De0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}Z9$.ClosedConnectionError=De0;class Le0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}Z9$.DrainingConnectionError=Le0;class Oe0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}Z9$.ConnectionError=Oe0;class we0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}Z9$.ProtocolError=we0;class je0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof hJ0}}Z9$.RequestError=je0;class Ee0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}Z9$.TimeoutError=Ee0;class hJ0 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}Z9$.NoRespondersError=hJ0;class uJ0 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,J=$.match(/(Publish|Subscription) to "(\S+)"/);if(J){if(Q=J[1].toLowerCase(),X=J[2],Q==="subscription"){let G=$.match(/using queue "(\S+)"/);if(G)Y=G[1]}}return new uJ0($,Q,X,Y)}}Z9$.PermissionViolationError=uJ0;Z9$.errors={AuthorizationError:gJ0,ClosedConnectionError:De0,ConnectionError:Oe0,DrainingConnectionError:Le0,InvalidArgumentError:bJ0,InvalidOperationError:Be0,InvalidSubjectError:Ne0,NoRespondersError:hJ0,PermissionViolationError:uJ0,ProtocolError:we0,RequestError:je0,TimeoutError:Ee0,UserAuthenticationExpiredError:yJ0}});var XW=v((G9$)=>{Object.defineProperty(G9$,"__esModule",{value:!0});G9$.SimpleMutex=G9$.Perf=void 0;G9$.extend=WJ4;G9$.render=HJ4;G9$.timeout=FJ4;G9$.delay=UJ4;G9$.deadline=NJ4;G9$.deferred=Pe0;G9$.debugDeferred=BJ4;G9$.shuffle=DJ4;G9$.collect=LJ4;G9$.jitter=J9$;G9$.backoff=OJ4;G9$.nanos=wJ4;G9$.millis=jJ4;G9$.randomToken=PJ4;var KJ4=Z3(),ze0=Q3();function WJ4($,...Z){for(let Q=0;Q<Z.length;Q++){let X=Z[Q];Object.keys(X).forEach(function(Y){$[Y]=X[Y]})}return $}function HJ4($){return KJ4.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function FJ4($,Z=!0){let Q=Z?new ze0.TimeoutError:null,X,Y,J=new Promise((G,K)=>{X={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(Q===null)K(new ze0.TimeoutError);else K(Q)},$)});return Object.assign(J,X)}function UJ4($=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 NJ4($,Z=1000){let Q=Pe0(),X=setTimeout(()=>{Q.reject(new ze0.TimeoutError)},Z);try{return await Promise.race([$,Q])}finally{clearTimeout(X)}}function Pe0(){let $={},Z=new Promise((Q,X)=>{$={resolve:Q,reject:X}});return Object.assign(Z,$)}function BJ4(){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 DJ4($){for(let Z=$.length-1;Z>0;Z--){let Q=Math.floor(Math.random()*(Z+1));[$[Z],$[Q]]=[$[Q],$[Z]]}return $}async function LJ4($){let Z=[];for await(let Q of $)Z.push(Q);return Z}class X9${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})}),$}}G9$.Perf=X9$;class Y9${max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=Pe0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}G9$.SimpleMutex=Y9$;function J9$($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function OJ4($=[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 J9$(Q>Z?$[Z]:$[Q])}}}function wJ4($){return $*1e6}function jJ4($){return Math.floor($/1e6)}var EJ4="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",mN=new Uint8Array(62);for(let $=0;$<62;$++)mN[$]=EJ4.charCodeAt($);var zJ4=218340105584896;function PJ4(){let $=Math.floor(Math.random()*zJ4),Z=$%62,Q=mN[Z];$=($-Z)/62,Z=$%62;let X=mN[Z];$=($-Z)/62,Z=$%62;let Y=mN[Z];$=($-Z)/62,Z=$%62;let J=mN[Z];$=($-Z)/62,Z=$%62;let G=mN[Z];$=($-Z)/62,Z=$%62;let K=mN[Z];$=($-Z)/62,Z=$%62;let W=mN[Z];$=($-Z)/62;let H=mN[$];return String.fromCharCode(Q,X,Y,J,G,K,W,H)}});var D9$=v((N9$)=>{Object.defineProperty(N9$,"__esModule",{value:!0});N9$.nuid=N9$.NuidImpl=void 0;var yJ4="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",oL=62,mJ0=12,F9$=10,W9$=33,gJ4=333,H9$=mJ0+F9$,Te0=new Uint8Array(oL);for(let $=0;$<oL;$++)Te0[$]=yJ4.charCodeAt($);var lJ0=4294967296,U9$=BigInt(oL)**BigInt(F9$),Mo=Number(U9$/(1n<<32n)),Ae0=Number(U9$%(1n<<32n));function hJ4($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function uJ4($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else hJ4($)}class Re0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(H9$),this.cbuf=new Uint8Array(mJ0),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(Mo+1)),this.seqLo=Math.floor(Math.random()*lJ0);while($++<8&&this.seqHi===Mo&&this.seqLo>=Ae0);if(this.seqHi===Mo&&this.seqLo>=Ae0)this.seqLo=0;this.inc=Math.random()*(gJ4-W9$)+W9$|0}setPre(){uJ4(this.cbuf);for(let $=0;$<mJ0;$++)this.buf[$]=Te0[this.cbuf[$]%oL]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let Q=H9$-1;Q>=mJ0;Q--){let X=Math.floor($/oL),J=($-X*oL)*lJ0+Z,G=Math.floor(J/oL),K=J-G*oL;this.buf[Q]=Te0[K],$=X,Z=G}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=lJ0)this.seqLo-=lJ0,this.seqHi+=1;if(this.seqHi>Mo||this.seqHi===Mo&&this.seqLo>=Ae0)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()}}N9$.NuidImpl=Re0;N9$.nuid=new Re0});var j9$=v((O9$)=>{Object.defineProperty(O9$,"__esModule",{value:!0});O9$.nuid=O9$.Nuid=void 0;var L9$=D9$();O9$.Nuid=L9$.NuidImpl;O9$.nuid=L9$.nuid});var dJ0=v((cJ0)=>{Object.defineProperty(cJ0,"__esModule",{value:!0});cJ0.nuid=cJ0.Nuid=void 0;var E9$=j9$();Object.defineProperty(cJ0,"Nuid",{enumerable:!0,get:function(){return E9$.Nuid}});Object.defineProperty(cJ0,"nuid",{enumerable:!0,get:function(){return E9$.nuid}})});var rL=v((z9$)=>{Object.defineProperty(z9$,"__esModule",{value:!0});z9$.DEFAULT_HOST=z9$.DEFAULT_PORT=z9$.Match=void 0;z9$.syncIterator=pJ4;z9$.createInbox=nJ4;var dJ4=dJ0(),iJ4=Q3();z9$.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function pJ4($){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 nJ4($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw iJ4.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${dJ4.nuid.next()}`}z9$.DEFAULT_PORT=4222;z9$.DEFAULT_HOST="127.0.0.1"});var Io=v((R9$)=>{Object.defineProperty(R9$,"__esModule",{value:!0});R9$.DataBuffer=void 0;var A9$=Z3();class T9${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 A9$.TE.encode($)}static toAscii($){return A9$.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}}R9$.DataBuffer=T9$});var $P=v((I9$)=>{Object.defineProperty(I9$,"__esModule",{value:!0});I9$.LF=I9$.CR=I9$.CRLF=I9$.CR_LF_LEN=I9$.CR_LF=void 0;I9$.setTransportFactory=Z34;I9$.defaultPort=Q34;I9$.getUrlParseFn=X34;I9$.newTransport=Y34;I9$.getResolveFn=J34;I9$.protoLen=M9$;I9$.extractProtocolMessage=G34;var sJ4=Z3(),eJ4=rL(),$34=Io(),X3;function Z34($){X3=$}function Q34(){return X3!==void 0&&X3.defaultPort!==void 0?X3.defaultPort:eJ4.DEFAULT_PORT}function X34(){return X3!==void 0&&X3.urlParseFn?X3.urlParseFn:void 0}function Y34(){if(!X3||typeof X3.factory!=="function")throw Error("transport fn is not set");return X3.factory()}function J34(){return X3!==void 0&&X3.dnsResolveFn?X3.dnsResolveFn:void 0}I9$.CR_LF=`\r
|
|
2080
2080
|
`;I9$.CR_LF_LEN=I9$.CR_LF.length;I9$.CRLF=$34.DataBuffer.fromAscii(I9$.CR_LF);I9$.CR=new Uint8Array(I9$.CRLF)[0];I9$.LF=new Uint8Array(I9$.CRLF)[1];function M9$($){for(let Z=0;Z<$.length;Z++){let Q=Z+1;if($.byteLength>Q&&$[Z]===I9$.CR&&$[Q]===I9$.LF)return Q+1}return 0}function G34($){let Z=M9$($);if(Z>0){let X=new Uint8Array($).slice(0,Z);return sJ4.TD.decode(X)}return""}});var ke0=v((f9$)=>{Object.defineProperty(f9$,"__esModule",{value:!0});f9$.ipV4=_9$;f9$.isIP=w34;f9$.parseIP=v9$;var Vo=4,ZP=16,iJ0=48,C9$=57,k9$=65,L34=70,S9$=97,O34=102,Ve0=16777215;function _9$($,Z,Q,X){let Y=new Uint8Array(ZP);return[0,0,0,0,0,0,0,0,0,0,255,255].forEach((G,K)=>{Y[K]=G}),Y[12]=$,Y[13]=Z,Y[14]=Q,Y[15]=X,Y}function w34($){return v9$($)!==void 0}function v9$($){for(let Z=0;Z<$.length;Z++)switch($[Z]){case".":return x9$($);case":":return j34($)}return}function x9$($){let Z=new Uint8Array(Vo);for(let Q=0;Q<Vo;Q++){if($.length===0)return;if(Q>0){if($[0]!==".")return;$=$.substring(1)}let{n:X,c:Y,ok:J}=E34($);if(!J||X>255)return;$=$.substring(Y),Z[Q]=X}return _9$(Z[0],Z[1],Z[2],Z[3])}function j34($){let Z=new Uint8Array(ZP),Q=-1;if($.length>=2&&$[0]===":"&&$[1]===":"){if(Q=0,$=$.substring(2),$.length===0)return Z}let X=0;while(X<ZP){let{n:Y,c:J,ok:G}=z34($);if(!G||Y>65535)return;if(J<$.length&&$[J]==="."){if(Q<0&&X!=ZP-Vo)return;if(X+Vo>ZP)return;let K=x9$($);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+=Vo;break}if(Z[X]=Y>>8,Z[X+1]=Y,X+=2,$=$.substring(J),$.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<ZP){if(Q<0)return;let Y=ZP-X;for(let J=X-1;J>=Q;J--)Z[J+Y]=Z[J];for(let J=Q+Y-1;J>=Q;J--)Z[J]=0}else if(Q>=0)return;return Z}function E34($){let Z=0,Q=0;for(Z=0;Z<$.length&&iJ0<=$.charCodeAt(Z)&&$.charCodeAt(Z)<=C9$;Z++)if(Q=Q*10+($.charCodeAt(Z)-iJ0),Q>=Ve0)return{n:Ve0,c:Z,ok:!1};if(Z===0)return{n:0,c:0,ok:!1};return{n:Q,c:Z,ok:!0}}function z34($){let Z=0,Q=0;for(Q=0;Q<$.length;Q++){if(iJ0<=$.charCodeAt(Q)&&$.charCodeAt(Q)<=C9$)Z*=16,Z+=$.charCodeAt(Q)-iJ0;else if(S9$<=$.charCodeAt(Q)&&$.charCodeAt(Q)<=O34)Z*=16,Z+=$.charCodeAt(Q)-S9$+10;else if(k9$<=$.charCodeAt(Q)&&$.charCodeAt(Q)<=L34)Z*=16,Z+=$.charCodeAt(Q)-k9$+10;else break;if(Z>=Ve0)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 fe0=v((y9$)=>{Object.defineProperty(y9$,"__esModule",{value:!0});y9$.Servers=y9$.ServerImpl=void 0;y9$.isIPV4OrHostname=b9$;y9$.hostPort=xe0;var Se0=$P(),Ce0=XW(),_e0=ke0(),R34=rL(),q34=Q3();function b9$($){if($.indexOf("[")!==-1||$.indexOf("::")!==-1)return!1;if($.indexOf(".")!==-1)return!0;if($.split(":").length<=2)return!0;return!1}function ve0($){return!b9$($)}function M34($){let Q=$.toUpperCase().indexOf("::FFFF:");if(Q!==-1&&$.indexOf(".")!==-1){let X=$.substring(Q+7);return X=X.replace("[",""),X.replace("]","")}return $}function xe0($){if($=$.trim(),$.match(/^(.*:\/\/)(.*)/m))$=$.replace(/^(.*:\/\/)(.*)/gm,"$2");if($=M34($),ve0($)&&$.indexOf("[")===-1)$=`[${$}]`;let Z=ve0($)?$.match(/(]:)(\d+)/):$.match(/(:)(\d+)/),Q=Z&&Z.length===3&&Z[1]&&Z[2]?parseInt(Z[2]):R34.DEFAULT_PORT,Y=new URL(`${Q===80?"https":"http"}://${$}`);Y.port=`${Q}`;let J=Y.hostname;if(J.charAt(0)==="[")J=J.substring(1,J.length-1);return{listen:Y.host,hostname:J,port:Q}}class Wu{src;listen;hostname;port;didConnect;reconnects;lastConnect;gossiped;tlsName;resolves;constructor($,Z=!1){this.src=$,this.tlsName="";let Q=xe0($);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,_e0.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",J=new URL(`${Y}://${ve0(X)?"["+X+"]":X}`);J.port=`${this.port}`;let G=new Wu(J.host,!1);G.tlsName=this.hostname,Z.push(G)}}if($.randomize)(0,Ce0.shuffle)(Z);return this.resolves=Z,Z}}y9$.ServerImpl=Wu;class pJ0{firstSelect;servers;currentServer;tlsName;randomize;constructor($={}){this.firstSelect=!0,this.servers=[],this.tlsName="",this.randomize=$.randomize||!1}setServers($){if(!Array.isArray($)||$.length===0)throw q34.InvalidArgumentError.format("servers","cannot be empty");let Z=(0,Se0.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:J}=xe0(Y),G=Q.get(J);if(G)G.gossiped=!1,X.push(G);else X.push(new Wu(Y))}if(this.randomize)(0,Ce0.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,_e0.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,Se0.getUrlParseFn)();$=Q?Q($):$;let X=new Wu($,Z);if((0,_e0.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 pJ0.freezeAll(this.servers)}snapshotForHandler(){let $=this.currentServer;if(!$)return this.snapshot();let Z=this.servers.indexOf($);if(Z<=0)return this.snapshot();return pJ0.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,Se0.getUrlParseFn)(),J=new Map;if($.connect_urls&&$.connect_urls.length>0)$.connect_urls.forEach((K)=>{K=Y?Y(K,Z):K;let W=new Wu(K,!0);J.set(K,W)});let G=[];if(this.servers.forEach((K,W)=>{let H=K.listen;if(K.gossiped&&this.currentServer.listen!==H&&J.get(H)===void 0)G.push(W);J.delete(H)}),G.reverse(),G.forEach((K)=>{let W=this.servers.splice(K,1);X=X.concat(W[0].listen)}),J.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,Ce0.shuffle)(W),this.servers=K?[K,...W]:W}return{added:Q,deleted:X}}}y9$.Servers=pJ0});var nJ0=v((l9$)=>{Object.defineProperty(l9$,"__esModule",{value:!0});l9$.QueuedIteratorImpl=void 0;var be0=XW(),h9$=Q3();class u9${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,be0.deferred)(),this.yields=[],this.iterClosed=(0,be0.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 h9$.InvalidOperationError("iterator cannot be used when a callback is registered");if(this.yielding)throw new h9$.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,be0.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}}l9$.QueuedIteratorImpl=u9$});var ye0=v((i9$)=>{Object.defineProperty(i9$,"__esModule",{value:!0});i9$.MuxSubscription=void 0;var S34=rL(),c9$=Q3();class d9${baseInbox;reqs;constructor(){this.reqs=new Map}size(){return this.reqs.size}init($){return this.baseInbox=`${(0,S34.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 c9$.NoRespondersError(X.requestSubject):null;X.resolver($,Z)}}}}close(){let $=new c9$.RequestError("connection closed");this.reqs.forEach((Z)=>{Z.resolver($,{})})}}i9$.MuxSubscription=d9$});var ge0=v((t9$)=>{Object.defineProperty(t9$,"__esModule",{value:!0});t9$.Heartbeat=void 0;var C34=XW();class n9${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,C34.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})}}t9$.Heartbeat=n9$});var le0=v((e9$)=>{Object.defineProperty(e9$,"__esModule",{value:!0});e9$.DenoBuffer=e9$.MAX_SIZE=e9$.AssertionError=void 0;e9$.assert=a9$;e9$.concat=s9$;e9$.append=v34;e9$.readAll=x34;e9$.writeAll=f34;var _34=Z3();class he0 extends Error{constructor($){super($);this.name="AssertionError"}}e9$.AssertionError=he0;function a9$($,Z="Assertion failed."){if(!$)throw new he0(Z)}var r9$=32768;e9$.MAX_SIZE=4294967294;function tJ0($,Z,Q=0){let X=Z.byteLength-Q;if($.byteLength>X)$=$.subarray(0,X);return Z.set($,Q),$.byteLength}function s9$($,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 v34($,Z){return s9$($,Uint8Array.of(Z))}class ue0{_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($){a9$($<=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=tJ0(this._buf.subarray(this._off),$);return this._off+=Z,Z}writeByte($){return this.write(Uint8Array.of($))}writeString($){return this.write(_34.TE.encode($))}write($){let Z=this._grow($.byteLength);return tJ0($,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)tJ0(this._buf.subarray(this._off),this._buf);else if(X+$>e9$.MAX_SIZE)throw Error("The buffer cannot be grown beyond the maximum size.");else{let Y=new Uint8Array(Math.min(2*X+$,e9$.MAX_SIZE));tJ0(this._buf.subarray(this._off),Y),this._buf=Y}return this._off=0,this._reslice(Math.min(Z+$,e9$.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(r9$);while(!0){let X=this.capacity-this.length<r9$,Y=X?Q:new Uint8Array(this._buf.buffer,this.length),J=$.read(Y);if(J===null)return Z;if(X)this.write(Y.subarray(0,J));else this._reslice(this.length+J);Z+=J}}}e9$.DenoBuffer=ue0;function x34($){let Z=new ue0;return Z.readFrom($),Z.bytes()}function f34($,Z){let Q=0;while(Q<Z.length)Q+=$.write(Z.subarray(Q))}});var de0=v((YZ$)=>{Object.defineProperty(YZ$,"__esModule",{value:!0});YZ$.cc=YZ$.State=YZ$.Parser=YZ$.Kind=void 0;YZ$.describe=m34;var me0=le0(),ce0=Z3();YZ$.Kind={OK:0,ERR:1,MSG:2,INFO:3,PING:4,PONG:5};function m34($){let Z,Q="";switch($.kind){case YZ$.Kind.MSG:Z="MSG";break;case YZ$.Kind.OK:Z="OK";break;case YZ$.Kind.ERR:Z="ERR",Q=ce0.TD.decode($.data);break;case YZ$.Kind.PING:Z="PING";break;case YZ$.Kind.PONG:Z="PONG";break;case YZ$.Kind.INFO:Z="INFO",Q=ce0.TD.decode($.data)}return`${Z}: ${Q}`}function ZZ$(){let $={};return $.sid=-1,$.hdr=-1,$.size=-1,$}var QZ$=48,c34=57,Hu=67108864;class XZ${dispatcher;state;as;drop;hdr;ma;argBuf;msgBuf;constructor($){this.dispatcher=$,this.state=YZ$.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 YZ$.State.OP_START:switch(Q){case YZ$.cc.M:case YZ$.cc.m:this.state=YZ$.State.OP_M,this.hdr=-1,this.ma=ZZ$();break;case YZ$.cc.H:case YZ$.cc.h:this.state=YZ$.State.OP_H,this.hdr=0,this.ma=ZZ$();break;case YZ$.cc.P:case YZ$.cc.p:this.state=YZ$.State.OP_P;break;case YZ$.cc.PLUS:this.state=YZ$.State.OP_PLUS;break;case YZ$.cc.MINUS:this.state=YZ$.State.OP_MINUS;break;case YZ$.cc.I:case YZ$.cc.i:this.state=YZ$.State.OP_I;break;default:throw this.fail($.subarray(Z))}break;case YZ$.State.OP_H:switch(Q){case YZ$.cc.M:case YZ$.cc.m:this.state=YZ$.State.OP_M;break;default:throw this.fail($.subarray(Z))}break;case YZ$.State.OP_M:switch(Q){case YZ$.cc.S:case YZ$.cc.s:this.state=YZ$.State.OP_MS;break;default:throw this.fail($.subarray(Z))}break;case YZ$.State.OP_MS:switch(Q){case YZ$.cc.G:case YZ$.cc.g:this.state=YZ$.State.OP_MSG;break;default:throw this.fail($.subarray(Z))}break;case YZ$.State.OP_MSG:switch(Q){case YZ$.cc.SPACE:case YZ$.cc.TAB:this.state=YZ$.State.OP_MSG_SPC;break;default:throw this.fail($.subarray(Z))}break;case YZ$.State.OP_MSG_SPC:switch(Q){case YZ$.cc.SPACE:case YZ$.cc.TAB:continue;default:this.state=YZ$.State.MSG_ARG,this.as=Z}break;case YZ$.State.MSG_ARG:switch(Q){case YZ$.cc.CR:this.drop=1;break;case YZ$.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=YZ$.State.MSG_PAYLOAD,Z=this.as+this.ma.size-1;break}default:if(this.argBuf)this.argBuf.writeByte(Q)}break;case YZ$.State.MSG_PAYLOAD:if(this.msgBuf)if(this.msgBuf.length>=this.ma.size){let X=this.msgBuf.bytes({copy:!1});this.dispatcher.push({kind:YZ$.Kind.MSG,msg:this.ma,data:X}),this.argBuf=void 0,this.msgBuf=void 0,this.state=YZ$.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:YZ$.Kind.MSG,msg:this.ma,data:$.subarray(this.as,Z)}),this.argBuf=void 0,this.msgBuf=void 0,this.state=YZ$.State.MSG_END;break;case YZ$.State.MSG_END:switch(Q){case YZ$.cc.NL:this.drop=0,this.as=Z+1,this.state=YZ$.State.OP_START;break;default:continue}break;case YZ$.State.OP_PLUS:switch(Q){case YZ$.cc.O:case YZ$.cc.o:this.state=YZ$.State.OP_PLUS_O;break;default:throw this.fail($.subarray(Z))}break;case YZ$.State.OP_PLUS_O:switch(Q){case YZ$.cc.K:case YZ$.cc.k:this.state=YZ$.State.OP_PLUS_OK;break;default:throw this.fail($.subarray(Z))}break;case YZ$.State.OP_PLUS_OK:switch(Q){case YZ$.cc.NL:this.dispatcher.push({kind:YZ$.Kind.OK}),this.drop=0,this.state=YZ$.State.OP_START;break}break;case YZ$.State.OP_MINUS:switch(Q){case YZ$.cc.E:case YZ$.cc.e:this.state=YZ$.State.OP_MINUS_E;break;default:throw this.fail($.subarray(Z))}break;case YZ$.State.OP_MINUS_E:switch(Q){case YZ$.cc.R:case YZ$.cc.r:this.state=YZ$.State.OP_MINUS_ER;break;default:throw this.fail($.subarray(Z))}break;case YZ$.State.OP_MINUS_ER:switch(Q){case YZ$.cc.R:case YZ$.cc.r:this.state=YZ$.State.OP_MINUS_ERR;break;default:throw this.fail($.subarray(Z))}break;case YZ$.State.OP_MINUS_ERR:switch(Q){case YZ$.cc.SPACE:case YZ$.cc.TAB:this.state=YZ$.State.OP_MINUS_ERR_SPC;break;default:throw this.fail($.subarray(Z))}break;case YZ$.State.OP_MINUS_ERR_SPC:switch(Q){case YZ$.cc.SPACE:case YZ$.cc.TAB:continue;default:this.state=YZ$.State.MINUS_ERR_ARG,this.as=Z}break;case YZ$.State.MINUS_ERR_ARG:switch(Q){case YZ$.cc.CR:this.drop=1;break;case YZ$.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:YZ$.Kind.ERR,data:X}),this.drop=0,this.as=Z+1,this.state=YZ$.State.OP_START;break}default:if(this.argBuf)this.argBuf.write(Uint8Array.of(Q))}break;case YZ$.State.OP_P:switch(Q){case YZ$.cc.I:case YZ$.cc.i:this.state=YZ$.State.OP_PI;break;case YZ$.cc.O:case YZ$.cc.o:this.state=YZ$.State.OP_PO;break;default:throw this.fail($.subarray(Z))}break;case YZ$.State.OP_PO:switch(Q){case YZ$.cc.N:case YZ$.cc.n:this.state=YZ$.State.OP_PON;break;default:throw this.fail($.subarray(Z))}break;case YZ$.State.OP_PON:switch(Q){case YZ$.cc.G:case YZ$.cc.g:this.state=YZ$.State.OP_PONG;break;default:throw this.fail($.subarray(Z))}break;case YZ$.State.OP_PONG:switch(Q){case YZ$.cc.NL:this.dispatcher.push({kind:YZ$.Kind.PONG}),this.drop=0,this.state=YZ$.State.OP_START;break}break;case YZ$.State.OP_PI:switch(Q){case YZ$.cc.N:case YZ$.cc.n:this.state=YZ$.State.OP_PIN;break;default:throw this.fail($.subarray(Z))}break;case YZ$.State.OP_PIN:switch(Q){case YZ$.cc.G:case YZ$.cc.g:this.state=YZ$.State.OP_PING;break;default:throw this.fail($.subarray(Z))}break;case YZ$.State.OP_PING:switch(Q){case YZ$.cc.NL:this.dispatcher.push({kind:YZ$.Kind.PING}),this.drop=0,this.state=YZ$.State.OP_START;break}break;case YZ$.State.OP_I:switch(Q){case YZ$.cc.N:case YZ$.cc.n:this.state=YZ$.State.OP_IN;break;default:throw this.fail($.subarray(Z))}break;case YZ$.State.OP_IN:switch(Q){case YZ$.cc.F:case YZ$.cc.f:this.state=YZ$.State.OP_INF;break;default:throw this.fail($.subarray(Z))}break;case YZ$.State.OP_INF:switch(Q){case YZ$.cc.O:case YZ$.cc.o:this.state=YZ$.State.OP_INFO;break;default:throw this.fail($.subarray(Z))}break;case YZ$.State.OP_INFO:switch(Q){case YZ$.cc.SPACE:case YZ$.cc.TAB:this.state=YZ$.State.OP_INFO_SPC;break;default:throw this.fail($.subarray(Z))}break;case YZ$.State.OP_INFO_SPC:switch(Q){case YZ$.cc.SPACE:case YZ$.cc.TAB:continue;default:this.state=YZ$.State.INFO_ARG,this.as=Z}break;case YZ$.State.INFO_ARG:switch(Q){case YZ$.cc.CR:this.drop=1;break;case YZ$.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:YZ$.Kind.INFO,data:X}),this.drop=0,this.as=Z+1,this.state=YZ$.State.OP_START;break}default:if(this.argBuf)this.argBuf.writeByte(Q)}break;default:throw this.fail($.subarray(Z))}}if((this.state===YZ$.State.MSG_ARG||this.state===YZ$.State.MINUS_ERR_ARG||this.state===YZ$.State.INFO_ARG)&&!this.argBuf)this.argBuf=new me0.DenoBuffer($.subarray(this.as,Z-this.drop));if(this.state===YZ$.State.MSG_PAYLOAD&&!this.msgBuf){if(!this.argBuf)this.cloneMsgArg();this.msgBuf=new me0.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 me0.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 YZ$.cc.SPACE:case YZ$.cc.TAB:case YZ$.cc.CR:case YZ$.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],Hu);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],Hu);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}: ${ce0.TD.decode($)}`)}processHeaderMsgArgs($){let Z=[],Q=-1;for(let X=0;X<$.length;X++)switch($[X]){case YZ$.cc.SPACE:case YZ$.cc.TAB:case YZ$.cc.CR:case YZ$.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],Hu),this.ma.size=this.protoParseInt(Z[3],Hu);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],Hu),this.ma.size=this.protoParseInt(Z[4],Hu);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]<QZ$||$[X]>c34)return-1;Q=Q*10+($[X]-QZ$)}return Z!==void 0&&Q>Z?-1:Q}}YZ$.Parser=XZ$;YZ$.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};YZ$.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 aJ0=v((GZ$)=>{Object.defineProperty(GZ$,"__esModule",{value:!0});GZ$.MsgHdrsImpl=void 0;GZ$.canonicalMIMEHeaderKey=pe0;GZ$.headers=p34;var JZ$=Z3(),YW=rL(),rJ0=Q3();function pe0($){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 rJ0.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 p34($=0,Z=""){if($===0&&Z!=="")throw rJ0.InvalidArgumentError.format("code","is required");else if($>0&&Z==="")throw rJ0.InvalidArgumentError.format("description","is required");return new Fu($,Z)}var ie0="NATS/1.0";class Fu{_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(),J=[...X].sort();for(let G=0;G<Y.length;G++)if(Y[G]!==J[G])return!1}return!0}return!1}static decode($){let Z=new Fu,X=JZ$.TD.decode($).split(`\r
|
|
2081
2081
|
`),Y=X[0];if(Y!==ie0){let J=Y.replace(ie0,"").trim();if(J.length>0){if(Z._code=parseInt(J,10),isNaN(Z._code))Z._code=0;let G=Z._code.toString();J=J.replace(G,""),Z._description=J.trim()}}if(X.length>=1)X.slice(1).map((J)=>{if(J){let G=J.indexOf(":");if(G>-1){let K=J.slice(0,G),W=J.slice(G+1).trim();Z.append(K,W)}}});return Z}toString(){if(this.headers.size===0&&this._code===0)return"";let $=ie0;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
|
|
2082
2082
|
${Z}: ${Q[X]}`;return`${$}\r
|
package/dist/server/server.js
CHANGED
|
@@ -3388,7 +3388,7 @@ Respond with ONLY a JSON object of this shape, and nothing else:
|
|
|
3388
3388
|
${J.join(`
|
|
3389
3389
|
`)}`:X}function VI6($){let Z=new Set;for(let Q of $)for(let Y of Q.split(`
|
|
3390
3390
|
`)){let X=Y.trim();if(/^Co-authored-by:\s/i.test(X))Z.add(X)}return[...Z]}var Re$=200,jI6=12,zI6,AI6=300,MI0=3;var lW1=O(()=>{ZZ();m$();qI0();zI6={aheadBy:0,behindBy:0,files:[]}});function SI6($){if(!$||$.includes(".."))return!1;return kI6.test($)}function Me$($){let Z=typeof $.__resolveType==="string"?$.__resolveType:null;if(!Z||!SI6(Z))return null;let{__resolveType:Q,...Y}=$;return{resolveType:Z,payload:Y}}function Ie$($,Z){return`${$.replace(/\/+$/,"")}/deco/invoke/${Z}`}var kI6;var Ve$=O(()=>{kI6=/^[\w./@-]+$/});function O$0($,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 Se$($,Z,Q,Y){let X=$.organization?.id;if(!X)throw new sw(pZ);let J=await _L($.storage,X,Y);if(J&&await IN($.storage,J)){let F=await eH($,J,{forceRefresh:!0}).catch((U)=>{throw new sw(U instanceof Error?U.message:pZ)});await ke$($,Z,Q,F);return}let G=Y.connectionId??J?.legacyConnectionId;if(!G)throw new sw("Push requires a connected git account. Connect the repository's provider for this project and restart the sandbox.");await tu({ctx:$,connectionId:G,organizationId:X,forceRefresh:!0,onLegacyMintError:(F)=>{let U=F instanceof Error?F.message:pZ;throw new sw(U)}});let{cloneUrl:W,gitUserName:K,gitUserEmail:H}=await $F(G,Y.owner,Y.name,$.db,$.vault).catch((F)=>{let{code:U,message:N}=xG$(F instanceof Error?F.message:String(F));throw U?new sw(N):F});await ke$($,Z,Q,{cloneUrl:W,gitUserName:K,gitUserEmail:H})}async function ke$($,Z,Q,Y){let{cloneUrl:X,gitUserName:J,gitUserEmail:G}=Y,W=hd($),K=await Z.proxyDaemonRequest(Q,"/_sandbox/config",{method:"PUT",headers:new Headers({"content-type":"application/json"}),body:JSON.stringify({git:{repository:{cloneUrl:X},identity:{userName:J,userEmail:G}},...W?{operator:W}:{}})});if(!K.ok){let H=await Yw(K,CI6).catch(()=>K.statusText);throw Error(`Failed to refresh sandbox git credentials (${K.status}): ${H}`)}}var CI6=10485760,sw;var cW1=O(()=>{wG();LI0();xa();q30();vs();ZZ();sw=class sw extends Error{constructor($){super($);this.name="GitPushAuthError"}}});function vI6($){let Z=$.startsWith("thread:")?$.slice(7):$;if(!Z||Z.length>255||Z.includes("..")||Z.startsWith("/")||Z.endsWith("/")||Z.endsWith(".lock")||!_I6.test(Z))throw Error(`Invalid branch name: ${$}`)}function rb($){return AbortSignal.any([$.req.raw.signal,AbortSignal.timeout(bI6)])}async function yI6($,Z){let Q=$.var.studioContext,Y=KF(Z.branch),X=$.req.query("thread")??Y,J=X&&X===Y?Z.branchThread:X?await Q.storage.threads.get(X).catch(()=>null):null,G=J?.virtual_mcp_id===Z.virtualMcpId?J:null,W=Ef(G?.metadata?.runtime);if(W)return W;let K=FP0(Z.virtualMcpMetadata),H=K==="cms"?await PW1(Q,{claimName:Z.claimName}):"alive",F=K==="cms"&&H!=="alive"?"cms":"sandbox",U=!!G&&(H==="gone"||H==="alive"&&K==="cms");if(U&&G)ya(Q,G.id,F);if(K==="cms")console.log("sandbox proxy: no runtime stamp",{route:$.req.path,method:$.req.method,reason:G?"unstamped":"threadless",liveness:H,resolved:F,stamped:U});return F}async function gI6($){let Z=$.get("vmClaim");if(Z.runner)return Z.runner;try{return await nY($.var.studioContext)}catch{return null}}function sb($){let{runner:Z}=$.get("vmClaim");if(!Z)return $.json({error:"No sandbox runner configured"},503);return Z}async function md($){let{virtualMcpMetadata:Z,connectionIds:Q}=$.get("vmClaim"),Y=$.var.studioContext,X=O$0(Z,Q);if(!X)throw new f0({provider:"github",status:404,message:"Project has no GitHub repository"});let J=i(Y);return pu(Y,J.id,X)}function dW1($,Z){let Q=Z instanceof Error?Z.message:String(Z),Y=F3$(Z);if(Y!==void 0)return $.json({error:Q},429,{...R5,...Y===null?{}:{"Retry-After":String(Math.ceil(Y/1000))}});if(Z instanceof z6)return $.json({error:Q},409,R5);let X=PG(Z);if(X!==null){let J=X===404?404:X===409||X===422?409:502;return $.json({error:Q},J,R5)}return $.json({error:Q},502,R5)}async function ve$($,Z,Q){let Y;try{Y=await fetch(Z,Q)}catch{return $.json({error:"Preview unreachable"},502)}let X;try{X=await Y.text()}catch{return $.json({error:"Preview unreachable"},502)}return new Response(X,{status:Y.status,headers:{"content-type":Y.headers.get("content-type")??"application/json"}})}async function fe$($){try{let Z=await md($),Q=await II0(Z,$.get("vmClaim").branch);return $.json(Q,200,R5)}catch(Z){return dW1($,Z)}}function L$0($,Z){let Y=(SI0.get($)??Promise.resolve()).catch(()=>{}).then(Z),X=Y.catch(()=>{});return SI0.set($,X),X.finally(()=>{if(SI0.get($)===X)SI0.delete($)}),Y}async function k7($,Z,Q){if(!Q?.runner&&$.get("vmClaim").runtime==="cms")return $.json({error:"sandbox not found: this session is sandbox-less"},404,R5);let Y=Q?.runner??sb($);if(Y instanceof Response)return Y;let{claimName:X,userId:J,projectRef:G}=$.get("vmClaim"),W=Q?.method??"POST",K=null,H=new Headers;if(Q?.jsonBody!==void 0)K=Q.jsonBody,H.set("content-type","application/json");else if(Q?.forwardJsonBody)K=await $.req.text(),H.set("content-type","application/json");let F=Q?.signal,U={method:W,headers:H,body:K,...F?{signal:F}:{}},N=async()=>{let B=await Y.proxyDaemonRequest(X,Z,U);if(Q?.map404to410&&B.status===404){try{await B.body?.cancel()}catch{}if(await Y.adoptLiveClaim({userId:J,projectRef:G},X))B=await Y.proxyDaemonRequest(X,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",...R5}})}}let D=await B.text(),L=Q?.redactRepoDir?hI6(D):D,w=B.headers.get("content-type")??"application/json";return new Response(L,{status:B.status,headers:{"content-type":w,...R5}})};try{if(F){let B=N();return B.catch(()=>{}),await Promise.race([B,new Promise((L,w)=>{if(F.aborted)return w(F.reason);F.addEventListener("abort",()=>w(F.reason),{once:!0})})])}return await N()}catch(B){let D=B instanceof Error?B.message:String(B);return $.json({error:`Daemon unreachable: ${D}`},502)}}function hI6($){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 CI0($,Z,Q,Y="GET",X){let J=await $.proxyDaemonRequest(Z,Q,{method:Y,headers:new Headers,body:null});if(J.status===404&&X){try{await J.body?.cancel()}catch{}if(await $.adoptLiveClaim(X,Z))J=await $.proxyDaemonRequest(Z,Q,{method:Y,headers:new Headers,body:null})}if(J.status===404){try{await J.body?.cancel()}catch{}throw Error("SANDBOX_GONE")}let G=await J.text();if(!J.ok){let W=`Daemon error (${J.status})`;try{W=JSON.parse(G).error??W}catch{}throw Error(W)}return JSON.parse(G)}function uI6($){return be$.includes($)}var _I6,Ce$=524288,fI6=65536,bI6=1e4,_e$=2000,xI6,SI0,R5,be$,xe$=()=>{let $=new e0;$.use("/:virtualMcpId/:branch/*",xI6),$.post("/:virtualMcpId/:branch/write",(Q)=>k7(Q,"/_sandbox/write",{forwardJsonBody:!0,signal:rb(Q)})),$.post("/:virtualMcpId/:branch/unlink",(Q)=>k7(Q,"/_sandbox/unlink",{forwardJsonBody:!0,signal:rb(Q)})),$.post("/:virtualMcpId/:branch/mkdir",(Q)=>k7(Q,"/_sandbox/mkdir",{forwardJsonBody:!0,signal:rb(Q)})),$.post("/:virtualMcpId/:branch/rename",(Q)=>k7(Q,"/_sandbox/rename",{forwardJsonBody:!0,signal:rb(Q)})),$.post("/:virtualMcpId/:branch/read",(Q)=>k7(Q,"/_sandbox/read",{forwardJsonBody:!0,signal:rb(Q)})),$.post("/:virtualMcpId/:branch/glob",(Q)=>k7(Q,"/_sandbox/glob",{forwardJsonBody:!0,signal:rb(Q)})),$.post("/:virtualMcpId/:branch/grep",(Q)=>k7(Q,"/_sandbox/grep",{forwardJsonBody:!0,signal:rb(Q)})),$.post("/:virtualMcpId/:branch/exec/:script",async(Q)=>{let Y=Q.req.param("script");if(!Y)return Q.json({error:"missing script name"},400);return k7(Q,`/_sandbox/exec/${encodeURIComponent(Y)}`)}),$.post("/:virtualMcpId/:branch/exec/:script/kill",async(Q)=>{let Y=Q.req.param("script");if(!Y)return Q.json({error:"missing script name"},400);return k7(Q,`/_sandbox/exec/${encodeURIComponent(Y)}/kill`)}),$.get("/:virtualMcpId/:branch/config",(Q)=>k7(Q,"/_sandbox/config",{method:"GET",map404to410:!0,redactRepoDir:!0})),$.put("/:virtualMcpId/:branch/config",(Q)=>k7(Q,"/_sandbox/config",{method:"PUT",forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/setup/:step",async(Q)=>{let Y=Q.req.param("step");if(!Y||!uI6(Y))return Q.json({error:`step must be one of: ${be$.join(", ")}`},400);let X=Q.get("vmClaim"),J=await PW1(Q.var.studioContext,{claimName:X.claimName})==="gone"?null:await gI6(Q);if(!J)return Q.json({error:"sandbox not found: nothing is running at this ref"},404,R5);if(Y==="start"){let G=i(Q.var.studioContext),W=Ml(X.virtualMcpMetadata);try{await GP0({ctx:Q.var.studioContext,runner:J,handle:X.claimName,orgId:G.id,userId:X.callerUserId,entries:W})}catch(K){let H=K instanceof Error?K.message:String(K);return Q.json({error:`Failed to push env to daemon: ${H}`},502)}}return k7(Q,`/_sandbox/setup/${Y}`,{signal:Q.req.raw.signal,map404to410:!0,runner:J})}),$.get("/:virtualMcpId/:branch/events",(Q)=>{let Y=Q.get("vmClaim");if(!Y.runner)return RB(Q,async(X)=>{await X.writeSSE({event:"phase",data:JSON.stringify({kind:"failed",reason:"unknown",message:"No sandbox runner configured on this studio instance."})})});return ba$(Q,{ctx:Q.var.studioContext,claimName:Y.claimName,runner:Y.runner,virtualMcpId:Y.virtualMcpId,branch:Y.branch,userId:Y.userId,projectRef:Y.projectRef,virtualMcpMetadata:Y.virtualMcpMetadata})}),$.get("/:virtualMcpId/:branch/git/status",(Q)=>{if(Q.get("vmClaim").runtime==="cms")return fe$(Q);return Z(Q)});let Z=(Q)=>k7(Q,"/_sandbox/git/status",{method:"GET",map404to410:!0,signal:AbortSignal.any([Q.req.raw.signal,AbortSignal.timeout(_e$)])});return $.post("/:virtualMcpId/:branch/git/status",(Q)=>{if(Q.get("vmClaim").runtime==="cms")return fe$(Q);return k7(Q,"/_sandbox/git/status",{map404to410:!0,signal:AbortSignal.any([Q.req.raw.signal,AbortSignal.timeout(_e$)])})}),$.post("/:virtualMcpId/:branch/git/diff",async(Q)=>{let Y=Q.get("vmClaim");if(Y.runtime==="cms")try{let X=await Q.req.json().catch(()=>({})),J=await md(Q),G=await VI0(J,Y.branch,X.base);return Q.json(G,200,R5)}catch(X){return dW1(Q,X)}return k7(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,R5);let Y=sb(Q);if(Y instanceof Response)return Y;let{claimName:X,virtualMcpMetadata:J,connectionIds:G}=Q.get("vmClaim"),W=Q.var.studioContext;return L$0(X,async()=>{try{await AW1(W,Y,X);let K=O$0(J,G);if(K)await Se$(W,Y,X,K)}catch(K){if(K instanceof sw)return Q.json({error:K.message},403,R5);let H=K instanceof Error?K.message:String(K);return Q.json({error:H},502,R5)}return k7(Q,"/_sandbox/git/publish",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/discard",async(Q)=>{let Y=Q.get("vmClaim");if(Y.runtime==="cms")return L$0(Y.claimName,async()=>{let X=await Q.req.json().catch(()=>({})),J=Array.isArray(X.filepaths)?X.filepaths.filter((G)=>typeof G==="string"):[];if(J.length===0)return Q.json({error:"filepaths is required"},400,R5);try{let G=await md(Q);return await qe$(G,Y.branch,J),Q.json({ok:!0},200,R5)}catch(G){let W=PG(G)===409||G instanceof z6?409:502,K=G instanceof Error?G.message:String(G);return Q.json({error:K},W,R5)}});return L$0(Y.claimName,()=>k7(Q,"/_sandbox/git/discard",{forwardJsonBody:!0,map404to410:!0}))}),$.post("/:virtualMcpId/:branch/git/rebase",async(Q)=>{let Y=Q.get("vmClaim");if(Y.runtime==="cms")return L$0(Y.claimName,async()=>{try{let W=await Q.req.json().catch(()=>({})),K=await md(Q),H=W.base??await K.getDefaultBranch();return await kI0(K,Y.branch,H),Q.json({ok:!0},200,R5)}catch(W){return dW1(Q,W)}});let X=sb(Q);if(X instanceof Response)return X;let{claimName:J}=Q.get("vmClaim"),G=Q.var.studioContext;return L$0(J,async()=>{try{await AW1(G,X,J)}catch(W){let K=W instanceof Error?W.message:String(W);return Q.json({error:K},502,R5)}return k7(Q,"/_sandbox/git/rebase",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/suggest-commit",l5({maxSize:Ce$,onError:(Q)=>Q.json({error:"Payload too large"},413,R5)}),async(Q)=>{let Y=Q.get("vmClaim"),X=null;if(Y.runtime!=="cms"){let H=sb(Q);if(H instanceof Response)return H;X=H}let{claimName:J,userId:G,projectRef:W}=Y,K=Q.var.studioContext;try{let H=await Q.req.json().catch(()=>({})),F=H.status,U=H.diff,N=U!=null&&typeof U.diffs==="object"&&U.diffs!==null,[B,D]=qW1(F)&&N?[F,U]:X?await Promise.all([CI0(X,J,"/_sandbox/git/status","GET",{userId:G,projectRef:W}),CI0(X,J,"/_sandbox/git/diff","GET",{userId:G,projectRef:W})]):await(async()=>{let w=await md(Q);return Promise.all([II0(w,Y.branch),VI0(w,Y.branch)])})();await SW(K,i(K).id,"suggesting a commit message");let L=await ua$(K,B,D);return Q.json(L,200,R5)}catch(H){let F=H instanceof Error?H.message:String(H);if(F==="SANDBOX_GONE")return Q.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,R5);return Q.json({error:F},502,R5)}}),$.post("/:virtualMcpId/:branch/git/judge-review",l5({maxSize:Ce$,onError:(Q)=>Q.json({error:"Payload too large"},413,R5)}),async(Q)=>{let Y=Q.get("vmClaim"),X=null;if(Y.runtime!=="cms"){let H=sb(Q);if(H instanceof Response)return H;X=H}let{claimName:J,userId:G,projectRef:W}=Y,K=Q.var.studioContext;try{let H=await Q.req.json().catch(()=>({})),F=H.status,U=H.diff,N=U!=null&&typeof U.diffs==="object"&&U.diffs!==null,[B,D]=qW1(F)&&N?[F,U]:X?await Promise.all([CI0(X,J,"/_sandbox/git/status","GET",{userId:G,projectRef:W}),CI0(X,J,"/_sandbox/git/diff","GET",{userId:G,projectRef:W})]):await(async()=>{let w=await md(Q);return Promise.all([II0(w,Y.branch),VI0(w,Y.branch)])})();await SW(K,i(K).id,"judging whether a change needs review");let L=await ca$(K,B,D,typeof H.language==="string"?H.language:void 0);return Q.json(L,200,R5)}catch(H){let F=H instanceof Error?H.message:String(H);if(F==="SANDBOX_GONE")return Q.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,R5);return Q.json({error:F},502,R5)}}),$.get("/:virtualMcpId/:branch/preview-fetch",async(Q)=>{let Y=sb(Q);if(Y instanceof Response)return Y;let{claimName:X}=Q.get("vmClaim"),J=Q.req.query("path");if(!J||!J.startsWith("/")||J.startsWith("//")||J.includes("..")||J.includes("\\"))return Q.json({error:"Path not allowed"},403);let G;try{G=await Y.getPreviewUrl(X)}catch{return Q.json({error:"Preview not available"},502)}if(!G)return Q.json({error:"Preview not available"},502);let W=G.replace(/\/+$/,"");return ve$(Q,`${W}${J}`)}),$.post("/:virtualMcpId/:branch/preview-invoke",l5({maxSize:fI6,onError:(Q)=>Q.json({error:"Payload too large"},413)}),async(Q)=>{let Y=sb(Q);if(Y instanceof Response)return Y;let{claimName:X}=Q.get("vmClaim"),J;try{J=await Y.getPreviewUrl(X)}catch{return Q.json({error:"Preview not available"},502)}if(!J)return Q.json({error:"Preview not available"},502);let G;try{G=await Q.req.json()}catch{return Q.json({error:"Invalid JSON body"},400)}if(!G||typeof G!=="object"||Array.isArray(G))return Q.json({error:"Invalid JSON body"},400);let W=Me$(G);if(!W)return Q.json({error:"Invalid or missing __resolveType"},400);let K=Ie$(J,W.resolveType);return ve$(Q,K,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(W.payload),signal:AbortSignal.timeout(30000)})}),$};var ye$=O(()=>{y$();vK();gd();zW1();_a();_a$();MG();Il();va$();KK();EH();fa$();xa$();Z81();fa();VW1();da$();ZZ();c6();lW1();Ve$();cW1();_I6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;xI6=OI0(async($,Z)=>{let Q=$.var.studioContext;try{p(Q)}catch{return $.json({error:"Unauthorized"},401)}let Y=u0(Q);if(!Y)return $.json({error:"Unauthorized"},401);let X;try{X=i(Q)}catch{return $.json({error:"Organization scope required"},403)}let J=$.req.param("virtualMcpId"),G=$.req.param("branch");if(!J||!G)return $.json({error:"virtualMcpId and branch are required"},400);try{vI6(G)}catch(L){let w=L instanceof Error?L.message:String(L);return $.json({error:w},400)}let W=await Q.storage.virtualMcps.findById(J);if(!W||W.organization_id!==X.id)return $.json({error:"Virtual MCP not found"},404);let K=Xa({orgId:X.id,virtualMcpId:J,branch:G}),H=await v11(Q,G),F=f11(H,Y),U=Ca$({userId:F,projectRef:K}),N=W.metadata??null,B=await yI6($,{claimName:U,branch:G,virtualMcpId:J,sandboxUserId:F,virtualMcpMetadata:N,branchThread:H});if(B==="cms")return $.set("vmClaim",{claimName:U,callerUserId:Y,runner:null,virtualMcpId:J,branch:G,userId:F,projectRef:K,virtualMcpMetadata:N,connectionIds:W.connections?.map((L)=>L.connection_id)??[],runtime:B}),Z();let D;try{D=await nY(Q)}catch{D=null}if(!D)return $.json({error:"No sandbox runner found"},404);return $.set("vmClaim",{claimName:U,callerUserId:Y,runner:D,virtualMcpId:J,branch:G,userId:F,projectRef:K,virtualMcpMetadata:N,connectionIds:W.connections?.map((L)=>L.connection_id)??[],runtime:B}),Z()});SI0=new Map;R5={"Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache"};be$=["clone","install","start"]});function ge$($,Z,Q){let Y=mW1.get($);if(!Y)Y={pending:null,running:!1},mW1.set($,Y);if(!Y.pending)Y.pending={set:new Map,del:new Set,deps:Z,resolvers:[],rejecters:[]};let X=Y.pending;X.deps=Z;for(let[G,W]of Object.entries(Q.set??{}))X.set.set(G,W),X.del.delete(G);for(let G of Q.delete??[])X.del.add(G),X.set.delete(G);let J=new Promise((G,W)=>{X.resolvers.push(G),X.rejecters.push(W)});if(!Y.running)cI6($,Y);return J}async function cI6($,Z){Z.running=!0;try{while(Z.pending){let Q=Z.pending;Z.pending=null;try{let Y=await dI6(Q);for(let X of Q.resolvers)X(Y)}catch(Y){for(let X of Q.rejecters)X(Y)}}}finally{if(Z.running=!1,!Z.pending)mW1.delete($)}}async function dI6($){let{client:Z,branch:Q,packagePath:Y}=$.deps,X=new Map;for(let J=0;;J++){let G=await dd(Z,Q),W=await Z.listDecofileEntries(G,Y),K=gW1(W,Y),H=[],F=new Map(K.map((N)=>[N.path,{stem:N.stem,sha:N.sha}]));for(let[N,B]of $.set){let D=hW1(K,N),L=`${JSON.stringify(B,null,2)}
|
|
3391
|
-
`;await ze$(Z.repo,L);let w=D[0]??`${RI0(Y)}/${CW1(N)}.json`;H.push({path:w,content:L});let j=w.slice(w.lastIndexOf("/")+1,-5);F.set(w,{stem:j,content:L});for(let E of D.slice(1))H.push({path:E,deleted:!0}),F.delete(E)}for(let N of $.del)for(let B of hW1(K,N))H.push({path:B,deleted:!0}),F.delete(B);if(H.length===0)return G;let U=Y?`${Y}/.deco/blocks.gen.json`:".deco/blocks.gen.json";if(W.some((N)=>N.type==="blob"&&N.path===U)){let N=await Pe$(Z,F.values(),X),{decofile:B,skipped:D}=F$0(N);if(D.length>0)console.warn("decofile gen: dropped blocks that were not valid JSON",{repo:tW(Z.repo),branch:Q,packagePath:Y,blocks:D.map((L)=>L.key)});H.push({path:U,content:B})}try{let{sha:N}=await Z.commitFiles({branch:Q,message:mI6($),expectedHead:G,changes:H});return N}catch(N){if(!(N instanceof z6)||J>=lI6-1)throw N;await P$(_7(2000,200,J,2,0.5))}}}function mI6($){let Z=(X)=>{let J=X.slice(0,3).join(", ");return X.length>3?`${J} (+${X.length-3} more)`:J},Q=[];if($.set.size>0)Q.push(`update ${Z([...$.set.keys()])}`);if($.del.size>0)Q.push(`delete ${Z([...$.del])}`);let Y=`chore(decofile): ${Q.join("; ")}`;return G11(Y,$.deps.coAuthor)}var lI6=3,mW1;var he$=O(()=>{aE0();jI0();X6();m$();ZZ();qI0();mW1=new Map});import{createHmac as ue$,randomBytes as iI6,timingSafeEqual as pI6}from"crypto";function le$(){if(_I0)return _I0;let $;try{let Z=O0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return _I0=$?Buffer.from($):iI6(32),_I0}function iW1($){let Z=$.nowMs??Date.now(),Q={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+nI6)/1000)},Y=Buffer.from(JSON.stringify(Q)).toString("base64url"),X=ue$("sha256",le$()).update(Y).digest("base64url");return`${Y}.${X}`}function ce$($,Z){let Q=$.indexOf(".");if(Q<0)return!1;let Y=$.slice(0,Q),X=Buffer.from($.slice(Q+1)),J=Buffer.from(ue$("sha256",le$()).update(Y).digest("base64url"));if(X.length!==J.length||!pI6(X,J))return!1;let G;try{G=JSON.parse(Buffer.from(Y,"base64url").toString())}catch{return!1}let W=Math.floor((Z.nowMs??Date.now())/1000);return G.o===Z.organizationId&&G.m===Z.virtualMcpId&&G.b===Z.branch&&typeof G.e==="number"&&G.e>=W}var nI6=21600000,_I0=null;var de$=O(()=>{t1()});import{z as id}from"zod";function oI6($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&tI6.test($)}function te$($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function w$0($){let Z=$.get("decofileScope");return pu($.var.studioContext,Z.organizationId,Z.githubRepo)}function j$0($,Z){let Q=Z instanceof Error?Z.message:String(Z);if(Z instanceof z6)return $.json({error:Q},409);let Y=PG(Z);if(Y!==null){let X=Y===404?404:Y===409||Y===422?409:502;return $.json({error:Q},X)}return $.json({error:Q},500)}function oe$(){let $=new e0;return $.use("/:virtualMcpId/:branch",ne$),$.use("/:virtualMcpId/:branch/*",ne$),$.get("/:virtualMcpId/:branch",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await w$0(Z),X=await Ae$(Y,Q.branch,Q.packagePath,{createBranchIfMissing:!!Q.userId}),J={ETag:`"${X.sha}"`,"Cache-Control":"no-store","Access-Control-Allow-Origin":"*"};if(Z.req.header("if-none-match")===`"${X.sha}"`)return Z.body(null,304,J);if(!Q.userId)return Z.body(X.decofile,200,{...J,"content-type":"application/json"});let G=iW1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.body(`{"version":${JSON.stringify(X.sha)},"token":${JSON.stringify(G)},"apiHost":${JSON.stringify(te$(Z))},"decofile":${X.decofile}}`,200,{...J,"content-type":"application/json"})}catch(Y){return j$0(Z,Y)}}),$.get("/:virtualMcpId/:branch/meta",async(Z)=>{let Q=Z.get("decofileScope"),Y=Q.packagePath?`${Q.packagePath}/.deco/meta.gen.json`:".deco/meta.gen.json";try{let X=await w$0(Z),J=await X.readFileAtRef(Q.branch,Y);if(J===null){let G=await X.getDefaultBranch();if(G!==Q.branch)J=await X.readFileAtRef(G,Y)}if(J===null)return Z.json({error:"meta.gen.json not committed"},404);return Z.body(J,200,{"content-type":"application/json","Cache-Control":"no-store","Access-Control-Allow-Origin":"*"})}catch(X){return j$0(Z,X)}}),$.patch("/:virtualMcpId/:branch",sI6,async(Z)=>{let Q=Z.get("decofileScope"),Y=Z.var.studioContext,X=aI6.safeParse(await Z.req.json().catch(()=>null));if(!X.success)return Z.json({error:"Invalid body",details:X.error.issues},400);let J=X.data;for(let G of[...Object.keys(J.set??{}),...J.delete??[]])try{wI0(G)}catch(W){let K=W instanceof Error?W.message:String(W);return Z.json({error:K},400)}for(let[G,W]of Object.entries(J.set??{})){if(typeof W!=="object"||W===null||Array.isArray(W))return Z.json({error:`Block "${G}" must be a JSON object`},400);if(SW1(G))return Z.json({error:`Block key "${G}" collides with a framework resolver module and cannot be written`},400)}try{let G=await w$0(Z),W=await ge$(`${Q.organizationId}/${Q.virtualMcpId}/${Q.branch}`,{client:G,branch:Q.branch,packagePath:Q.packagePath,coAuthor:hd(Y)},J),K=iW1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.json({version:W,token:K,apiHost:te$(Z)})}catch(G){return j$0(Z,G)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await w$0(Z),X=await Y.getDefaultBranch();if(X===Q.branch)return Z.json({error:"Branch is already the default branch"},400);let J=`chore(decofile): publish ${Q.branch}`;try{let G;try{G=await Y.mergeBranches(X,Q.branch,J)}catch(W){if(PG(W)!==409)throw W;await kI0(Y,Q.branch,X),G=await Y.mergeBranches(X,Q.branch,J)}return G?Z.json({result:"merged",sha:G}):Z.json({result:"up-to-date"})}catch(G){if(PG(G)===409)return Z.json({error:"merge-conflict"},409);if(PG(G)===405){let K=await Y.findOpenChangeRequest(X,Q.branch)??await Y.createChangeRequest({base:X,head:Q.branch,title:`Publish ${Q.branch}`});return Z.json({result:"pull-request",number:K.number,url:K.url})}throw G}}catch(Y){return j$0(Z,Y)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await w$0(Z),X=await Y.getDefaultBranch();if(X===Q.branch)return Z.json({baseBranch:X,aheadBy:0,behindBy:0,lastCommitAt:null});try{let[{aheadBy:J,behindBy:G},W]=await Promise.all([Y.compare(X,Q.branch),Y.getBranch(Q.branch)]);return Z.json({baseBranch:X,aheadBy:J,behindBy:G,lastCommitAt:W?.committedAt??null})}catch(J){if(PG(J)===404)return Z.json({baseBranch:X,aheadBy:0,behindBy:0,lastCommitAt:null});throw J}}catch(Y){return j$0(Z,Y)}}),$}var tI6,me$=500,ie$=1048576,pe$=1024,rI6=8388608,sI6,aI6,ne$;var re$=O(()=>{Q81();jI0();y$();vK();zW1();LI0();cW1();ZZ();he$();de$();lW1();qI0();EH();tI6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;sI6=l5({maxSize:rI6,onError:($)=>$.json({error:"Payload too large"},413)}),aI6=id.object({set:id.record(id.string(),id.unknown()).optional(),delete:id.array(id.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)<=me$,{message:`Patch cannot touch more than ${me$} blocks`}).refine(($)=>Object.values($.set??{}).every((Z)=>JSON.stringify(Z).length<=ie$),{message:`Each block must be at most ${ie$} bytes`}).refine(($)=>[...Object.keys($.set??{}),...$.delete??[]].every((Z)=>Z.length<=pe$),{message:`Each block key must be at most ${pe$} characters`}),ne$=OI0(async($,Z)=>{let Q=$.var.studioContext,Y=Q.organization;if(!Y)return $.json({error:"Organization scope required"},500);let X=$.req.param("virtualMcpId"),J=$.req.param("branch");if(!X||!J)return $.json({error:"virtualMcpId and branch are required"},400);if(!oI6(J))return $.json({error:`Invalid branch name: ${J}`},400);let G=Q.auth?.user?.id??null;if(!G){let B=$.req.query("token");if(!($.req.method==="GET"&&!$.req.path.match(/\/(publish|status)$/)))return $.json({error:"Unauthorized"},401);if(!B||!ce$(B,{organizationId:Y.id,virtualMcpId:X,branch:J}))return $.json({error:"Unauthorized"},401)}if(!await e3(Q,Y.id,"cms"))return $.json({error:"This organization's plan does not include the CMS",code:"feature_not_in_plan"},403);let W=await Q.storage.virtualMcps.findById(X);if(!W||W.organization_id!==Y.id)return $.json({error:"Virtual MCP not found"},404);let K=W.metadata??null;if(!HP0(K))return $.json({error:"Project has no preview server configured"},404);let F=W.connections?.map((B)=>B.connection_id)??[],U=O$0(K,F);if(!U)return $.json({error:"Project has no GitHub repository"},404);let N=K?.runtime;return $.set("decofileScope",{organizationId:Y.id,virtualMcpId:X,branch:J,packagePath:N?.path?.replace(/^\/+|\/+$/g,"")||null,githubRepo:U,userId:G}),Z()})});var se$=($)=>{let Z=new e0;if(Z.use("*",Ld),Z.use("*",Mt$),Z.route("/",qM0()),Z.route("/",Ko$()),Z.route("/",tt$()),Z.route("/",ja$()),Z.route("/",Ha$()),Z.route("/",Oa$()),Z.route("/",Ua$()),Z.route("/",NI0()),Z.route("/tools",qa$()),Z.route("/",Aa$()),Z.route("/",ls$({kvStorage:$.kvStorage})),Z.route("/",hs$()),Z.route("/fs",$a$({getConnection:$.getNatsConnection})),Z.route("/sandbox",xe$()),Z.route("/decofile",oe$()),Z.route("/",Ga$()),Z.route("/",Qa$()),Z.route("/deco-sites",IM0()),Z.route("/hosting",yt$()),Z.route("/monitor",mt$()),Z.route("/sso",zM0()),Z.route("/",BI0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",_t$()),$.mountDevAssets)Z.route("/dev-assets",CM0({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("/",fi$()),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",Xa$()),Z.route("/mcp",N20()),Z.route("/mcp/self",HI0()),Z.route("/mcp",O20()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var ae$=O(()=>{y$();It$();HM0();vt$();l31();gt$();it$();_M0();gb();x31();p31();us$();cs$();Za$();Ya$();ie();S31();L20();UW1();Ja$();Wa$();Fa$();Na$();DW1();Ea$();Ta$();OW1();Ma$();LW1();B20();ye$();re$()});function eI6($){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 $V6=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},ee$=()=>{let $=new e0;return $.use("*",$V6),$.get("/",async(Z)=>{let Q=O0(),Y=Q.decoSupabaseUrl,X=Q.decoSupabaseServiceKey;if(!Y||!X)return Z.json({apps:[]});try{let J=await HJ(Y,X,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:eI6(J)})}catch(J){return console.error("[deco-apps] GET error:",J),Z.json({error:"Failed to fetch apps"},502)}}),$};var $08=O(()=>{y$();t1();Kq0()});import{z as V1}from"zod";function tF($,Z="invalid_request_error",Q=null,Y=null){return{error:{message:$,type:Z,param:Q,code:Y}}}function FV6($){if(!$)return null;let Z=$.indexOf(":");if(Z===-1)return{credentialId:null,modelId:$};let Q=$.substring(0,Z),Y=$.substring(Z+1);if(!Q||!Y)return null;return{credentialId:Q,modelId:Y}}function UV6($,Z,Q){try{return JSON.parse($)}catch{throw new Y08(`Invalid JSON in tool call arguments for function '${Q}' (tool_call_id: ${Z}): ${$}`)}}function NV6($){let Z={};for(let Q of $)if(Q.role==="assistant"&&Q.tool_calls)for(let Y of Q.tool_calls)Z[Y.id]=Y.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((X)=>{if(X.type==="text")return{type:"text",text:X.text};return{type:"image",image:X.image_url.url}})};case"assistant":if(Q.tool_calls&&Q.tool_calls.length>0)return{role:"assistant",content:Q.tool_calls.map((X)=>({type:"tool-call",toolCallId:X.id,toolName:X.function.name,input:UV6(X.function.arguments,X.id,X.function.name)}))};return{role:"assistant",content:Q.content??""};case"tool":let Y=Z[Q.tool_call_id]??"unknown";return{role:"tool",content:[{type:"tool-result",toolCallId:Q.tool_call_id,toolName:Y,output:{type:"text",value:Q.content}}]}}})}function BV6($){let Z=$.map((Q)=>{let Y=Q.function.parameters?vJ(Q.function.parameters):vJ({type:"object",properties:{}});return[Q.function.name,D$({description:Q.function.description,inputSchema:Y})]});return Object.fromEntries(Z)}function DV6($){if(!$)return;return{openai:{response_format:$}}}function OV6(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function Z08($,Z,Q,Y,X,J){let G={model:$,messages:Z,tools:Q,temperature:Y.temperature,maxTokens:Y.max_tokens,topP:Y.top_p,frequencyPenalty:Y.frequency_penalty,presencePenalty:Y.presence_penalty,stopSequences:Y.stop?Array.isArray(Y.stop)?Y.stop:[Y.stop]:void 0,abortSignal:J};return X?{...G,providerOptions:X}:G}function Q08($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var ZV6=256,QV6,YV6,XV6,JV6,GV6,WV6,KV6,HV6,Y08,X08,J08;var G08=O(()=>{b4();y$();gd();zK();QV6=V1.object({type:V1.literal("function"),function:V1.object({name:V1.string(),description:V1.string().optional(),parameters:V1.record(V1.string(),V1.unknown()).optional()})}),YV6=V1.object({id:V1.string(),type:V1.literal("function"),function:V1.object({name:V1.string(),arguments:V1.string()})}),XV6=V1.discriminatedUnion("role",[V1.object({role:V1.literal("system"),content:V1.string(),name:V1.string().optional()}),V1.object({role:V1.literal("user"),content:V1.union([V1.string(),V1.array(V1.union([V1.object({type:V1.literal("text"),text:V1.string()}),V1.object({type:V1.literal("image_url"),image_url:V1.object({url:V1.string(),detail:V1.string().optional()})})]))]),name:V1.string().optional()}),V1.object({role:V1.literal("assistant"),content:V1.string().nullable().optional(),name:V1.string().optional(),tool_calls:V1.array(YV6).optional()}),V1.object({role:V1.literal("tool"),content:V1.string(),tool_call_id:V1.string()})]),JV6=V1.object({type:V1.literal("text")}),GV6=V1.object({type:V1.literal("json_object")}),WV6=V1.object({type:V1.literal("json_schema"),json_schema:V1.object({name:V1.string(),description:V1.string().optional(),schema:V1.record(V1.string(),V1.unknown()),strict:V1.boolean().optional()})}),KV6=V1.union([JV6,GV6,WV6]),HV6=V1.object({model:V1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:V1.array(XV6),stream:V1.boolean().optional().default(!1),temperature:V1.number().min(0).max(2).optional(),max_tokens:V1.number().positive().optional(),top_p:V1.number().min(0).max(1).optional(),frequency_penalty:V1.number().min(-2).max(2).optional(),presence_penalty:V1.number().min(-2).max(2).optional(),stop:V1.union([V1.string(),V1.array(V1.string())]).optional(),tools:V1.array(QV6).optional(),tool_choice:V1.union([V1.literal("auto"),V1.literal("none"),V1.literal("required"),V1.object({type:V1.literal("function"),function:V1.object({name:V1.string()})})]).optional(),response_format:KV6.optional(),user:V1.string().optional()});Y08=class Y08 extends Error{constructor($){super($);this.name="MessageConversionError"}};X08=new e0;X08.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),Q=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(tF("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(tF("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(tF("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Y=await $.req.json(),X=HV6.safeParse(Y);if(!X.success){let w=X.error.issues[0]??{message:"Invalid request",path:[]};return $.json(tF(`Invalid request: ${w.message}`,"invalid_request_error",w.path.length>0?w.path.join("."):null),400)}let J=X.data,G=FV6(J.model);if(!G)return $.json(tF("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}=G,{modelId:K}=G;if(!W){let j=(await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id})).find((E)=>WE(E.providerId));if(!j)return $.json(tF("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=j.id}let H;try{H=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json(tF(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),U=NV6(J.messages),N=J.tools?BV6(J.tools):void 0,B=DV6(J.response_format),D=OV6(),L=Math.floor(Date.now()/1000);if(J.stream)return RB($,async(w)=>{let j=Z08(F,U,N,J,B,$.req.raw.signal);try{let E=$w(j),z=!1,P=0,A="",q=async()=>{if(A.length===0)return;let k=A;A="",await w.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{content:k},finish_reason:null}]})})};for await(let k of E.fullStream){if(!z&&(k.type==="text-delta"||k.type==="tool-call"))await w.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),z=!0;if(k.type==="text-delta"){if(A+=k.text,A.length>=ZV6)await q()}else if(k.type==="tool-call"){await q();let M=P++;await w.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:L,model:J.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 q(),await w.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{},finish_reason:Q08(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 q(),await w.writeSSE({data:"[DONE]"})}catch(E){let z=E;console.error("[openai-compat:stream] Error:",z.message),await w.writeSSE({data:JSON.stringify({error:{message:z.message,type:"server_error"}})})}});else{let w=Z08(F,U,N,J,B,$.req.raw.signal),j=await aL(w),E={role:"assistant",content:j.text||null};if(j.toolCalls&&j.toolCalls.length>0)E.tool_calls=j.toolCalls.map((z)=>({id:z.toolCallId,type:"function",function:{name:z.toolName,arguments:JSON.stringify("input"in z?z.input:{})}})),E.content=null;return $.json({id:D,object:"chat.completion",created:L,model:J.model,choices:[{index:0,message:E,finish_reason:Q08(j.finishReason)}],usage:{prompt_tokens:j.usage?.inputTokens??0,completion_tokens:j.usage?.outputTokens??0,total_tokens:j.usage?.totalTokens??0}})}}catch(Y){let X=Y;if(X.name==="AbortError")return $.json(tF("Request aborted","invalid_request_error"),400);if(X.name==="MessageConversionError")return $.json(tF(X.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",X.message,X.stack),$.json(tF(X.message,"server_error"),500)}});J08=X08});function LV6($){if(typeof $!=="object"||$===null)return!1;let Q=$.githubRepo?.url;return typeof Q==="string"&&Q.length>0}function W08(){let $=new e0;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"),Y=u0(Q);if(!Y)return Z.json({error:"Authentication required"},401);let J=(Z.req.query("site")??"").trim().toLowerCase();if(!iZ(J))return Z.json({error:"Invalid site slug"},400);let G=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","=",Y).execute(),W=[];for(let H of G){if(!H.slug||r5(H))continue;let F=await Q.storage.virtualMcps.list(H.id);for(let U of F){if(xJ0(U)!==J)continue;if(!LV6(U.metadata))continue;W.push({orgSlug:H.slug,orgName:H.name??H.slug,project:{id:U.id,title:U.title,icon:U.icon??null}})}}let K={matches:W};return Z.json(K)}),$}var K08=O(()=>{y$();jG()});var F08;var H08=O(()=>{F08={name:"decocms",version:"4.377.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 EV6(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??jV6}}var U08,jV6="https://ph.studio.decocms.com",N08;var B08=O(()=>{y$();Wr();gf();k5();t1();L31();H08();U08=new e0;U08.get("/",($)=>{let Z={version:F08.version,theme:c5$(),...pW().logo&&{logo:pW().logo},...rN()&&{internalUrl:Ah1()},...O0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!O0().firecrawlApiKey,hostingEnabled:!!O0().controlplaneRestUrl&&!!O0().controlplaneServiceToken,hostingControlPlaneGa:O0().hostingControlPlaneGa,monitorEnabled:!!O0().clickhouseAnalyticsUrl&&!!O0().clickhouseAnalyticsPassword,monitorGa:O0().monitorGa,plansEnabled:O0().plansEnabled,auth:In$(),posthog:EV6(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:SB()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});N08=U08});function pd($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function pW1($){return(pd($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((Q)=>Q.charAt(0).toUpperCase()+Q.slice(1)).join(" ")}function O08($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(pd($))}&sz=${Z}`}function D08($,Z){let Q=$.trim();if(Q.length<=Z)return Q;let Y=Q.slice(0,Z-1),X=Y.lastIndexOf(" ");return`${(X>Z*0.6?Y.slice(0,X):Y).trimEnd()}\u2026`}function L08($){let{brand:Z,domain:Q,score:Y,verdict:X}=$,J=typeof Y==="number"?`${Z} commerce report \u2014 ${Math.round(Y)}/100 \xB7 decocms`:`${Z} commerce report \xB7 decocms`,G=`See the full ${Z} scorecard \u2014 SEO, performance, conversion & AEO signals scored by decocms.`,W=X?.trim()?D08(`${X.trim().replace(/\s+/g," ")} \u2014 ${G}`,200):D08(`How does ${Q} really perform? ${G}`,200);return{title:J,description:W}}import{z as m0}from"zod";var ab,zV6,PV6,AV6,TV6,w08;var j08=O(()=>{ab=m0.enum(["good","bad","neutral"]),zV6=m0.preprocess(($)=>{if(Array.isArray($))return{kind:"text",value:$.find((Q)=>Q!==null&&typeof Q!=="object")??""};return $!==null&&typeof $==="object"?$:{kind:"text",value:$}},m0.object({kind:m0.enum(["text","number","sparkline","badge","score"]).catch("text"),value:m0.coerce.string().optional(),tone:ab.optional(),muted:m0.boolean().optional(),delta:m0.coerce.string().optional(),deltaDir:m0.enum(["up","down","neutral"]).optional(),points:m0.array(m0.coerce.number()).optional(),label:m0.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 $})),PV6=m0.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},m0.array(zV6)),AV6={key:m0.coerce.string(),title:m0.coerce.string(),eyebrow:m0.coerce.string().optional(),headline:m0.coerce.string(),annotation:m0.coerce.string().optional(),methodology:m0.coerce.string().optional(),sources:m0.array(m0.object({name:m0.coerce.string(),logoUrl:m0.coerce.string()})).optional()},TV6=m0.discriminatedUnion("template",[m0.object({template:m0.literal("cover"),score:m0.object({value:m0.coerce.number(),max:m0.coerce.number().optional(),grade:m0.coerce.string().optional(),label:m0.coerce.string().optional()}).optional(),brandImage:m0.coerce.string().optional(),screenshot:m0.coerce.string().optional(),mobileScreenshot:m0.coerce.string().optional()}),m0.object({template:m0.literal("cta"),ctaUrl:m0.coerce.string().optional(),ctaLabel:m0.coerce.string().optional(),bullets:m0.array(m0.coerce.string()).optional()}),m0.object({template:m0.literal("series"),points:m0.array(m0.coerce.number()).min(2),xLabels:m0.array(m0.coerce.string()).min(1),unit:m0.coerce.string().optional(),callout:m0.object({index:m0.coerce.number(),value:m0.coerce.string(),tone:ab.optional()})}),m0.object({template:m0.literal("threshold"),value:m0.coerce.string().default(""),metricLabel:m0.coerce.string().optional(),ratio:m0.coerce.number(),thresholdRatio:m0.coerce.number().optional(),thresholdLabel:m0.coerce.string().default(""),tone:ab.optional()}),m0.object({template:m0.literal("stats"),stats:m0.array(m0.object({value:m0.coerce.string(),label:m0.coerce.string(),tone:ab.optional()})).min(1)}),m0.object({template:m0.literal("bars"),items:m0.array(m0.object({value:m0.coerce.string(),label:m0.coerce.string(),ratio:m0.coerce.number(),tone:ab.optional()})).min(1)}),m0.object({template:m0.literal("gauges"),gauges:m0.array(m0.object({label:m0.coerce.string(),value:m0.coerce.string(),status:m0.enum(["good","warn","bad"]).catch("warn"),caption:m0.coerce.string().optional(),ratio:m0.coerce.number().optional()})).min(1)}),m0.object({template:m0.literal("checklist"),checks:m0.array(m0.object({label:m0.coerce.string(),status:m0.enum(["pass","fail","warn"]).catch("fail"),value:m0.coerce.string().optional()})).min(1)}),m0.object({template:m0.literal("table"),columns:m0.array(m0.object({label:m0.coerce.string(),align:m0.enum(["left","right"]).optional()})).min(1),rows:m0.array(PV6).min(1),highlightRow:m0.coerce.number().optional()}),m0.object({template:m0.literal("products"),products:m0.array(m0.object({name:m0.coerce.string(),price:m0.coerce.string().optional(),image:m0.coerce.string().optional(),url:m0.coerce.string().optional()})).min(1)}),m0.object({template:m0.literal("list"),entries:m0.array(m0.object({label:m0.coerce.string(),severity:m0.enum(["error","warning","notice"]).catch("notice")})).min(1),moreCount:m0.coerce.number().optional()}),m0.object({template:m0.literal("keywords"),volumeLabel:m0.coerce.string().optional(),keywords:m0.array(m0.object({term:m0.coerce.string(),volume:m0.coerce.string(),position:m0.coerce.number().catch(0)})).min(1)}),m0.object({template:m0.literal("competitor"),metricLabel:m0.coerce.string().optional(),competitors:m0.array(m0.object({name:m0.coerce.string(),value:m0.coerce.string(),tone:ab.optional(),isYou:m0.boolean().optional()})).min(1)}),m0.object({template:m0.literal("scorecard"),rivalLabel:m0.coerce.string().optional(),dimensions:m0.array(m0.object({label:m0.coerce.string(),you:m0.coerce.string(),rival:m0.coerce.string().optional(),rivalName:m0.coerce.string().optional(),tone:ab.optional()})).min(1)})]),w08=m0.object({...AV6,template:TV6})});function vI0($){let Z=[],Q=[...$.sections].sort((X,J)=>X.position-J.position).map((X)=>{let J=w08.safeParse(X.props);if(J.success)return J.data;let G=J.error.issues[0];return Z.push({section_type:X.section_type,position:X.position,reason:G?`${G.path.join(".")||"(root)"}: ${G.message}`:"contract violation"}),null}).filter((X)=>X!==null),Y=Q.filter((X)=>X.template.template!=="cover"&&X.template.template!=="cta").map((X)=>({key:X.key,title:X.title}));return{deck:{meta:{...$.meta,scores:$.summary?.scores,scannedAt:$.scanned_at,toc:Y},slides:Q},drops:Z}}var nW1=O(()=>{j08()});import{join as E08}from"path";async function qV6($){try{let Z=await fetch(`${xH({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(RV6)});if(!Z.ok)return null;let Q=await Z.json(),{deck:Y}=vI0(Q);if(!Y.slides.length)return null;let X=Y.slides.find((W)=>W.template.template==="cover"),J=X?.template,G=J&&J.template==="cover"?J:void 0;return{brand:Y.meta.brand?.trim()||pW1($),score:Y.meta.scores?.cover??G?.score?.value,verdict:X?.annotation?.trim()||X?.headline?.trim()||void 0}}catch{return null}}function P3($){return $.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""")}function MV6($,Z){let Q=pd($),Y=Z?.brand?.trim()||pW1(Q),X=O08(Q,128),G=`${(O0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(Q)}`,{title:W,description:K}=L08({brand:Y,domain:Q,score:Z?.score,verdict:Z?.verdict}),H=`${G}/og.png`,F=`${Y} commerce report by decocms`;return[`<title>${P3(W)}</title>`,`<meta name="description" content="${P3(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="${P3(W)}" />`,`<meta property="og:description" content="${P3(K)}" />`,`<meta property="og:url" content="${P3(G)}" />`,`<meta property="og:image" content="${P3(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${P3(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${P3(W)}" />`,`<meta name="twitter:description" content="${P3(K)}" />`,`<meta name="twitter:image" content="${P3(H)}" />`,`<meta name="twitter:image:alt" content="${P3(F)}" />`,`<link rel="canonical" href="${P3(G)}" />`,`<link rel="icon" href="${P3(X)}" sizes="any" />`].join(`
|
|
3391
|
+
`;await ze$(Z.repo,L);let w=D[0]??`${RI0(Y)}/${CW1(N)}.json`;H.push({path:w,content:L});let j=w.slice(w.lastIndexOf("/")+1,-5);F.set(w,{stem:j,content:L});for(let E of D.slice(1))H.push({path:E,deleted:!0}),F.delete(E)}for(let N of $.del)for(let B of hW1(K,N))H.push({path:B,deleted:!0}),F.delete(B);if(H.length===0)return G;let U=Y?`${Y}/.deco/blocks.gen.json`:".deco/blocks.gen.json";if(W.some((N)=>N.type==="blob"&&N.path===U)){let N=await Pe$(Z,F.values(),X),{decofile:B,skipped:D}=F$0(N);if(D.length>0)console.warn("decofile gen: dropped blocks that were not valid JSON",{repo:tW(Z.repo),branch:Q,packagePath:Y,blocks:D.map((L)=>L.key)});H.push({path:U,content:B})}try{let{sha:N}=await Z.commitFiles({branch:Q,message:mI6($),expectedHead:G,changes:H});return N}catch(N){if(!(N instanceof z6)||J>=lI6-1)throw N;await P$(_7(2000,200,J,2,0.5))}}}function mI6($){let Z=(X)=>{let J=X.slice(0,3).join(", ");return X.length>3?`${J} (+${X.length-3} more)`:J},Q=[];if($.set.size>0)Q.push(`update ${Z([...$.set.keys()])}`);if($.del.size>0)Q.push(`delete ${Z([...$.del])}`);let Y=`chore(decofile): ${Q.join("; ")}`;return G11(Y,$.deps.coAuthor)}var lI6=3,mW1;var he$=O(()=>{aE0();jI0();X6();m$();ZZ();qI0();mW1=new Map});import{createHmac as ue$,randomBytes as iI6,timingSafeEqual as pI6}from"crypto";function le$(){if(_I0)return _I0;let $;try{let Z=O0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return _I0=$?Buffer.from($):iI6(32),_I0}function iW1($){let Z=$.nowMs??Date.now(),Q={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+nI6)/1000)},Y=Buffer.from(JSON.stringify(Q)).toString("base64url"),X=ue$("sha256",le$()).update(Y).digest("base64url");return`${Y}.${X}`}function ce$($,Z){let Q=$.indexOf(".");if(Q<0)return!1;let Y=$.slice(0,Q),X=Buffer.from($.slice(Q+1)),J=Buffer.from(ue$("sha256",le$()).update(Y).digest("base64url"));if(X.length!==J.length||!pI6(X,J))return!1;let G;try{G=JSON.parse(Buffer.from(Y,"base64url").toString())}catch{return!1}let W=Math.floor((Z.nowMs??Date.now())/1000);return G.o===Z.organizationId&&G.m===Z.virtualMcpId&&G.b===Z.branch&&typeof G.e==="number"&&G.e>=W}var nI6=21600000,_I0=null;var de$=O(()=>{t1()});import{z as id}from"zod";function oI6($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&tI6.test($)}function te$($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function w$0($){let Z=$.get("decofileScope");return pu($.var.studioContext,Z.organizationId,Z.githubRepo)}function j$0($,Z){let Q=Z instanceof Error?Z.message:String(Z);if(Z instanceof z6)return $.json({error:Q},409);let Y=PG(Z);if(Y!==null){let X=Y===404?404:Y===409||Y===422?409:502;return $.json({error:Q},X)}return $.json({error:Q},500)}function oe$(){let $=new e0;return $.use("/:virtualMcpId/:branch",ne$),$.use("/:virtualMcpId/:branch/*",ne$),$.get("/:virtualMcpId/:branch",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await w$0(Z),X=await Ae$(Y,Q.branch,Q.packagePath,{createBranchIfMissing:!!Q.userId}),J={ETag:`"${X.sha}"`,"Cache-Control":"no-store","Access-Control-Allow-Origin":"*"};if(Z.req.header("if-none-match")===`"${X.sha}"`)return Z.body(null,304,J);if(!Q.userId)return Z.body(X.decofile,200,{...J,"content-type":"application/json"});let G=iW1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.body(`{"version":${JSON.stringify(X.sha)},"token":${JSON.stringify(G)},"apiHost":${JSON.stringify(te$(Z))},"decofile":${X.decofile}}`,200,{...J,"content-type":"application/json"})}catch(Y){return j$0(Z,Y)}}),$.get("/:virtualMcpId/:branch/meta",async(Z)=>{let Q=Z.get("decofileScope"),Y=Q.packagePath?`${Q.packagePath}/.deco/meta.gen.json`:".deco/meta.gen.json";try{let X=await w$0(Z),J=await X.readFileAtRef(Q.branch,Y);if(J===null){let G=await X.getDefaultBranch();if(G!==Q.branch)J=await X.readFileAtRef(G,Y)}if(J===null)return Z.json({error:"meta.gen.json not committed"},404);return Z.body(J,200,{"content-type":"application/json","Cache-Control":"no-store","Access-Control-Allow-Origin":"*"})}catch(X){return j$0(Z,X)}}),$.patch("/:virtualMcpId/:branch",sI6,async(Z)=>{let Q=Z.get("decofileScope"),Y=Z.var.studioContext,X=aI6.safeParse(await Z.req.json().catch(()=>null));if(!X.success)return Z.json({error:"Invalid body",details:X.error.issues},400);let J=X.data;for(let G of[...Object.keys(J.set??{}),...J.delete??[]])try{wI0(G)}catch(W){let K=W instanceof Error?W.message:String(W);return Z.json({error:K},400)}for(let[G,W]of Object.entries(J.set??{})){if(typeof W!=="object"||W===null||Array.isArray(W))return Z.json({error:`Block "${G}" must be a JSON object`},400);if(SW1(G))return Z.json({error:`Block key "${G}" collides with a framework resolver module and cannot be written`},400)}try{let G=await w$0(Z),W=await ge$(`${Q.organizationId}/${Q.virtualMcpId}/${Q.branch}`,{client:G,branch:Q.branch,packagePath:Q.packagePath,coAuthor:hd(Y)},J),K=iW1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.json({version:W,token:K,apiHost:te$(Z)})}catch(G){return j$0(Z,G)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await w$0(Z),X=await Y.getDefaultBranch();if(X===Q.branch)return Z.json({error:"Branch is already the default branch"},400);let J=`chore(decofile): publish ${Q.branch}`;try{let G;try{G=await Y.mergeBranches(X,Q.branch,J)}catch(W){if(PG(W)!==409)throw W;await kI0(Y,Q.branch,X),G=await Y.mergeBranches(X,Q.branch,J)}return G?Z.json({result:"merged",sha:G}):Z.json({result:"up-to-date"})}catch(G){if(PG(G)===409)return Z.json({error:"merge-conflict"},409);if(PG(G)===405){let K=await Y.findOpenChangeRequest(X,Q.branch)??await Y.createChangeRequest({base:X,head:Q.branch,title:`Publish ${Q.branch}`});return Z.json({result:"pull-request",number:K.number,url:K.url})}throw G}}catch(Y){return j$0(Z,Y)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await w$0(Z),X=await Y.getDefaultBranch();if(X===Q.branch)return Z.json({baseBranch:X,aheadBy:0,behindBy:0,lastCommitAt:null});try{let[{aheadBy:J,behindBy:G},W]=await Promise.all([Y.compare(X,Q.branch),Y.getBranch(Q.branch)]);return Z.json({baseBranch:X,aheadBy:J,behindBy:G,lastCommitAt:W?.committedAt??null})}catch(J){if(PG(J)===404)return Z.json({baseBranch:X,aheadBy:0,behindBy:0,lastCommitAt:null});throw J}}catch(Y){return j$0(Z,Y)}}),$}var tI6,me$=500,ie$=1048576,pe$=1024,rI6=8388608,sI6,aI6,ne$;var re$=O(()=>{Q81();jI0();y$();vK();zW1();LI0();cW1();ZZ();he$();de$();lW1();qI0();EH();tI6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;sI6=l5({maxSize:rI6,onError:($)=>$.json({error:"Payload too large"},413)}),aI6=id.object({set:id.record(id.string(),id.unknown()).optional(),delete:id.array(id.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)<=me$,{message:`Patch cannot touch more than ${me$} blocks`}).refine(($)=>Object.values($.set??{}).every((Z)=>JSON.stringify(Z).length<=ie$),{message:`Each block must be at most ${ie$} bytes`}).refine(($)=>[...Object.keys($.set??{}),...$.delete??[]].every((Z)=>Z.length<=pe$),{message:`Each block key must be at most ${pe$} characters`}),ne$=OI0(async($,Z)=>{let Q=$.var.studioContext,Y=Q.organization;if(!Y)return $.json({error:"Organization scope required"},500);let X=$.req.param("virtualMcpId"),J=$.req.param("branch");if(!X||!J)return $.json({error:"virtualMcpId and branch are required"},400);if(!oI6(J))return $.json({error:`Invalid branch name: ${J}`},400);let G=Q.auth?.user?.id??null;if(!G){let B=$.req.query("token");if(!($.req.method==="GET"&&!$.req.path.match(/\/(publish|status)$/)))return $.json({error:"Unauthorized"},401);if(!B||!ce$(B,{organizationId:Y.id,virtualMcpId:X,branch:J}))return $.json({error:"Unauthorized"},401)}if(!await e3(Q,Y.id,"cms"))return $.json({error:"This organization's plan does not include the CMS",code:"feature_not_in_plan"},403);let W=await Q.storage.virtualMcps.findById(X);if(!W||W.organization_id!==Y.id)return $.json({error:"Virtual MCP not found"},404);let K=W.metadata??null;if(!HP0(K))return $.json({error:"Project has no preview server configured"},404);let F=W.connections?.map((B)=>B.connection_id)??[],U=O$0(K,F);if(!U)return $.json({error:"Project has no GitHub repository"},404);let N=K?.runtime;return $.set("decofileScope",{organizationId:Y.id,virtualMcpId:X,branch:J,packagePath:N?.path?.replace(/^\/+|\/+$/g,"")||null,githubRepo:U,userId:G}),Z()})});var se$=($)=>{let Z=new e0;if(Z.use("*",Ld),Z.use("*",Mt$),Z.route("/",qM0()),Z.route("/",Ko$()),Z.route("/",tt$()),Z.route("/",ja$()),Z.route("/",Ha$()),Z.route("/",Oa$()),Z.route("/",Ua$()),Z.route("/",NI0()),Z.route("/tools",qa$()),Z.route("/",Aa$()),Z.route("/",ls$({kvStorage:$.kvStorage})),Z.route("/",hs$()),Z.route("/fs",$a$({getConnection:$.getNatsConnection})),Z.route("/sandbox",xe$()),Z.route("/decofile",oe$()),Z.route("/",Ga$()),Z.route("/",Qa$()),Z.route("/deco-sites",IM0()),Z.route("/hosting",yt$()),Z.route("/monitor",mt$()),Z.route("/sso",zM0()),Z.route("/",BI0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",_t$()),$.mountDevAssets)Z.route("/dev-assets",CM0({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("/",fi$()),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",Xa$()),Z.route("/mcp",N20()),Z.route("/mcp/self",HI0()),Z.route("/mcp",O20()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var ae$=O(()=>{y$();It$();HM0();vt$();l31();gt$();it$();_M0();gb();x31();p31();us$();cs$();Za$();Ya$();ie();S31();L20();UW1();Ja$();Wa$();Fa$();Na$();DW1();Ea$();Ta$();OW1();Ma$();LW1();B20();ye$();re$()});function eI6($){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 $V6=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},ee$=()=>{let $=new e0;return $.use("*",$V6),$.get("/",async(Z)=>{let Q=O0(),Y=Q.decoSupabaseUrl,X=Q.decoSupabaseServiceKey;if(!Y||!X)return Z.json({apps:[]});try{let J=await HJ(Y,X,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:eI6(J)})}catch(J){return console.error("[deco-apps] GET error:",J),Z.json({error:"Failed to fetch apps"},502)}}),$};var $08=O(()=>{y$();t1();Kq0()});import{z as V1}from"zod";function tF($,Z="invalid_request_error",Q=null,Y=null){return{error:{message:$,type:Z,param:Q,code:Y}}}function FV6($){if(!$)return null;let Z=$.indexOf(":");if(Z===-1)return{credentialId:null,modelId:$};let Q=$.substring(0,Z),Y=$.substring(Z+1);if(!Q||!Y)return null;return{credentialId:Q,modelId:Y}}function UV6($,Z,Q){try{return JSON.parse($)}catch{throw new Y08(`Invalid JSON in tool call arguments for function '${Q}' (tool_call_id: ${Z}): ${$}`)}}function NV6($){let Z={};for(let Q of $)if(Q.role==="assistant"&&Q.tool_calls)for(let Y of Q.tool_calls)Z[Y.id]=Y.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((X)=>{if(X.type==="text")return{type:"text",text:X.text};return{type:"image",image:X.image_url.url}})};case"assistant":if(Q.tool_calls&&Q.tool_calls.length>0)return{role:"assistant",content:Q.tool_calls.map((X)=>({type:"tool-call",toolCallId:X.id,toolName:X.function.name,input:UV6(X.function.arguments,X.id,X.function.name)}))};return{role:"assistant",content:Q.content??""};case"tool":let Y=Z[Q.tool_call_id]??"unknown";return{role:"tool",content:[{type:"tool-result",toolCallId:Q.tool_call_id,toolName:Y,output:{type:"text",value:Q.content}}]}}})}function BV6($){let Z=$.map((Q)=>{let Y=Q.function.parameters?vJ(Q.function.parameters):vJ({type:"object",properties:{}});return[Q.function.name,D$({description:Q.function.description,inputSchema:Y})]});return Object.fromEntries(Z)}function DV6($){if(!$)return;return{openai:{response_format:$}}}function OV6(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function Z08($,Z,Q,Y,X,J){let G={model:$,messages:Z,tools:Q,temperature:Y.temperature,maxTokens:Y.max_tokens,topP:Y.top_p,frequencyPenalty:Y.frequency_penalty,presencePenalty:Y.presence_penalty,stopSequences:Y.stop?Array.isArray(Y.stop)?Y.stop:[Y.stop]:void 0,abortSignal:J};return X?{...G,providerOptions:X}:G}function Q08($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var ZV6=256,QV6,YV6,XV6,JV6,GV6,WV6,KV6,HV6,Y08,X08,J08;var G08=O(()=>{b4();y$();gd();zK();QV6=V1.object({type:V1.literal("function"),function:V1.object({name:V1.string(),description:V1.string().optional(),parameters:V1.record(V1.string(),V1.unknown()).optional()})}),YV6=V1.object({id:V1.string(),type:V1.literal("function"),function:V1.object({name:V1.string(),arguments:V1.string()})}),XV6=V1.discriminatedUnion("role",[V1.object({role:V1.literal("system"),content:V1.string(),name:V1.string().optional()}),V1.object({role:V1.literal("user"),content:V1.union([V1.string(),V1.array(V1.union([V1.object({type:V1.literal("text"),text:V1.string()}),V1.object({type:V1.literal("image_url"),image_url:V1.object({url:V1.string(),detail:V1.string().optional()})})]))]),name:V1.string().optional()}),V1.object({role:V1.literal("assistant"),content:V1.string().nullable().optional(),name:V1.string().optional(),tool_calls:V1.array(YV6).optional()}),V1.object({role:V1.literal("tool"),content:V1.string(),tool_call_id:V1.string()})]),JV6=V1.object({type:V1.literal("text")}),GV6=V1.object({type:V1.literal("json_object")}),WV6=V1.object({type:V1.literal("json_schema"),json_schema:V1.object({name:V1.string(),description:V1.string().optional(),schema:V1.record(V1.string(),V1.unknown()),strict:V1.boolean().optional()})}),KV6=V1.union([JV6,GV6,WV6]),HV6=V1.object({model:V1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:V1.array(XV6),stream:V1.boolean().optional().default(!1),temperature:V1.number().min(0).max(2).optional(),max_tokens:V1.number().positive().optional(),top_p:V1.number().min(0).max(1).optional(),frequency_penalty:V1.number().min(-2).max(2).optional(),presence_penalty:V1.number().min(-2).max(2).optional(),stop:V1.union([V1.string(),V1.array(V1.string())]).optional(),tools:V1.array(QV6).optional(),tool_choice:V1.union([V1.literal("auto"),V1.literal("none"),V1.literal("required"),V1.object({type:V1.literal("function"),function:V1.object({name:V1.string()})})]).optional(),response_format:KV6.optional(),user:V1.string().optional()});Y08=class Y08 extends Error{constructor($){super($);this.name="MessageConversionError"}};X08=new e0;X08.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),Q=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(tF("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(tF("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(tF("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Y=await $.req.json(),X=HV6.safeParse(Y);if(!X.success){let w=X.error.issues[0]??{message:"Invalid request",path:[]};return $.json(tF(`Invalid request: ${w.message}`,"invalid_request_error",w.path.length>0?w.path.join("."):null),400)}let J=X.data,G=FV6(J.model);if(!G)return $.json(tF("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}=G,{modelId:K}=G;if(!W){let j=(await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id})).find((E)=>WE(E.providerId));if(!j)return $.json(tF("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=j.id}let H;try{H=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json(tF(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),U=NV6(J.messages),N=J.tools?BV6(J.tools):void 0,B=DV6(J.response_format),D=OV6(),L=Math.floor(Date.now()/1000);if(J.stream)return RB($,async(w)=>{let j=Z08(F,U,N,J,B,$.req.raw.signal);try{let E=$w(j),z=!1,P=0,A="",q=async()=>{if(A.length===0)return;let k=A;A="",await w.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{content:k},finish_reason:null}]})})};for await(let k of E.fullStream){if(!z&&(k.type==="text-delta"||k.type==="tool-call"))await w.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),z=!0;if(k.type==="text-delta"){if(A+=k.text,A.length>=ZV6)await q()}else if(k.type==="tool-call"){await q();let M=P++;await w.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:L,model:J.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 q(),await w.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{},finish_reason:Q08(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 q(),await w.writeSSE({data:"[DONE]"})}catch(E){let z=E;console.error("[openai-compat:stream] Error:",z.message),await w.writeSSE({data:JSON.stringify({error:{message:z.message,type:"server_error"}})})}});else{let w=Z08(F,U,N,J,B,$.req.raw.signal),j=await aL(w),E={role:"assistant",content:j.text||null};if(j.toolCalls&&j.toolCalls.length>0)E.tool_calls=j.toolCalls.map((z)=>({id:z.toolCallId,type:"function",function:{name:z.toolName,arguments:JSON.stringify("input"in z?z.input:{})}})),E.content=null;return $.json({id:D,object:"chat.completion",created:L,model:J.model,choices:[{index:0,message:E,finish_reason:Q08(j.finishReason)}],usage:{prompt_tokens:j.usage?.inputTokens??0,completion_tokens:j.usage?.outputTokens??0,total_tokens:j.usage?.totalTokens??0}})}}catch(Y){let X=Y;if(X.name==="AbortError")return $.json(tF("Request aborted","invalid_request_error"),400);if(X.name==="MessageConversionError")return $.json(tF(X.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",X.message,X.stack),$.json(tF(X.message,"server_error"),500)}});J08=X08});function LV6($){if(typeof $!=="object"||$===null)return!1;let Q=$.githubRepo?.url;return typeof Q==="string"&&Q.length>0}function W08(){let $=new e0;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"),Y=u0(Q);if(!Y)return Z.json({error:"Authentication required"},401);let J=(Z.req.query("site")??"").trim().toLowerCase();if(!iZ(J))return Z.json({error:"Invalid site slug"},400);let G=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","=",Y).execute(),W=[];for(let H of G){if(!H.slug||r5(H))continue;let F=await Q.storage.virtualMcps.list(H.id);for(let U of F){if(xJ0(U)!==J)continue;if(!LV6(U.metadata))continue;W.push({orgSlug:H.slug,orgName:H.name??H.slug,project:{id:U.id,title:U.title,icon:U.icon??null}})}}let K={matches:W};return Z.json(K)}),$}var K08=O(()=>{y$();jG()});var F08;var H08=O(()=>{F08={name:"decocms",version:"4.378.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 EV6(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??jV6}}var U08,jV6="https://ph.studio.decocms.com",N08;var B08=O(()=>{y$();Wr();gf();k5();t1();L31();H08();U08=new e0;U08.get("/",($)=>{let Z={version:F08.version,theme:c5$(),...pW().logo&&{logo:pW().logo},...rN()&&{internalUrl:Ah1()},...O0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!O0().firecrawlApiKey,hostingEnabled:!!O0().controlplaneRestUrl&&!!O0().controlplaneServiceToken,hostingControlPlaneGa:O0().hostingControlPlaneGa,monitorEnabled:!!O0().clickhouseAnalyticsUrl&&!!O0().clickhouseAnalyticsPassword,monitorGa:O0().monitorGa,plansEnabled:O0().plansEnabled,auth:In$(),posthog:EV6(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:SB()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});N08=U08});function pd($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function pW1($){return(pd($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((Q)=>Q.charAt(0).toUpperCase()+Q.slice(1)).join(" ")}function O08($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(pd($))}&sz=${Z}`}function D08($,Z){let Q=$.trim();if(Q.length<=Z)return Q;let Y=Q.slice(0,Z-1),X=Y.lastIndexOf(" ");return`${(X>Z*0.6?Y.slice(0,X):Y).trimEnd()}\u2026`}function L08($){let{brand:Z,domain:Q,score:Y,verdict:X}=$,J=typeof Y==="number"?`${Z} commerce report \u2014 ${Math.round(Y)}/100 \xB7 decocms`:`${Z} commerce report \xB7 decocms`,G=`See the full ${Z} scorecard \u2014 SEO, performance, conversion & AEO signals scored by decocms.`,W=X?.trim()?D08(`${X.trim().replace(/\s+/g," ")} \u2014 ${G}`,200):D08(`How does ${Q} really perform? ${G}`,200);return{title:J,description:W}}import{z as m0}from"zod";var ab,zV6,PV6,AV6,TV6,w08;var j08=O(()=>{ab=m0.enum(["good","bad","neutral"]),zV6=m0.preprocess(($)=>{if(Array.isArray($))return{kind:"text",value:$.find((Q)=>Q!==null&&typeof Q!=="object")??""};return $!==null&&typeof $==="object"?$:{kind:"text",value:$}},m0.object({kind:m0.enum(["text","number","sparkline","badge","score"]).catch("text"),value:m0.coerce.string().optional(),tone:ab.optional(),muted:m0.boolean().optional(),delta:m0.coerce.string().optional(),deltaDir:m0.enum(["up","down","neutral"]).optional(),points:m0.array(m0.coerce.number()).optional(),label:m0.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 $})),PV6=m0.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},m0.array(zV6)),AV6={key:m0.coerce.string(),title:m0.coerce.string(),eyebrow:m0.coerce.string().optional(),headline:m0.coerce.string(),annotation:m0.coerce.string().optional(),methodology:m0.coerce.string().optional(),sources:m0.array(m0.object({name:m0.coerce.string(),logoUrl:m0.coerce.string()})).optional()},TV6=m0.discriminatedUnion("template",[m0.object({template:m0.literal("cover"),score:m0.object({value:m0.coerce.number(),max:m0.coerce.number().optional(),grade:m0.coerce.string().optional(),label:m0.coerce.string().optional()}).optional(),brandImage:m0.coerce.string().optional(),screenshot:m0.coerce.string().optional(),mobileScreenshot:m0.coerce.string().optional()}),m0.object({template:m0.literal("cta"),ctaUrl:m0.coerce.string().optional(),ctaLabel:m0.coerce.string().optional(),bullets:m0.array(m0.coerce.string()).optional()}),m0.object({template:m0.literal("series"),points:m0.array(m0.coerce.number()).min(2),xLabels:m0.array(m0.coerce.string()).min(1),unit:m0.coerce.string().optional(),callout:m0.object({index:m0.coerce.number(),value:m0.coerce.string(),tone:ab.optional()})}),m0.object({template:m0.literal("threshold"),value:m0.coerce.string().default(""),metricLabel:m0.coerce.string().optional(),ratio:m0.coerce.number(),thresholdRatio:m0.coerce.number().optional(),thresholdLabel:m0.coerce.string().default(""),tone:ab.optional()}),m0.object({template:m0.literal("stats"),stats:m0.array(m0.object({value:m0.coerce.string(),label:m0.coerce.string(),tone:ab.optional()})).min(1)}),m0.object({template:m0.literal("bars"),items:m0.array(m0.object({value:m0.coerce.string(),label:m0.coerce.string(),ratio:m0.coerce.number(),tone:ab.optional()})).min(1)}),m0.object({template:m0.literal("gauges"),gauges:m0.array(m0.object({label:m0.coerce.string(),value:m0.coerce.string(),status:m0.enum(["good","warn","bad"]).catch("warn"),caption:m0.coerce.string().optional(),ratio:m0.coerce.number().optional()})).min(1)}),m0.object({template:m0.literal("checklist"),checks:m0.array(m0.object({label:m0.coerce.string(),status:m0.enum(["pass","fail","warn"]).catch("fail"),value:m0.coerce.string().optional()})).min(1)}),m0.object({template:m0.literal("table"),columns:m0.array(m0.object({label:m0.coerce.string(),align:m0.enum(["left","right"]).optional()})).min(1),rows:m0.array(PV6).min(1),highlightRow:m0.coerce.number().optional()}),m0.object({template:m0.literal("products"),products:m0.array(m0.object({name:m0.coerce.string(),price:m0.coerce.string().optional(),image:m0.coerce.string().optional(),url:m0.coerce.string().optional()})).min(1)}),m0.object({template:m0.literal("list"),entries:m0.array(m0.object({label:m0.coerce.string(),severity:m0.enum(["error","warning","notice"]).catch("notice")})).min(1),moreCount:m0.coerce.number().optional()}),m0.object({template:m0.literal("keywords"),volumeLabel:m0.coerce.string().optional(),keywords:m0.array(m0.object({term:m0.coerce.string(),volume:m0.coerce.string(),position:m0.coerce.number().catch(0)})).min(1)}),m0.object({template:m0.literal("competitor"),metricLabel:m0.coerce.string().optional(),competitors:m0.array(m0.object({name:m0.coerce.string(),value:m0.coerce.string(),tone:ab.optional(),isYou:m0.boolean().optional()})).min(1)}),m0.object({template:m0.literal("scorecard"),rivalLabel:m0.coerce.string().optional(),dimensions:m0.array(m0.object({label:m0.coerce.string(),you:m0.coerce.string(),rival:m0.coerce.string().optional(),rivalName:m0.coerce.string().optional(),tone:ab.optional()})).min(1)})]),w08=m0.object({...AV6,template:TV6})});function vI0($){let Z=[],Q=[...$.sections].sort((X,J)=>X.position-J.position).map((X)=>{let J=w08.safeParse(X.props);if(J.success)return J.data;let G=J.error.issues[0];return Z.push({section_type:X.section_type,position:X.position,reason:G?`${G.path.join(".")||"(root)"}: ${G.message}`:"contract violation"}),null}).filter((X)=>X!==null),Y=Q.filter((X)=>X.template.template!=="cover"&&X.template.template!=="cta").map((X)=>({key:X.key,title:X.title}));return{deck:{meta:{...$.meta,scores:$.summary?.scores,scannedAt:$.scanned_at,toc:Y},slides:Q},drops:Z}}var nW1=O(()=>{j08()});import{join as E08}from"path";async function qV6($){try{let Z=await fetch(`${xH({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(RV6)});if(!Z.ok)return null;let Q=await Z.json(),{deck:Y}=vI0(Q);if(!Y.slides.length)return null;let X=Y.slides.find((W)=>W.template.template==="cover"),J=X?.template,G=J&&J.template==="cover"?J:void 0;return{brand:Y.meta.brand?.trim()||pW1($),score:Y.meta.scores?.cover??G?.score?.value,verdict:X?.annotation?.trim()||X?.headline?.trim()||void 0}}catch{return null}}function P3($){return $.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""")}function MV6($,Z){let Q=pd($),Y=Z?.brand?.trim()||pW1(Q),X=O08(Q,128),G=`${(O0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(Q)}`,{title:W,description:K}=L08({brand:Y,domain:Q,score:Z?.score,verdict:Z?.verdict}),H=`${G}/og.png`,F=`${Y} commerce report by decocms`;return[`<title>${P3(W)}</title>`,`<meta name="description" content="${P3(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="${P3(W)}" />`,`<meta property="og:description" content="${P3(K)}" />`,`<meta property="og:url" content="${P3(G)}" />`,`<meta property="og:image" content="${P3(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${P3(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${P3(W)}" />`,`<meta name="twitter:description" content="${P3(K)}" />`,`<meta name="twitter:image" content="${P3(H)}" />`,`<meta name="twitter:image:alt" content="${P3(F)}" />`,`<link rel="canonical" href="${P3(G)}" />`,`<link rel="icon" href="${P3(X)}" sizes="any" />`].join(`
|
|
3392
3392
|
`)}function IV6($,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}
|
|
3393
3393
|
</head>`)}function z08($){let Z=new e0;return Z.get("/:domain/og.png",async(Q)=>{let Y=pd(Q.req.param("domain")),X=async()=>{let J=$?Bun.file(E08($,"report-og-fallback.png")):null;if(!J||!await J.exists())return Q.notFound();return Q.body(new Uint8Array(await J.arrayBuffer()),200,{"Content-Type":"image/png","Cache-Control":"public, max-age=0, s-maxage=3600"})};try{let J=await fetch(`${xH({})}/api/v2/public/diagnostics/${encodeURIComponent(Y)}/og.png`,{signal:AbortSignal.timeout(VV6)}),G=J.headers.get("content-type")??"";if(!J.ok||!G.startsWith("image/")||!J.body)return X();return Q.body(J.body,200,{"Content-Type":G,"Cache-Control":"public, max-age=0, s-maxage=604800"})}catch{return X()}}),Z.get("/:domain",async(Q)=>{let Y=Q.req.param("domain"),X=$?E08($,"index.html"):null,J=X?Bun.file(X):null;if(!J||!await J.exists())return Q.notFound();let G=await J.text();try{let W=await qV6(pd(Y)),K=MV6(Y,W);return Q.html(IV6(G,K),200,{"Cache-Control":"public, max-age=0, s-maxage=300"})}catch{return Q.html(G)}}),Z}var RV6=2500,VV6=1e4;var P08=O(()=>{y$();nW1();tz();t1()});function E$0($,Z){return fetch(`${xH({})}${$}`,Z)}async function kV6($,Z,Q){let Y=new URLSearchParams;if(Z)Y.set("pw",Z);if(Q)Y.set("lang",Q);let X=Y.toString()?`?${Y.toString()}`:"",J=await E$0(`/api/v2/public/diagnostics/${encodeURIComponent($)}${X}`,{headers:{Accept:"application/json"}});if(J.status===404)return{status:"not_found",deck:null,scanned_at:null,drops:[]};if(!J.ok)throw Error(`report read HTTP ${J.status}`);let G=await J.json(),{deck:W,drops:K}=vI0(G);return{status:W.slides.length?"ready":"empty",deck:W,scanned_at:G.scanned_at,drops:K}}var SV6,MB,A08=async($,Z)=>{if(!$.get("reportUser"))return $.json({error:"Authentication required"},401);await Z();return},T08;var R08=O(()=>{y$();aJ();tz();nW1();SV6=new Set(["complete","errored","terminated","unknown"]),MB=new e0;MB.use("*",async($,Z)=>{let Q=await W8.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});MB.use("/link-token/*",A08);MB.use("/suggest",A08);MB.get("/site/:domain",async($)=>{let Z=$.req.param("domain").trim();if(!Z)return $.json({error:"domain is required"},400);let Q=$.get("reportUser"),Y=$.req.query("key")?.trim()||void 0,X=$.req.query("lang")?.trim()||void 0;try{let J=await kV6(Z,Y,X);if($.header("Cache-Control","private, no-store"),Q||!J.deck)return $.json(J);return $.json({...J,deck:{...J.deck,slides:J.deck.slides.slice(0,1)},truncated:J.status==="ready"})}catch{return $.json({error:"report read failed"},502)}});MB.post("/run",async($)=>{let Z=$.get("reportUser"),Q;try{Q=await $.req.json()}catch{return $.json({error:"invalid JSON"},400)}let Y=typeof Q.domain==="string"?Q.domain.trim():"";if(!Y)return $.json({error:"domain is required"},400);let X=Z?.email,J=typeof Q.distinctId==="string"&&Q.distinctId.trim()&&Q.distinctId.length<=200?Q.distinctId.trim():void 0;try{let G=await E$0("/api/v2/diagnostics/run",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${nz({})}`},body:JSON.stringify({url:Y,...X?{email:X}:{},distinct_id:J})});if(!G.ok)return $.json({error:`run HTTP ${G.status}`},502);let W=await G.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)}});MB.get("/status",async($)=>{let Z=$.req.query("id");if(!Z)return $.json({error:"id is required"},400);try{let Q=await E$0(`/api/v2/diagnostics/status?id=${encodeURIComponent(Z)}`,{headers:{Authorization:`Bearer ${nz({})}`}});if(!Q.ok)return $.json({error:`status HTTP ${Q.status}`},502);let X=(await Q.json()).status??"unknown",J={done:SV6.has(X),status:X};return $.json(J)}catch{return $.json({error:"status failed"},502)}});MB.get("/link-token/:id",async($)=>{let Z=$.req.param("id");try{let Q=await E$0(`/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)}});MB.get("/suggest",async($)=>{let Z=($.req.query("q")??"").trim().slice(0,64);if(Z.length<2)return $.json({suggestions:[]});try{let Q=await E$0(`/api/v2/public/suggest?q=${encodeURIComponent(Z)}`,{headers:{Accept:"application/json"}});if(!Q.ok)return $.json({suggestions:[]});let Y=await Q.json();return $.json({suggestions:Array.isArray(Y.suggestions)?Y.suggestions:[]})}catch{return $.json({suggestions:[]})}});T08=MB});var CV6=1048576,tW1;var q08=O(()=>{y$();vK();t1();Z31();tW1=new e0;tW1.post("/webhook",l5({maxSize:CV6,onError:($)=>$.json({error:"payload too large"},413)}),async($)=>{let Z=O0().stripeWebhookSecret;if(!Z)return $.json({error:"stripe billing not configured"},503);let Q=await $.req.text();if(!hp$(Q,$.req.header("stripe-signature"),Z))return $.json({error:"invalid signature"},400);let X=up$(Q);if(!X)return $.json({error:"invalid payload"},400);let J=await lp$(X);return console.log("stripe webhook",{eventId:X.id,type:X.type,livemode:X.livemode,...J}),$.json({received:!0})})});import{timingSafeEqual as _V6}from"crypto";function bV6($,Z,Q){if(!Z?.startsWith("sha256="))return!1;let Y=new Bun.CryptoHasher("sha256",Q).update($).digest("hex"),X=Z.slice(7);if(X.length!==Y.length)return!1;return _V6(Buffer.from(X),Buffer.from(Y))}function xV6($,Z){let Q=Z,Y=Q?.repository?.name,X=Q?.repository?.owner?.login;if(typeof Y!=="string"||typeof X!=="string")return[];let J=[];if($==="check_suite"){if(Q.action!=="completed")return[];let G=Q.check_suite?.pull_requests;for(let W of Array.isArray(G)?G:[]){let K=W?.number;if(typeof K==="number")J.push(K)}}else if($==="issue_comment"&&Q.issue?.pull_request){let G=Q.issue.number;if(typeof G==="number")J.push(G)}return[...new Set(J)].map((G)=>({repoOwner:X,repoName:Y,number:G}))}function M08($){let Z=new e0;return Z.post("/webhook",l5({maxSize:vV6,onError:(Q)=>Q.json({error:"payload too large"},413)}),async(Q)=>{let Y=process.env.GITHUB_WEBHOOK_SECRET;if(!Y)return Q.json({error:"github webhook not configured"},503);let X=await Q.req.text();if(!bV6(X,Q.req.header("x-hub-signature-256"),Y))return Q.json({error:"invalid signature"},400);let J=Q.req.header("x-github-event");if(J!=="push"&&!fV6.has(J??""))return Q.json({ok:!0,ignored:"event"});let G;try{G=JSON.parse(X)}catch{return Q.json({error:"invalid payload"},400)}if(J==="push"){let H=G.ref,F=G.repository?.full_name;if(!H||!F)return Q.json({ok:!0,ignored:"shape"});let N=(await S11())?.markTenantPoolsDirty(F,H)??[];return Q.json({ok:!0,pools:N})}let W=xV6(J??"",G);if(W.length===0)return Q.json({ok:!0,ignored:"no-pr"});let K=await yV6($,W);return Q.json({ok:!0,refreshed:K})}),Z}async function yV6($,Z){let Q=0;for(let Y of Z){let X=$.taskBoard(),J;try{J=await X.findPrLinks(Y)}catch(G){console.error("[github-webhook] pr link lookup failed:",G);continue}for(let G of J)try{let W=await X.getById(G.taskBoardItemId,G.organizationId),K=W?await $.contextFactory()(G.organizationId,W.assignedBy??W.createdBy):null;if(!K)continue;if(await Y2$(K,G.organizationId,G.taskBoardItemId)!==null)Q++}catch(W){console.error(`[github-webhook] pr card refresh failed for ${G.taskBoardItemId}:`,W)}}return Q}var vV6=5242880,fV6;var I08=O(()=>{y$();vK();KK();rZ();fV6=new Set(["check_suite","issue_comment"])});function V08($){let Z=new DB($.db,new TY($.encryptionKey)),Q=new e0;return Q.get("/attachments/:token",async(Y)=>{let X=RP$(Y.req.param("token"));if(!X)return Y.json({error:"Invalid or expired link"},404);let J=await Z.getByOrg(X.organizationId);if(!J)return Y.json({error:"Jira is not connected"},404);let W=await new JQ(J.siteUrl,J.email,J.apiToken).downloadAttachment(X.attachmentId);if(!W.ok||!W.body)return Y.json({error:"Jira refused the download"},502);let K=new Headers;for(let H of["content-type","content-length","content-disposition"]){let F=W.headers.get(H);if(F)K.set(H,F)}return K.set("cache-control","no-store"),new Response(W.body,{status:200,headers:K})}),Q}var k08=O(()=>{y$();wD();V81();iN()});function S08($){let Z=new DB($.db,new TY($.encryptionKey));async function Q(X,J){let G=Nu$(J);if(!G)return;let W=await Z.getByWebhookSecret(X);if(!W?.enabled)return;let K=await aX($.db,W.organizationId);if(!K)return;if(await Nq0(K,W,G)==="started")console.log(`[jira-webhook] started a run for ${G.issueKey} entering "${G.toStatus}"`)}let Y=new e0;return Y.post("/webhook/:secret",l5({maxSize:gV6}),async(X)=>{let J=X.req.param("secret");if(!await Z.getByWebhookSecret(J))return X.json({error:"Unknown webhook"},404);let W;try{W=await X.req.json()}catch{return X.json({error:"Body must be JSON"},400)}return Q(J,W).catch((K)=>{console.error("[jira-webhook] trigger failed",K)}),X.body(null,202)}),Y}var gV6=1048576;var C08=O(()=>{y$();vK();wD();Z10();Hw()});import{DBOS as fI0,SchedulerMode as hV6}from"@dbos-inc/dbos-sdk";function v08($){rW1=$}function f08(){if(!rW1)throw Error("[jira-trigger] runtime not initialized \u2014 setJiraTriggerSweepRuntime() must run before the workflow fires");return rW1}function b08(){let $=f08();return new DB($.db,new TY($.encryptionKey))}async function cV6($,Z){try{let Q=await b08().getById($);if(!Q?.enabled||!Q.boardId)return{integrationId:$,started:0};let Y=await aX(f08().db,Q.organizationId);if(!Y)return{integrationId:$,started:0};if((await Y.storage.jiraIntegrations.listAutomations(Q.organizationId)).length===0)return{integrationId:$,started:0};let J=new JQ(Q.siteUrl,Q.email,Q.apiToken),W=`(${await J.getBoardScopeJql(Q.boardId)}) AND status CHANGED AFTER "-${_08}m"`,K=0,H;for(let F=0;F<lV6;F++){let U=await J.searchIssues({jql:W,nextPageToken:H,expandChangelog:!0});for(let N of U.issues){let B=Bu$(N,N.changelog?.histories??[],Z);for(let D of B)if(await Nq0(Y,Q,D)==="started")K++}if(H=U.nextPageToken??void 0,!H)break}return{integrationId:$,started:K}}catch(Q){return{integrationId:$,started:0,error:Q instanceof Error?Q.message:String(Q)}}}async function dV6($,Z){let Q=new Date($.getTime()-_08*60000),Y=await fI0.runStep(()=>b08().listEnabledIds(),{name:"loadJiraIntegrations"});if(Y.length===0)return;let X=await Promise.all(Y.map((J)=>fI0.runStep(()=>cV6(J,Q),{name:`sweepJira:${J}`})));for(let J of X)if(J.error)console.warn(`[jira-trigger] integration ${J.integrationId} failed: ${J.error}`);else if(J.started>0)console.log(`[jira-trigger] integration ${J.integrationId} started ${J.started} run(s) the webhook missed`)}function x08(){if(oW1)return;oW1=fI0.registerWorkflow(dV6,{name:"jiraTriggerSweepWorkflow"}),fI0.registerScheduled(oW1,{name:"jiraTriggerSweepWorkflow",crontab:uV6,mode:hV6.ExactlyOncePerIntervalWhenActive})}var uV6="7-59/10 * * * *",_08=15,lV6=5,rW1=null,oW1=null;var y08=O(()=>{wD();Hw();iN();Z10()});function g08($,Z){if(Z.startsWith("text/html")||Z.startsWith("image/svg"))$.set("Content-Security-Policy","sandbox allow-scripts allow-modals allow-same-origin")}var h08,mV6,iV6,u08;var l08=O(()=>{y$();iW();ml();ZP();h08=new e0,mV6=["range","if-none-match","if-modified-since"],iV6=["content-type","content-length","content-range","accept-ranges","etag","last-modified"];h08.get("/:org/files/*",async($)=>{let Z=$.get("studioContext"),Q=Z.organization?.id;if(!Z.auth?.user?.id){if(Od($))return $.redirect(`/login?next=${encodeURIComponent($.req.path)}`,302);throw new X$(401,{message:"Authentication required"})}if(!Q)throw new X$(401,{message:"Organization context required"});let Y=$.req.path.replace(/^.*\/files\//,"");if(!Y)throw new X$(400,{message:"Missing file key"});let X=await Re(Y,Z);if(!X)throw new X$(503,{message:"Object storage not configured"});if(X.startsWith("data:")&&fX()){let K=X.match(/^data:([^;]+);base64,(.+)$/s);if(!K)throw new X$(500,{message:"Invalid data URL from storage"});let[,H,F]=K,U=Buffer.from(F,"base64"),N=new Headers({"Content-Type":H,"Cache-Control":"private, max-age=86400"});return g08(N,H),new Response(U,{status:200,headers:N})}let J=new Headers;for(let K of mV6){let H=$.req.header(K);if(H)J.set(K,H)}let G=await fetch(X,{headers:J});if(G.status===403||G.status===404)throw new X$(404,{message:"File not found"});if(!G.ok&&G.status!==304&&G.status!==416)throw console.error(`[files] upstream storage error ${G.status} for key:`,Y),new X$(502,{message:"Upstream storage error"});let W=new Headers;for(let K of iV6){let H=G.headers.get(K);if(H)W.set(K,H)}return W.set("Cache-Control","private, max-age=86400"),g08(W,W.get("content-type")??""),new Response(G.body,{status:G.status,headers:W})});u08=h08});var z$0=_((eb)=>{var pV6=eb&&eb.__createBinding||(Object.create?function($,Z,Q,Y){if(Y===void 0)Y=Q;var X=Object.getOwnPropertyDescriptor(Z,Q);if(!X||("get"in X?!Z.__esModule:X.writable||X.configurable))X={enumerable:!0,get:function(){return Z[Q]}};Object.defineProperty($,Y,X)}:function($,Z,Q,Y){if(Y===void 0)Y=Q;$[Y]=Z[Q]}),nV6=eb&&eb.__exportStar||function($,Z){for(var Q in $)if(Q!=="default"&&!Object.prototype.hasOwnProperty.call(Z,Q))pV6(Z,$,Q)};Object.defineProperty(eb,"__esModule",{value:!0});nV6(jJ(),eb)});var m08=_((c08)=>{Object.defineProperty(c08,"__esModule",{value:!0});c08.version=void 0;c08.version="3.4.0"});var n08=_((oF)=>{var tV6=oF&&oF.__importDefault||function($){return $&&$.__esModule?$:{default:$}};Object.defineProperty(oF,"__esModule",{value:!0});oF.NodeTransport=oF.VERSION=void 0;oF.nodeResolveHost=$k6;var O5=z$0(),oV6=A0("net"),sW1=A0("tls"),rV6=A0("path"),i08=A0("fs"),sV6=tV6(A0("dns")),aV6=m08();oF.VERSION=aV6.version;var eV6="nats.js";class p08{socket;version;lang;yields=[];signal=(0,O5.deferred)();closedNotification=(0,O5.deferred)();options;connected=!1;tlsName="";done=!1;closeError;constructor(){this.lang=eV6,this.version=oF.VERSION}async connect($,Z){this.tlsName=$.tlsName,this.options=Z;let{tls:Q}=this.options,{handshakeFirst:Y}=Q||{};try{if(Y===!0)this.socket=await this.tlsFirst($);else this.socket=await this.dial($);if(this.done)this.socket?.destroy();let X=await this.peekInfo();(0,O5.checkOptions)(X,Z);let{tls_required:J,tls_available:G}=X,W=G===!0&&Z.tls!==null;if(!Y&&(J||W))this.socket=await this.startTLS();if(this.done)this.socket?.destroy();if(J&&this.socket.encrypted!==!0)throw O5.errors.InvalidArgumentError.format("tls","is not available on this server");return this.connected=!0,this.setupHandlers(),this.signal.resolve(),Promise.resolve()}catch(X){let J=X;if(!J)J=new O5.errors.ConnectionError("error connecting - node provided an undefined error");let{code:G}=J,W=G==="ECONNREFUSED"?new O5.errors.ConnectionError("connection refused",{cause:J}):J;throw this.socket?.destroy(),W}}dial($){let Z=(0,O5.deferred)(),Q,Y=(0,oV6.createConnection)($.port,$.hostname,()=>{Z.resolve(Y),Y.removeAllListeners()});return Y.on("error",(X)=>{Q=X}),Y.on("close",()=>{Y.removeAllListeners(),Z.reject(Q)}),Y.setNoDelay(!0),Z}get isClosed(){return this.done}close($){return this._closed($,!1)}peekInfo(){let $=(0,O5.deferred)(),Z;return this.socket.on("data",(Q)=>{this.yields.push(Q);let Y=O5.DataBuffer.concat(...this.yields),X=(0,O5.extractProtocolMessage)(Y);if(X!=="")try{let J=O5.INFO.exec(X);if(!J)throw Error("unexpected response from server");let G=JSON.parse(J[1]);$.resolve(G)}catch(J){$.reject(J)}finally{this.socket.removeAllListeners()}}),this.socket.on("error",(Q)=>{Z=Q}),this.socket.on("close",()=>{this.socket.removeAllListeners(),$.reject(Z)}),$}loadFile($){if(!$)return Promise.resolve();let Z=(0,O5.deferred)();try{if($=(0,rV6.resolve)($),!(0,i08.existsSync)($))Z.reject(Error(`${$} doesn't exist`));(0,i08.readFile)($,(Q,Y)=>{if(Q)return Z.reject(Q);Z.resolve(Y)})}catch(Q){Z.reject(Q)}return Z}async loadClientCerts(){let $={},{certFile:Z,cert:Q,caFile:Y,ca:X,keyFile:J,key:G}=this.options.tls;try{if(Z){let W=await this.loadFile(Z);if(W)$.cert=W}else if(Q)$.cert=Q;if(J){let W=await this.loadFile(J);if(W)$.key=W}else if(G)$.key=G;if(Y){let W=await this.loadFile(Y);if(W)$.ca=[W]}else if(X)$.ca=X;return Promise.resolve($)}catch(W){return Promise.reject(W)}}async tlsFirst($){let Z,Q={servername:this.tlsName,rejectUnauthorized:!0};if(this.socket)Q.socket=this.socket;if(typeof this.options.tls==="object")try{let X=await this.loadClientCerts()||{};Q=(0,O5.extend)(Q,this.options.tls,X)}catch(X){return Promise.reject(new O5.errors.ConnectionError(X.message,{cause:X}))}let Y=(0,O5.deferred)();try{let X=(0,sW1.connect)($.port,$.hostname,Q,()=>{X.removeAllListeners(),Y.resolve(X)});X.on("error",(J)=>{Z=J}),X.on("secureConnect",()=>{if(Q.rejectUnauthorized===!1)return;if(!X.authorized)throw X.authorizationError}),X.on("close",()=>{Y.reject(Z),X.removeAllListeners()}),X.setNoDelay(!0)}catch(X){Y.reject(new O5.errors.ConnectionError(X.message,{cause:X}))}return Y}async startTLS(){let $,Z={socket:this.socket,servername:this.tlsName,rejectUnauthorized:!0};if(typeof this.options.tls==="object")try{let Y=await this.loadClientCerts()||{};Z=(0,O5.extend)(Z,this.options.tls,Y)}catch(Y){return Promise.reject(new O5.errors.ConnectionError(Y.message,{cause:Y}))}let Q=(0,O5.deferred)();try{let Y=(0,sW1.connect)(Z,()=>{Y.removeAllListeners(),Q.resolve(Y)});Y.on("error",(X)=>{$=X}),Y.on("secureConnect",()=>{if(Z.rejectUnauthorized===!1)return;if(!Y.authorized)throw Y.authorizationError}),Y.on("close",()=>{Q.reject($),Y.removeAllListeners()})}catch(Y){Q.reject(new O5.errors.ConnectionError(Y.message,{cause:Y}))}return Q}setupHandlers(){let $;this.socket.on("data",(Z)=>{return this.yields.push(Z),this.signal.resolve()}),this.socket.on("error",(Z)=>{$=Z}),this.socket.on("end",()=>{if(this.socket?.destroyed)return;this.socket?.write(new Uint8Array(0),()=>{this.socket?.end()})}),this.socket.on("close",()=>{this._closed($,!1)})}[Symbol.asyncIterator](){return this.iterate()}async*iterate(){while(!0){if(this.yields.length===0)await this.signal;let $=this.yields;this.yields=[];for(let Z=0;Z<$.length;Z++){if(this.options.debug)console.info(`> ${(0,O5.render)($[Z])}`);yield $[Z]}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,O5.deferred)()}}discard(){if(this.done=!0,this.socket)try{this.socket.removeAllListeners(),this.socket.destroy()}catch{}}disconnect(){this._closed(void 0,!0).then().catch()}isEncrypted(){return this.socket instanceof sW1.TLSSocket}_send($){if(this.isClosed||this.socket===void 0)return Promise.resolve();if(this.options.debug)console.info(`< ${(0,O5.render)($)}`);let Z=(0,O5.deferred)();try{this.socket.write($,(Q)=>{if(Q){if(this.options.debug)console.error(`!!! ${(0,O5.render)($)}: ${Q}`);return Z.reject(Q)}return Z.resolve()})}catch(Q){if(this.options.debug)console.error(`!!! ${(0,O5.render)($)}: ${Q}`);Z.reject(Q)}return Z}send($){this._send($).catch((Q)=>{})}async _closed($,Z=!0){if(!this.connected)return;if(this.done){this.socket?.destroy();return}if(this.closeError=$,!$&&this.socket&&Z)try{await this._send(new TextEncoder().encode(""))}catch(Q){if(this.options.debug)console.log("transport close terminated with an error",Q)}try{if(this.socket)this.socket.removeAllListeners(),this.socket?.destroy(),this.socket=void 0}catch(Q){console.log(Q)}this.done=!0,this.closedNotification.resolve(this.closeError)}closed(){return this.closedNotification}}oF.NodeTransport=p08;function $k6($){let Z=(0,O5.deferred)();return sV6.default.lookup($,{all:!0},(Q,Y)=>{if(Q){Z.reject(Q);return}let X=[];for(let J of Y)X.push(J.address);if(X.length===0)X.push($);Z.resolve(X)}),Z}});var a08=_((s08)=>{Object.defineProperty(s08,"__esModule",{value:!0});s08.connect=Zk6;var t08=n08(),o08=z$0(),r08=z$0();function Zk6($={}){if((0,r08.hasWsProtocol)($))return Promise.reject(r08.errors.InvalidArgumentError.format("servers","node client doesn't support websockets, use the 'wsconnect' function instead"));return(0,o08.setTransportFactory)({factory:()=>{return new t08.NodeTransport},dnsResolveFn:t08.nodeResolveHost}),o08.NatsConnectionImpl.connect($)}});var e08=_((IB)=>{var Yk6=IB&&IB.__createBinding||(Object.create?function($,Z,Q,Y){if(Y===void 0)Y=Q;var X=Object.getOwnPropertyDescriptor(Z,Q);if(!X||("get"in X?!Z.__esModule:X.writable||X.configurable))X={enumerable:!0,get:function(){return Z[Q]}};Object.defineProperty($,Y,X)}:function($,Z,Q,Y){if(Y===void 0)Y=Q;$[Y]=Z[Q]}),Xk6=IB&&IB.__exportStar||function($,Z){for(var Q in $)if(Q!=="default"&&!Object.prototype.hasOwnProperty.call(Z,Q))Yk6(Z,$,Q)};Object.defineProperty(IB,"__esModule",{value:!0});IB.connect=void 0;var Jk6=a08();Object.defineProperty(IB,"connect",{enumerable:!0,get:function(){return Jk6.connect}});Xk6(z$0(),IB)});function Y18($){let Z=$?.connectFn??Hk6,Q=null,Y=null,X=!1,J=!1,G=!1,W=[];function K(){return Q!==null&&!Q.isClosed()&&!Q.isDraining()&&!G}function H(){console.log(`[NatsProvider] fireReady: ${W.length} callbacks`);for(let N of W)try{N()}catch{}}function F(N){(async()=>{for await(let B of N.status())if(B.type==="disconnect")console.log("[NatsProvider] Disconnected"),G=!0;else if(B.type==="reconnect")console.log("[NatsProvider] Reconnected, re-firing ready callbacks"),G=!1,Y=null,H()})().catch(()=>{})}async function U(N,B){let D=0;while(!J)try{Q=await Z({servers:N,timeout:Kk6,reconnect:!0,maxReconnectAttempts:-1,...B?{authenticator:B}:{}}),console.log(`[NatsProvider] Connected to ${Q.getServer()} after ${D} attempt(s)`),Y=null,G=!1,F(Q),H();return}catch{D++;let L=_7(Wk6,Gk6,D-1,2,0.5);await P$(L)}}return{init(N,B){if(X)return;X=!0,J=!1;let D=B?.creds?$18.credsAuthenticator(new TextEncoder().encode(B.creds)):void 0;U(N,D).catch(()=>{})},isConnected(){return K()},getConnection(){return K()?Q:null},getJetStream(){if(!K())return null;if(!Y)Y=Q18.jetstream(Q);return Y},onReady(N){if(W.push(N),K())try{N()}catch{}},async drain(){if(J=!0,X=!1,Y=null,G=!1,Q){let N=Q;Q=null,await N.drain().catch(()=>{})}}}}function Hk6($){return Z18.connect($)}var $18,Z18,Q18,Gk6=100,Wk6=3000,Kk6=3000;var X18=O(()=>{m$();$18=V(wm(),1),Z18=V(e08(),1),Q18=V(JU(),1)});function aW1($,Z){return`${$}.${Z}`}class eW1{cache;constructor($){this.cache=Xd({ttlMs:$?.ttlMs??Fk6,maxSize:$?.maxSize??Uk6})}async get($,Z){return this.cache.get(aW1($,Z))??null}async set($,Z,Q){this.cache.set(aW1($,Z),Q)}async invalidate($,Z){this.cache.delete(aW1($,Z))}teardown(){this.cache.clear()}}var Fk6=600000,Uk6=5000;var J18=()=>{};function bI0($,Z){return`${$}:${Z}`}function $K1($){let Z=Xd({ttlMs:$?.ttlMs??Nk6,maxSize:$?.maxSize??Bk6}),Q=$?.getConnection,Y=crypto.randomUUID(),X=new TextEncoder,J=new TextDecoder,G=null;function W(K,H){let F=Q?.();if(!F)return;try{F.publish(G18,X.encode(JSON.stringify({organizationId:K,keyId:H,originId:Y})))}catch(U){console.warn("[ProviderKeyCache] Publish failed (non-critical):",U)}}return{get(K,H){return Z.get(bI0(K,H))},set(K,H,F){Z.set(bI0(K,H),F)},invalidate(K,H){Z.delete(bI0(K,H)),W(K,H)},start(){if(G)return;let K=Q?.();if(!K)return;G=K.subscribe(G18),(async()=>{for await(let H of G)try{let F=JSON.parse(J.decode(H.data));if(F.originId===Y)continue;Z.delete(bI0(F.organizationId,F.keyId))}catch{}})().catch(console.error)},teardown(){G?.unsubscribe(),G=null,Z.clear()}}}var G18="studio.ai-provider-keys.invalidate",Nk6=30000,Bk6=5000;var W18=()=>{};class ZK1{options;subscription=null;onCancel=null;encoder=new TextEncoder;originId=crypto.randomUUID();constructor($){this.options=$}async start($){if($)this.onCancel=$;if(this.subscription)return;if(!this.onCancel)return;let Z=this.options.getConnection();if(!Z)return;let Q=new TextDecoder,Y=Z.subscribe("studio.decopilot.cancel");this.subscription=Y,(async()=>{for await(let X of Y)try{let J=JSON.parse(Q.decode(X.data));if(J.originId===this.originId)continue;this.onCancel?.(J.taskId)}catch{}})().catch(console.error)}broadcast($){if(/[.*>\s]/.test($)){console.warn("[NatsCancelBroadcast] Invalid threadId, skipping broadcast");return}this.onCancel?.($);try{let Z=this.options.getConnection();if(!Z)return;let Q=this.encoder.encode(JSON.stringify({taskId:$,originId:this.originId}));Z.publish("studio.decopilot.cancel",Q)}catch(Z){console.warn("[NatsCancelBroadcast] Publish failed (non-critical):",Z)}}async stop(){this.subscription?.unsubscribe(),this.subscription=null,this.onCancel=null}}var K18=($)=>{let Z;return()=>Z??=$()},QK1,YK1;var H18=O(()=>{W6();QK1=K18(()=>Q$.createHistogram("decopilot.stream.encode_ms",{description:"Per-chunk JSON.stringify+encode time for decopilot stream",unit:"ms"})),YK1=K18(()=>Q$.createCounter("decopilot.stream.published_chunks",{description:"Logical decopilot stream chunks published to JetStream",unit:"{chunks}"}))});function zk6($=N18){return{name:AF,subjects:[`${M61}.>`],storage:xK.StorageType.File,max_age:Lk6,max_bytes:jk6,max_msgs_per_subject:Ek6,discard:xK.DiscardPolicy.Old,retention:xK.RetentionPolicy.Limits,duplicate_window:wk6,num_replicas:$}}class B18{chunks=0;encodeMs=0;maxMs=0;bytes=0;windowStart=performance.now();constructor(){setInterval(()=>this.flush(),1e4).unref?.()}record($,Z){if(this.chunks++,this.encodeMs+=$,$>this.maxMs)this.maxMs=$;this.bytes+=Z}flush(){let $=performance.now(),Z=$-this.windowStart;if(this.chunks>0&&Z>0)console.warn(JSON.stringify({msg:"stream-encode-trace",windowMs:Math.round(Z),chunks:this.chunks,encodeMs:Math.round(this.encodeMs),pctOfLoop:+(this.encodeMs/Z*100).toFixed(1),maxChunkMs:+this.maxMs.toFixed(2),mbEncoded:+(this.bytes/1048576).toFixed(2)}));this.chunks=0,this.encodeMs=0,this.maxMs=0,this.bytes=0,this.windowStart=$}}function F18($){let Z=U18.headers();for(let[Q,Y]of Object.entries($))Z.set(Q,Y);return Z}function Rk6($,Z){let Q=0;return{publish(Y,X,J,G){Y.publish(X,J,G?{headers:G}:void 0).catch((W)=>{if(Q++,Ok6().add(1,{"org.id":Z??"unknown"}),Q===1||Q%100===0)console.warn(`[Decopilot] JetStream publish failed for thread ${$} (${Q} total):`,W)})},get errorCount(){return Q}}}function qk6($,Z){return $.info?.cluster?Z:1}function Mk6($){if(!($ instanceof Error))return!1;if(/non-clustered/i.test($.message))return!0;return/replicas?\b/i.test($.message)&&/not supported|can ?not|exceed|insufficient|greater than/i.test($.message)}class XK1{options;js=null;jsm=null;constructor($){this.options=$}async init(){let $=this.options.getConnection();if(!$){console.log("[Decopilot] StreamBuffer.init skipped: NATS not connected yet");return}let Z=async(Y,X)=>{let J=zk6(X);try{await Y.streams.info(AF),await Y.streams.update(AF,J)}catch(G){if(G instanceof Error&&G.message.includes("stream not found"))await Y.streams.add(J),await Y.streams.update(AF,J);else if(G instanceof Error&&/can ?not change.*storage|storage type/i.test(G.message))await Y.streams.delete(AF),await Y.streams.add(J);else throw G}},Q=await A8(async()=>{let Y=this.options.getJetStreamManager?await this.options.getJetStreamManager():await xK.jetstreamManager($),X=qk6($,N18);try{await Z(Y,X)}catch(J){if(X<=1||!Mk6(J))throw J;console.warn(`[Decopilot] StreamBuffer: NATS rejected num_replicas=${X} (${J.message}); falling back to an unreplicated stream`),await Z(Y,1)}return Y},{maxAttempts:5,minTimeout:250,maxTimeout:4000,jitter:0.5,isRetriable:$c});this.js=this.options.getJetStream(),this.jsm=Q,console.log(`[Decopilot] StreamBuffer.init ${this.js?"ready":"degraded (js=null)"}`)}pump($,Z,Q,Y){let X=this.js;if(!X)return console.warn(`[Decopilot] pump: JetStream client unavailable for thread ${Z}; chunks NOT published to NATS`),Promise.resolve();let J=Rk6(Z,Y),G=!1,W=()=>{if(G)return;G=!0;let H=hR$(Z);X.publish(H.subject,H.data).catch(()=>{})};Q.addEventListener("abort",W,{once:!0});let K=(H)=>{let F=performance.now(),U=V61(H,{runId:Z}),N=performance.now()-F;QK1().record(N),YK1().add(1,{"org.id":Y??"unknown"}),Tk6?.record(N,U.reduce((B,D)=>B+D.data.length,0));for(let B of U)J.publish(X,B.subject,B.data,B.headers?F18(B.headers):void 0)};return(async()=>{let H=$.getReader(),F=0,U=0,N;try{while(!0){let{done:B,value:D}=await H.read();if(B)break;if(K(D),U++,++F>=64)F=0,await new Promise((L)=>setImmediate(L))}}catch(B){N=B,console.warn(`[Decopilot] stream pump error for thread ${Z}:`,B?.message??B)}finally{if(H.releaseLock(),W(),Ak6)console.warn(JSON.stringify({msg:"decopilot-stream-diag",event:"pump-done",taskId:Z,publishedChunks:U,publishErrors:J.errorCount}))}if(N!==void 0)throw N})()}async publishSerialized($,Z){try{return await A8(()=>$.publish(Z.subject,Z.data,{...Z.headers?{headers:F18(Z.headers)}:{},...Z.msgId?{msgID:Z.msgId}:{}}),{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:$c}),!0}catch(Q){return console.error(`[Decopilot] publish failed after retries subject=${Z.subject}`,Q),!1}}async publishRawChunk($,Z,Q){let Y=this.js;if(!Y)return!1;let X=performance.now(),J=V61(Z,{runId:$,dedup:Q});QK1().record(performance.now()-X),YK1().add(1);for(let G of J)if(!await this.publishSerialized(Y,G))return!1;return!0}async publishDone($,Z,Q){let Y=this.js;if(!Y)return!1;let X=gR$({runId:$,fenceToken:Z,finalSeq:Q});return await this.publishSerialized(Y,X)}async createTailStream($,Z,Q){let Y=this.js;if(!Y)return console.warn(`[Decopilot] createTailStream: JetStream client unavailable for thread ${$}; no live tail`),null;let X=Q?.deliverPolicy==="new"?xK.DeliverPolicy.New:xK.DeliverPolicy.All,J=Q?.closeOnDone??!1,G=Ow($),W;try{W=await A8(async()=>{return(await Y.consumers.get(AF,{filter_subjects:G,deliver_policy:X})).consume()},{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:$c})}catch(L){return console.warn("[Decopilot] JetStream tail unavailable (non-critical):",L?.message??L),null}let F=hA0({messages:async function*(){try{for await(let L of W)yield{subject:L.subject,data:L.data,headers:L.headers}}finally{W.stop()}}(),onCancel:()=>W.stop()}).pipeThrough(bA0()).pipeThrough(xA0()).getReader(),U=!1,N=()=>{if(U)return;U=!0;try{F.releaseLock()}catch{}},B=!1,D=()=>{if(B)return;B=!0,W.stop(),F.cancel().catch(()=>{}),N()};return Z?.addEventListener("abort",D,{once:!0}),new ReadableStream({async pull(L){for(;;){let{done:w,value:j}=await F.read();if(w){D(),L.close();return}let E=j;if(E.kind==="done"){if(J){D(),L.close();return}continue}L.enqueue(E.chunk);return}},cancel(){D()}})}purge($){if(!this.jsm)return;this.jsm.streams.purge(AF,{filter:Ow($)}).catch(()=>{})}teardown(){this.js=null,this.jsm=null}}var xK,U18,Dk6=($)=>{let Z;return()=>Z??=$()},Ok6,Lk6=86400000000000,wk6=120000000000,jk6=4294967296,N18,Ek6=500000,Pk6,Ak6,Tk6;var D18=O(()=>{m$();k61();uA0();yA0();W6();H18();xK=V(JU(),1),U18=V(wm(),1),Ok6=Dk6(()=>Q$.createCounter("decopilot.stream.publish_errors",{description:"Number of JetStream publish failures for decopilot stream chunks",unit:"{errors}"})),N18=Math.max(1,Number(process.env.DECOPILOT_STREAM_REPLICAS??3)||3);Pk6=process.env.STREAM_ENCODE_TRACE==="1",Ak6=process.env.DECOPILOT_STREAM_TRACE==="1";Tk6=Pk6?new B18:null});function xI0($,Z,Q,Y){if(!Y)return!1;return $.emit(Z,ZH(Q,Y.status,{title:Y.title??void 0,virtualMcpId:Y.virtual_mcp_id??void 0,createdBy:Y.created_by??void 0,triggerId:Y.trigger_id??null,branch:Y.branch??null,harnessId:Y.harness_id??void 0,createdAt:Y.created_at,updatedAt:Y.updated_at})),!0}var O18=O(()=>{q8()});class JK1{storage;options;timer=null;constructor($,Z={}){this.storage=$;this.options=Z}start(){if(this.timer)return;let $=this.options.intervalMs??300000;this.timer=setInterval(()=>{this.runOnce()},$)}async runOnce(){let $=this.options.staleAfterMs??3600000;try{let Z=await this.storage.sweepAbandoned($);if(Z>0)console.log(`[async-research-sweeper] marked ${Z} stale jobs as abandoned`);return Z}catch(Z){return console.error("[async-research-sweeper] sweep failed",Z),0}}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}function Ik6($,Z){let Q=$.startsWith("thread:")?HK($):$;return[...new Set([Z,Q].filter((Y)=>!!Y))]}async function L18($,Z){let Q=Z.organizationId;try{let Y=await $.storage.taskBoard.linkedThreadIds(Z.id,Q);for(let X of Y){let J=await HF($,X);if(!J?.owner||!J?.name)continue;let G=await $.storage.threads.get(X),W=await Ul($,{threadId:X,runBranch:G?.branch}),K=Ik6(W,await Wz0($,X)),H=await ks($,Q,Xe0(J)).catch(()=>null);if(!H){console.warn(`[task-board] no credential for ${J.owner}/${J.name} \u2014 `+`cannot look up ${Z.id}'s change request by branch`);continue}for(let F of K){let U=await H.readForBranch(F).catch(()=>null);if(!U)continue;return await $.storage.taskBoard.linkPr({taskBoardItemId:Z.id,organizationId:Q,url:U.url,prNumber:U.number,repo:H.repo}),await $.storage.taskBoard.openReviewCycleIfInProgress(Z.id,Q),await CG(Q).catch(()=>{}),console.log(`[task-board] ${Z.id}: linked ${U.url} found on branch ${F}`),!0}}}catch(Y){console.error("[task-board] PR lookup by branch failed",Y)}return!1}var w18=O(()=>{ZZ();MG();rZ()});async function j18($,Z,Q){let Y=Z.organizationId;if(!eX(Z))return!1;if(!vf(Q))return!1;if(await $.storage.taskBoard.hasHumanRejectedDone(Z.id,Y))return!1;let X=await $.storage.organizationSettings.get(Y),J=rH(X?.flags),G=await $.storage.taskBoard.update(Z.id,Y,{status:J},Z.updatedBy);return await y6($,{taskBoardItemId:Z.id,action:"status_changed",actorId:null,data:{from:Z.status,to:J,reason:"pr_merged"}}),r$(Y,G),console.log(`[task-board-review-sweeper] ${Z.id}: linked PR already merged \u2014 moved to ${J}`),!0}var E18=O(()=>{A4();ZY();gl();LK();$9()});function fk6($){return $ instanceof hY}function bk6($,Z){return Z-$>=_k6}class GK1{taskBoard;contextFactory;billing;options;timer=null;running=!1;cursor=null;constructor($,Z,Q,Y={}){this.taskBoard=$;this.contextFactory=Z;this.billing=Q;this.options=Y}start(){if(this.timer)return;let $=this.options.intervalMs??Vk6;this.timer=setInterval(()=>{this.runOnce()},$),this.timer.unref()}async runOnce(){if(this.running)return 0;this.running=!0;let $=0;try{let Z=this.options.batchSize??Sk6,Q=this.options.itemIntervalMs??kk6,Y=new Date(Date.now()-Q),X=await this.taskBoard.listItemsPendingReview(Z,this.cursor,Y),J=X.at(-1);this.cursor=X.length===Z&&J?{updatedAt:J.updatedAt,id:J.id}:null;for(let{id:G,organizationId:W}of X)try{if(await this.reconcileItem(G,W,Y))$++}catch(K){console.error(`[task-board-review-sweeper] ${G} failed`,K)}await this.reapNeverStartedThreads(Z),$+=await this.dispatchDueRetries(Z),await this.reactToUnhandledFailures(Z)}catch(Z){console.error("[task-board-review-sweeper] sweep failed",Z)}finally{this.running=!1}return $}async reapNeverStartedThreads($){try{let Z=await this.taskBoard.failNeverStartedLinkedThreads($,new Date(Date.now()-A81),b41);for(let Q of Z)console.warn(`[task-board-review-sweeper] failed never-started thread ${Q.threadId} on ${Q.itemId}`)}catch(Z){console.error("[task-board-review-sweeper] reaping failed",Z)}}async reactToUnhandledFailures($){let Z=await this.taskBoard.listItemsStuckAfterFailure($,new Date(Date.now()-vk6));for(let{id:Q,organizationId:Y,threadId:X}of Z)try{console.warn(`[task-board-review-sweeper] reacting to an unhandled failure on ${Q}`),await _41(this.taskBoard,X,Y),await v41(this.taskBoard,this.billing,X,Y)}catch(J){console.error(`[task-board-review-sweeper] unhandled-failure reaction for ${Q} failed`,J)}}async dispatchDueRetries($){let Z=0,Q=await this.taskBoard.listItemsDueForRetry($,new Date);for(let{id:Y,organizationId:X,attempts:J}of Q)try{if(!await this.taskBoard.claimDueRetry(Y,X,new Date))continue;let G=await this.taskBoard.getById(Y,X);if(!G||G.status!==T$.progress||G.assigneeId!==o$)continue;let W=await this.contextFactory(X,G.assignedBy??G.createdBy);if(!W)continue;await wK(W,G,{runClass:"retry"}),Z++,console.warn(`[task-board-review-sweeper] re-dispatched ${Y} after a failure (attempt ${J})`)}catch(G){if(console.error(`[task-board-review-sweeper] retry dispatch for ${Y} failed`,G),fk6(G)){await this.returnToTodo(Y,X,G instanceof Error?G.message:String(G));continue}await this.taskBoard.scheduleRunRetry(Y,X,J,new Date(Date.now()+Ck6)).catch((W)=>console.error(`[task-board-review-sweeper] re-arming ${Y} failed`,W))}return Z}async returnToTodo($,Z,Q){try{let Y=await this.taskBoard.getById($,Z);if(!Y||Y.status!==T$.progress)return;let X=await this.taskBoard.returnToTodoAfterFailure($,Z,Y.updatedBy);if(!X)return;await this.taskBoard.recordActivity({taskBoardItemId:$,action:"status_changed",actorId:null,data:{from:"in_progress",to:"todo",reason:Q}}).catch(()=>{}),r$(Z,X)}catch(Y){console.error(`[task-board-review-sweeper] returning ${$} to todo failed`,Y)}}async handOffReviewWithoutPr($,Z){let Q=await this.taskBoard.listActivity(Z.id,Z.organizationId);if(!bk6(EN(Q,Z.reviewCycleStartedAt),Date.now()))return;await EF($,Z,"no pull request is linked to this task \u2014 there is nothing for a "+"reviewer to review")}async reconcileItem($,Z,Q){if(!await this.taskBoard.claimSweep($,Z,Q))return!1;let Y=await this.taskBoard.getById($,Z);if(!Y)return!1;if(!eX(Y))return!1;let X=Y.assigneeId===o$,J=await this.taskBoard.listPrs($,Z),G=await this.contextFactory(Z,Y.assignedBy??Y.createdBy);if(!G)return!1;if(J.length===0){if(await L18(G,Y))J=await this.taskBoard.listPrs($,Z);if(J.length===0){if(X)await this.handOffReviewWithoutPr(G,Y);return!1}}let W=await Promise.all(J.map(async(K)=>({...K,...await ul(Z,K)})));if(W.every((K)=>K.state===null))console.warn(`[task-board-review-sweeper] ${$}: no live PR state from GitHub (${W.length} PR(s)) \u2014 proceeding on unknown`);if(await j18(G,Y,W))return!0;if(await kq$(G,Y))return!0;if(await this.resolveConflictFromSweep(G,Y,W))return!0;if(!X)return!1;if(!V41(W))return!1;return await aP0(G,Y,{previewMatchesHead:k41(W)}),!0}async resolveConflictFromSweep($,Z,Q){let Y=Q.find((X)=>X.state!=="closed"&&X.conflict===!0);if(!Y)return!1;return await Uw($,Z.organizationId,Z,{pr:{number:Y.number,url:Y.url},conflict:!0}).catch((X)=>{return console.error("[task-board-review-sweeper] conflict resolve failed",X),!1})}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}var Vk6=60000,kk6=300000,Sk6=50,Ck6=60000,_k6=900000,vk6=120000;var z18=O(()=>{A4();L41();w18();zF();be();LK();E18();$9();zG();x41();rZ();Ke();hl()});import{readdir as xk6,rm as yI0}from"fs/promises";import{join as gI0}from"path";async function hI0($){let Z=new Date;Z.setUTCDate(Z.getUTCDate()-yk6),Z.setUTCHours(0,0,0,0);let Q=0;try{let Y=await $x($);for(let X of Y)if(/^\d{4}$/.test(X))Q+=await P18($,X,Z);else if(!X.startsWith(".")){let J=gI0($,X),G=await $x(J);for(let K of G){if(!/^\d{4}$/.test(K))continue;Q+=await P18(J,K,Z)}if((await $x(J)).length===0)await yI0(J,{recursive:!0,force:!0})}}catch(Y){console.warn("monitoring retention cleanup failed:",Y)}return Q}async function P18($,Z,Q){let Y=0,X=gI0($,Z),J=await $x(X);for(let W of J){if(!/^\d{2}$/.test(W))continue;let K=gI0(X,W),H=await $x(K);for(let U of H){if(!/^\d{2}$/.test(U))continue;let N=new Date(`${Z}-${W}-${U}T00:00:00Z`);if(isNaN(N.getTime()))continue;if(N<Q){let B=gI0(K,U);await yI0(B,{recursive:!0,force:!0}),Y++}}if((await $x(K)).length===0)await yI0(K,{recursive:!0,force:!0})}if((await $x(X)).length===0)await yI0(X,{recursive:!0,force:!0});return Y}async function $x($){try{return(await xk6($)).filter((Q)=>!Q.startsWith("."))}catch{return[]}}var yk6=30;var WK1=()=>{};import{DBOS as KK1,SchedulerMode as gk6}from"@dbos-inc/dbos-sdk";async function uk6(){let $=[tG(),Zx(),aF()],Z=0;for(let Q of $)try{Z+=await hI0(Q)}catch(Y){console.error("[monitoring-retention] cleanup failed:",Y)}return console.log(`[monitoring-retention] deleted ${Z} day-dir(s) across ${$.length} signal dir(s)`),{deleted:Z,dirs:$.length}}async function lk6($,Z){await KK1.runStep(()=>uk6(),{name:"monitoringRetention"})}function T18(){if(A18)return;A18=!0;let $=KK1.registerWorkflow(lk6,{name:"monitoringRetentionWorkflow"});KK1.registerScheduled($,{name:"monitoringRetentionWorkflow",crontab:hk6,mode:gk6.ExactlyOncePerIntervalWhenActive})}var hk6="23 4 * * *",A18=!1;var R18=O(()=>{M3();WK1()});function q18($){return async(Z,Q)=>{let Y=await $.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["member.role","organization.id as orgId","organization.slug as orgSlug","organization.name as orgName"]).where("member.userId","=",Q).where("member.organizationId","=",Z).executeTakeFirst();if(!Y)return console.warn(`[automationContextFactory] User ${Q} not found in org ${Z} \u2014 returning null`),null;let X=await GQ.create();X.auth.user={id:Q,role:Y.role},X.organization={id:Y.orgId,slug:Y.orgSlug,name:Y.orgName};let J=await GP($.db,Z,Y.role);return X.boundAuth=nJ1({auth:X.authInstance,headers:new Headers,role:Y.role,permissions:J,userId:Q}),X.access=new HE(Q,void 0,X.boundAuth,Y.role,"self"),Fw(X,{id:Y.orgId,slug:Y.orgSlug}),X}}var M18=O(()=>{LW();iH()});function ck6(){return[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}]}function dk6(){return{services:ck6(),migrationsStatus:"pending",serverUrl:null,logs:[]}}function ik6(){for(let $ of mk6)$()}function I18($){let Z=[...HK1.logs,$];HK1={...HK1,logs:Z.length>500?Z.slice(-500):Z},ik6()}function FK1(){return pk6}var HK1,mk6,pk6=!1;var UK1=O(()=>{HK1=dk6(),mk6=new Set});import{EventEmitter as nk6}from"events";var NK1;var V18=O(()=>{UK1();NK1=new nk6;NK1.on("request",($)=>{I18($)})});function k18(){return async($,Z)=>{let Q=Date.now(),Y=$.req.method,X=$.req.path;if(X==="/api/auth/get-session"||X.includes("favicon")){await Z();return}let J="",G=!1;if(X.startsWith("/mcp")&&Y==="POST"){G=!0;try{if($.req.header("Content-Type")?.includes("application/json")){let N=await $.req.raw.clone().json();if(N.method==="tools/call"&&N.params?.name){let B=nd(N.params.name),D=N.params.arguments||{},L=Object.keys(D).map((j)=>nd(j)),w=L.length>0?L.slice(0,3).join(",")+(L.length>3?"\u2026":""):"";J=`${q5.tool}${B}${q5.dim}(${w})${q5.reset}`}else if(N.method)J=`${q5.dim}${nd(N.method)}${q5.reset}`}}catch{}}let W=nd(X);if(X.startsWith("/mcp/conn_")){let F=X.split("/")[2]??"";W=`/mcp/${q5.mcp}${nd(F.slice(0,12))}\u2026${q5.reset}`}else if(X==="/mcp")W=`${q5.mcp}/mcp${q5.reset}`;else if(X==="/mcp/registry")W=`${q5.mcp}/mcp/registry${q5.reset}`;let K=ok6(Y),H=G?"\u25C0":"\u2190";if(!FK1())console.log(`${q5.dim}${H}${q5.reset} ${K}${Y}${q5.reset} ${W}${J?` ${J}`:""}`);try{await Z()}finally{let F=Date.now()-Q,U=$.res.status,N=tk6(U),B=F<1000?`${F}ms`:`${(F/1000).toFixed(1)}s`,D=G?"\u25B6":"\u2192";if(!FK1())console.log(`${q5.dim}${D}${q5.reset} ${K}${Y}${q5.reset} ${W}${J?` ${J}`:""} ${N}${U}${q5.reset} ${q5.duration}${B}${q5.reset}`);NK1.emit("request",{method:Y,path:nd(X),status:U,duration:F,timestamp:new Date})}}}var q5,tk6=($)=>{if($>=500)return q5.serverError;if($>=400)return q5.clientError;if($>=300)return q5.redirect;return q5.ok},ok6=($)=>{return q5[$]||q5.reset},nd=($)=>{return $.replace(/\r/g,"").replace(/\n/g,"").replace(/\x1b\[[0-9;]*m/g,"").replace(/[\x00-\x1f\x7f-\x9f]/g,"")};var S18=O(()=>{UK1();V18();q5={reset:"\x1B[0m",dim:"\x1B[2m",bold:"\x1B[1m",GET:"\x1B[36m",POST:"\x1B[33m",PUT:"\x1B[35m",DELETE:"\x1B[31m",ok:"\x1B[32m",redirect:"\x1B[36m",clientError:"\x1B[33m",serverError:"\x1B[31m",mcp:"\x1B[35m",tool:"\x1B[96m",duration:"\x1B[90m"}});import{createHmac as f18}from"crypto";import{mkdir as rk6,readdir as sk6,rm as C18,stat as b18}from"fs/promises";import{join as DK1,relative as ak6}from"path";import{z as V$}from"zod";function y18($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return DK1(ek6,Z)}function g18($){return $.replace(/^\/+/,"").replace(/\.\./g,"")}function BK1($,Z){let Q=y18($),Y=g18(Z);return DK1(Q,Y)}function $S6($,Z,Q,Y){let X=O0().encryptionKey||"dev-secret",J=`${$}:${Z}:${Q}:${Y}`;return f18("sha256",X).update(J).digest("hex")}function v18($,Z,Q,Y,X){let J=Math.floor(Date.now()/1000)+Y,G=$S6(Z,Q,J,X),W=new URL(`/api/dev-assets/${Z}/${g18(Q)}`,$);return W.searchParams.set("expires",J.toString()),W.searchParams.set("signature",G),W.searchParams.set("method",X),W.toString()}function h18($,Z,Q){let Y=`${$}:${Z.getTime()}:${Q}`;return`"${f18("md5","etag").update(Y).digest("hex")}"`}async function u18($,Z,Q,Y,X){try{let J=await sk6($,{withFileTypes:!0});for(let G of J){let W=DK1($,G.name),H=ak6(Z,W).replace(/\\/g,"/");if(Q&&!H.startsWith(Q))continue;if(G.isDirectory())if(Y){let F=H+"/";if(!Q||F.startsWith(Q)){if(!(Q?H.slice(Q.length):H).includes("/"))X.commonPrefixes.add(F)}}else await u18(W,Z,Q,Y,X);else if(G.isFile()){if(Y&&Q){let F=H.slice(Q.length);if(F.includes(Y)){let U=F.indexOf(Y),N=Q+F.slice(0,U+1);X.commonPrefixes.add(N);continue}}try{let F=await b18(W);X.objects.push({key:H,size:F.size,lastModified:F.mtime.toISOString(),etag:h18(W,F.mtime,F.size)})}catch{}}}}catch{}}function l18($,Z){let Y=i($).id;return[{name:"LIST_OBJECTS",description:"List objects in the local assets directory with pagination support",inputSchema:V$.object({prefix:V$.string().optional(),maxKeys:V$.number().optional().default(1000),continuationToken:V$.string().optional(),delimiter:V$.string().optional()}),outputSchema:V$.object({objects:V$.array(V$.object({key:V$.string(),size:V$.number(),lastModified:V$.string(),etag:V$.string()})),nextContinuationToken:V$.string().optional(),isTruncated:V$.boolean(),commonPrefixes:V$.array(V$.string()).optional()}),handler:async(X)=>{let J=X,G=J.prefix||"",W=J.maxKeys??1000,K=J.delimiter,H=J.continuationToken,F=y18(Y);await rk6(F,{recursive:!0});let U={objects:[],commonPrefixes:new Set};await u18(F,F,G,K,U),U.objects.sort((w,j)=>w.key.localeCompare(j.key));let N=0;if(H){if(N=U.objects.findIndex((w)=>w.key>H),N===-1)N=U.objects.length}let B=U.objects.slice(N,N+W),D=N+W<U.objects.length,L=D?B[B.length-1]?.key:void 0;return{objects:B,isTruncated:D,nextContinuationToken:L,commonPrefixes:Array.from(U.commonPrefixes).sort()}}},{name:"GET_OBJECT_METADATA",description:"Get metadata for a file in the local assets directory",inputSchema:V$.object({key:V$.string()}),outputSchema:V$.object({contentType:V$.string().optional(),contentLength:V$.number(),lastModified:V$.string(),etag:V$.string(),metadata:V$.record(V$.string(),V$.string()).optional()}),handler:async(X)=>{let J=X,G=BK1(Y,J.key),W=await b18(G);return{contentType:m31(J.key),contentLength:W.size,lastModified:W.mtime.toISOString(),etag:h18(G,W.mtime,W.size)}}},{name:"GET_PRESIGNED_URL",description:"Generate a presigned URL for downloading a file from local storage",inputSchema:V$.object({key:V$.string(),expiresIn:V$.number().optional()}),outputSchema:V$.object({url:V$.string(),expiresIn:V$.number()}),handler:async(X)=>{let J=X,G=J.expiresIn??_18;return{url:v18(Z,Y,J.key,G,"GET"),expiresIn:G}}},{name:"PUT_PRESIGNED_URL",description:"Generate a presigned URL for uploading a file to local storage",inputSchema:V$.object({key:V$.string(),expiresIn:V$.number().optional(),contentType:V$.string().optional()}),outputSchema:V$.object({url:V$.string(),expiresIn:V$.number()}),handler:async(X)=>{let J=X,G=J.expiresIn??_18;return{url:v18(Z,Y,J.key,G,"PUT"),expiresIn:G}}},{name:"DELETE_OBJECT",description:"Delete a single file from local storage",inputSchema:V$.object({key:V$.string()}),outputSchema:V$.object({success:V$.boolean(),key:V$.string()}),handler:async(X)=>{let J=X,G=BK1(Y,J.key);try{return await C18(G),{success:!0,key:J.key}}catch{return{success:!1,key:J.key}}}},{name:"DELETE_OBJECTS",description:"Delete multiple files from local storage",inputSchema:V$.object({keys:V$.array(V$.string()).max(1000)}),outputSchema:V$.object({deleted:V$.array(V$.string()),errors:V$.array(V$.object({key:V$.string(),message:V$.string()}))}),handler:async(X)=>{let J=X,G=[],W=[];return await Promise.all(J.keys.map(async(K)=>{let H=BK1(Y,K);try{await C18(H),G.push(K)}catch(F){W.push({key:K,message:F instanceof Error?F.message:"Unknown error"})}})),{deleted:G,errors:W}}}]}async function OK1($,Z,Q){let Y=l18(Z,Q),X=new qH({name:"dev-assets-mcp",version:"1.0.0"},{capabilities:{tools:{}},jsonSchemaValidator:f5});for(let G of Y){let W="shape"in G.inputSchema?G.inputSchema.shape:V$.object({}).shape,K=G.outputSchema&&"shape"in G.outputSchema?G.outputSchema.shape:V$.object({}).shape;X.registerTool(G.name,{description:G.description??"",inputSchema:W,outputSchema:K,annotations:G.annotations,_meta:G._meta},async(H)=>{try{let F=await G.handler(H);return{content:[{type:"text",text:JSON.stringify(F)}],structuredContent:F}}catch(F){return{content:[{type:"text",text:`Error: ${F.message}`}],isError:!0}}})}let J=new oY({enableJsonResponse:$.headers.get("Accept")?.includes("application/json")??!1});return await X.connect(J),yG(X,J,$,"mcp:dev-assets")}async function c18($,Z,Q,Y){let J=l18(Q,Y).find((G)=>G.name===$);if(!J)return{content:[{type:"text",text:`Tool not found: ${$}`}],isError:!0};try{let G=await J.handler(Z);return{content:[{type:"text",text:JSON.stringify(G)}]}}catch(G){return{content:[{type:"text",text:G instanceof Error?G.message:String(G)}],isError:!0}}}var ek6="./data/assets",_18=3600,x18,d18;var m18=O(()=>{t1();Gc();y$();Tt();af();uQ();_M0();x18=new e0;x18.all("/",async($)=>{let Z=$.get("studioContext"),Q=new URL($.req.url),Y=`${Q.protocol}//${Q.host}`;return OK1($.req.raw,Z,Y)});d18=x18});var i18={};q4(i18,{mountDevRoutes:()=>ZS6});function ZS6($,Z){$.all("/mcp/:connectionId{.*_dev-assets$}",Z,async(Y)=>{let X=Y.get("studioContext"),J=new URL(Y.req.url),G=`${J.protocol}//${J.host}`;return OK1(Y.req.raw,X,G)}),$.all("/mcp/:connectionId{.*_dev-assets$}/call-tool/:toolName",Z,async(Y)=>{let X=Y.get("studioContext"),J=new URL(Y.req.url),G=`${J.protocol}//${J.host}`,W=Y.req.param("toolName");if(!W)return Y.json({error:"Missing tool name"},400);let K=await Y.req.json(),H=await c18(W,K,X,G);if(H.isError)return Y.json(H.content,500);return Y.json(H.content)}),$.use("/mcp/dev-assets",Z),$.route("/mcp/dev-assets",d18);let Q=new e0;Q.use("*",fK({mountPath:"/api/dev-assets"})),Q.route("/",CM0({orgFromPath:!1})),$.route("/api/dev-assets",Q)}var p18=O(()=>{y$();y31();_M0();m18()});import{sql as QS6}from"kysely";import{randomUUID as n18}from"crypto";import{z as YS6}from"zod";async function JS6($){let Z=new Date().toISOString(),Q=n18(),Y=R8.SELF($.organizationId),X="registry.publish_request.created",J={requestId:$.request.id,requestedId:$.request.requested_id,title:$.request.title,status:$.request.status,createdAt:$.request.created_at,requester:{name:$.request.requester_name,email:$.request.requester_email}};await $.db.insertInto("events").values({id:Q,organization_id:$.organizationId,type:"registry.publish_request.created",source:Y,specversion:"1.0",subject:$.request.id,time:Z,datacontenttype:"application/json",dataschema:null,data:JSON.stringify(J),cron:null,status:"pending",attempts:0,last_error:null,next_retry_at:null,created_at:Z,updated_at:Z}).execute();let G=await $.db.selectFrom("event_subscriptions").select(["id"]).where("organization_id","=",$.organizationId).where("enabled","=",1).where("event_type","=","registry.publish_request.created").where((W)=>W.or([W("publisher","is",null),W("publisher","=",Y)])).execute();if(G.length>0)await $.db.insertInto("event_deliveries").values(G.map((W)=>({id:n18(),event_id:Q,subscription_id:W.id,status:"pending",attempts:0,last_error:null,delivered_at:null,next_retry_at:null,created_at:Z}))).execute();try{await QS6`SELECT
|
|
3394
3394
|
pg_notify('studio_events', ${Q}),
|