decocms 4.384.1 → 4.384.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/assets/{AlertCircle-DXrZ6SzB.js → AlertCircle-CL2g6hBv.js} +1 -1
- package/dist/client/assets/{AreaChart-CXORXrmM.js → AreaChart-DzyaUucV.js} +1 -1
- package/dist/client/assets/{ArrowLeft-D7adHwja.js → ArrowLeft-BqNlqHdb.js} +1 -1
- package/dist/client/assets/{ArrowRight-BveFFy2z.js → ArrowRight-yUmRMyFa.js} +1 -1
- package/dist/client/assets/{ArrowUp-CqB5FCTU.js → ArrowUp-doBsDpEd.js} +1 -1
- package/dist/client/assets/{CartesianChart-CIKBGRx6.js → CartesianChart-uXd0KXWF.js} +1 -1
- package/dist/client/assets/{CheckCircle-DMlFOadx.js → CheckCircle-DNXT9LQw.js} +1 -1
- package/dist/client/assets/{ChevronUp-k_EOf84B.js → ChevronUp-Dc2CzZ9J.js} +1 -1
- package/dist/client/assets/{Copy01-EMXGNAiO.js → Copy01-CALkaT8p.js} +1 -1
- package/dist/client/assets/{CreditCard01-CiyU0eR_.js → CreditCard01-BGb46j0w.js} +1 -1
- package/dist/client/assets/{DotsVertical-DhvTdpnP.js → DotsVertical-DDZN-DIr.js} +1 -1
- package/dist/client/assets/{Download01-CsHqAVNu.js → Download01-CFSTXr8x.js} +1 -1
- package/dist/client/assets/{ErrorBarContext-Dj2GKSRV.js → ErrorBarContext-Bmb4OVsC.js} +1 -1
- package/dist/client/assets/{Eye-Bi64tP-D.js → Eye-B_-FUDkf.js} +1 -1
- package/dist/client/assets/{Globe01-BWRc6bbu.js → Globe01-DYZzNFRa.js} +1 -1
- package/dist/client/assets/{Globe04-BTVlItdV.js → Globe04-DE66YFpd.js} +1 -1
- package/dist/client/assets/{Image01-8PFZYS9P.js → Image01-D0SI0eJx.js} +1 -1
- package/dist/client/assets/{Key01-EHOZ3vmu.js → Key01-CGyx-jB1.js} +1 -1
- package/dist/client/assets/{LayoutLeft-DuadrTfl.js → LayoutLeft-CduVrmTY.js} +1 -1
- package/dist/client/assets/{Line-CTNXXmhw.js → Line-Bpvsuvfl.js} +1 -1
- package/dist/client/assets/{Link01-KARtnBxY.js → Link01-b3QVbtfw.js} +1 -1
- package/dist/client/assets/{LinkExternal01-DslZPBGz.js → LinkExternal01-PpT-VqQv.js} +1 -1
- package/dist/client/assets/{Monitor01-Crab2RRF.js → Monitor01-tps0G-eA.js} +1 -1
- package/dist/client/assets/{Package-jUQ-QNQ_.js → Package-DmJJ2zwx.js} +1 -1
- package/dist/client/assets/{Palette-DqyEATuR.js → Palette-H25arUUw.js} +1 -1
- package/dist/client/assets/{Play-DIcksfye.js → Play-CN9QsFKm.js} +1 -1
- package/dist/client/assets/{Plus-BHRPkby-.js → Plus-BB6-c5sU.js} +1 -1
- package/dist/client/assets/{SearchLg-C4rS8AcZ.js → SearchLg-CExd0K4D.js} +1 -1
- package/dist/client/assets/{SearchMd-DxK3_oZM.js → SearchMd-pcanFLxJ.js} +1 -1
- package/dist/client/assets/{Sector-5gq5keNL.js → Sector-DTbZ5GzK.js} +1 -1
- package/dist/client/assets/{Settings02-Bs5wKTy4.js → Settings02-Cql2YRRu.js} +1 -1
- package/dist/client/assets/{Share07-CUM6Dqvb.js → Share07-DZnJoaaB.js} +1 -1
- package/dist/client/assets/{Stars01-BvVFnZBk.js → Stars01-koEVpHBg.js} +1 -1
- package/dist/client/assets/{Sun-x_EXvKiQ.js → Sun-DHu0BtRe.js} +1 -1
- package/dist/client/assets/{Tool01-5X6uedg8.js → Tool01-BfvHlgMO.js} +1 -1
- package/dist/client/assets/{Tool02-CR95_N0f.js → Tool02-4AGlMp3_.js} +1 -1
- package/dist/client/assets/{Trash01-CsZj7add.js → Trash01-CoDSwhlk.js} +1 -1
- package/dist/client/assets/{TrendUp01-B7EaxChV.js → TrendUp01-CUQslKNc.js} +1 -1
- package/dist/client/assets/{Upload01-B0aywPN-.js → Upload01-eY69lxYq.js} +1 -1
- package/dist/client/assets/{User01-C_8SVY7B.js → User01-DClxObx9.js} +1 -1
- package/dist/client/assets/{UserSquare-zbEMpwdU.js → UserSquare-yxnFTjmA.js} +1 -1
- package/dist/client/assets/{Users01-CV_KxvLX.js → Users01-Z1l_JeRj.js} +1 -1
- package/dist/client/assets/{X-B9OR2y1D.js → X-DIdmvXi5.js} +1 -1
- package/dist/client/assets/{XCircle-DOFffLSN.js → XCircle-CrmJoBI1.js} +1 -1
- package/dist/client/assets/{XClose-CmbUUKkG.js → XClose-C9HE5_ie.js} +1 -1
- package/dist/client/assets/{Zap-0kUaigVh.js → Zap-gDYafaw-.js} +1 -1
- package/dist/client/assets/{ZoomOut-DalZqqCw.js → ZoomOut-CPqhC1BT.js} +1 -1
- package/dist/client/assets/{access-gate-Bb_ib-N1.js → access-gate-BKr55tJT.js} +1 -1
- package/dist/client/assets/{add-connection-dialog-DU2-q29K.js → add-connection-dialog-CVIbPpXW.js} +1 -1
- package/dist/client/assets/{agent-analytics-sscDITo7.js → agent-analytics-DQHSh_JX.js} +1 -1
- package/dist/client/assets/agent-app-CWPHz33P.js +1 -0
- package/dist/client/assets/{agent-assets-vEGmPVHw.js → agent-assets-DTLvLzK0.js} +1 -1
- package/dist/client/assets/{agent-automation-Dxq_18nl.js → agent-automation-BRgbXQGv.js} +1 -1
- package/dist/client/assets/{agent-automations-2L8oRO9W.js → agent-automations-DOMZzOzv.js} +1 -1
- package/dist/client/assets/{agent-connect-sources-Do_JSp98.js → agent-connect-sources-CJ58x-7G.js} +1 -1
- package/dist/client/assets/agent-deck-KaJwQbTV.js +1 -0
- package/dist/client/assets/{agent-e2e-Clsl7KyJ.js → agent-e2e-CCdbL8Xu.js} +1 -1
- package/dist/client/assets/{agent-experiments-DJ2Hw8uJ.js → agent-experiments-KbprKLvH.js} +1 -1
- package/dist/client/assets/agent-file-52_nriI_.js +1 -0
- package/dist/client/assets/{agent-git-DleoItlD.js → agent-git-BLxhnCXQ.js} +1 -1
- package/dist/client/assets/{agent-hosting-DQvN7Fny.js → agent-hosting-B5naTGpH.js} +1 -1
- package/dist/client/assets/{agent-icon-DLq4L2Ao.js → agent-icon-Cd4WgvSY.js} +1 -1
- package/dist/client/assets/agent-library-file-DunOvps7.js +1 -0
- package/dist/client/assets/{agent-monitor-MAoNBZM4.js → agent-monitor-DGc5wRri.js} +1 -1
- package/dist/client/assets/{agent-overview-CGPEv6_t.js → agent-overview-BXX-t4TM.js} +1 -1
- package/dist/client/assets/agent-settings-CU_GXHrT.js +1 -0
- package/dist/client/assets/{agent-site-editor-Nplaug8n.js → agent-site-editor-U3bu2qCe.js} +1 -1
- package/dist/client/assets/agent-site-editor-code-DPIv2TMg.js +2 -0
- package/dist/client/assets/{agent-site-editor-content-Axgk8yq4.js → agent-site-editor-content-8bbTea8s.js} +2 -2
- package/dist/client/assets/{agent-site-editor-preview-Bxd28KmI.js → agent-site-editor-preview-ChJDQx5H.js} +3 -3
- package/dist/client/assets/agent-view-DkGJFLPi.js +1 -0
- package/dist/client/assets/{agent-view-guard-V5STCUzo.js → agent-view-guard-CrodJew9.js} +1 -1
- package/dist/client/assets/{agents-list-CUwg87E-.js → agents-list-BBn3YJAX.js} +1 -1
- package/dist/client/assets/{ai-providers-too2IXUV.js → ai-providers-B9hDsTr9.js} +1 -1
- package/dist/client/assets/{alert-DFx1_vq0.js → alert-Dnc1OwUt.js} +1 -1
- package/dist/client/assets/{alert-dialog--j98vjuD.js → alert-dialog-BV6BL0PL.js} +1 -1
- package/dist/client/assets/api-keys-BNmoLSmg.js +1 -0
- package/dist/client/assets/{api-keys-B7Zokrrd.js → api-keys-CCMpftJx.js} +1 -1
- package/dist/client/assets/app-editor-CXfMTTnb.js +1 -0
- package/dist/client/assets/{asset-utils-g7RXB14P.js → asset-utils-BAPGdhel.js} +1 -1
- package/dist/client/assets/{auth-Dz9mRaTv.js → auth-BOVcch8v.js} +1 -1
- package/dist/client/assets/{auth-catchall-Dg4mvru9.js → auth-catchall-DE9t2UFX.js} +1 -1
- package/dist/client/assets/{auth-entry-2wq3xm8h.js → auth-entry-CxQexJqU.js} +1 -1
- package/dist/client/assets/{auth-split-layout-6nyuJnor.js → auth-split-layout-eT5rEO4Y.js} +1 -1
- package/dist/client/assets/{authenticate-and-persist-oauth-BNH6AGkF.js → authenticate-and-persist-oauth-Bq4Rx_LM.js} +1 -1
- package/dist/client/assets/{automation-list-row-DTelN69U.js → automation-list-row-CF-ugqN9.js} +1 -1
- package/dist/client/assets/{automation-runs-Dxt5rTNn.js → automation-runs-CXRY4ihl.js} +1 -1
- package/dist/client/assets/{automations-BKHsjXET.js → automations-BYnxukMx.js} +1 -1
- package/dist/client/assets/{autosend-BZKRqImC.js → autosend-aHWkl5NE.js} +1 -1
- package/dist/client/assets/{avatar-DevS79NO.js → avatar-ClWEwL-z.js} +1 -1
- package/dist/client/assets/{badge-B5sfAgyv.js → badge-V2_EYnYE.js} +1 -1
- package/dist/client/assets/{block-document-DQqSQfTf.js → block-document-Dh4KfQDb.js} +1 -1
- package/dist/client/assets/{blocks-preview-workspace-context-3b3z48NA.js → blocks-preview-workspace-context-CObH2vdO.js} +1 -1
- package/dist/client/assets/{breadcrumb-CuxeEsiE.js → breadcrumb-DxvOAl4Z.js} +1 -1
- package/dist/client/assets/{buckets-DZL43_g7.js → buckets-Cm6RwHi7.js} +1 -1
- package/dist/client/assets/{build-improve-prompt-doc-Gsk0rQPh.js → build-improve-prompt-doc-C0HV3Evo.js} +1 -1
- package/dist/client/assets/{bulk-category-panel-BnqZgf6u.js → bulk-category-panel-CeqnWYWi.js} +1 -1
- package/dist/client/assets/{calendar-CSJbftl5.js → calendar-BonOrtU-.js} +1 -1
- package/dist/client/assets/{capability-load-error-sIxX77fM.js → capability-load-error-DCFFcPkL.js} +1 -1
- package/dist/client/assets/category-editor-DSayEs2q.js +1 -0
- package/dist/client/assets/{chart-CWB4d9zp.js → chart-BBn4HmQQ.js} +1 -1
- package/dist/client/assets/{chat-context-C_38Spkt.js → chat-context-CR299TDT.js} +1 -1
- package/dist/client/assets/{chat-draft-C2Y7ngNf.js → chat-draft-BKtRPZeV.js} +1 -1
- package/dist/client/assets/{checkbox-sg-ezzoL.js → checkbox-B3iDQT4l.js} +1 -1
- package/dist/client/assets/{choose-editor-Dkt9a9o0.js → choose-editor-C_tZTnvs.js} +1 -1
- package/dist/client/assets/{cli-auth-success-CONkf9-a.js → cli-auth-success-B6-7X3Fl.js} +1 -1
- package/dist/client/assets/{client-icons-BEKK0TZn.js → client-icons-DFyDJFTT.js} +1 -1
- package/dist/client/assets/{collapsible-B9sp1MZx.js → collapsible-nit0_hco.js} +1 -1
- package/dist/client/assets/{collection-detail-DvzvKgEI.js → collection-detail-J5DYpKII.js} +1 -1
- package/dist/client/assets/{collection-display-button-yYYde6Q2.js → collection-display-button-BHDqX-DX.js} +1 -1
- package/dist/client/assets/{collection-search-CGwYR_uT.js → collection-search-CIXgPHQU.js} +1 -1
- package/dist/client/assets/{collection-table-wrapper-CDfbSuzA.js → collection-table-wrapper-D2ZcQRAO.js} +1 -1
- package/dist/client/assets/{collection-tabs-BXzRHkNV.js → collection-tabs-Ced_1P3B.js} +1 -1
- package/dist/client/assets/{combobox-D5eH9To8.js → combobox-Dld3bajr.js} +1 -1
- package/dist/client/assets/{command-ZfYjtuAl.js → command-BFopaNrK.js} +1 -1
- package/dist/client/assets/{companion-mcps-section-CBIG-0X4.js → companion-mcps-section-TM5maZVd.js} +1 -1
- package/dist/client/assets/{connect-layout-D9s0C3mQ.js → connect-layout-ZdT0I12j.js} +1 -1
- package/dist/client/assets/{connect-Eu9GeM87.js → connect-tbqEH_6g.js} +1 -1
- package/dist/client/assets/{connection-CTYIl1P4.js → connection-BSw7pzRm.js} +1 -1
- package/dist/client/assets/{connection-card-BqtXbL-v.js → connection-card-CzEduBCC.js} +1 -1
- package/dist/client/assets/{connection-detail-DbawaBsp.js → connection-detail-BREk9-YG.js} +1 -1
- package/dist/client/assets/{connection-form-helpers-BPSWaVDO.js → connection-form-helpers-C80XYT0F.js} +1 -1
- package/dist/client/assets/{connections-DBMztUZj.js → connections-DWnzB5FP.js} +1 -1
- package/dist/client/assets/{create-organization-dialog-KYpVbGvC.js → create-organization-dialog-CzRq_uST.js} +1 -1
- package/dist/client/assets/{decofile-api-DAALQSQE.js → decofile-api-DzQykCnT.js} +1 -1
- package/dist/client/assets/{decopilot-BYcz3jno.js → decopilot-CE5pqqZH.js} +1 -1
- package/dist/client/assets/{dialog-Ep7gkNp4.js → dialog-2G-cQw5c.js} +1 -1
- package/dist/client/assets/{discover-eok0FXgg.js → discover-C6HtYxY1.js} +1 -1
- package/dist/client/assets/{domain-settings-D3OWm26W.js → domain-settings-Q8HjSWM5.js} +1 -1
- package/dist/client/assets/{download-app-dialog-BJ8H_bRY.js → download-app-dialog-BkiFA22O.js} +1 -1
- package/dist/client/assets/{drawer-A7F0d8UD.js → drawer-DsN4VmdE.js} +1 -1
- package/dist/client/assets/{editor-B-GNLQkJ.js → editor-WAZQ2CEk.js} +1 -1
- package/dist/client/assets/{empty-state-9N9sPHXJ.js → empty-state-B1cRkX5K.js} +1 -1
- package/dist/client/assets/{empty-state-On4g7NCI.js → empty-state-Dcth7zyn.js} +1 -1
- package/dist/client/assets/{extract-connection-data-BOFrfyRH.js → extract-connection-data-AxblE4p8.js} +1 -1
- package/dist/client/assets/{feature-gate-kEpIeNmF.js → feature-gate-BRZIAztK.js} +1 -1
- package/dist/client/assets/{feature-paywall-ha_EsZpy.js → feature-paywall-BZu2_xNC.js} +1 -1
- package/dist/client/assets/{file-explorer--pnN8QXG.js → file-explorer-Cm2GH7D7.js} +1 -1
- package/dist/client/assets/{file-preview-D5A5LDPC.js → file-preview-DNvM7uzn.js} +1 -1
- package/dist/client/assets/{file-share-button-Dk6xpTyI.js → file-share-button-CTwUh9-F.js} +1 -1
- package/dist/client/assets/{file-type-icon-D7QysGoM.js → file-type-icon-BN_9SI7i.js} +1 -1
- package/dist/client/assets/{folder-icon-D2rVMvvv.js → folder-icon-DC8lInlG.js} +1 -1
- package/dist/client/assets/{form-7Lo4SdD_.js → form-Djun1QNL.js} +1 -1
- package/dist/client/assets/{gateway-client-DCte15fa.js → gateway-client-DRvKrGBc.js} +1 -1
- package/dist/client/assets/{general-iiCYDK2R.js → general-Dp4Bvm4s.js} +1 -1
- package/dist/client/assets/{github-icon-CSU4ajb7.js → github-icon-CpjMcSs2.js} +1 -1
- package/dist/client/assets/{home-_v5jbftg.js → home-OXtowKOh.js} +1 -1
- package/dist/client/assets/{hooks-DuIBlPGY.js → hooks-BZYmjCXU.js} +1 -1
- package/dist/client/assets/{hooks-D8SGg3an.js → hooks-DaelEUem.js} +1 -1
- package/dist/client/assets/{icon-button-DPRpkV3w.js → icon-button-DwYlPzUN.js} +1 -1
- package/dist/client/assets/{index-g-FgjHbl.js → index-BYMxdXbD.js} +1 -1
- package/dist/client/assets/{index-Cfhbhqg_.js → index-BcslvKns.js} +1 -1
- package/dist/client/assets/{index-BW6_fYfA.js → index-Bls8HNRj.js} +1 -1
- package/dist/client/assets/{index-BJ7_v32m.js → index-BmcZIG6I.js} +1 -1
- package/dist/client/assets/{index-C8G6PQfC.js → index-C9Rn21KI.js} +1 -1
- package/dist/client/assets/{index-DyvRNjV-.js → index-CIqnRBIS.js} +1 -1
- package/dist/client/assets/{index-ZV5TChxh.js → index-CXqVfpeT.js} +1 -1
- package/dist/client/assets/{index-DRk64_SI.js → index-DDtg2oc-.js} +1 -1
- package/dist/client/assets/{index-D4jXemPT.js → index-DFrjEBpS.js} +1 -1
- package/dist/client/assets/{index-C0aUmM3M.js → index-DMzJoorZ.js} +1 -1
- package/dist/client/assets/{index-BbKImTIi.js → index-DUMyrrY9.js} +1 -1
- package/dist/client/assets/{index-C4TAWeDP.js → index-Ddsmjhat.js} +1 -1
- package/dist/client/assets/{index-CNdpljun.js → index-DvH-nwdq.js} +2 -2
- package/dist/client/assets/{index-DaXGCVlJ.js → index-DvPeuoo_.js} +1 -1
- package/dist/client/assets/{index-redirect-AKNIbkic.js → index-redirect-9OhvIhyq.js} +1 -1
- package/dist/client/assets/{infiniteQueryObserver-WcINROE-.js → infiniteQueryObserver-BkwDlHKY.js} +1 -1
- package/dist/client/assets/{infra-billing-C31e-vsh.js → infra-billing-CFbvfA_a.js} +1 -1
- package/dist/client/assets/{input-DD2FqIJD.js → input-B2NibJzZ.js} +1 -1
- package/dist/client/assets/{input-MZs4bQHH.js → input-BWgQhoD8.js} +1 -1
- package/dist/client/assets/{input-Chg2c8hI.js → input-BYV3Mzlx.js} +1 -1
- package/dist/client/assets/{integration-icon-PR06095a.js → integration-icon-UwqkSKd2.js} +1 -1
- package/dist/client/assets/{label-CEgqvjTx.js → label-CanEOsWK.js} +1 -1
- package/dist/client/assets/{last-preview-page-CzfPid_Z.js → last-preview-page-Cay0iLXz.js} +1 -1
- package/dist/client/assets/{layout-B_jMrUBL.js → layout-C-kdcMst.js} +1 -1
- package/dist/client/assets/{legacy-agents-deep-CZ01u8b_.js → legacy-agents-deep-Bi8Z6x_x.js} +1 -1
- package/dist/client/assets/{legacy-main-redirect-CAcG7CBg.js → legacy-main-redirect-DG5RQTLE.js} +1 -1
- package/dist/client/assets/{library-Dl9f7iEL.js → library-DYux7h5b.js} +1 -1
- package/dist/client/assets/{login-DJOyMfR7.js → login-B7qB_8dS.js} +1 -1
- package/dist/client/assets/{markdown-5uzbD6VU.js → markdown-srbLLrsA.js} +1 -1
- package/dist/client/assets/{mcp-app-renderer-6lbnwbz8.js → mcp-app-renderer-CknJJO0m.js} +1 -1
- package/dist/client/assets/{mcp-oauth-DRPFV8Ni.js → mcp-oauth-DErZFwl3.js} +1 -1
- package/dist/client/assets/{members-Dh2ZO9T9.js → members-BQ1jkAlh.js} +1 -1
- package/dist/client/assets/{message-templates-DdU2KHcl.js → message-templates-bROsR-67.js} +1 -1
- package/dist/client/assets/{mini-report-page-CNblffjw.js → mini-report-page-D9yoqiv-.js} +1 -1
- package/dist/client/assets/{mock-board-Cj42XBqR.js → mock-board-DFVKg8L9.js} +3 -3
- package/dist/client/assets/{monaco-editor-YcYvcmpi.js → monaco-editor-bMyr3tAL.js} +1 -1
- package/dist/client/assets/{monitoring-stats-row-Do1fA3gX.js → monitoring-stats-row-Cw-hEMgD.js} +1 -1
- package/dist/client/assets/{multi-select-DThyFtje.js → multi-select-iudNVzNR.js} +1 -1
- package/dist/client/assets/{mustache-ezl5DDdw.js → mustache-Bz3Is7Ci.js} +1 -1
- package/dist/client/assets/{oauth-callback-C5t4p2B2.js → oauth-callback-BYZhHscl.js} +1 -1
- package/dist/client/assets/{oauth-callback-ai-provider-B2_IL7YH.js → oauth-callback-ai-provider-D76Gzh5Y.js} +1 -1
- package/dist/client/assets/{onboarding-D4oOEPlK.js → onboarding-CYrrf9CY.js} +1 -1
- package/dist/client/assets/{optimistic-project-sidebar-views-CHR9jMoH.js → optimistic-project-sidebar-views-DLaBZPO6.js} +1 -1
- package/dist/client/assets/{org-file-open-context-BSOmZpBS.js → org-file-open-context-B-Fg35Om.js} +1 -1
- package/dist/client/assets/{organization-choice-CQ_oSf0h.js → organization-choice-BSxQXHhn.js} +1 -1
- package/dist/client/assets/{orgs-BDWGu_3-.js → orgs-CV4Sm6S8.js} +1 -1
- package/dist/client/assets/{page-seo-form-DNrGr10O.js → page-seo-form-Btga6Joj.js} +1 -1
- package/dist/client/assets/{pair-D8FENe5Z.js → pair-BX6SRtxr.js} +1 -1
- package/dist/client/assets/{plan-ladder-DETz2ThM.js → plan-ladder-C2EuN2q6.js} +1 -1
- package/dist/client/assets/{popover-D2Z7_Tvr.js → popover-DmyHt-2h.js} +1 -1
- package/dist/client/assets/{post-calendar-Cip8s3_Q.js → post-calendar-B-hDkmiN.js} +1 -1
- package/dist/client/assets/{post-editor-C-PRABIi.js → post-editor-DfFFUsxK.js} +1 -1
- package/dist/client/assets/{preview-content-DHtRFMEr.js → preview-content-CutowE5z.js} +1 -1
- package/dist/client/assets/{preview-dialog-Cf84Ckqp.js → preview-dialog-DvnYXL1m.js} +1 -1
- package/dist/client/assets/{primitives-8CKU53Tr.js → primitives-2gJROCES.js} +1 -1
- package/dist/client/assets/{profile-B0t4CTKh.js → profile-CmvJSfgO.js} +1 -1
- package/dist/client/assets/{project-app-view-VbpeQsTe.js → project-app-view-CS1p4tFe.js} +1 -1
- package/dist/client/assets/{project-feed-CN-Ezs6b.js → project-feed-DlnhI6NA.js} +1 -1
- package/dist/client/assets/{project-icon-H5FrSPJO.js → project-icon-DtWWc_Fg.js} +1 -1
- package/dist/client/assets/project-reports-CEhDAHEs.js +1 -0
- package/dist/client/assets/project-tasks-BIa4reml.js +1 -0
- package/dist/client/assets/{prompts-OTiuFTXY.js → prompts-Ck5ImUb9.js} +1 -1
- package/dist/client/assets/record-editor-DD047j9y.js +1 -0
- package/dist/client/assets/{redirect-editor-sBjSfk-Y.js → redirect-editor-D9ceU7cX.js} +1 -1
- package/dist/client/assets/registry-Bja-zxmj.js +2 -0
- package/dist/client/assets/{registry-layout-sUiWg3M0.js → registry-layout-CFM49iM3.js} +1 -1
- package/dist/client/assets/{reports-rqI9VF3E.js → reports-Dxk2lCOw.js} +1 -1
- package/dist/client/assets/reports-Vr68UJmX.js +1 -0
- package/dist/client/assets/{reports-onboarding-gUwLEqeu.js → reports-onboarding-BtWC_Tsc.js} +1 -1
- package/dist/client/assets/{reports-tab-BMsMjX6b.js → reports-tab-ayNCwhlc.js} +2 -2
- package/dist/client/assets/{repositories-RJZ_9Cd8.js → repositories-Dj08EpEg.js} +1 -1
- package/dist/client/assets/{repository-import-picker-BBP7KuOG.js → repository-import-picker-CWkH9CnD.js} +1 -1
- package/dist/client/assets/{repository-picker-C2_oqXTC.js → repository-picker-BgSLJeNo.js} +1 -1
- package/dist/client/assets/{require-capability-DjMvq0Kg.js → require-capability-CUlSdcqO.js} +1 -1
- package/dist/client/assets/{required-auth-layout-C5L42ZZt.js → required-auth-layout-i35y0evL.js} +1 -1
- package/dist/client/assets/{reset-password-SR1oN615.js → reset-password-Be3PNkDP.js} +1 -1
- package/dist/client/assets/{resizable-CdFoIU6A.js → resizable-DXC545x4.js} +1 -1
- package/dist/client/assets/{review-settings-r-y9evaj.js → review-settings-Bt1FfEOi.js} +1 -1
- package/dist/client/assets/{rich-text-link-control-CGZpZOT-.js → rich-text-link-control-CqkMC3kO.js} +1 -1
- package/dist/client/assets/{roles-BxlGbIOP.js → roles-CFwRhdBZ.js} +1 -1
- package/dist/client/assets/{route-DlXqj7Kj.js → route-B7iJkjNW.js} +1 -1
- package/dist/client/assets/{route-DS5unWTs.js → route-BmVIGdu4.js} +1 -1
- package/dist/client/assets/{route-page-header-uHzDO22N.js → route-page-header-CjwQCjT6.js} +1 -1
- package/dist/client/assets/{route-Dv2VWgfK.js → route-vGcGBdl7.js} +1 -1
- package/dist/client/assets/{runnable-block-editor-C5tq8_-0.js → runnable-block-editor-Cv64jlMo.js} +1 -1
- package/dist/client/assets/sandbox-git-api-B1R0585s.js +1 -0
- package/dist/client/assets/{sandbox-lifecycle-context-czmbXmtE.js → sandbox-lifecycle-context-r4oc1CgX.js} +1 -1
- package/dist/client/assets/{schema-B6UYFOiW.js → schema-xJ7U_asm.js} +1 -1
- package/dist/client/assets/{scroll-area-DycqXJW5.js → scroll-area-KLqiO1VQ.js} +1 -1
- package/dist/client/assets/{search-input-BoYU-WLk.js → search-input-BwVXUnNC.js} +1 -1
- package/dist/client/assets/{search-toggle-DWVvj0KE.js → search-toggle-COXJwtkQ.js} +1 -1
- package/dist/client/assets/{secrets-B8xxsSB_.js → secrets-CSym3jGA.js} +1 -1
- package/dist/client/assets/{sections-editor-DoCkeSuj.js → sections-editor-DexxIIq5.js} +1 -1
- package/dist/client/assets/{select-CzmZ0exo.js → select-CMaNbPPd.js} +1 -1
- package/dist/client/assets/{select-model-BMG95zD9.js → select-model-BnUKdsMx.js} +1 -1
- package/dist/client/assets/{seo-editor-CgA7R1AE.js → seo-editor-QO0Y9aap.js} +1 -1
- package/dist/client/assets/{separator-scIwJT-K.js → separator-DdNaSPpK.js} +1 -1
- package/dist/client/assets/{settings-tab-xOdCZ6hZ.js → settings-tab-Crb-CdN4.js} +1 -1
- package/dist/client/assets/{sheet-Big3YL-7.js → sheet-CCbrydch.js} +1 -1
- package/dist/client/assets/{shell-layout-BkECXLU7.js → shell-layout-C2j46sCx.js} +1 -1
- package/dist/client/assets/{sidebar-DSdLAxOi.js → sidebar-CbhdB9UQ.js} +1 -1
- package/dist/client/assets/{skill-preview-d7lD7NA7.js → skill-preview-fSUcbWaT.js} +1 -1
- package/dist/client/assets/{skills-DdHpDwHe.js → skills-llaWPEGB.js} +1 -1
- package/dist/client/assets/{sso-o7oNUwyx.js → sso-DIgjRkxz.js} +1 -1
- package/dist/client/assets/{store-DO9MBgG9.js → store-Cc_kjAsF.js} +1 -1
- package/dist/client/assets/store-registry-CcTXC5Jd.js +2 -0
- package/dist/client/assets/{switch-DNg8Qgce.js → switch-DgkvwxDL.js} +1 -1
- package/dist/client/assets/{synced-repos-CX7ANp8p.js → synced-repos-Bx5jASbd.js} +1 -1
- package/dist/client/assets/{table-N3sFzY9O.js → table-BBW479Qc.js} +1 -1
- package/dist/client/assets/{tabs-lbbUV-Fe.js → tabs-BfXcQInD.js} +1 -1
- package/dist/client/assets/{task-board-DmTmT7UC.js → task-board-DlYdtE3b.js} +1 -1
- package/dist/client/assets/{task-route-BAwBBnHg.js → task-route-Ca6BSRV2.js} +1 -1
- package/dist/client/assets/{task-status-DzeLZc0t.js → task-status-B4Q-ln7c.js} +1 -1
- package/dist/client/assets/{taskboard-analytics-BQQ8tNKP.js → taskboard-analytics-xVEQQIMN.js} +1 -1
- package/dist/client/assets/tasks-CxwtCQe0.js +1 -0
- package/dist/client/assets/{tasks-lwemg4Wr.js → tasks-DrL8vC19.js} +1 -1
- package/dist/client/assets/{textarea-Bkx1K2qe.js → textarea-DA5akcl2.js} +1 -1
- package/dist/client/assets/{thread-button-D6HHWA2W.js → thread-button-C_zUFSq7.js} +1 -1
- package/dist/client/assets/{thread-intent-C_hq8Uw9.js → thread-intent-B84W3TB7.js} +1 -1
- package/dist/client/assets/{thread-route-nSJMdhiK.js → thread-route-C3XU0Psn.js} +1 -1
- package/dist/client/assets/{thread-route-DWx_JTBG.js → thread-route-DuM7Be1s.js} +1 -1
- package/dist/client/assets/{thread-sheet-body-rqTYmTzR.js → thread-sheet-body-DTPa7uQ5.js} +1 -1
- package/dist/client/assets/{toggle-group-CXmezzq3.js → toggle-group-D6olnL6L.js} +1 -1
- package/dist/client/assets/{toolbar-icon-button-Cy6AvRzw.js → toolbar-icon-button-SL9rNc2I.js} +1 -1
- package/dist/client/assets/{tooltip-C6enOXyh.js → tooltip-DSdKYCbI.js} +1 -1
- package/dist/client/assets/{track-B7nt-saX.js → track-YGUtSvtW.js} +1 -1
- package/dist/client/assets/{types-DfG-WUi_.js → types-Bt92_6tp.js} +1 -1
- package/dist/client/assets/{usage-stats-CzGYHgmi.js → usage-stats-DXMB2Ogz.js} +1 -1
- package/dist/client/assets/{use-ai-providers-Cvq_HjNr.js → use-ai-providers-BjYj7e51.js} +1 -1
- package/dist/client/assets/{use-automations-GgRcmlLb.js → use-automations-AZ1h_dVu.js} +1 -1
- package/dist/client/assets/{use-autosave-eGi1xNmE.js → use-autosave-Cp7NOJhz.js} +1 -1
- package/dist/client/assets/{use-connect-companion-BAwfX6On.js → use-connect-companion-NEmMLhzt.js} +1 -1
- package/dist/client/assets/{use-connection-D7t7y5-e.js → use-connection-Daw6Xhb2.js} +1 -1
- package/dist/client/assets/{use-copy-xo4iSDBQ.js → use-copy-7f7jLELO.js} +1 -1
- package/dist/client/assets/{use-create-virtual-mcp-TTkZy980.js → use-create-virtual-mcp-HAc5HQZL.js} +1 -1
- package/dist/client/assets/{use-date-fns-locale-BtRHZTo3.js → use-date-fns-locale-DRjy01i-.js} +1 -1
- package/dist/client/assets/{use-debounced-autosave-pxwwDVN-.js → use-debounced-autosave-BsIVeoqi.js} +1 -1
- package/dist/client/assets/{use-debounced-value-tumfDMYW.js → use-debounced-value-BHUjfc1k.js} +1 -1
- package/dist/client/assets/{use-deco-credits-Czcc02R-.js → use-deco-credits-D6PBQHrh.js} +1 -1
- package/dist/client/assets/{use-decopilot-events-DZnHJX4M.js → use-decopilot-events-DN9cn0m8.js} +1 -1
- package/dist/client/assets/{use-delete-connection-DkrM9cr8.js → use-delete-connection-DhVyMfFv.js} +1 -1
- package/dist/client/assets/{use-deployment-admin-BO2gun9C.js → use-deployment-admin-Br3t4rfB.js} +1 -1
- package/dist/client/assets/{use-entitlements-Cg9aLuDX.js → use-entitlements-YUjw4iUa.js} +1 -1
- package/dist/client/assets/{use-fast-preview-draft-url-7JbvyepR.js → use-fast-preview-draft-url-CL-K09WK.js} +1 -1
- package/dist/client/assets/{use-file-configs-CMr6wIKD.js → use-file-configs-CYQYBWb-.js} +1 -1
- package/dist/client/assets/{use-in-settings-CC_3sLol.js → use-in-settings-C-U1gBbP.js} +1 -1
- package/dist/client/assets/{use-infinite-scroll-DlNj8Tv9.js → use-infinite-scroll-Cb4X67my.js} +1 -1
- package/dist/client/assets/{use-join-requests-C3i5G8XM.js → use-join-requests-VDy2Kg17.js} +1 -1
- package/dist/client/assets/{use-main-panel-tabs-a6BYy7FD.js → use-main-panel-tabs-DU0ArEIW.js} +1 -1
- package/dist/client/assets/{use-mcp-auth-status-_8ko1UO-.js → use-mcp-auth-status-DUrcGrM7.js} +1 -1
- package/dist/client/assets/{use-mcp-client-DMWht7XE.js → use-mcp-client-BIX1SQBb.js} +1 -1
- package/dist/client/assets/{use-mcp-prompts-c1iKw71K.js → use-mcp-prompts-DKzGmPLS.js} +1 -1
- package/dist/client/assets/{use-mcp-tools-C25Cm-zz.js → use-mcp-tools-CkvnbZRz.js} +1 -1
- package/dist/client/assets/{use-members-KvbK3wqJ.js → use-members-dL8owSbV.js} +1 -1
- package/dist/client/assets/{use-mobile-BKgmbAmN.js → use-mobile-BWQZ9Nov.js} +1 -1
- package/dist/client/assets/{use-navigate-to-agent-DjpZeoZT.js → use-navigate-to-agent-CWYMJtiR.js} +1 -1
- package/dist/client/assets/{use-open-billing-url-Bvzx5Ye5.js → use-open-billing-url-DPt-2psD.js} +1 -1
- package/dist/client/assets/{use-org-auth-client-C9f9NC5y.js → use-org-auth-client-CDLK3ArO.js} +1 -1
- package/dist/client/assets/{use-org-fs-D5gmoaqA.js → use-org-fs-6hP98hgh.js} +1 -1
- package/dist/client/assets/{use-org-repo-syncs-BbRWoTxu.js → use-org-repo-syncs-BmksYt9W.js} +1 -1
- package/dist/client/assets/{use-org-sso-BWvxNBYa.js → use-org-sso-EP1tdwpB.js} +1 -1
- package/dist/client/assets/{use-organization-roles-G2LQSxiQ.js → use-organization-roles-BCgVvV23.js} +1 -1
- package/dist/client/assets/{use-organization-settings-BTBv23HT.js → use-organization-settings-Dsn6UluU.js} +1 -1
- package/dist/client/assets/{use-panel-navigate-3QPnKCQs.js → use-panel-navigate-CtBFI8Fa.js} +1 -1
- package/dist/client/assets/{use-project-native-view-presence-SX0Vw2gs.js → use-project-native-view-presence-Cm6tnbwT.js} +1 -1
- package/dist/client/assets/{use-project-scope-C0eA2U2p.js → use-project-scope-D2OaSlGh.js} +1 -1
- package/dist/client/assets/{use-registry-connections-vu7U4-eW.js → use-registry-connections-LjnGKNsQ.js} +1 -1
- package/dist/client/assets/{use-releases-sP1Q2XT7.js → use-releases-Dd36wWRs.js} +1 -1
- package/dist/client/assets/{use-reports-diagnostic-C34AtNBN.js → use-reports-diagnostic-52lTTKw5.js} +1 -1
- package/dist/client/assets/{use-route-default-main-DTa5_Ucp.js → use-route-default-main-n--kXIcz.js} +1 -1
- package/dist/client/assets/{use-secrets-DFhlbKBp.js → use-secrets-CJFaH6t8.js} +1 -1
- package/dist/client/assets/{use-section-preview-base-KaEtAag1.js → use-section-preview-base-CPNPI5v2.js} +1 -1
- package/dist/client/assets/{use-session-runtime-BrxkMe8P.js → use-session-runtime-UsUKYcrN.js} +1 -1
- package/dist/client/assets/{use-tags-B6YJY2Ng.js → use-tags-D1Cvf62b.js} +1 -1
- package/dist/client/assets/{use-task-board-analytics-CmUoOHHy.js → use-task-board-analytics-BvYcabLA.js} +1 -1
- package/dist/client/assets/{use-task-metadata-B7KPiGxC.js → use-task-metadata--G-29y7J.js} +1 -1
- package/dist/client/assets/{use-thread-outputs-D2brweDC.js → use-thread-outputs-DeggN_DY.js} +1 -1
- package/dist/client/assets/{use-view-mode-DNVuSnub.js → use-view-mode-DAe4FouK.js} +1 -1
- package/dist/client/assets/{use-virtual-mcp-CMKJwsUx.js → use-virtual-mcp-Db9im8eJ.js} +1 -1
- package/dist/client/assets/useInfiniteQuery-h6ttw-AT.js +1 -0
- package/dist/client/assets/{useQueries-NSE55rK5.js → useQueries-C5BMFkFw.js} +1 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-BfJeKBg6.js +1 -0
- package/dist/client/assets/{users-CbH_Gfc3.js → users-ClLWsD2e.js} +1 -1
- package/dist/client/assets/{utils-C2C_XflP.js → utils-PCUp5118.js} +1 -1
- package/dist/client/assets/{variant-calendar-DIaq2FdX.js → variant-calendar-C92tYbri.js} +1 -1
- package/dist/client/assets/{variant-matcher-override-CEitEQTV.js → variant-matcher-override-etDf_4I7.js} +1 -1
- package/dist/client/assets/{view-mode-toggle-Ib695qKF.js → view-mode-toggle-yTiIUXCA.js} +1 -1
- package/dist/client/assets/{virtual-mcp-CZmS87eX.js → virtual-mcp-CBkUrWeB.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-DUCG9jHV.js +0 -1
- package/dist/client/assets/agent-deck-DShfu7ZT.js +0 -1
- package/dist/client/assets/agent-file-CHH9Mgc8.js +0 -1
- package/dist/client/assets/agent-library-file-D2ia6GfT.js +0 -1
- package/dist/client/assets/agent-settings-vc6MlS3t.js +0 -1
- package/dist/client/assets/agent-site-editor-code-BlEfPPCG.js +0 -2
- package/dist/client/assets/agent-view-Q3G27DTH.js +0 -1
- package/dist/client/assets/api-keys-DKjA4BWP.js +0 -1
- package/dist/client/assets/app-editor-Bx4fdBDn.js +0 -1
- package/dist/client/assets/category-editor-CGUeaFVZ.js +0 -1
- package/dist/client/assets/project-reports-DXH1YN47.js +0 -1
- package/dist/client/assets/project-tasks-BkWryEy0.js +0 -1
- package/dist/client/assets/record-editor-B7qLBoAW.js +0 -1
- package/dist/client/assets/registry-7aCsq4-d.js +0 -2
- package/dist/client/assets/reports-bctE5arV.js +0 -1
- package/dist/client/assets/sandbox-git-api-CMdpE2TE.js +0 -1
- package/dist/client/assets/store-registry-DHQS2tT_.js +0 -2
- package/dist/client/assets/tasks-BDSkeIpT.js +0 -1
- package/dist/client/assets/useInfiniteQuery-D3_yfQKO.js +0 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-BXmtRabr.js +0 -1
package/dist/server/cli.js
CHANGED
|
@@ -2076,7 +2076,7 @@ Usage: deco services <up|down|status>`),process.exit(1)}}var C6$=L(()=>{Mu()});f
|
|
|
2076
2076
|
`.execute($);if(Number(W.rows[0]?.cnt)===0){console.warn(`Failed to migrate ${G}/${K}, keeping in old table`);continue}}await rl`
|
|
2077
2077
|
DELETE FROM kysely_migration WHERE name = ${Q}
|
|
2078
2078
|
`.execute($)}}async function XX$($){await cU4($),await mU4($);let Z=new ZX$({db:$,provider:{getMigrations:()=>Promise.resolve(O$1)}}),{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 dU4($){let{keepOpen:Z=!1,database:Q,skipBetterAuth:X=!1}=$??{},Y="skipped";if(!X&&!Q)Y=await kr0();let J=Q??B8(),G=async()=>{if(!Z&&!Q)await ww(J).catch((K)=>{console.warn("Warning: Error closing database:",K)})};try{let K=await XX$(J.db);return await G(),{betterAuth:Y,kysely:K}}catch(K){throw await G(),K}}async function iU4(){let $=B8(),Z=new ZX$({db:$.db,provider:{getMigrations:()=>Promise.resolve(O$1)}}),{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 JX$=L(()=>{$X$();Sr0();IX()});async function HK0($){let Z={...process.env},Q=s70($,Z);console.log(vk1(Q.settings.encryptionKey));let X=Q.settings.betterAuthSecret||(Q.settings.localMode?H9$(Q.settings.dataDir):""),{ensureServices:Y}=await Promise.resolve().then(() => (F30(),H30)),{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(() => (Sr0(),U9$));await W(J.databaseUrl);let{createDatabase:H}=await Promise.resolve().then(() => (IX(),I5$)),{migrateToLatest:F}=await Promise.resolve().then(() => (JX$(),YX$)),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 _6$(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 L$1=L(()=>{Mu();F9$();B$()});var HX$={};H0(HX$,{updateService:()=>gT,subscribeCliState:()=>j$1,setTuiConsoleIntercepted:()=>FK0,setServerUrl:()=>mr,setMigrationsDone:()=>cr,setDevMode:()=>nU4,resetCliStateForTests:()=>pU4,isTuiConsoleIntercepted:()=>UK0,getCliState:()=>w$1,addLogEntry:()=>Aw});function GX$(){return[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}]}function KX$(){return{services:GX$(),migrationsStatus:"pending",serverUrl:null,logs:[]}}function pU4(){AJ=KX$()}function lr(){for(let $ of D$1)$()}function w$1(){return AJ}function j$1($){return D$1.add($),()=>D$1.delete($)}function gT($){AJ={...AJ,services:AJ.services.map((Z)=>Z.name===$.name?$:Z)},lr()}function cr(){AJ={...AJ,migrationsStatus:"done"},lr()}function mr($){AJ={...AJ,serverUrl:$},lr()}function Aw($){let Z=[...AJ.logs,$];AJ={...AJ,logs:Z.length>500?Z.slice(-500):Z},lr()}function nU4(){AJ={...AJ,services:[...GX$(),{name:"API",status:"pending",port:0},{name:"Vite",status:"pending",port:0}]},lr()}function FK0($){WX$=$}function UK0(){return WX$}var AJ,D$1,WX$=!1;var hT=L(()=>{AJ=KX$();D$1=new Set});import{createServer as FX$}from"net";function tU4($){return new Promise((Z)=>{let Q=FX$();Q.once("error",()=>Z(!1)),Q.listen($,"0.0.0.0",()=>{Q.close(()=>Z(!0))})})}async function dr($){if(await tU4($))return $;let Z=await new Promise((Q,X)=>{let Y=FX$();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 E$1=()=>{};var P$1={};H0(P$1,{startDevServer:()=>aU4,pipeToLogStore:()=>z$1});import{join as oU4}from"path";function z$1($){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;Aw({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)Aw({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:J})}})()}async function aU4($){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 dr(Number(Y)+1):await dr(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await HK0({port:String(G),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let D of W)gT({name:D.name,status:"ready",port:D.port});cr();let F=oU4(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)z$1(N.stdout),z$1(N.stderr);mr(J),gT({name:"Vite",status:"ready",port:Number(Y)}),gT({name:"API",status:"ready",port:Number(K.port)});let O=async(D)=>{if(N.kill(D),await N.exited,H.length>0){let{stopServices:w}=await Promise.resolve().then(() => (F30(),H30));await w(K.dataDir)}};return process.on("SIGINT",()=>O("SIGINT")),process.on("SIGTERM",()=>O("SIGTERM")),{port:Number(Y),process:N}}var T$1=L(()=>{L$1();hT();E$1()});var NK0;var A$1=L(()=>{NK0={name:"decocms",version:"4.384.1",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":"^4.0.58","@ai-sdk/google":"^4.0.76","@ai-sdk/openai":"^4.0.71","@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":"^3.1.0","@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":"^4.0.17","@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:"^7.0.107","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 sU4,Text as UX$}from"ink";import{jsx as eU4,jsxs as NX$}from"react/jsx-runtime";function BX$({version:$}){return NX$(sU4,{flexDirection:"column",marginTop:1,children:[v30.map((Z,Q)=>eU4(UX$,{color:x30[Q],children:Z},Q)),NX$(UX$,{dimColor:!0,children:[" v",$]})]})}var OX$=L(()=>{qr()});import{Box as uT,Text as Rw}from"ink";import{Spinner as $N4}from"@inkjs/ui";import{jsx as cG,jsxs as sl}from"react/jsx-runtime";function LX$({status:$}){if($==="pending")return cG($N4,{label:""});return cG(Rw,{color:"green",children:"\u2713"})}function ZN4($){return`${$.name}: ${$.port||"...."}`}function DX$({services:$,migrationsStatus:Z,home:Q,serverUrl:X}){return sl(uT,{flexDirection:"column",paddingBottom:1,children:[cG(BX$,{version:NK0.version}),cG(uT,{marginBottom:1,children:cG(Rw,{dimColor:!0,children:"\u2500".repeat(80)})}),cG(uT,{children:sl(Rw,{dimColor:!0,children:["Home: ",Q]})}),sl(uT,{gap:2,children:[$.map((Y)=>sl(uT,{gap:1,children:[cG(Rw,{children:ZN4(Y)}),cG(LX$,{status:Y.status})]},Y.name)),sl(uT,{gap:1,children:[cG(Rw,{children:"Migrations"}),cG(LX$,{status:Z})]})]}),cG(uT,{children:X?sl(Rw,{children:["Open in browser: ",cG(Rw,{color:"cyan",children:X})]}):cG(Rw,{dimColor:!0,children:"Starting..."})})]})}var wX$=L(()=>{A$1();OX$()});import{Box as QN4,Text as ir}from"ink";import{jsx as R$1,jsxs as M$1}from"react/jsx-runtime";function XN4($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function jX$({logs:$}){return R$1(QN4,{flexDirection:"column",children:$.map((Z,Q)=>{if(Z.rawLine)return R$1(ir,{dimColor:!0,children:Z.rawLine},Q);let X=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return M$1(ir,{children:[M$1(ir,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),R$1(ir,{color:XN4(Z.status),children:Z.status}),M$1(ir,{dimColor:!0,children:[" ",X.padStart(8)]})]},Q)})})}var EX$=()=>{};var q$1={};H0(q$1,{App:()=>GN4});import{Box as YN4}from"ink";import{useSyncExternalStore as JN4}from"react";import{jsx as zX$,jsxs as KN4}from"react/jsx-runtime";function GN4({home:$}){let Z=JN4(j$1,w$1);return KN4(YN4,{flexDirection:"column",children:[zX$(DX$,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),zX$(jX$,{logs:Z.logs})]})}var I$1=L(()=>{wX$();EX$();hT()});var wK="thread-gate",ZO="decopilot-hosted-harness",QO="decopilot-hosted-harness-sandboxed",jK="automations",Mw="background-tools",lT="task-board-github-reads";var PX$="13";function TX$($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:PX$,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var AX$=()=>{};import WN4 from"pg";async function MX$($,Z){let{databaseUrl:Q,lockTimeoutMs:X=HN4}=$,Y=$.log??((W)=>console.log(W)),J=new WN4.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",[RX$.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 v$(FN4)}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)",[RX$.toString()])}catch{}await J.end().catch(()=>{})}}var RX$=8314027461559302n,HN4=600000,FN4=500;var qX$=L(()=>{A8()});function UN4(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function V$1($,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 IX$(){let $=UN4();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:V$1($,"--cpu-prof-dir")??process.cwd(),name:V$1($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(V$1($,"--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 VX$(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let Q=xT();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(()=>{}),BK0=setInterval(()=>void Z().catch(()=>{}),$),BK0.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(BK0)clearInterval(BK0)}}var BK0;var kX$=()=>{};import*as NN4 from"bun:jsc";function SX$(){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{BN4()}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=ON4()?.traces??[]}catch{}if(G>$&&K.length>0){let W=new Map;for(let F of K){let U=F.frames.find((O)=>O.sourceURL&&!/Unknown Executable/.test(O.category??""))??F.frames[0];if(!U)continue;let N=(U.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),B=`${U.name??"?"} @ ${N}:${U.line??"?"}`;W.set(B,(W.get(B)??0)+1)}let H=[...W.entries()].sort((F,U)=>U[1]-F[1]).slice(0,8).map(([F,U])=>({frame:F,count:U}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(G),samplesInWindow:K.length,top:H}))}Q=setTimeout(Y,Z),Q.unref?.()};return Q=setTimeout(Y,Z),Q.unref?.(),()=>{if(Q)clearTimeout(Q)}}var BN4,ON4;var CX$=L(()=>{({startSamplingProfiler:BN4,samplingProfilerStackTraces:ON4}=NN4)});function _X$(){IX$();let $=[VX$(),E5$(),SX$()];return()=>{for(let Z of $)Z()}}var vX$=L(()=>{Pr0();kX$();CX$()});var cT=g((xX$)=>{Object.defineProperty(xX$,"__esModule",{value:!0});xX$.RepublishHeaders=xX$.DirectMsgHeaders=xX$.JsHeaders=xX$.AdvisoryKind=void 0;xX$.isOrderedPushConsumerOptions=LN4;xX$.isPullConsumer=DN4;xX$.isPushConsumer=wN4;xX$.isBoundPushConsumerOptions=jN4;function LN4($){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 DN4($){return $.isPullConsumer()}function wN4($){return $.isPushConsumer()}function jN4($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}xX$.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"};xX$.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"};xX$.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};xX$.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var mG=g((bX$)=>{Object.defineProperty(bX$,"__esModule",{value:!0});bX$.TD=bX$.TE=bX$.Empty=void 0;bX$.encode=IN4;bX$.decode=VN4;bX$.Empty=new Uint8Array(0);bX$.TE=new TextEncoder;bX$.TD=new TextDecoder;function qN4(...$){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 IN4(...$){let Z=[];for(let Q=0;Q<$.length;Q++)Z.push(bX$.TE.encode($[Q]));if(Z.length===0)return bX$.Empty;if(Z.length===1)return Z[0];return qN4(...Z)}function VN4($){if(!$||$.length===0)return"";return bX$.TD.decode($)}});var dG=g((hX$)=>{Object.defineProperty(hX$,"__esModule",{value:!0});hX$.errors=hX$.PermissionViolationError=hX$.NoRespondersError=hX$.TimeoutError=hX$.RequestError=hX$.ProtocolError=hX$.ConnectionError=hX$.DrainingConnectionError=hX$.ClosedConnectionError=hX$.AuthorizationError=hX$.UserAuthenticationExpiredError=hX$.InvalidOperationError=hX$.InvalidArgumentError=hX$.InvalidSubjectError=void 0;class S$1 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}hX$.InvalidSubjectError=S$1;class OK0 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 OK0(`${$} ${Z}`,Q)}}hX$.InvalidArgumentError=OK0;class C$1 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}hX$.InvalidOperationError=C$1;class LK0 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new LK0($);return null}}hX$.UserAuthenticationExpiredError=LK0;class DK0 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 DK0($);return null}}hX$.AuthorizationError=DK0;class _$1 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}hX$.ClosedConnectionError=_$1;class v$1 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}hX$.DrainingConnectionError=v$1;class x$1 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}hX$.ConnectionError=x$1;class f$1 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}hX$.ProtocolError=f$1;class b$1 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof wK0}}hX$.RequestError=b$1;class y$1 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}hX$.TimeoutError=y$1;class wK0 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}hX$.NoRespondersError=wK0;class jK0 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 jK0($,Q,X,Y)}}hX$.PermissionViolationError=jK0;hX$.errors={AuthorizationError:DK0,ClosedConnectionError:_$1,ConnectionError:x$1,DrainingConnectionError:v$1,InvalidArgumentError:OK0,InvalidOperationError:C$1,InvalidSubjectError:S$1,NoRespondersError:wK0,PermissionViolationError:jK0,ProtocolError:f$1,RequestError:b$1,TimeoutError:y$1,UserAuthenticationExpiredError:LK0}});var JH=g((dX$)=>{Object.defineProperty(dX$,"__esModule",{value:!0});dX$.SimpleMutex=dX$.Perf=void 0;dX$.extend=iN4;dX$.render=pN4;dX$.timeout=nN4;dX$.delay=tN4;dX$.deadline=oN4;dX$.deferred=h$1;dX$.debugDeferred=aN4;dX$.shuffle=rN4;dX$.collect=sN4;dX$.jitter=mX$;dX$.backoff=eN4;dX$.nanos=$B4;dX$.millis=ZB4;dX$.randomToken=YB4;var dN4=mG(),g$1=dG();function iN4($,...Z){for(let Q=0;Q<Z.length;Q++){let X=Z[Q];Object.keys(X).forEach(function(Y){$[Y]=X[Y]})}return $}function pN4($){return dN4.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function nN4($,Z=!0){let Q=Z?new g$1.TimeoutError:null,X,Y,J=new Promise((G,K)=>{X={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(Q===null)K(new g$1.TimeoutError);else K(Q)},$)});return Object.assign(J,X)}function tN4($=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 oN4($,Z=1000){let Q=h$1(),X=setTimeout(()=>{Q.reject(new g$1.TimeoutError)},Z);try{return await Promise.race([$,Q])}finally{clearTimeout(X)}}function h$1(){let $={},Z=new Promise((Q,X)=>{$={resolve:Q,reject:X}});return Object.assign(Z,$)}function aN4(){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 rN4($){for(let Z=$.length-1;Z>0;Z--){let Q=Math.floor(Math.random()*(Z+1));[$[Z],$[Q]]=[$[Q],$[Z]]}return $}async function sN4($){let Z=[];for await(let Q of $)Z.push(Q);return Z}class lX${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})}),$}}dX$.Perf=lX$;class cX${max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=h$1();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}dX$.SimpleMutex=cX$;function mX$($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function eN4($=[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 mX$(Q>Z?$[Z]:$[Q])}}}function $B4($){return $*1e6}function ZB4($){return Math.floor($/1e6)}var QB4="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",XO=new Uint8Array(62);for(let $=0;$<62;$++)XO[$]=QB4.charCodeAt($);var XB4=218340105584896;function YB4(){let $=Math.floor(Math.random()*XB4),Z=$%62,Q=XO[Z];$=($-Z)/62,Z=$%62;let X=XO[Z];$=($-Z)/62,Z=$%62;let Y=XO[Z];$=($-Z)/62,Z=$%62;let J=XO[Z];$=($-Z)/62,Z=$%62;let G=XO[Z];$=($-Z)/62,Z=$%62;let K=XO[Z];$=($-Z)/62,Z=$%62;let W=XO[Z];$=($-Z)/62;let H=XO[$];return String.fromCharCode(Q,X,Y,J,G,K,W,H)}});var sX$=g((aX$)=>{Object.defineProperty(aX$,"__esModule",{value:!0});aX$.nuid=aX$.NuidImpl=void 0;var zB4="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",qw=62,zK0=12,tX$=10,pX$=33,PB4=333,nX$=zK0+tX$,l$1=new Uint8Array(qw);for(let $=0;$<qw;$++)l$1[$]=zB4.charCodeAt($);var EK0=4294967296,oX$=BigInt(qw)**BigInt(tX$),pr=Number(oX$/(1n<<32n)),u$1=Number(oX$%(1n<<32n));function TB4($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function AB4($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else TB4($)}class c$1{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(nX$),this.cbuf=new Uint8Array(zK0),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(pr+1)),this.seqLo=Math.floor(Math.random()*EK0);while($++<8&&this.seqHi===pr&&this.seqLo>=u$1);if(this.seqHi===pr&&this.seqLo>=u$1)this.seqLo=0;this.inc=Math.random()*(PB4-pX$)+pX$|0}setPre(){AB4(this.cbuf);for(let $=0;$<zK0;$++)this.buf[$]=l$1[this.cbuf[$]%qw]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let Q=nX$-1;Q>=zK0;Q--){let X=Math.floor($/qw),J=($-X*qw)*EK0+Z,G=Math.floor(J/qw),K=J-G*qw;this.buf[Q]=l$1[K],$=X,Z=G}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=EK0)this.seqLo-=EK0,this.seqHi+=1;if(this.seqHi>pr||this.seqHi===pr&&this.seqLo>=u$1)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()}}aX$.NuidImpl=c$1;aX$.nuid=new c$1});var QY$=g(($Y$)=>{Object.defineProperty($Y$,"__esModule",{value:!0});$Y$.nuid=$Y$.Nuid=void 0;var eX$=sX$();$Y$.Nuid=eX$.NuidImpl;$Y$.nuid=eX$.nuid});var TK0=g((PK0)=>{Object.defineProperty(PK0,"__esModule",{value:!0});PK0.nuid=PK0.Nuid=void 0;var XY$=QY$();Object.defineProperty(PK0,"Nuid",{enumerable:!0,get:function(){return XY$.Nuid}});Object.defineProperty(PK0,"nuid",{enumerable:!0,get:function(){return XY$.nuid}})});var Iw=g((YY$)=>{Object.defineProperty(YY$,"__esModule",{value:!0});YY$.DEFAULT_HOST=YY$.DEFAULT_PORT=YY$.Match=void 0;YY$.syncIterator=kB4;YY$.createInbox=SB4;var IB4=TK0(),VB4=dG();YY$.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function kB4($){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 SB4($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw VB4.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${IB4.nuid.next()}`}YY$.DEFAULT_PORT=4222;YY$.DEFAULT_HOST="127.0.0.1"});var nr=g((WY$)=>{Object.defineProperty(WY$,"__esModule",{value:!0});WY$.DataBuffer=void 0;var GY$=mG();class KY${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 GY$.TE.encode($)}static toAscii($){return GY$.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}}WY$.DataBuffer=KY$});var mT=g((UY$)=>{Object.defineProperty(UY$,"__esModule",{value:!0});UY$.LF=UY$.CR=UY$.CRLF=UY$.CR_LF_LEN=UY$.CR_LF=void 0;UY$.setTransportFactory=gB4;UY$.defaultPort=hB4;UY$.getUrlParseFn=uB4;UY$.newTransport=lB4;UY$.getResolveFn=cB4;UY$.protoLen=FY$;UY$.extractProtocolMessage=mB4;var fB4=mG(),bB4=Iw(),yB4=nr(),iG;function gB4($){iG=$}function hB4(){return iG!==void 0&&iG.defaultPort!==void 0?iG.defaultPort:bB4.DEFAULT_PORT}function uB4(){return iG!==void 0&&iG.urlParseFn?iG.urlParseFn:void 0}function lB4(){if(!iG||typeof iG.factory!=="function")throw Error("transport fn is not set");return iG.factory()}function cB4(){return iG!==void 0&&iG.dnsResolveFn?iG.dnsResolveFn:void 0}UY$.CR_LF=`\r
|
|
2079
|
+
`);X=J.pop()??"";for(let G of J){let K=Bun.stripANSI(G).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;Aw({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)Aw({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:J})}})()}async function aU4($){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 dr(Number(Y)+1):await dr(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await HK0({port:String(G),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let D of W)gT({name:D.name,status:"ready",port:D.port});cr();let F=oU4(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)z$1(N.stdout),z$1(N.stderr);mr(J),gT({name:"Vite",status:"ready",port:Number(Y)}),gT({name:"API",status:"ready",port:Number(K.port)});let O=async(D)=>{if(N.kill(D),await N.exited,H.length>0){let{stopServices:w}=await Promise.resolve().then(() => (F30(),H30));await w(K.dataDir)}};return process.on("SIGINT",()=>O("SIGINT")),process.on("SIGTERM",()=>O("SIGTERM")),{port:Number(Y),process:N}}var T$1=L(()=>{L$1();hT();E$1()});var NK0;var A$1=L(()=>{NK0={name:"decocms",version:"4.384.2",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^4.0.58","@ai-sdk/google":"^4.0.76","@ai-sdk/openai":"^4.0.71","@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":"^3.1.0","@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":"^4.0.17","@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:"^7.0.107","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 sU4,Text as UX$}from"ink";import{jsx as eU4,jsxs as NX$}from"react/jsx-runtime";function BX$({version:$}){return NX$(sU4,{flexDirection:"column",marginTop:1,children:[v30.map((Z,Q)=>eU4(UX$,{color:x30[Q],children:Z},Q)),NX$(UX$,{dimColor:!0,children:[" v",$]})]})}var OX$=L(()=>{qr()});import{Box as uT,Text as Rw}from"ink";import{Spinner as $N4}from"@inkjs/ui";import{jsx as cG,jsxs as sl}from"react/jsx-runtime";function LX$({status:$}){if($==="pending")return cG($N4,{label:""});return cG(Rw,{color:"green",children:"\u2713"})}function ZN4($){return`${$.name}: ${$.port||"...."}`}function DX$({services:$,migrationsStatus:Z,home:Q,serverUrl:X}){return sl(uT,{flexDirection:"column",paddingBottom:1,children:[cG(BX$,{version:NK0.version}),cG(uT,{marginBottom:1,children:cG(Rw,{dimColor:!0,children:"\u2500".repeat(80)})}),cG(uT,{children:sl(Rw,{dimColor:!0,children:["Home: ",Q]})}),sl(uT,{gap:2,children:[$.map((Y)=>sl(uT,{gap:1,children:[cG(Rw,{children:ZN4(Y)}),cG(LX$,{status:Y.status})]},Y.name)),sl(uT,{gap:1,children:[cG(Rw,{children:"Migrations"}),cG(LX$,{status:Z})]})]}),cG(uT,{children:X?sl(Rw,{children:["Open in browser: ",cG(Rw,{color:"cyan",children:X})]}):cG(Rw,{dimColor:!0,children:"Starting..."})})]})}var wX$=L(()=>{A$1();OX$()});import{Box as QN4,Text as ir}from"ink";import{jsx as R$1,jsxs as M$1}from"react/jsx-runtime";function XN4($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function jX$({logs:$}){return R$1(QN4,{flexDirection:"column",children:$.map((Z,Q)=>{if(Z.rawLine)return R$1(ir,{dimColor:!0,children:Z.rawLine},Q);let X=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return M$1(ir,{children:[M$1(ir,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),R$1(ir,{color:XN4(Z.status),children:Z.status}),M$1(ir,{dimColor:!0,children:[" ",X.padStart(8)]})]},Q)})})}var EX$=()=>{};var q$1={};H0(q$1,{App:()=>GN4});import{Box as YN4}from"ink";import{useSyncExternalStore as JN4}from"react";import{jsx as zX$,jsxs as KN4}from"react/jsx-runtime";function GN4({home:$}){let Z=JN4(j$1,w$1);return KN4(YN4,{flexDirection:"column",children:[zX$(DX$,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),zX$(jX$,{logs:Z.logs})]})}var I$1=L(()=>{wX$();EX$();hT()});var wK="thread-gate",ZO="decopilot-hosted-harness",QO="decopilot-hosted-harness-sandboxed",jK="automations",Mw="background-tools",lT="task-board-github-reads";var PX$="13";function TX$($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:PX$,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var AX$=()=>{};import WN4 from"pg";async function MX$($,Z){let{databaseUrl:Q,lockTimeoutMs:X=HN4}=$,Y=$.log??((W)=>console.log(W)),J=new WN4.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",[RX$.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 v$(FN4)}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)",[RX$.toString()])}catch{}await J.end().catch(()=>{})}}var RX$=8314027461559302n,HN4=600000,FN4=500;var qX$=L(()=>{A8()});function UN4(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function V$1($,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 IX$(){let $=UN4();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:V$1($,"--cpu-prof-dir")??process.cwd(),name:V$1($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(V$1($,"--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 VX$(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let Q=xT();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(()=>{}),BK0=setInterval(()=>void Z().catch(()=>{}),$),BK0.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(BK0)clearInterval(BK0)}}var BK0;var kX$=()=>{};import*as NN4 from"bun:jsc";function SX$(){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{BN4()}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=ON4()?.traces??[]}catch{}if(G>$&&K.length>0){let W=new Map;for(let F of K){let U=F.frames.find((O)=>O.sourceURL&&!/Unknown Executable/.test(O.category??""))??F.frames[0];if(!U)continue;let N=(U.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),B=`${U.name??"?"} @ ${N}:${U.line??"?"}`;W.set(B,(W.get(B)??0)+1)}let H=[...W.entries()].sort((F,U)=>U[1]-F[1]).slice(0,8).map(([F,U])=>({frame:F,count:U}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(G),samplesInWindow:K.length,top:H}))}Q=setTimeout(Y,Z),Q.unref?.()};return Q=setTimeout(Y,Z),Q.unref?.(),()=>{if(Q)clearTimeout(Q)}}var BN4,ON4;var CX$=L(()=>{({startSamplingProfiler:BN4,samplingProfilerStackTraces:ON4}=NN4)});function _X$(){IX$();let $=[VX$(),E5$(),SX$()];return()=>{for(let Z of $)Z()}}var vX$=L(()=>{Pr0();kX$();CX$()});var cT=g((xX$)=>{Object.defineProperty(xX$,"__esModule",{value:!0});xX$.RepublishHeaders=xX$.DirectMsgHeaders=xX$.JsHeaders=xX$.AdvisoryKind=void 0;xX$.isOrderedPushConsumerOptions=LN4;xX$.isPullConsumer=DN4;xX$.isPushConsumer=wN4;xX$.isBoundPushConsumerOptions=jN4;function LN4($){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 DN4($){return $.isPullConsumer()}function wN4($){return $.isPushConsumer()}function jN4($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}xX$.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"};xX$.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"};xX$.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};xX$.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var mG=g((bX$)=>{Object.defineProperty(bX$,"__esModule",{value:!0});bX$.TD=bX$.TE=bX$.Empty=void 0;bX$.encode=IN4;bX$.decode=VN4;bX$.Empty=new Uint8Array(0);bX$.TE=new TextEncoder;bX$.TD=new TextDecoder;function qN4(...$){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 IN4(...$){let Z=[];for(let Q=0;Q<$.length;Q++)Z.push(bX$.TE.encode($[Q]));if(Z.length===0)return bX$.Empty;if(Z.length===1)return Z[0];return qN4(...Z)}function VN4($){if(!$||$.length===0)return"";return bX$.TD.decode($)}});var dG=g((hX$)=>{Object.defineProperty(hX$,"__esModule",{value:!0});hX$.errors=hX$.PermissionViolationError=hX$.NoRespondersError=hX$.TimeoutError=hX$.RequestError=hX$.ProtocolError=hX$.ConnectionError=hX$.DrainingConnectionError=hX$.ClosedConnectionError=hX$.AuthorizationError=hX$.UserAuthenticationExpiredError=hX$.InvalidOperationError=hX$.InvalidArgumentError=hX$.InvalidSubjectError=void 0;class S$1 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}hX$.InvalidSubjectError=S$1;class OK0 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 OK0(`${$} ${Z}`,Q)}}hX$.InvalidArgumentError=OK0;class C$1 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}hX$.InvalidOperationError=C$1;class LK0 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new LK0($);return null}}hX$.UserAuthenticationExpiredError=LK0;class DK0 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 DK0($);return null}}hX$.AuthorizationError=DK0;class _$1 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}hX$.ClosedConnectionError=_$1;class v$1 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}hX$.DrainingConnectionError=v$1;class x$1 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}hX$.ConnectionError=x$1;class f$1 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}hX$.ProtocolError=f$1;class b$1 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof wK0}}hX$.RequestError=b$1;class y$1 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}hX$.TimeoutError=y$1;class wK0 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}hX$.NoRespondersError=wK0;class jK0 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 jK0($,Q,X,Y)}}hX$.PermissionViolationError=jK0;hX$.errors={AuthorizationError:DK0,ClosedConnectionError:_$1,ConnectionError:x$1,DrainingConnectionError:v$1,InvalidArgumentError:OK0,InvalidOperationError:C$1,InvalidSubjectError:S$1,NoRespondersError:wK0,PermissionViolationError:jK0,ProtocolError:f$1,RequestError:b$1,TimeoutError:y$1,UserAuthenticationExpiredError:LK0}});var JH=g((dX$)=>{Object.defineProperty(dX$,"__esModule",{value:!0});dX$.SimpleMutex=dX$.Perf=void 0;dX$.extend=iN4;dX$.render=pN4;dX$.timeout=nN4;dX$.delay=tN4;dX$.deadline=oN4;dX$.deferred=h$1;dX$.debugDeferred=aN4;dX$.shuffle=rN4;dX$.collect=sN4;dX$.jitter=mX$;dX$.backoff=eN4;dX$.nanos=$B4;dX$.millis=ZB4;dX$.randomToken=YB4;var dN4=mG(),g$1=dG();function iN4($,...Z){for(let Q=0;Q<Z.length;Q++){let X=Z[Q];Object.keys(X).forEach(function(Y){$[Y]=X[Y]})}return $}function pN4($){return dN4.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function nN4($,Z=!0){let Q=Z?new g$1.TimeoutError:null,X,Y,J=new Promise((G,K)=>{X={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(Q===null)K(new g$1.TimeoutError);else K(Q)},$)});return Object.assign(J,X)}function tN4($=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 oN4($,Z=1000){let Q=h$1(),X=setTimeout(()=>{Q.reject(new g$1.TimeoutError)},Z);try{return await Promise.race([$,Q])}finally{clearTimeout(X)}}function h$1(){let $={},Z=new Promise((Q,X)=>{$={resolve:Q,reject:X}});return Object.assign(Z,$)}function aN4(){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 rN4($){for(let Z=$.length-1;Z>0;Z--){let Q=Math.floor(Math.random()*(Z+1));[$[Z],$[Q]]=[$[Q],$[Z]]}return $}async function sN4($){let Z=[];for await(let Q of $)Z.push(Q);return Z}class lX${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})}),$}}dX$.Perf=lX$;class cX${max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=h$1();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}dX$.SimpleMutex=cX$;function mX$($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function eN4($=[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 mX$(Q>Z?$[Z]:$[Q])}}}function $B4($){return $*1e6}function ZB4($){return Math.floor($/1e6)}var QB4="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",XO=new Uint8Array(62);for(let $=0;$<62;$++)XO[$]=QB4.charCodeAt($);var XB4=218340105584896;function YB4(){let $=Math.floor(Math.random()*XB4),Z=$%62,Q=XO[Z];$=($-Z)/62,Z=$%62;let X=XO[Z];$=($-Z)/62,Z=$%62;let Y=XO[Z];$=($-Z)/62,Z=$%62;let J=XO[Z];$=($-Z)/62,Z=$%62;let G=XO[Z];$=($-Z)/62,Z=$%62;let K=XO[Z];$=($-Z)/62,Z=$%62;let W=XO[Z];$=($-Z)/62;let H=XO[$];return String.fromCharCode(Q,X,Y,J,G,K,W,H)}});var sX$=g((aX$)=>{Object.defineProperty(aX$,"__esModule",{value:!0});aX$.nuid=aX$.NuidImpl=void 0;var zB4="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",qw=62,zK0=12,tX$=10,pX$=33,PB4=333,nX$=zK0+tX$,l$1=new Uint8Array(qw);for(let $=0;$<qw;$++)l$1[$]=zB4.charCodeAt($);var EK0=4294967296,oX$=BigInt(qw)**BigInt(tX$),pr=Number(oX$/(1n<<32n)),u$1=Number(oX$%(1n<<32n));function TB4($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function AB4($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else TB4($)}class c$1{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(nX$),this.cbuf=new Uint8Array(zK0),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(pr+1)),this.seqLo=Math.floor(Math.random()*EK0);while($++<8&&this.seqHi===pr&&this.seqLo>=u$1);if(this.seqHi===pr&&this.seqLo>=u$1)this.seqLo=0;this.inc=Math.random()*(PB4-pX$)+pX$|0}setPre(){AB4(this.cbuf);for(let $=0;$<zK0;$++)this.buf[$]=l$1[this.cbuf[$]%qw]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let Q=nX$-1;Q>=zK0;Q--){let X=Math.floor($/qw),J=($-X*qw)*EK0+Z,G=Math.floor(J/qw),K=J-G*qw;this.buf[Q]=l$1[K],$=X,Z=G}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=EK0)this.seqLo-=EK0,this.seqHi+=1;if(this.seqHi>pr||this.seqHi===pr&&this.seqLo>=u$1)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()}}aX$.NuidImpl=c$1;aX$.nuid=new c$1});var QY$=g(($Y$)=>{Object.defineProperty($Y$,"__esModule",{value:!0});$Y$.nuid=$Y$.Nuid=void 0;var eX$=sX$();$Y$.Nuid=eX$.NuidImpl;$Y$.nuid=eX$.nuid});var TK0=g((PK0)=>{Object.defineProperty(PK0,"__esModule",{value:!0});PK0.nuid=PK0.Nuid=void 0;var XY$=QY$();Object.defineProperty(PK0,"Nuid",{enumerable:!0,get:function(){return XY$.Nuid}});Object.defineProperty(PK0,"nuid",{enumerable:!0,get:function(){return XY$.nuid}})});var Iw=g((YY$)=>{Object.defineProperty(YY$,"__esModule",{value:!0});YY$.DEFAULT_HOST=YY$.DEFAULT_PORT=YY$.Match=void 0;YY$.syncIterator=kB4;YY$.createInbox=SB4;var IB4=TK0(),VB4=dG();YY$.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function kB4($){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 SB4($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw VB4.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${IB4.nuid.next()}`}YY$.DEFAULT_PORT=4222;YY$.DEFAULT_HOST="127.0.0.1"});var nr=g((WY$)=>{Object.defineProperty(WY$,"__esModule",{value:!0});WY$.DataBuffer=void 0;var GY$=mG();class KY${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 GY$.TE.encode($)}static toAscii($){return GY$.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}}WY$.DataBuffer=KY$});var mT=g((UY$)=>{Object.defineProperty(UY$,"__esModule",{value:!0});UY$.LF=UY$.CR=UY$.CRLF=UY$.CR_LF_LEN=UY$.CR_LF=void 0;UY$.setTransportFactory=gB4;UY$.defaultPort=hB4;UY$.getUrlParseFn=uB4;UY$.newTransport=lB4;UY$.getResolveFn=cB4;UY$.protoLen=FY$;UY$.extractProtocolMessage=mB4;var fB4=mG(),bB4=Iw(),yB4=nr(),iG;function gB4($){iG=$}function hB4(){return iG!==void 0&&iG.defaultPort!==void 0?iG.defaultPort:bB4.DEFAULT_PORT}function uB4(){return iG!==void 0&&iG.urlParseFn?iG.urlParseFn:void 0}function lB4(){if(!iG||typeof iG.factory!=="function")throw Error("transport fn is not set");return iG.factory()}function cB4(){return iG!==void 0&&iG.dnsResolveFn?iG.dnsResolveFn:void 0}UY$.CR_LF=`\r
|
|
2080
2080
|
`;UY$.CR_LF_LEN=UY$.CR_LF.length;UY$.CRLF=yB4.DataBuffer.fromAscii(UY$.CR_LF);UY$.CR=new Uint8Array(UY$.CRLF)[0];UY$.LF=new Uint8Array(UY$.CRLF)[1];function FY$($){for(let Z=0;Z<$.length;Z++){let Q=Z+1;if($.byteLength>Q&&$[Z]===UY$.CR&&$[Q]===UY$.LF)return Q+1}return 0}function mB4($){let Z=FY$($);if(Z>0){let X=new Uint8Array($).slice(0,Z);return fB4.TD.decode(X)}return""}});var n$1=g((EY$)=>{Object.defineProperty(EY$,"__esModule",{value:!0});EY$.ipV4=DY$;EY$.isIP=$O4;EY$.parseIP=wY$;var tr=4,dT=16,AK0=48,LY$=57,BY$=65,sB4=70,OY$=97,eB4=102,p$1=16777215;function DY$($,Z,Q,X){let Y=new Uint8Array(dT);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 $O4($){return wY$($)!==void 0}function wY$($){for(let Z=0;Z<$.length;Z++)switch($[Z]){case".":return jY$($);case":":return ZO4($)}return}function jY$($){let Z=new Uint8Array(tr);for(let Q=0;Q<tr;Q++){if($.length===0)return;if(Q>0){if($[0]!==".")return;$=$.substring(1)}let{n:X,c:Y,ok:J}=QO4($);if(!J||X>255)return;$=$.substring(Y),Z[Q]=X}return DY$(Z[0],Z[1],Z[2],Z[3])}function ZO4($){let Z=new Uint8Array(dT),Q=-1;if($.length>=2&&$[0]===":"&&$[1]===":"){if(Q=0,$=$.substring(2),$.length===0)return Z}let X=0;while(X<dT){let{n:Y,c:J,ok:G}=XO4($);if(!G||Y>65535)return;if(J<$.length&&$[J]==="."){if(Q<0&&X!=dT-tr)return;if(X+tr>dT)return;let K=jY$($);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+=tr;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<dT){if(Q<0)return;let Y=dT-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 QO4($){let Z=0,Q=0;for(Z=0;Z<$.length&&AK0<=$.charCodeAt(Z)&&$.charCodeAt(Z)<=LY$;Z++)if(Q=Q*10+($.charCodeAt(Z)-AK0),Q>=p$1)return{n:p$1,c:Z,ok:!1};if(Z===0)return{n:0,c:0,ok:!1};return{n:Q,c:Z,ok:!0}}function XO4($){let Z=0,Q=0;for(Q=0;Q<$.length;Q++){if(AK0<=$.charCodeAt(Q)&&$.charCodeAt(Q)<=LY$)Z*=16,Z+=$.charCodeAt(Q)-AK0;else if(OY$<=$.charCodeAt(Q)&&$.charCodeAt(Q)<=eB4)Z*=16,Z+=$.charCodeAt(Q)-OY$+10;else if(BY$<=$.charCodeAt(Q)&&$.charCodeAt(Q)<=sB4)Z*=16,Z+=$.charCodeAt(Q)-BY$+10;else break;if(Z>=p$1)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 e$1=g((PY$)=>{Object.defineProperty(PY$,"__esModule",{value:!0});PY$.Servers=PY$.ServerImpl=void 0;PY$.isIPV4OrHostname=zY$;PY$.hostPort=s$1;var t$1=mT(),o$1=JH(),a$1=n$1(),KO4=Iw(),WO4=dG();function zY$($){if($.indexOf("[")!==-1||$.indexOf("::")!==-1)return!1;if($.indexOf(".")!==-1)return!0;if($.split(":").length<=2)return!0;return!1}function r$1($){return!zY$($)}function HO4($){let Q=$.toUpperCase().indexOf("::FFFF:");if(Q!==-1&&$.indexOf(".")!==-1){let X=$.substring(Q+7);return X=X.replace("[",""),X.replace("]","")}return $}function s$1($){if($=$.trim(),$.match(/^(.*:\/\/)(.*)/m))$=$.replace(/^(.*:\/\/)(.*)/gm,"$2");if($=HO4($),r$1($)&&$.indexOf("[")===-1)$=`[${$}]`;let Z=r$1($)?$.match(/(]:)(\d+)/):$.match(/(:)(\d+)/),Q=Z&&Z.length===3&&Z[1]&&Z[2]?parseInt(Z[2]):KO4.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 el{src;listen;hostname;port;didConnect;reconnects;lastConnect;gossiped;tlsName;resolves;constructor($,Z=!1){this.src=$,this.tlsName="";let Q=s$1($);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,a$1.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}://${r$1(X)?"["+X+"]":X}`);J.port=`${this.port}`;let G=new el(J.host,!1);G.tlsName=this.hostname,Z.push(G)}}if($.randomize)(0,o$1.shuffle)(Z);return this.resolves=Z,Z}}PY$.ServerImpl=el;class RK0{firstSelect;servers;currentServer;tlsName;randomize;constructor($={}){this.firstSelect=!0,this.servers=[],this.tlsName="",this.randomize=$.randomize||!1}setServers($){if(!Array.isArray($)||$.length===0)throw WO4.InvalidArgumentError.format("servers","cannot be empty");let Z=(0,t$1.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}=s$1(Y),G=Q.get(J);if(G)G.gossiped=!1,X.push(G);else X.push(new el(Y))}if(this.randomize)(0,o$1.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,a$1.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,t$1.getUrlParseFn)();$=Q?Q($):$;let X=new el($,Z);if((0,a$1.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 RK0.freezeAll(this.servers)}snapshotForHandler(){let $=this.currentServer;if(!$)return this.snapshot();let Z=this.servers.indexOf($);if(Z<=0)return this.snapshot();return RK0.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,t$1.getUrlParseFn)(),J=new Map;if($.connect_urls&&$.connect_urls.length>0)$.connect_urls.forEach((K)=>{K=Y?Y(K,Z):K;let W=new el(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,o$1.shuffle)(W),this.servers=K?[K,...W]:W}return{added:Q,deleted:X}}}PY$.Servers=RK0});var MK0=g((MY$)=>{Object.defineProperty(MY$,"__esModule",{value:!0});MY$.QueuedIteratorImpl=void 0;var $81=JH(),AY$=dG();class RY${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,$81.deferred)(),this.yields=[],this.iterClosed=(0,$81.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 AY$.InvalidOperationError("iterator cannot be used when a callback is registered");if(this.yielding)throw new AY$.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,$81.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}}MY$.QueuedIteratorImpl=RY$});var Z81=g((kY$)=>{Object.defineProperty(kY$,"__esModule",{value:!0});kY$.MuxSubscription=void 0;var BO4=Iw(),IY$=dG();class VY${baseInbox;reqs;constructor(){this.reqs=new Map}size(){return this.reqs.size}init($){return this.baseInbox=`${(0,BO4.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 IY$.NoRespondersError(X.requestSubject):null;X.resolver($,Z)}}}}close(){let $=new IY$.RequestError("connection closed");this.reqs.forEach((Z)=>{Z.resolver($,{})})}}kY$.MuxSubscription=VY$});var Q81=g((_Y$)=>{Object.defineProperty(_Y$,"__esModule",{value:!0});_Y$.Heartbeat=void 0;var OO4=JH();class CY${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,OO4.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})}}_Y$.Heartbeat=CY$});var J81=g((yY$)=>{Object.defineProperty(yY$,"__esModule",{value:!0});yY$.DenoBuffer=yY$.MAX_SIZE=yY$.AssertionError=void 0;yY$.assert=fY$;yY$.concat=bY$;yY$.append=DO4;yY$.readAll=wO4;yY$.writeAll=jO4;var LO4=mG();class X81 extends Error{constructor($){super($);this.name="AssertionError"}}yY$.AssertionError=X81;function fY$($,Z="Assertion failed."){if(!$)throw new X81(Z)}var xY$=32768;yY$.MAX_SIZE=4294967294;function qK0($,Z,Q=0){let X=Z.byteLength-Q;if($.byteLength>X)$=$.subarray(0,X);return Z.set($,Q),$.byteLength}function bY$($,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 DO4($,Z){return bY$($,Uint8Array.of(Z))}class Y81{_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($){fY$($<=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=qK0(this._buf.subarray(this._off),$);return this._off+=Z,Z}writeByte($){return this.write(Uint8Array.of($))}writeString($){return this.write(LO4.TE.encode($))}write($){let Z=this._grow($.byteLength);return qK0($,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)qK0(this._buf.subarray(this._off),this._buf);else if(X+$>yY$.MAX_SIZE)throw Error("The buffer cannot be grown beyond the maximum size.");else{let Y=new Uint8Array(Math.min(2*X+$,yY$.MAX_SIZE));qK0(this._buf.subarray(this._off),Y),this._buf=Y}return this._off=0,this._reslice(Math.min(Z+$,yY$.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(xY$);while(!0){let X=this.capacity-this.length<xY$,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}}}yY$.DenoBuffer=Y81;function wO4($){let Z=new Y81;return Z.readFrom($),Z.bytes()}function jO4($,Z){let Q=0;while(Q<Z.length)Q+=$.write(Z.subarray(Q))}});var W81=g((cY$)=>{Object.defineProperty(cY$,"__esModule",{value:!0});cY$.cc=cY$.State=cY$.Parser=cY$.Kind=void 0;cY$.describe=MO4;var G81=J81(),K81=mG();cY$.Kind={OK:0,ERR:1,MSG:2,INFO:3,PING:4,PONG:5};function MO4($){let Z,Q="";switch($.kind){case cY$.Kind.MSG:Z="MSG";break;case cY$.Kind.OK:Z="OK";break;case cY$.Kind.ERR:Z="ERR",Q=K81.TD.decode($.data);break;case cY$.Kind.PING:Z="PING";break;case cY$.Kind.PONG:Z="PONG";break;case cY$.Kind.INFO:Z="INFO",Q=K81.TD.decode($.data)}return`${Z}: ${Q}`}function hY$(){let $={};return $.sid=-1,$.hdr=-1,$.size=-1,$}var uY$=48,qO4=57,$c=67108864;class lY${dispatcher;state;as;drop;hdr;ma;argBuf;msgBuf;constructor($){this.dispatcher=$,this.state=cY$.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 cY$.State.OP_START:switch(Q){case cY$.cc.M:case cY$.cc.m:this.state=cY$.State.OP_M,this.hdr=-1,this.ma=hY$();break;case cY$.cc.H:case cY$.cc.h:this.state=cY$.State.OP_H,this.hdr=0,this.ma=hY$();break;case cY$.cc.P:case cY$.cc.p:this.state=cY$.State.OP_P;break;case cY$.cc.PLUS:this.state=cY$.State.OP_PLUS;break;case cY$.cc.MINUS:this.state=cY$.State.OP_MINUS;break;case cY$.cc.I:case cY$.cc.i:this.state=cY$.State.OP_I;break;default:throw this.fail($.subarray(Z))}break;case cY$.State.OP_H:switch(Q){case cY$.cc.M:case cY$.cc.m:this.state=cY$.State.OP_M;break;default:throw this.fail($.subarray(Z))}break;case cY$.State.OP_M:switch(Q){case cY$.cc.S:case cY$.cc.s:this.state=cY$.State.OP_MS;break;default:throw this.fail($.subarray(Z))}break;case cY$.State.OP_MS:switch(Q){case cY$.cc.G:case cY$.cc.g:this.state=cY$.State.OP_MSG;break;default:throw this.fail($.subarray(Z))}break;case cY$.State.OP_MSG:switch(Q){case cY$.cc.SPACE:case cY$.cc.TAB:this.state=cY$.State.OP_MSG_SPC;break;default:throw this.fail($.subarray(Z))}break;case cY$.State.OP_MSG_SPC:switch(Q){case cY$.cc.SPACE:case cY$.cc.TAB:continue;default:this.state=cY$.State.MSG_ARG,this.as=Z}break;case cY$.State.MSG_ARG:switch(Q){case cY$.cc.CR:this.drop=1;break;case cY$.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=cY$.State.MSG_PAYLOAD,Z=this.as+this.ma.size-1;break}default:if(this.argBuf)this.argBuf.writeByte(Q)}break;case cY$.State.MSG_PAYLOAD:if(this.msgBuf)if(this.msgBuf.length>=this.ma.size){let X=this.msgBuf.bytes({copy:!1});this.dispatcher.push({kind:cY$.Kind.MSG,msg:this.ma,data:X}),this.argBuf=void 0,this.msgBuf=void 0,this.state=cY$.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:cY$.Kind.MSG,msg:this.ma,data:$.subarray(this.as,Z)}),this.argBuf=void 0,this.msgBuf=void 0,this.state=cY$.State.MSG_END;break;case cY$.State.MSG_END:switch(Q){case cY$.cc.NL:this.drop=0,this.as=Z+1,this.state=cY$.State.OP_START;break;default:continue}break;case cY$.State.OP_PLUS:switch(Q){case cY$.cc.O:case cY$.cc.o:this.state=cY$.State.OP_PLUS_O;break;default:throw this.fail($.subarray(Z))}break;case cY$.State.OP_PLUS_O:switch(Q){case cY$.cc.K:case cY$.cc.k:this.state=cY$.State.OP_PLUS_OK;break;default:throw this.fail($.subarray(Z))}break;case cY$.State.OP_PLUS_OK:switch(Q){case cY$.cc.NL:this.dispatcher.push({kind:cY$.Kind.OK}),this.drop=0,this.state=cY$.State.OP_START;break}break;case cY$.State.OP_MINUS:switch(Q){case cY$.cc.E:case cY$.cc.e:this.state=cY$.State.OP_MINUS_E;break;default:throw this.fail($.subarray(Z))}break;case cY$.State.OP_MINUS_E:switch(Q){case cY$.cc.R:case cY$.cc.r:this.state=cY$.State.OP_MINUS_ER;break;default:throw this.fail($.subarray(Z))}break;case cY$.State.OP_MINUS_ER:switch(Q){case cY$.cc.R:case cY$.cc.r:this.state=cY$.State.OP_MINUS_ERR;break;default:throw this.fail($.subarray(Z))}break;case cY$.State.OP_MINUS_ERR:switch(Q){case cY$.cc.SPACE:case cY$.cc.TAB:this.state=cY$.State.OP_MINUS_ERR_SPC;break;default:throw this.fail($.subarray(Z))}break;case cY$.State.OP_MINUS_ERR_SPC:switch(Q){case cY$.cc.SPACE:case cY$.cc.TAB:continue;default:this.state=cY$.State.MINUS_ERR_ARG,this.as=Z}break;case cY$.State.MINUS_ERR_ARG:switch(Q){case cY$.cc.CR:this.drop=1;break;case cY$.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:cY$.Kind.ERR,data:X}),this.drop=0,this.as=Z+1,this.state=cY$.State.OP_START;break}default:if(this.argBuf)this.argBuf.write(Uint8Array.of(Q))}break;case cY$.State.OP_P:switch(Q){case cY$.cc.I:case cY$.cc.i:this.state=cY$.State.OP_PI;break;case cY$.cc.O:case cY$.cc.o:this.state=cY$.State.OP_PO;break;default:throw this.fail($.subarray(Z))}break;case cY$.State.OP_PO:switch(Q){case cY$.cc.N:case cY$.cc.n:this.state=cY$.State.OP_PON;break;default:throw this.fail($.subarray(Z))}break;case cY$.State.OP_PON:switch(Q){case cY$.cc.G:case cY$.cc.g:this.state=cY$.State.OP_PONG;break;default:throw this.fail($.subarray(Z))}break;case cY$.State.OP_PONG:switch(Q){case cY$.cc.NL:this.dispatcher.push({kind:cY$.Kind.PONG}),this.drop=0,this.state=cY$.State.OP_START;break}break;case cY$.State.OP_PI:switch(Q){case cY$.cc.N:case cY$.cc.n:this.state=cY$.State.OP_PIN;break;default:throw this.fail($.subarray(Z))}break;case cY$.State.OP_PIN:switch(Q){case cY$.cc.G:case cY$.cc.g:this.state=cY$.State.OP_PING;break;default:throw this.fail($.subarray(Z))}break;case cY$.State.OP_PING:switch(Q){case cY$.cc.NL:this.dispatcher.push({kind:cY$.Kind.PING}),this.drop=0,this.state=cY$.State.OP_START;break}break;case cY$.State.OP_I:switch(Q){case cY$.cc.N:case cY$.cc.n:this.state=cY$.State.OP_IN;break;default:throw this.fail($.subarray(Z))}break;case cY$.State.OP_IN:switch(Q){case cY$.cc.F:case cY$.cc.f:this.state=cY$.State.OP_INF;break;default:throw this.fail($.subarray(Z))}break;case cY$.State.OP_INF:switch(Q){case cY$.cc.O:case cY$.cc.o:this.state=cY$.State.OP_INFO;break;default:throw this.fail($.subarray(Z))}break;case cY$.State.OP_INFO:switch(Q){case cY$.cc.SPACE:case cY$.cc.TAB:this.state=cY$.State.OP_INFO_SPC;break;default:throw this.fail($.subarray(Z))}break;case cY$.State.OP_INFO_SPC:switch(Q){case cY$.cc.SPACE:case cY$.cc.TAB:continue;default:this.state=cY$.State.INFO_ARG,this.as=Z}break;case cY$.State.INFO_ARG:switch(Q){case cY$.cc.CR:this.drop=1;break;case cY$.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:cY$.Kind.INFO,data:X}),this.drop=0,this.as=Z+1,this.state=cY$.State.OP_START;break}default:if(this.argBuf)this.argBuf.writeByte(Q)}break;default:throw this.fail($.subarray(Z))}}if((this.state===cY$.State.MSG_ARG||this.state===cY$.State.MINUS_ERR_ARG||this.state===cY$.State.INFO_ARG)&&!this.argBuf)this.argBuf=new G81.DenoBuffer($.subarray(this.as,Z-this.drop));if(this.state===cY$.State.MSG_PAYLOAD&&!this.msgBuf){if(!this.argBuf)this.cloneMsgArg();this.msgBuf=new G81.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 G81.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 cY$.cc.SPACE:case cY$.cc.TAB:case cY$.cc.CR:case cY$.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],$c);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],$c);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}: ${K81.TD.decode($)}`)}processHeaderMsgArgs($){let Z=[],Q=-1;for(let X=0;X<$.length;X++)switch($[X]){case cY$.cc.SPACE:case cY$.cc.TAB:case cY$.cc.CR:case cY$.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],$c),this.ma.size=this.protoParseInt(Z[3],$c);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],$c),this.ma.size=this.protoParseInt(Z[4],$c);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]<uY$||$[X]>qO4)return-1;Q=Q*10+($[X]-uY$)}return Z!==void 0&&Q>Z?-1:Q}}cY$.Parser=lY$;cY$.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};cY$.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 kK0=g((dY$)=>{Object.defineProperty(dY$,"__esModule",{value:!0});dY$.MsgHdrsImpl=void 0;dY$.canonicalMIMEHeaderKey=F81;dY$.headers=kO4;var mY$=mG(),GH=Iw(),VK0=dG();function F81($){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 VK0.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 kO4($=0,Z=""){if($===0&&Z!=="")throw VK0.InvalidArgumentError.format("code","is required");else if($>0&&Z==="")throw VK0.InvalidArgumentError.format("description","is required");return new Zc($,Z)}var H81="NATS/1.0";class Zc{_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 Zc,X=mY$.TD.decode($).split(`\r
|
|
2081
2081
|
`),Y=X[0];if(Y!==H81){let J=Y.replace(H81,"").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 $=H81;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
|
@@ -3456,7 +3456,7 @@ Respond with ONLY a JSON object of this shape, and nothing else:
|
|
|
3456
3456
|
${J.join(`
|
|
3457
3457
|
`)}`:X}function Ui6($){let Z=new Set;for(let Q of $)for(let Y of Q.split(`
|
|
3458
3458
|
`)){let X=Y.trim();if(/^Co-authored-by:\s/i.test(X))Z.add(X)}return[...Z]}var o98=200,Zi6=12,Yi6,Ji6=300,gS0=3;var jN1=D(()=>{aZ();A8();yS0();Yi6={aheadBy:0,behindBy:0,files:[]}});function Bi6($){if(!$||$.includes(".."))return!1;return Ni6.test($)}function a98($){let Z=typeof $.__resolveType==="string"?$.__resolveType:null;if(!Z||!Bi6(Z))return null;let{__resolveType:Q,...Y}=$;return{resolveType:Z,payload:Y}}function s98($,Z){return`${$.replace(/\/+$/,"")}/deco/invoke/${Z}`}var Ni6;var e98=D(()=>{Ni6=/^[\w./@-]+$/});function l40($,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 ZZ8($,Z,Q,Y){let X=$.organization?.id;if(!X)throw new fE(I7);let J=await wj($.storage,X,Y);if(J&&await rB($.storage,J)){let F=await UU($,J,{forceRefresh:!0}).catch((U)=>{throw new fE(U instanceof Error?U.message:I7)});await $Z8($,Z,Q,F);return}let G=Y.connectionId??J?.legacyConnectionId;if(!G)throw new fE("Push requires a connected git account. Connect the repository's provider for this project and restart the sandbox.");await sc({ctx:$,connectionId:G,organizationId:X,forceRefresh:!0,onLegacyMintError:(F)=>{let U=F instanceof Error?F.message:I7;throw new fE(U)}});let{cloneUrl:W,gitUserName:K,gitUserEmail:H}=await NU(G,Y.owner,Y.name,$.db,$.vault).catch((F)=>{let{code:U,message:N}=HB$(F instanceof Error?F.message:String(F));throw U?new fE(N):F});await $Z8($,Z,Q,{cloneUrl:W,gitUserName:K,gitUserEmail:H})}async function $Z8($,Z,Q,Y){let{cloneUrl:X,gitUserName:J,gitUserEmail:G}=Y,W=si($),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 mj(K,Oi6).catch(()=>K.statusText);throw Error(`Failed to refresh sandbox git credentials (${K.status}): ${H}`)}}var Oi6=10485760,fE;var EN1=D(()=>{BW();VS0();F10();VK0();$00();aZ();fE=class fE extends Error{constructor($){super($);this.name="GitPushAuthError"}}});function Li6($){let Z=$.startsWith("thread:")?$.slice(7):$;if(!Z||Z.length>255||Z.includes("..")||Z.startsWith("/")||Z.endsWith("/")||Z.endsWith(".lock")||!Di6.test(Z))throw Error(`Invalid branch name: ${$}`)}function vy($){return AbortSignal.any([$.req.raw.signal,AbortSignal.timeout(ji6)])}async function zi6($,Z){let Q=$.var.studioContext,Y=zU(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=Zf(G?.metadata?.runtime);if(W)return W;let K=jT0(Z.virtualMcpMetadata),H=K==="cms"?await sU1(Q,{claimName:Z.claimName}):"alive",F=K==="cms"&&H!=="alive"?"cms":"sandbox",U=!!G&&(H==="gone"||H==="alive"&&K==="cms");if(U&&G)U10(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 Pi6($){let Z=$.get("vmClaim");if(Z.runner)return Z.runner;try{return await vX($.var.studioContext)}catch{return null}}function by($){let{runner:Z}=$.get("vmClaim");if(!Z)return $.json({error:"No sandbox runner configured"},503);return Z}async function Yp($){let{virtualMcpMetadata:Z,connectionIds:Q}=$.get("vmClaim"),Y=$.var.studioContext,X=l40(Z,Q);if(!X)throw new u0({provider:"github",status:404,message:"Project has no GitHub repository"});let J=Q0(Y);return oc(Y,J.id,X)}function zN1($,Z){let Q=Z instanceof Error?Z.message:String(Z),Y=yU$(Z);if(Y!==void 0)return $.json({error:Q},429,{...e5,...Y===null?{}:{"Retry-After":String(Math.ceil(Y/1000))}});if(Z instanceof o6)return $.json({error:Q},409,e5);let X=jW(Z);if(X!==null){let J=X===404?404:X===409||X===422?409:502;return $.json({error:Q},J,e5)}return $.json({error:Q},502,e5)}async function XZ8($,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 JZ8($){try{let Z=await Yp($),Q=await hS0(Z,$.get("vmClaim").branch);return $.json(Q,200,e5)}catch(Z){return zN1($,Z)}}function c40($,Z){let Y=(cS0.get($)??Promise.resolve()).catch(()=>{}).then(Z),X=Y.catch(()=>{});return cS0.set($,X),X.finally(()=>{if(cS0.get($)===X)cS0.delete($)}),Y}async function HQ($,Z,Q){if(!Q?.runner&&$.get("vmClaim").runtime==="cms")return $.json({error:"sandbox not found: this session is sandbox-less"},404,e5);let Y=Q?.runner??by($);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",...e5}})}}let O=await B.text(),L=Q?.redactRepoDir?Ai6(O):O,w=B.headers.get("content-type")??"application/json";return new Response(L,{status:B.status,headers:{"content-type":w,...e5}})};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 O=B instanceof Error?B.message:String(B);return $.json({error:`Daemon unreachable: ${O}`},502)}}function Ai6($){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 mS0($,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 Ti6($){return GZ8.includes($)}var Di6,QZ8=524288,wi6=65536,ji6=1e4,YZ8=2000,Ei6,cS0,e5,GZ8,WZ8=()=>{let $=new G1;$.use("/:virtualMcpId/:branch/*",Ei6),$.post("/:virtualMcpId/:branch/write",(Q)=>HQ(Q,"/_sandbox/write",{forwardJsonBody:!0,signal:vy(Q)})),$.post("/:virtualMcpId/:branch/unlink",(Q)=>HQ(Q,"/_sandbox/unlink",{forwardJsonBody:!0,signal:vy(Q)})),$.post("/:virtualMcpId/:branch/mkdir",(Q)=>HQ(Q,"/_sandbox/mkdir",{forwardJsonBody:!0,signal:vy(Q)})),$.post("/:virtualMcpId/:branch/rename",(Q)=>HQ(Q,"/_sandbox/rename",{forwardJsonBody:!0,signal:vy(Q)})),$.post("/:virtualMcpId/:branch/read",(Q)=>HQ(Q,"/_sandbox/read",{forwardJsonBody:!0,signal:vy(Q)})),$.post("/:virtualMcpId/:branch/glob",(Q)=>HQ(Q,"/_sandbox/glob",{forwardJsonBody:!0,signal:vy(Q)})),$.post("/:virtualMcpId/:branch/grep",(Q)=>HQ(Q,"/_sandbox/grep",{forwardJsonBody:!0,signal:vy(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 HQ(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 HQ(Q,`/_sandbox/exec/${encodeURIComponent(Y)}/kill`)}),$.get("/:virtualMcpId/:branch/config",(Q)=>HQ(Q,"/_sandbox/config",{method:"GET",map404to410:!0,redactRepoDir:!0})),$.put("/:virtualMcpId/:branch/config",(Q)=>HQ(Q,"/_sandbox/config",{method:"PUT",forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/setup/:step",async(Q)=>{let Y=Q.req.param("step");if(!Y||!Ti6(Y))return Q.json({error:`step must be one of: ${GZ8.join(", ")}`},400);let X=Q.get("vmClaim"),J=await sU1(Q.var.studioContext,{claimName:X.claimName})==="gone"?null:await Pi6(Q);if(!J)return Q.json({error:"sandbox not found: nothing is running at this ref"},404,e5);if(Y==="start"){let G=Q0(Q.var.studioContext),W=ym(X.virtualMcpMetadata);try{await OT0({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 HQ(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 oO(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 G98(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 JZ8(Q);return Z(Q)});let Z=(Q)=>HQ(Q,"/_sandbox/git/status",{method:"GET",map404to410:!0,signal:AbortSignal.any([Q.req.raw.signal,AbortSignal.timeout(YZ8)])});return $.post("/:virtualMcpId/:branch/git/status",(Q)=>{if(Q.get("vmClaim").runtime==="cms")return JZ8(Q);return HQ(Q,"/_sandbox/git/status",{map404to410:!0,signal:AbortSignal.any([Q.req.raw.signal,AbortSignal.timeout(YZ8)])})}),$.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 Yp(Q),G=await uS0(J,Y.branch,X.base);return Q.json(G,200,e5)}catch(X){return zN1(Q,X)}return HQ(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,e5);let Y=by(Q);if(Y instanceof Response)return Y;let{claimName:X,virtualMcpMetadata:J,connectionIds:G}=Q.get("vmClaim"),W=Q.var.studioContext;return c40(X,async()=>{try{await eU1(W,Y,X);let K=l40(J,G);if(K)await ZZ8(W,Y,X,K)}catch(K){if(K instanceof fE)return Q.json({error:K.message},403,e5);let H=K instanceof Error?K.message:String(K);return Q.json({error:H},502,e5)}return HQ(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 c40(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,e5);try{let G=await Yp(Q);return await r98(G,Y.branch,J),Q.json({ok:!0},200,e5)}catch(G){let W=jW(G)===409||G instanceof o6?409:502,K=G instanceof Error?G.message:String(G);return Q.json({error:K},W,e5)}});return c40(Y.claimName,()=>HQ(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 c40(Y.claimName,async()=>{try{let W=await Q.req.json().catch(()=>({})),K=await Yp(Q),H=W.base??await K.getDefaultBranch();return await lS0(K,Y.branch,H),Q.json({ok:!0},200,e5)}catch(W){return zN1(Q,W)}});let X=by(Q);if(X instanceof Response)return X;let{claimName:J}=Q.get("vmClaim"),G=Q.var.studioContext;return c40(J,async()=>{try{await eU1(G,X,J)}catch(W){let K=W instanceof Error?W.message:String(W);return Q.json({error:K},502,e5)}return HQ(Q,"/_sandbox/git/rebase",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/suggest-commit",D9({maxSize:QZ8,onError:(Q)=>Q.json({error:"Payload too large"},413,e5)}),async(Q)=>{let Y=Q.get("vmClaim"),X=null;if(Y.runtime!=="cms"){let H=by(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,O]=QN1(F)&&N?[F,U]:X?await Promise.all([mS0(X,J,"/_sandbox/git/status","GET",{userId:G,projectRef:W}),mS0(X,J,"/_sandbox/git/diff","GET",{userId:G,projectRef:W})]):await(async()=>{let w=await Yp(Q);return Promise.all([hS0(w,Y.branch),uS0(w,Y.branch)])})();await bK(K,Q0(K).id,"suggesting a commit message");let L=await U98(K,B,O);return Q.json(L,200,e5)}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,e5);return Q.json({error:F},502,e5)}}),$.post("/:virtualMcpId/:branch/git/judge-review",D9({maxSize:QZ8,onError:(Q)=>Q.json({error:"Payload too large"},413,e5)}),async(Q)=>{let Y=Q.get("vmClaim"),X=null;if(Y.runtime!=="cms"){let H=by(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,O]=QN1(F)&&N?[F,U]:X?await Promise.all([mS0(X,J,"/_sandbox/git/status","GET",{userId:G,projectRef:W}),mS0(X,J,"/_sandbox/git/diff","GET",{userId:G,projectRef:W})]):await(async()=>{let w=await Yp(Q);return Promise.all([hS0(w,Y.branch),uS0(w,Y.branch)])})();await bK(K,Q0(K).id,"judging whether a change needs review");let L=await B98(K,B,O,typeof H.language==="string"?H.language:void 0);return Q.json(L,200,e5)}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,e5);return Q.json({error:F},502,e5)}}),$.get("/:virtualMcpId/:branch/preview-fetch",async(Q)=>{let Y=by(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 XZ8(Q,`${W}${J}`)}),$.post("/:virtualMcpId/:branch/preview-invoke",D9({maxSize:wi6,onError:(Q)=>Q.json({error:"Payload too large"},413)}),async(Q)=>{let Y=by(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=a98(G);if(!W)return Q.json({error:"Invalid or missing __resolveType"},400);let K=s98(J,W.resolveType);return XZ8(Q,K,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(W.payload),signal:AbortSignal.timeout(30000)})}),$};var KZ8=D(()=>{F8();xH();ai();aU1();G10();Y98();TW();gm();X98();NH();_F();J98();W98();b91();K10();JN1();O98();aZ();j5();jN1();e98();EN1();Di6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;Ei6=IS0(async($,Z)=>{let Q=$.var.studioContext;try{Y0(Q)}catch{return $.json({error:"Unauthorized"},401)}let Y=n0(Q);if(!Y)return $.json({error:"Unauthorized"},401);let X;try{X=Q0(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{Li6(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=q00({orgId:X.id,virtualMcpId:J,branch:G}),H=await k61(Q,G),F=S61(H,Y),U=Q98({userId:F,projectRef:K}),N=W.metadata??null,B=await zi6($,{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 O;try{O=await vX(Q)}catch{O=null}if(!O)return $.json({error:"No sandbox runner found"},404);return $.set("vmClaim",{claimName:U,callerUserId:Y,runner:O,virtualMcpId:J,branch:G,userId:F,projectRef:K,virtualMcpMetadata:N,connectionIds:W.connections?.map((L)=>L.connection_id)??[],runtime:B}),Z()});cS0=new Map;e5={"Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache"};GZ8=["clone","install","start"]});function HZ8($,Z,Q){let Y=PN1.get($);if(!Y)Y={pending:null,running:!1},PN1.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)qi6($,Y);return J}async function qi6($,Z){Z.running=!0;try{while(Z.pending){let Q=Z.pending;Z.pending=null;try{let Y=await Mi6(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)PN1.delete($)}}async function Mi6($){let{client:Z,branch:Q,packagePath:Y}=$.deps,X=new Map;for(let J=0;;J++){let G=await Qp(Z,Q),W=await Z.listDecofileEntries(G,Y),K=DN1(W,Y),H=[],F=new Map(K.map((N)=>[N.path,{stem:N.stem,sha:N.sha}]));for(let[N,B]of $.set){let O=LN1(K,N),L=`${JSON.stringify(B,null,2)}
|
|
3459
|
-
`;await i98(Z.repo,L);let w=O[0]??`${fS0(Y)}/${KN1(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 O.slice(1))H.push({path:E,deleted:!0}),F.delete(E)}for(let N of $.del)for(let B of LN1(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 p98(Z,F.values(),X),{decofile:B,skipped:O}=f40(N);if(O.length>0)console.warn("decofile gen: dropped blocks that were not valid JSON",{repo:sK(Z.repo),branch:Q,packagePath:Y,blocks:O.map((L)=>L.key)});H.push({path:U,content:B})}try{let{sha:N}=await Z.commitFiles({branch:Q,message:Ii6($),expectedHead:G,changes:H});return N}catch(N){if(!(N instanceof o6)||J>=Ri6-1)throw N;await n$(UQ(2000,200,J,2,0.5))}}}function Ii6($){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 Q61(Y,$.deps.coAuthor)}var Ri6=3,PN1;var FZ8=D(()=>{Z20();SS0();C6();A8();aZ();yS0();PN1=new Map});import{createHmac as UZ8,randomBytes as Vi6,timingSafeEqual as ki6}from"crypto";function NZ8(){if(dS0)return dS0;let $;try{let Z=T0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return dS0=$?Buffer.from($):Vi6(32),dS0}function AN1($){let Z=$.nowMs??Date.now(),Q={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+Si6)/1000)},Y=Buffer.from(JSON.stringify(Q)).toString("base64url"),X=UZ8("sha256",NZ8()).update(Y).digest("base64url");return`${Y}.${X}`}function BZ8($,Z){let Q=$.indexOf(".");if(Q<0)return!1;let Y=$.slice(0,Q),X=Buffer.from($.slice(Q+1)),J=Buffer.from(UZ8("sha256",NZ8()).update(Y).digest("base64url"));if(X.length!==J.length||!ki6(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 Si6=21600000,dS0=null;var OZ8=D(()=>{D$()});import{z as Xp}from"zod";function _i6($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&Ci6.test($)}function EZ8($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function m40($){let Z=$.get("decofileScope");return oc($.var.studioContext,Z.organizationId,Z.githubRepo)}function d40($,Z){let Q=Z instanceof Error?Z.message:String(Z);if(Z instanceof o6)return $.json({error:Q},409);let Y=jW(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 zZ8(){let $=new G1;return $.use("/:virtualMcpId/:branch",jZ8),$.use("/:virtualMcpId/:branch/*",jZ8),$.get("/:virtualMcpId/:branch",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await m40(Z),X=await n98(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=AN1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.body(`{"version":${JSON.stringify(X.sha)},"token":${JSON.stringify(G)},"apiHost":${JSON.stringify(EZ8(Z))},"decofile":${X.decofile}}`,200,{...J,"content-type":"application/json"})}catch(Y){return d40(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 m40(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 d40(Z,X)}}),$.patch("/:virtualMcpId/:branch",bi6,async(Z)=>{let Q=Z.get("decofileScope"),Y=Z.var.studioContext,X=xi6.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{kS0(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(WN1(G))return Z.json({error:`Block key "${G}" collides with a framework resolver module and cannot be written`},400)}try{let G=await m40(Z),W=await HZ8(`${Q.organizationId}/${Q.virtualMcpId}/${Q.branch}`,{client:G,branch:Q.branch,packagePath:Q.packagePath,coAuthor:si(Y)},J),K=AN1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.json({version:W,token:K,apiHost:EZ8(Z)})}catch(G){return d40(Z,G)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await m40(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(jW(W)!==409)throw W;await lS0(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(jW(G)===409)return Z.json({error:"merge-conflict"},409);if(jW(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 d40(Z,Y)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await m40(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(jW(J)===404)return Z.json({baseBranch:X,aheadBy:0,behindBy:0,lastCommitAt:null});throw J}}catch(Y){return d40(Z,Y)}}),$}var Ci6,DZ8=500,LZ8=1048576,wZ8=1024,vi6=8388608,bi6,xi6,jZ8;var PZ8=D(()=>{x91();SS0();F8();xH();aU1();VS0();EN1();aZ();FZ8();OZ8();jN1();yS0();_F();Ci6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;bi6=D9({maxSize:vi6,onError:($)=>$.json({error:"Payload too large"},413)}),xi6=Xp.object({set:Xp.record(Xp.string(),Xp.unknown()).optional(),delete:Xp.array(Xp.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)<=DZ8,{message:`Patch cannot touch more than ${DZ8} blocks`}).refine(($)=>Object.values($.set??{}).every((Z)=>JSON.stringify(Z).length<=LZ8),{message:`Each block must be at most ${LZ8} bytes`}).refine(($)=>[...Object.keys($.set??{}),...$.delete??[]].every((Z)=>Z.length<=wZ8),{message:`Each block key must be at most ${wZ8} characters`}),jZ8=IS0(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(!_i6(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||!BZ8(B,{organizationId:Y.id,virtualMcpId:X,branch:J}))return $.json({error:"Unauthorized"},401)}if(!await o3(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(!wT0(K))return $.json({error:"Project has no preview server configured"},404);let F=W.connections?.map((B)=>B.connection_id)??[],U=l40(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 AZ8=($)=>{let Z=new G1;if(Z.use("*",ki),Z.use("*",s$8),Z.route("/",fk0()),Z.route("/",b88()),Z.route("/",z88()),Z.route("/",m58()),Z.route("/",x58()),Z.route("/",l58()),Z.route("/",y58()),Z.route("/",RS0()),Z.route("/tools",r58()),Z.route("/",n58()),Z.route("/",B58({kvStorage:$.kvStorage})),Z.route("/",U58()),Z.route("/fs",M58({getConnection:$.getNatsConnection})),Z.route("/sandbox",WZ8()),Z.route("/decofile",zZ8()),Z.route("/",_58()),Z.route("/",V58()),Z.route("/deco-sites",gk0()),Z.route("/hosting",H88()),Z.route("/monitor",L88()),Z.route("/sso",Ck0()),Z.route("/",qS0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",X88()),$.mountDevAssets)Z.route("/dev-assets",ck0({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("/",W08()),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",S58()),Z.route("/mcp",Rq0()),Z.route("/mcp/self",zS0()),Z.route("/mcp",Iq0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var TZ8=D(()=>{F8();e$8();zk0();J88();jF1();F88();w88();mk0();Py();BF1();TF1();N58();O58();I58();k58();z$0();WF1();Vq0();cU1();C58();v58();f58();g58();iU1();d58();t58();pU1();a58();nU1();qq0();KZ8();PZ8()});function fi6($){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 yi6=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},RZ8=()=>{let $=new G1;return $.use("*",yi6),$.get("/",async(Z)=>{let Q=T0(),Y=Q.decoSupabaseUrl,X=Q.decoSupabaseServiceKey;if(!Y||!X)return Z.json({apps:[]});try{let J=await oJ(Y,X,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:fi6(J)})}catch(J){return console.error("[deco-apps] GET error:",J),Z.json({error:"Failed to fetch apps"},502)}}),$};var qZ8=D(()=>{F8();D$();zV0()});import{z as h1}from"zod";function JN($,Z="invalid_request_error",Q=null,Y=null){return{error:{message:$,type:Z,param:Q,code:Y}}}function ni6($){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 ti6($,Z,Q){try{return JSON.parse($)}catch{throw new VZ8(`Invalid JSON in tool call arguments for function '${Q}' (tool_call_id: ${Z}): ${$}`)}}function oi6($){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:ti6(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 ri6($){let Z=$.map((Q)=>{let Y=Q.function.parameters?BY(Q.function.parameters):BY({type:"object",properties:{}});return[Q.function.name,R$({description:Q.function.description,inputSchema:Y})]});return Object.fromEntries(Z)}function ai6($){if(!$)return;return{openai:{response_format:$}}}function si6(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function MZ8($,Z,Q,Y,X,J){let G={model:$,instructions:Z.filter((W)=>W.role==="system"),messages:Z.filter((W)=>W.role!=="system"),tools:Q,temperature:Y.temperature,maxOutputTokens: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 IZ8($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var gi6=256,hi6,ui6,li6,ci6,mi6,di6,ii6,pi6,VZ8,kZ8,SZ8;var CZ8=D(()=>{i4();F8();ai();AH();hi6=h1.object({type:h1.literal("function"),function:h1.object({name:h1.string(),description:h1.string().optional(),parameters:h1.record(h1.string(),h1.unknown()).optional()})}),ui6=h1.object({id:h1.string(),type:h1.literal("function"),function:h1.object({name:h1.string(),arguments:h1.string()})}),li6=h1.discriminatedUnion("role",[h1.object({role:h1.literal("system"),content:h1.string(),name:h1.string().optional()}),h1.object({role:h1.literal("user"),content:h1.union([h1.string(),h1.array(h1.union([h1.object({type:h1.literal("text"),text:h1.string()}),h1.object({type:h1.literal("image_url"),image_url:h1.object({url:h1.string(),detail:h1.string().optional()})})]))]),name:h1.string().optional()}),h1.object({role:h1.literal("assistant"),content:h1.string().nullable().optional(),name:h1.string().optional(),tool_calls:h1.array(ui6).optional()}),h1.object({role:h1.literal("tool"),content:h1.string(),tool_call_id:h1.string()})]),ci6=h1.object({type:h1.literal("text")}),mi6=h1.object({type:h1.literal("json_object")}),di6=h1.object({type:h1.literal("json_schema"),json_schema:h1.object({name:h1.string(),description:h1.string().optional(),schema:h1.record(h1.string(),h1.unknown()),strict:h1.boolean().optional()})}),ii6=h1.union([ci6,mi6,di6]),pi6=h1.object({model:h1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:h1.array(li6),stream:h1.boolean().optional().default(!1),temperature:h1.number().min(0).max(2).optional(),max_tokens:h1.number().positive().optional(),top_p:h1.number().min(0).max(1).optional(),frequency_penalty:h1.number().min(-2).max(2).optional(),presence_penalty:h1.number().min(-2).max(2).optional(),stop:h1.union([h1.string(),h1.array(h1.string())]).optional(),tools:h1.array(hi6).optional(),tool_choice:h1.union([h1.literal("auto"),h1.literal("none"),h1.literal("required"),h1.object({type:h1.literal("function"),function:h1.object({name:h1.string()})})]).optional(),response_format:ii6.optional(),user:h1.string().optional()});VZ8=class VZ8 extends Error{constructor($){super($);this.name="MessageConversionError"}};kZ8=new G1;kZ8.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),Q=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(JN("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(JN("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(JN("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Y=await $.req.json(),X=pi6.safeParse(Y);if(!X.success){let w=X.error.issues[0]??{message:"Invalid request",path:[]};return $.json(JN(`Invalid request: ${w.message}`,"invalid_request_error",w.path.length>0?w.path.join("."):null),400)}let J=X.data,G=ni6(J.model);if(!G)return $.json(JN("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)=>rz(E.providerId));if(!j)return $.json(JN("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(JN(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),U=oi6(J.messages),N=J.tools?ri6(J.tools):void 0,B=ai6(J.response_format),O=si6(),L=Math.floor(Date.now()/1000);if(J.stream)return oO($,async(w)=>{let j=MZ8(F,U,N,J,B,$.req.raw.signal);try{let E=uj(j),z=!1,T=0,P="",A=async()=>{if(P.length===0)return;let q=P;P="",await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{content:q},finish_reason:null}]})})};for await(let q of E.stream){if(!z&&(q.type==="text-delta"||q.type==="tool-call"))await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),z=!0;if(q.type==="text-delta"){if(P+=q.text,P.length>=gi6)await A()}else if(q.type==="tool-call"){await A();let v=T++;await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{tool_calls:[{index:v,id:q.toolCallId,type:"function",function:{name:q.toolName,arguments:JSON.stringify(q.input)}}]},finish_reason:null}]})})}else if(q.type==="finish")await A(),await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{},finish_reason:IZ8(q.finishReason)}],usage:q.totalUsage?{prompt_tokens:q.totalUsage.inputTokens??0,completion_tokens:q.totalUsage.outputTokens??0,total_tokens:q.totalUsage.totalTokens??0}:void 0})})}await A(),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=MZ8(F,U,N,J,B,$.req.raw.signal),j=await MU(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:O,object:"chat.completion",created:L,model:J.model,choices:[{index:0,message:E,finish_reason:IZ8(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(JN("Request aborted","invalid_request_error"),400);if(X.name==="MessageConversionError")return $.json(JN(X.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",X.message,X.stack),$.json(JN(X.message,"server_error"),500)}});SZ8=kZ8});function ei6($){if(typeof $!=="object"||$===null)return!1;let Q=$.githubRepo?.url;return typeof Q==="string"&&Q.length>0}function _Z8(){let $=new G1;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=n0(Q);if(!Y)return Z.json({error:"Authentication required"},401);let J=(Z.req.query("site")??"").trim().toLowerCase();if(!M7(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||I9(H))continue;let F=await Q.storage.virtualMcps.list(H.id);for(let U of F){if(uW0(U)!==J)continue;if(!ei6(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 vZ8=D(()=>{F8();OW()});var xZ8;var bZ8=D(()=>{xZ8={name:"decocms",version:"4.384.1",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":"^4.0.58","@ai-sdk/google":"^4.0.76","@ai-sdk/openai":"^4.0.71","@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":"^3.1.0","@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":"^4.0.17","@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:"^7.0.107","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 Qp6(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??Zp6}}var fZ8,Zp6="https://ph.studio.decocms.com",yZ8;var gZ8=D(()=>{F8();ks();Pf();J9();D$();nH1();bZ8();fZ8=new G1;fZ8.get("/",($)=>{let Z={version:xZ8.version,theme:DJ$(),...rK().logo&&{logo:rK().logo},...PO()&&{internalUrl:$d1()},...T0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!T0().firecrawlApiKey,hostingEnabled:!!T0().controlplaneRestUrl&&!!T0().controlplaneServiceToken,hostingControlPlaneGa:T0().hostingControlPlaneGa,monitorEnabled:!!T0().clickhouseAnalyticsUrl&&!!T0().clickhouseAnalyticsPassword,monitorGa:T0().monitorGa,plansEnabled:T0().plansEnabled,auth:e18(),posthog:Qp6(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:WD()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});yZ8=fZ8});function Jp($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function TN1($){return(Jp($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((Q)=>Q.charAt(0).toUpperCase()+Q.slice(1)).join(" ")}function uZ8($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(Jp($))}&sz=${Z}`}function hZ8($,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 lZ8($){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()?hZ8(`${X.trim().replace(/\s+/g," ")} \u2014 ${G}`,200):hZ8(`How does ${Q} really perform? ${G}`,200);return{title:J,description:W}}import{z as o0}from"zod";var xy,Yp6,Xp6,Jp6,Gp6,cZ8;var mZ8=D(()=>{xy=o0.enum(["good","bad","neutral"]),Yp6=o0.preprocess(($)=>{if(Array.isArray($))return{kind:"text",value:$.find((Q)=>Q!==null&&typeof Q!=="object")??""};return $!==null&&typeof $==="object"?$:{kind:"text",value:$}},o0.object({kind:o0.enum(["text","number","sparkline","badge","score"]).catch("text"),value:o0.coerce.string().optional(),tone:xy.optional(),muted:o0.boolean().optional(),delta:o0.coerce.string().optional(),deltaDir:o0.enum(["up","down","neutral"]).optional(),points:o0.array(o0.coerce.number()).optional(),label:o0.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 $})),Xp6=o0.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},o0.array(Yp6)),Jp6={key:o0.coerce.string(),title:o0.coerce.string(),eyebrow:o0.coerce.string().optional(),headline:o0.coerce.string(),annotation:o0.coerce.string().optional(),methodology:o0.coerce.string().optional(),sources:o0.array(o0.object({name:o0.coerce.string(),logoUrl:o0.coerce.string()})).optional()},Gp6=o0.discriminatedUnion("template",[o0.object({template:o0.literal("cover"),score:o0.object({value:o0.coerce.number(),max:o0.coerce.number().optional(),grade:o0.coerce.string().optional(),label:o0.coerce.string().optional()}).optional(),brandImage:o0.coerce.string().optional(),screenshot:o0.coerce.string().optional(),mobileScreenshot:o0.coerce.string().optional()}),o0.object({template:o0.literal("cta"),ctaUrl:o0.coerce.string().optional(),ctaLabel:o0.coerce.string().optional(),bullets:o0.array(o0.coerce.string()).optional()}),o0.object({template:o0.literal("series"),points:o0.array(o0.coerce.number()).min(2),xLabels:o0.array(o0.coerce.string()).min(1),unit:o0.coerce.string().optional(),callout:o0.object({index:o0.coerce.number(),value:o0.coerce.string(),tone:xy.optional()})}),o0.object({template:o0.literal("threshold"),value:o0.coerce.string().default(""),metricLabel:o0.coerce.string().optional(),ratio:o0.coerce.number(),thresholdRatio:o0.coerce.number().optional(),thresholdLabel:o0.coerce.string().default(""),tone:xy.optional()}),o0.object({template:o0.literal("stats"),stats:o0.array(o0.object({value:o0.coerce.string(),label:o0.coerce.string(),tone:xy.optional()})).min(1)}),o0.object({template:o0.literal("bars"),items:o0.array(o0.object({value:o0.coerce.string(),label:o0.coerce.string(),ratio:o0.coerce.number(),tone:xy.optional()})).min(1)}),o0.object({template:o0.literal("gauges"),gauges:o0.array(o0.object({label:o0.coerce.string(),value:o0.coerce.string(),status:o0.enum(["good","warn","bad"]).catch("warn"),caption:o0.coerce.string().optional(),ratio:o0.coerce.number().optional()})).min(1)}),o0.object({template:o0.literal("checklist"),checks:o0.array(o0.object({label:o0.coerce.string(),status:o0.enum(["pass","fail","warn"]).catch("fail"),value:o0.coerce.string().optional()})).min(1)}),o0.object({template:o0.literal("table"),columns:o0.array(o0.object({label:o0.coerce.string(),align:o0.enum(["left","right"]).optional()})).min(1),rows:o0.array(Xp6).min(1),highlightRow:o0.coerce.number().optional()}),o0.object({template:o0.literal("products"),products:o0.array(o0.object({name:o0.coerce.string(),price:o0.coerce.string().optional(),image:o0.coerce.string().optional(),url:o0.coerce.string().optional()})).min(1)}),o0.object({template:o0.literal("list"),entries:o0.array(o0.object({label:o0.coerce.string(),severity:o0.enum(["error","warning","notice"]).catch("notice")})).min(1),moreCount:o0.coerce.number().optional()}),o0.object({template:o0.literal("keywords"),volumeLabel:o0.coerce.string().optional(),keywords:o0.array(o0.object({term:o0.coerce.string(),volume:o0.coerce.string(),position:o0.coerce.number().catch(0)})).min(1)}),o0.object({template:o0.literal("competitor"),metricLabel:o0.coerce.string().optional(),competitors:o0.array(o0.object({name:o0.coerce.string(),value:o0.coerce.string(),tone:xy.optional(),isYou:o0.boolean().optional()})).min(1)}),o0.object({template:o0.literal("scorecard"),rivalLabel:o0.coerce.string().optional(),dimensions:o0.array(o0.object({label:o0.coerce.string(),you:o0.coerce.string(),rival:o0.coerce.string().optional(),rivalName:o0.coerce.string().optional(),tone:xy.optional()})).min(1)})]),cZ8=o0.object({...Jp6,template:Gp6})});function iS0($){let Z=[],Q=[...$.sections].sort((X,J)=>X.position-J.position).map((X)=>{let J=cZ8.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 RN1=D(()=>{mZ8()});import{join as dZ8}from"path";async function Kp6($){try{let Z=await fetch(`${oF({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(Wp6)});if(!Z.ok)return null;let Q=await Z.json(),{deck:Y}=iS0(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()||TN1($),score:Y.meta.scores?.cover??G?.score?.value,verdict:X?.annotation?.trim()||X?.headline?.trim()||void 0}}catch{return null}}function O3($){return $.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""")}function Hp6($,Z){let Q=Jp($),Y=Z?.brand?.trim()||TN1(Q),X=uZ8(Q,128),G=`${(T0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(Q)}`,{title:W,description:K}=lZ8({brand:Y,domain:Q,score:Z?.score,verdict:Z?.verdict}),H=`${G}/og.png`,F=`${Y} commerce report by decocms`;return[`<title>${O3(W)}</title>`,`<meta name="description" content="${O3(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="${O3(W)}" />`,`<meta property="og:description" content="${O3(K)}" />`,`<meta property="og:url" content="${O3(G)}" />`,`<meta property="og:image" content="${O3(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${O3(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${O3(W)}" />`,`<meta name="twitter:description" content="${O3(K)}" />`,`<meta name="twitter:image" content="${O3(H)}" />`,`<meta name="twitter:image:alt" content="${O3(F)}" />`,`<link rel="canonical" href="${O3(G)}" />`,`<link rel="icon" href="${O3(X)}" sizes="any" />`].join(`
|
|
3459
|
+
`;await i98(Z.repo,L);let w=O[0]??`${fS0(Y)}/${KN1(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 O.slice(1))H.push({path:E,deleted:!0}),F.delete(E)}for(let N of $.del)for(let B of LN1(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 p98(Z,F.values(),X),{decofile:B,skipped:O}=f40(N);if(O.length>0)console.warn("decofile gen: dropped blocks that were not valid JSON",{repo:sK(Z.repo),branch:Q,packagePath:Y,blocks:O.map((L)=>L.key)});H.push({path:U,content:B})}try{let{sha:N}=await Z.commitFiles({branch:Q,message:Ii6($),expectedHead:G,changes:H});return N}catch(N){if(!(N instanceof o6)||J>=Ri6-1)throw N;await n$(UQ(2000,200,J,2,0.5))}}}function Ii6($){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 Q61(Y,$.deps.coAuthor)}var Ri6=3,PN1;var FZ8=D(()=>{Z20();SS0();C6();A8();aZ();yS0();PN1=new Map});import{createHmac as UZ8,randomBytes as Vi6,timingSafeEqual as ki6}from"crypto";function NZ8(){if(dS0)return dS0;let $;try{let Z=T0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return dS0=$?Buffer.from($):Vi6(32),dS0}function AN1($){let Z=$.nowMs??Date.now(),Q={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+Si6)/1000)},Y=Buffer.from(JSON.stringify(Q)).toString("base64url"),X=UZ8("sha256",NZ8()).update(Y).digest("base64url");return`${Y}.${X}`}function BZ8($,Z){let Q=$.indexOf(".");if(Q<0)return!1;let Y=$.slice(0,Q),X=Buffer.from($.slice(Q+1)),J=Buffer.from(UZ8("sha256",NZ8()).update(Y).digest("base64url"));if(X.length!==J.length||!ki6(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 Si6=21600000,dS0=null;var OZ8=D(()=>{D$()});import{z as Xp}from"zod";function _i6($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&Ci6.test($)}function EZ8($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function m40($){let Z=$.get("decofileScope");return oc($.var.studioContext,Z.organizationId,Z.githubRepo)}function d40($,Z){let Q=Z instanceof Error?Z.message:String(Z);if(Z instanceof o6)return $.json({error:Q},409);let Y=jW(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 zZ8(){let $=new G1;return $.use("/:virtualMcpId/:branch",jZ8),$.use("/:virtualMcpId/:branch/*",jZ8),$.get("/:virtualMcpId/:branch",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await m40(Z),X=await n98(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=AN1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.body(`{"version":${JSON.stringify(X.sha)},"token":${JSON.stringify(G)},"apiHost":${JSON.stringify(EZ8(Z))},"decofile":${X.decofile}}`,200,{...J,"content-type":"application/json"})}catch(Y){return d40(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 m40(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 d40(Z,X)}}),$.patch("/:virtualMcpId/:branch",bi6,async(Z)=>{let Q=Z.get("decofileScope"),Y=Z.var.studioContext,X=xi6.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{kS0(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(WN1(G))return Z.json({error:`Block key "${G}" collides with a framework resolver module and cannot be written`},400)}try{let G=await m40(Z),W=await HZ8(`${Q.organizationId}/${Q.virtualMcpId}/${Q.branch}`,{client:G,branch:Q.branch,packagePath:Q.packagePath,coAuthor:si(Y)},J),K=AN1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.json({version:W,token:K,apiHost:EZ8(Z)})}catch(G){return d40(Z,G)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await m40(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(jW(W)!==409)throw W;await lS0(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(jW(G)===409)return Z.json({error:"merge-conflict"},409);if(jW(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 d40(Z,Y)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await m40(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(jW(J)===404)return Z.json({baseBranch:X,aheadBy:0,behindBy:0,lastCommitAt:null});throw J}}catch(Y){return d40(Z,Y)}}),$}var Ci6,DZ8=500,LZ8=1048576,wZ8=1024,vi6=8388608,bi6,xi6,jZ8;var PZ8=D(()=>{x91();SS0();F8();xH();aU1();VS0();EN1();aZ();FZ8();OZ8();jN1();yS0();_F();Ci6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;bi6=D9({maxSize:vi6,onError:($)=>$.json({error:"Payload too large"},413)}),xi6=Xp.object({set:Xp.record(Xp.string(),Xp.unknown()).optional(),delete:Xp.array(Xp.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)<=DZ8,{message:`Patch cannot touch more than ${DZ8} blocks`}).refine(($)=>Object.values($.set??{}).every((Z)=>JSON.stringify(Z).length<=LZ8),{message:`Each block must be at most ${LZ8} bytes`}).refine(($)=>[...Object.keys($.set??{}),...$.delete??[]].every((Z)=>Z.length<=wZ8),{message:`Each block key must be at most ${wZ8} characters`}),jZ8=IS0(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(!_i6(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||!BZ8(B,{organizationId:Y.id,virtualMcpId:X,branch:J}))return $.json({error:"Unauthorized"},401)}if(!await o3(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(!wT0(K))return $.json({error:"Project has no preview server configured"},404);let F=W.connections?.map((B)=>B.connection_id)??[],U=l40(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 AZ8=($)=>{let Z=new G1;if(Z.use("*",ki),Z.use("*",s$8),Z.route("/",fk0()),Z.route("/",b88()),Z.route("/",z88()),Z.route("/",m58()),Z.route("/",x58()),Z.route("/",l58()),Z.route("/",y58()),Z.route("/",RS0()),Z.route("/tools",r58()),Z.route("/",n58()),Z.route("/",B58({kvStorage:$.kvStorage})),Z.route("/",U58()),Z.route("/fs",M58({getConnection:$.getNatsConnection})),Z.route("/sandbox",WZ8()),Z.route("/decofile",zZ8()),Z.route("/",_58()),Z.route("/",V58()),Z.route("/deco-sites",gk0()),Z.route("/hosting",H88()),Z.route("/monitor",L88()),Z.route("/sso",Ck0()),Z.route("/",qS0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",X88()),$.mountDevAssets)Z.route("/dev-assets",ck0({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("/",W08()),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",S58()),Z.route("/mcp",Rq0()),Z.route("/mcp/self",zS0()),Z.route("/mcp",Iq0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var TZ8=D(()=>{F8();e$8();zk0();J88();jF1();F88();w88();mk0();Py();BF1();TF1();N58();O58();I58();k58();z$0();WF1();Vq0();cU1();C58();v58();f58();g58();iU1();d58();t58();pU1();a58();nU1();qq0();KZ8();PZ8()});function fi6($){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 yi6=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},RZ8=()=>{let $=new G1;return $.use("*",yi6),$.get("/",async(Z)=>{let Q=T0(),Y=Q.decoSupabaseUrl,X=Q.decoSupabaseServiceKey;if(!Y||!X)return Z.json({apps:[]});try{let J=await oJ(Y,X,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:fi6(J)})}catch(J){return console.error("[deco-apps] GET error:",J),Z.json({error:"Failed to fetch apps"},502)}}),$};var qZ8=D(()=>{F8();D$();zV0()});import{z as h1}from"zod";function JN($,Z="invalid_request_error",Q=null,Y=null){return{error:{message:$,type:Z,param:Q,code:Y}}}function ni6($){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 ti6($,Z,Q){try{return JSON.parse($)}catch{throw new VZ8(`Invalid JSON in tool call arguments for function '${Q}' (tool_call_id: ${Z}): ${$}`)}}function oi6($){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:ti6(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 ri6($){let Z=$.map((Q)=>{let Y=Q.function.parameters?BY(Q.function.parameters):BY({type:"object",properties:{}});return[Q.function.name,R$({description:Q.function.description,inputSchema:Y})]});return Object.fromEntries(Z)}function ai6($){if(!$)return;return{openai:{response_format:$}}}function si6(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function MZ8($,Z,Q,Y,X,J){let G={model:$,instructions:Z.filter((W)=>W.role==="system"),messages:Z.filter((W)=>W.role!=="system"),tools:Q,temperature:Y.temperature,maxOutputTokens: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 IZ8($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var gi6=256,hi6,ui6,li6,ci6,mi6,di6,ii6,pi6,VZ8,kZ8,SZ8;var CZ8=D(()=>{i4();F8();ai();AH();hi6=h1.object({type:h1.literal("function"),function:h1.object({name:h1.string(),description:h1.string().optional(),parameters:h1.record(h1.string(),h1.unknown()).optional()})}),ui6=h1.object({id:h1.string(),type:h1.literal("function"),function:h1.object({name:h1.string(),arguments:h1.string()})}),li6=h1.discriminatedUnion("role",[h1.object({role:h1.literal("system"),content:h1.string(),name:h1.string().optional()}),h1.object({role:h1.literal("user"),content:h1.union([h1.string(),h1.array(h1.union([h1.object({type:h1.literal("text"),text:h1.string()}),h1.object({type:h1.literal("image_url"),image_url:h1.object({url:h1.string(),detail:h1.string().optional()})})]))]),name:h1.string().optional()}),h1.object({role:h1.literal("assistant"),content:h1.string().nullable().optional(),name:h1.string().optional(),tool_calls:h1.array(ui6).optional()}),h1.object({role:h1.literal("tool"),content:h1.string(),tool_call_id:h1.string()})]),ci6=h1.object({type:h1.literal("text")}),mi6=h1.object({type:h1.literal("json_object")}),di6=h1.object({type:h1.literal("json_schema"),json_schema:h1.object({name:h1.string(),description:h1.string().optional(),schema:h1.record(h1.string(),h1.unknown()),strict:h1.boolean().optional()})}),ii6=h1.union([ci6,mi6,di6]),pi6=h1.object({model:h1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:h1.array(li6),stream:h1.boolean().optional().default(!1),temperature:h1.number().min(0).max(2).optional(),max_tokens:h1.number().positive().optional(),top_p:h1.number().min(0).max(1).optional(),frequency_penalty:h1.number().min(-2).max(2).optional(),presence_penalty:h1.number().min(-2).max(2).optional(),stop:h1.union([h1.string(),h1.array(h1.string())]).optional(),tools:h1.array(hi6).optional(),tool_choice:h1.union([h1.literal("auto"),h1.literal("none"),h1.literal("required"),h1.object({type:h1.literal("function"),function:h1.object({name:h1.string()})})]).optional(),response_format:ii6.optional(),user:h1.string().optional()});VZ8=class VZ8 extends Error{constructor($){super($);this.name="MessageConversionError"}};kZ8=new G1;kZ8.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),Q=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(JN("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(JN("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(JN("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Y=await $.req.json(),X=pi6.safeParse(Y);if(!X.success){let w=X.error.issues[0]??{message:"Invalid request",path:[]};return $.json(JN(`Invalid request: ${w.message}`,"invalid_request_error",w.path.length>0?w.path.join("."):null),400)}let J=X.data,G=ni6(J.model);if(!G)return $.json(JN("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)=>rz(E.providerId));if(!j)return $.json(JN("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(JN(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),U=oi6(J.messages),N=J.tools?ri6(J.tools):void 0,B=ai6(J.response_format),O=si6(),L=Math.floor(Date.now()/1000);if(J.stream)return oO($,async(w)=>{let j=MZ8(F,U,N,J,B,$.req.raw.signal);try{let E=uj(j),z=!1,T=0,P="",A=async()=>{if(P.length===0)return;let q=P;P="",await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{content:q},finish_reason:null}]})})};for await(let q of E.stream){if(!z&&(q.type==="text-delta"||q.type==="tool-call"))await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),z=!0;if(q.type==="text-delta"){if(P+=q.text,P.length>=gi6)await A()}else if(q.type==="tool-call"){await A();let v=T++;await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{tool_calls:[{index:v,id:q.toolCallId,type:"function",function:{name:q.toolName,arguments:JSON.stringify(q.input)}}]},finish_reason:null}]})})}else if(q.type==="finish")await A(),await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{},finish_reason:IZ8(q.finishReason)}],usage:q.totalUsage?{prompt_tokens:q.totalUsage.inputTokens??0,completion_tokens:q.totalUsage.outputTokens??0,total_tokens:q.totalUsage.totalTokens??0}:void 0})})}await A(),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=MZ8(F,U,N,J,B,$.req.raw.signal),j=await MU(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:O,object:"chat.completion",created:L,model:J.model,choices:[{index:0,message:E,finish_reason:IZ8(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(JN("Request aborted","invalid_request_error"),400);if(X.name==="MessageConversionError")return $.json(JN(X.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",X.message,X.stack),$.json(JN(X.message,"server_error"),500)}});SZ8=kZ8});function ei6($){if(typeof $!=="object"||$===null)return!1;let Q=$.githubRepo?.url;return typeof Q==="string"&&Q.length>0}function _Z8(){let $=new G1;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=n0(Q);if(!Y)return Z.json({error:"Authentication required"},401);let J=(Z.req.query("site")??"").trim().toLowerCase();if(!M7(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||I9(H))continue;let F=await Q.storage.virtualMcps.list(H.id);for(let U of F){if(uW0(U)!==J)continue;if(!ei6(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 vZ8=D(()=>{F8();OW()});var xZ8;var bZ8=D(()=>{xZ8={name:"decocms",version:"4.384.2",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^4.0.58","@ai-sdk/google":"^4.0.76","@ai-sdk/openai":"^4.0.71","@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":"^3.1.0","@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":"^4.0.17","@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:"^7.0.107","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 Qp6(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??Zp6}}var fZ8,Zp6="https://ph.studio.decocms.com",yZ8;var gZ8=D(()=>{F8();ks();Pf();J9();D$();nH1();bZ8();fZ8=new G1;fZ8.get("/",($)=>{let Z={version:xZ8.version,theme:DJ$(),...rK().logo&&{logo:rK().logo},...PO()&&{internalUrl:$d1()},...T0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!T0().firecrawlApiKey,hostingEnabled:!!T0().controlplaneRestUrl&&!!T0().controlplaneServiceToken,hostingControlPlaneGa:T0().hostingControlPlaneGa,monitorEnabled:!!T0().clickhouseAnalyticsUrl&&!!T0().clickhouseAnalyticsPassword,monitorGa:T0().monitorGa,plansEnabled:T0().plansEnabled,auth:e18(),posthog:Qp6(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:WD()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});yZ8=fZ8});function Jp($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function TN1($){return(Jp($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((Q)=>Q.charAt(0).toUpperCase()+Q.slice(1)).join(" ")}function uZ8($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(Jp($))}&sz=${Z}`}function hZ8($,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 lZ8($){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()?hZ8(`${X.trim().replace(/\s+/g," ")} \u2014 ${G}`,200):hZ8(`How does ${Q} really perform? ${G}`,200);return{title:J,description:W}}import{z as o0}from"zod";var xy,Yp6,Xp6,Jp6,Gp6,cZ8;var mZ8=D(()=>{xy=o0.enum(["good","bad","neutral"]),Yp6=o0.preprocess(($)=>{if(Array.isArray($))return{kind:"text",value:$.find((Q)=>Q!==null&&typeof Q!=="object")??""};return $!==null&&typeof $==="object"?$:{kind:"text",value:$}},o0.object({kind:o0.enum(["text","number","sparkline","badge","score"]).catch("text"),value:o0.coerce.string().optional(),tone:xy.optional(),muted:o0.boolean().optional(),delta:o0.coerce.string().optional(),deltaDir:o0.enum(["up","down","neutral"]).optional(),points:o0.array(o0.coerce.number()).optional(),label:o0.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 $})),Xp6=o0.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},o0.array(Yp6)),Jp6={key:o0.coerce.string(),title:o0.coerce.string(),eyebrow:o0.coerce.string().optional(),headline:o0.coerce.string(),annotation:o0.coerce.string().optional(),methodology:o0.coerce.string().optional(),sources:o0.array(o0.object({name:o0.coerce.string(),logoUrl:o0.coerce.string()})).optional()},Gp6=o0.discriminatedUnion("template",[o0.object({template:o0.literal("cover"),score:o0.object({value:o0.coerce.number(),max:o0.coerce.number().optional(),grade:o0.coerce.string().optional(),label:o0.coerce.string().optional()}).optional(),brandImage:o0.coerce.string().optional(),screenshot:o0.coerce.string().optional(),mobileScreenshot:o0.coerce.string().optional()}),o0.object({template:o0.literal("cta"),ctaUrl:o0.coerce.string().optional(),ctaLabel:o0.coerce.string().optional(),bullets:o0.array(o0.coerce.string()).optional()}),o0.object({template:o0.literal("series"),points:o0.array(o0.coerce.number()).min(2),xLabels:o0.array(o0.coerce.string()).min(1),unit:o0.coerce.string().optional(),callout:o0.object({index:o0.coerce.number(),value:o0.coerce.string(),tone:xy.optional()})}),o0.object({template:o0.literal("threshold"),value:o0.coerce.string().default(""),metricLabel:o0.coerce.string().optional(),ratio:o0.coerce.number(),thresholdRatio:o0.coerce.number().optional(),thresholdLabel:o0.coerce.string().default(""),tone:xy.optional()}),o0.object({template:o0.literal("stats"),stats:o0.array(o0.object({value:o0.coerce.string(),label:o0.coerce.string(),tone:xy.optional()})).min(1)}),o0.object({template:o0.literal("bars"),items:o0.array(o0.object({value:o0.coerce.string(),label:o0.coerce.string(),ratio:o0.coerce.number(),tone:xy.optional()})).min(1)}),o0.object({template:o0.literal("gauges"),gauges:o0.array(o0.object({label:o0.coerce.string(),value:o0.coerce.string(),status:o0.enum(["good","warn","bad"]).catch("warn"),caption:o0.coerce.string().optional(),ratio:o0.coerce.number().optional()})).min(1)}),o0.object({template:o0.literal("checklist"),checks:o0.array(o0.object({label:o0.coerce.string(),status:o0.enum(["pass","fail","warn"]).catch("fail"),value:o0.coerce.string().optional()})).min(1)}),o0.object({template:o0.literal("table"),columns:o0.array(o0.object({label:o0.coerce.string(),align:o0.enum(["left","right"]).optional()})).min(1),rows:o0.array(Xp6).min(1),highlightRow:o0.coerce.number().optional()}),o0.object({template:o0.literal("products"),products:o0.array(o0.object({name:o0.coerce.string(),price:o0.coerce.string().optional(),image:o0.coerce.string().optional(),url:o0.coerce.string().optional()})).min(1)}),o0.object({template:o0.literal("list"),entries:o0.array(o0.object({label:o0.coerce.string(),severity:o0.enum(["error","warning","notice"]).catch("notice")})).min(1),moreCount:o0.coerce.number().optional()}),o0.object({template:o0.literal("keywords"),volumeLabel:o0.coerce.string().optional(),keywords:o0.array(o0.object({term:o0.coerce.string(),volume:o0.coerce.string(),position:o0.coerce.number().catch(0)})).min(1)}),o0.object({template:o0.literal("competitor"),metricLabel:o0.coerce.string().optional(),competitors:o0.array(o0.object({name:o0.coerce.string(),value:o0.coerce.string(),tone:xy.optional(),isYou:o0.boolean().optional()})).min(1)}),o0.object({template:o0.literal("scorecard"),rivalLabel:o0.coerce.string().optional(),dimensions:o0.array(o0.object({label:o0.coerce.string(),you:o0.coerce.string(),rival:o0.coerce.string().optional(),rivalName:o0.coerce.string().optional(),tone:xy.optional()})).min(1)})]),cZ8=o0.object({...Jp6,template:Gp6})});function iS0($){let Z=[],Q=[...$.sections].sort((X,J)=>X.position-J.position).map((X)=>{let J=cZ8.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 RN1=D(()=>{mZ8()});import{join as dZ8}from"path";async function Kp6($){try{let Z=await fetch(`${oF({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(Wp6)});if(!Z.ok)return null;let Q=await Z.json(),{deck:Y}=iS0(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()||TN1($),score:Y.meta.scores?.cover??G?.score?.value,verdict:X?.annotation?.trim()||X?.headline?.trim()||void 0}}catch{return null}}function O3($){return $.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""")}function Hp6($,Z){let Q=Jp($),Y=Z?.brand?.trim()||TN1(Q),X=uZ8(Q,128),G=`${(T0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(Q)}`,{title:W,description:K}=lZ8({brand:Y,domain:Q,score:Z?.score,verdict:Z?.verdict}),H=`${G}/og.png`,F=`${Y} commerce report by decocms`;return[`<title>${O3(W)}</title>`,`<meta name="description" content="${O3(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="${O3(W)}" />`,`<meta property="og:description" content="${O3(K)}" />`,`<meta property="og:url" content="${O3(G)}" />`,`<meta property="og:image" content="${O3(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${O3(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${O3(W)}" />`,`<meta name="twitter:description" content="${O3(K)}" />`,`<meta name="twitter:image" content="${O3(H)}" />`,`<meta name="twitter:image:alt" content="${O3(F)}" />`,`<link rel="canonical" href="${O3(G)}" />`,`<link rel="icon" href="${O3(X)}" sizes="any" />`].join(`
|
|
3460
3460
|
`)}function Fp6($,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}
|
|
3461
3461
|
</head>`)}function iZ8($){let Z=new G1;return Z.get("/:domain/og.png",async(Q)=>{let Y=Jp(Q.req.param("domain")),X=async()=>{let J=$?Bun.file(dZ8($,"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(`${oF({})}/api/v2/public/diagnostics/${encodeURIComponent(Y)}/og.png`,{signal:AbortSignal.timeout(Up6)}),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=$?dZ8($,"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 Kp6(Jp(Y)),K=Hp6(Y,W);return Q.html(Fp6(G,K),200,{"Cache-Control":"public, max-age=0, s-maxage=300"})}catch{return Q.html(G)}}),Z}var Wp6=2500,Up6=1e4;var pZ8=D(()=>{F8();RN1();xA();D$()});function i40($,Z){return fetch(`${oF({})}${$}`,Z)}async function Np6($,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 i40(`/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}=iS0(G);return{status:W.slides.length?"ready":"empty",deck:W,scanned_at:G.scanned_at,drops:K}}var Bp6,aO,nZ8=async($,Z)=>{if(!$.get("reportUser"))return $.json({error:"Authentication required"},401);await Z();return},tZ8;var oZ8=D(()=>{F8();iG();xA();RN1();Bp6=new Set(["complete","errored","terminated","unknown"]),aO=new G1;aO.use("*",async($,Z)=>{let Q=await y8.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});aO.use("/link-token/*",nZ8);aO.use("/suggest",nZ8);aO.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 Np6(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)}});aO.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 i40("/api/v2/diagnostics/run",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${bA({})}`},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)}});aO.get("/status",async($)=>{let Z=$.req.query("id");if(!Z)return $.json({error:"id is required"},400);try{let Q=await i40(`/api/v2/diagnostics/status?id=${encodeURIComponent(Z)}`,{headers:{Authorization:`Bearer ${bA({})}`}});if(!Q.ok)return $.json({error:`status HTTP ${Q.status}`},502);let X=(await Q.json()).status??"unknown",J={done:Bp6.has(X),status:X};return $.json(J)}catch{return $.json({error:"status failed"},502)}});aO.get("/link-token/:id",async($)=>{let Z=$.req.param("id");try{let Q=await i40(`/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)}});aO.get("/suggest",async($)=>{let Z=($.req.query("q")??"").trim().slice(0,64);if(Z.length<2)return $.json({suggestions:[]});try{let Q=await i40(`/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:[]})}});tZ8=aO});var Op6=1048576,qN1;var rZ8=D(()=>{F8();xH();D$();_H1();qN1=new G1;qN1.post("/webhook",D9({maxSize:Op6,onError:($)=>$.json({error:"payload too large"},413)}),async($)=>{let Z=T0().stripeWebhookSecret;if(!Z)return $.json({error:"stripe billing not configured"},503);let Q=await $.req.text();if(!U18(Q,$.req.header("stripe-signature"),Z))return $.json({error:"invalid signature"},400);let X=N18(Q);if(!X)return $.json({error:"invalid payload"},400);let J=await B18(X);return console.log("stripe webhook",{eventId:X.id,type:X.type,livemode:X.livemode,...J}),$.json({received:!0})})});import{timingSafeEqual as Dp6}from"crypto";function jp6($,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 Dp6(Buffer.from(X),Buffer.from(Y))}function Ep6($,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 aZ8($){let Z=new G1;return Z.post("/webhook",D9({maxSize:Lp6,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(!jp6(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"&&!wp6.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 M61())?.markTenantPoolsDirty(F,H)??[];return Q.json({ok:!0,pools:N})}let W=Ep6(J??"",G);if(W.length===0)return Q.json({ok:!0,ignored:"no-pr"});let K=await zp6($,W);return Q.json({ok:!0,refreshed:K})}),Z}async function zp6($,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 jS$(K,G.organizationId,G.taskBoardItemId)!==null)Q++}catch(W){console.error(`[github-webhook] pr card refresh failed for ${G.taskBoardItemId}:`,W)}}return Q}var Lp6=5242880,wp6;var sZ8=D(()=>{F8();xH();NH();S7();wp6=new Set(["check_suite","issue_comment"])});function eZ8($){let Z=new hO($.db,new WX($.encryptionKey)),Q=new G1;return Q.get("/attachments/:token",async(Y)=>{let X=fV$(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 xX(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 $78=D(()=>{F8();tD();WZ1();nj()});function Z78($){let Z=new hO($.db,new WX($.encryptionKey));async function Q(X,J){let G=ct$(J);if(!G)return;let W=await Z.getByWebhookSecret(X);if(!W?.enabled)return;let K=await CW($.db,W.organizationId);if(!K)return;if(await TV0(K,W,G)==="started")console.log(`[jira-webhook] started a run for ${G.issueKey} entering "${G.toStatus}"`)}let Y=new G1;return Y.post("/webhook/:secret",D9({maxSize:Pp6}),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 Pp6=1048576;var Q78=D(()=>{F8();xH();tD();RV0();Df()});import{DBOS as pS0,SchedulerMode as Ap6}from"@dbos-inc/dbos-sdk";function X78($){IN1=$}function J78(){if(!IN1)throw Error("[jira-trigger] runtime not initialized \u2014 setJiraTriggerSweepRuntime() must run before the workflow fires");return IN1}function G78(){let $=J78();return new hO($.db,new WX($.encryptionKey))}async function qp6($,Z){try{let Q=await G78().getById($);if(!Q?.enabled||!Q.boardId)return{integrationId:$,started:0};let Y=await CW(J78().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 xX(Q.siteUrl,Q.email,Q.apiToken),W=`(${await J.getBoardScopeJql(Q.boardId)}) AND status CHANGED AFTER "-${Y78}m"`,K=0,H;for(let F=0;F<Rp6;F++){let U=await J.searchIssues({jql:W,nextPageToken:H,expandChangelog:!0});for(let N of U.issues){let B=mt$(N,N.changelog?.histories??[],Z);for(let O of B)if(await TV0(Y,Q,O)==="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 Mp6($,Z){let Q=new Date($.getTime()-Y78*60000),Y=await pS0.runStep(()=>G78().listEnabledIds(),{name:"loadJiraIntegrations"});if(Y.length===0)return;let X=await Promise.all(Y.map((J)=>pS0.runStep(()=>qp6(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 W78(){if(MN1)return;MN1=pS0.registerWorkflow(Mp6,{name:"jiraTriggerSweepWorkflow"}),pS0.registerScheduled(MN1,{name:"jiraTriggerSweepWorkflow",crontab:Tp6,mode:Ap6.ExactlyOncePerIntervalWhenActive})}var Tp6="7-59/10 * * * *",Y78=15,Rp6=5,IN1=null,MN1=null;var K78=D(()=>{tD();Df();nj();RV0()});function H78($,Z){if(Z.startsWith("text/html")||Z.startsWith("image/svg"))$.set("Content-Security-Policy","sandbox allow-scripts allow-modals allow-same-origin")}var F78,Ip6,Vp6,U78;var N78=D(()=>{F8();oK();Yd();cA();F78=new G1,Ip6=["range","if-none-match","if-modified-since"],Vp6=["content-type","content-length","content-range","accept-ranges","etag","last-modified"];F78.get("/:org/files/*",async($)=>{let Z=$.get("studioContext"),Q=Z.organization?.id;if(!Z.auth?.user?.id){if(Vi($))return $.redirect(`/login?next=${encodeURIComponent($.req.path)}`,302);throw new M$(401,{message:"Authentication required"})}if(!Q)throw new M$(401,{message:"Organization context required"});let Y=$.req.path.replace(/^.*\/files\//,"");if(!Y)throw new M$(400,{message:"Missing file key"});let X=await e10(Y,Z);if(!X)throw new M$(503,{message:"Object storage not configured"});if(X.startsWith("data:")&&PJ()){let K=X.match(/^data:([^;]+);base64,(.+)$/s);if(!K)throw new M$(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 H78(N,H),new Response(U,{status:200,headers:N})}let J=new Headers;for(let K of Ip6){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 M$(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 M$(502,{message:"Upstream storage error"});let W=new Headers;for(let K of Vp6){let H=G.headers.get(K);if(H)W.set(K,H)}return W.set("Cache-Control","private, max-age=86400"),H78(W,W.get("content-type")??""),new Response(G.body,{status:G.status,headers:W})});U78=F78});var p40=x((fy)=>{var kp6=fy&&fy.__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]}),Sp6=fy&&fy.__exportStar||function($,Z){for(var Q in $)if(Q!=="default"&&!Object.prototype.hasOwnProperty.call(Z,Q))kp6(Z,$,Q)};Object.defineProperty(fy,"__esModule",{value:!0});Sp6(GG(),fy)});var D78=x((B78)=>{Object.defineProperty(B78,"__esModule",{value:!0});B78.version=void 0;B78.version="3.4.0"});var j78=x((GN)=>{var Cp6=GN&&GN.__importDefault||function($){return $&&$.__esModule?$:{default:$}};Object.defineProperty(GN,"__esModule",{value:!0});GN.NodeTransport=GN.VERSION=void 0;GN.nodeResolveHost=yp6;var d5=p40(),_p6=S0("net"),VN1=S0("tls"),vp6=S0("path"),L78=S0("fs"),bp6=Cp6(S0("dns")),xp6=D78();GN.VERSION=xp6.version;var fp6="nats.js";class w78{socket;version;lang;yields=[];signal=(0,d5.deferred)();closedNotification=(0,d5.deferred)();options;connected=!1;tlsName="";done=!1;closeError;constructor(){this.lang=fp6,this.version=GN.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,d5.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 d5.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 d5.errors.ConnectionError("error connecting - node provided an undefined error");let{code:G}=J,W=G==="ECONNREFUSED"?new d5.errors.ConnectionError("connection refused",{cause:J}):J;throw this.socket?.destroy(),W}}dial($){let Z=(0,d5.deferred)(),Q,Y=(0,_p6.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,d5.deferred)(),Z;return this.socket.on("data",(Q)=>{this.yields.push(Q);let Y=d5.DataBuffer.concat(...this.yields),X=(0,d5.extractProtocolMessage)(Y);if(X!=="")try{let J=d5.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,d5.deferred)();try{if($=(0,vp6.resolve)($),!(0,L78.existsSync)($))Z.reject(Error(`${$} doesn't exist`));(0,L78.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,d5.extend)(Q,this.options.tls,X)}catch(X){return Promise.reject(new d5.errors.ConnectionError(X.message,{cause:X}))}let Y=(0,d5.deferred)();try{let X=(0,VN1.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 d5.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,d5.extend)(Z,this.options.tls,Y)}catch(Y){return Promise.reject(new d5.errors.ConnectionError(Y.message,{cause:Y}))}let Q=(0,d5.deferred)();try{let Y=(0,VN1.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 d5.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,d5.render)($[Z])}`);yield $[Z]}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,d5.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 VN1.TLSSocket}_send($){if(this.isClosed||this.socket===void 0)return Promise.resolve();if(this.options.debug)console.info(`< ${(0,d5.render)($)}`);let Z=(0,d5.deferred)();try{this.socket.write($,(Q)=>{if(Q){if(this.options.debug)console.error(`!!! ${(0,d5.render)($)}: ${Q}`);return Z.reject(Q)}return Z.resolve()})}catch(Q){if(this.options.debug)console.error(`!!! ${(0,d5.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}}GN.NodeTransport=w78;function yp6($){let Z=(0,d5.deferred)();return bp6.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 T78=x((A78)=>{Object.defineProperty(A78,"__esModule",{value:!0});A78.connect=gp6;var E78=j78(),z78=p40(),P78=p40();function gp6($={}){if((0,P78.hasWsProtocol)($))return Promise.reject(P78.errors.InvalidArgumentError.format("servers","node client doesn't support websockets, use the 'wsconnect' function instead"));return(0,z78.setTransportFactory)({factory:()=>{return new E78.NodeTransport},dnsResolveFn:E78.nodeResolveHost}),z78.NatsConnectionImpl.connect($)}});var R78=x((sO)=>{var up6=sO&&sO.__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]}),lp6=sO&&sO.__exportStar||function($,Z){for(var Q in $)if(Q!=="default"&&!Object.prototype.hasOwnProperty.call(Z,Q))up6(Z,$,Q)};Object.defineProperty(sO,"__esModule",{value:!0});sO.connect=void 0;var cp6=T78();Object.defineProperty(sO,"connect",{enumerable:!0,get:function(){return cp6.connect}});lp6(p40(),sO)});function V78($){let Z=$?.connectFn??pp6,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 O=0;while(!J)try{Q=await Z({servers:N,timeout:ip6,reconnect:!0,maxReconnectAttempts:-1,...B?{authenticator:B}:{}}),console.log(`[NatsProvider] Connected to ${Q.getServer()} after ${O} attempt(s)`),Y=null,G=!1,F(Q),H();return}catch{O++;let L=UQ(dp6,mp6,O-1,2,0.5);await n$(L)}}return{init(N,B){if(X)return;X=!0,J=!1;let O=B?.creds?q78.credsAuthenticator(new TextEncoder().encode(B.creds)):void 0;U(N,O).catch(()=>{})},isConnected(){return K()},getConnection(){return K()?Q:null},getJetStream(){if(!K())return null;if(!Y)Y=I78.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 pp6($){return M78.connect($)}var q78,M78,I78,mp6=100,dp6=3000,ip6=3000;var k78=D(()=>{A8();q78=_(xp(),1),M78=_(R78(),1),I78=_(zN(),1)});function kN1($,Z){return`${$}.${Z}`}class SN1{cache;constructor($){this.cache=wi({ttlMs:$?.ttlMs??np6,maxSize:$?.maxSize??tp6})}async get($,Z){return this.cache.get(kN1($,Z))??null}async set($,Z,Q){this.cache.set(kN1($,Z),Q)}async invalidate($,Z){this.cache.delete(kN1($,Z))}teardown(){this.cache.clear()}}var np6=600000,tp6=5000;var S78=()=>{};function nS0($,Z){return`${$}:${Z}`}function CN1($){let Z=wi({ttlMs:$?.ttlMs??op6,maxSize:$?.maxSize??rp6}),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(C78,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(nS0(K,H))},set(K,H,F){Z.set(nS0(K,H),F)},invalidate(K,H){Z.delete(nS0(K,H)),W(K,H)},start(){if(G)return;let K=Q?.();if(!K)return;G=K.subscribe(C78),(async()=>{for await(let H of G)try{let F=JSON.parse(J.decode(H.data));if(F.originId===Y)continue;Z.delete(nS0(F.organizationId,F.keyId))}catch{}})().catch(console.error)},teardown(){G?.unsubscribe(),G=null,Z.clear()}}}var C78="studio.ai-provider-keys.invalidate",op6=30000,rp6=5000;var _78=()=>{};class _N1{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 v78=($)=>{let Z;return()=>Z??=$()},vN1,bN1;var b78=D(()=>{_6();vN1=v78(()=>T$.createHistogram("decopilot.stream.encode_ms",{description:"Per-chunk JSON.stringify+encode time for decopilot stream",unit:"ms"})),bN1=v78(()=>T$.createCounter("decopilot.stream.published_chunks",{description:"Logical decopilot stream chunks published to JetStream",unit:"{chunks}"}))});function Yn6($=y78){return{name:bU,subjects:[`${JQ1}.>`],storage:gH.StorageType.File,max_age:ep6,max_bytes:Zn6,max_msgs_per_subject:Qn6,discard:gH.DiscardPolicy.Old,retention:gH.RetentionPolicy.Limits,duplicate_window:$n6,num_replicas:$}}class g78{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 x78($){let Z=f78.headers();for(let[Q,Y]of Object.entries($))Z.set(Q,Y);return Z}function Wn6($,Z){let Q=0;return{publish(Y,X,J,G){Y.publish(X,J,G?{headers:G}:void 0).catch((W)=>{if(Q++,sp6().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 Kn6($,Z){return $.info?.cluster?Z:1}function Hn6($){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 xN1{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=Yn6(X);try{await Y.streams.info(bU),await Y.streams.update(bU,J)}catch(G){if(G instanceof Error&&G.message.includes("stream not found"))await Y.streams.add(J),await Y.streams.update(bU,J);else if(G instanceof Error&&/can ?not change.*storage|storage type/i.test(G.message))await Y.streams.delete(bU),await Y.streams.add(J);else throw G}},Q=await a8(async()=>{let Y=this.options.getJetStreamManager?await this.options.getJetStreamManager():await gH.jetstreamManager($),X=Kn6($,y78);try{await Z(Y,X)}catch(J){if(X<=1||!Hn6(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:Bd});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=Wn6(Z,Y),G=!1,W=()=>{if(G)return;G=!0;let H=Qv$(Z);X.publish(H.subject,H.data).catch(()=>{})};Q.addEventListener("abort",W,{once:!0});let K=(H)=>{let F=performance.now(),U=WQ1(H,{runId:Z}),N=performance.now()-F;vN1().record(N),bN1().add(1,{"org.id":Y??"unknown"}),Gn6?.record(N,U.reduce((B,O)=>B+O.data.length,0));for(let B of U)J.publish(X,B.subject,B.data,B.headers?x78(B.headers):void 0)};return(async()=>{let H=$.getReader(),F=0,U=0,N;try{while(!0){let{done:B,value:O}=await H.read();if(B)break;if(K(O),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(),Jn6)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:x78(Z.headers)}:{},...Z.msgId?{msgID:Z.msgId}:{}}),{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:Bd}),!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=WQ1(Z,{runId:$,dedup:Q});vN1().record(performance.now()-X),bN1().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=Zv$({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"?gH.DeliverPolicy.New:gH.DeliverPolicy.All,J=Q?.closeOnDone??!1,G=ZE($),W;try{W=await a8(async()=>{return(await Y.consumers.get(bU,{filter_subjects:G,deliver_policy:X})).consume()},{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:Bd})}catch(L){return console.warn("[Decopilot] JetStream tail unavailable (non-critical):",L?.message??L),null}let F=tR0({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(dR0()).pipeThrough(iR0()).getReader(),U=!1,N=()=>{if(U)return;U=!0;try{F.releaseLock()}catch{}},B=!1,O=()=>{if(B)return;B=!0,W.stop(),F.cancel().catch(()=>{}),N()};return Z?.addEventListener("abort",O,{once:!0}),new ReadableStream({async pull(L){for(;;){let{done:w,value:j}=await F.read();if(w){O(),L.close();return}let E=j;if(E.kind==="done"){if(J){O(),L.close();return}continue}L.enqueue(E.chunk);return}},cancel(){O()}})}purge($){if(!this.jsm)return;this.jsm.streams.purge(bU,{filter:ZE($)}).catch(()=>{})}teardown(){this.js=null,this.jsm=null}}var gH,f78,ap6=($)=>{let Z;return()=>Z??=$()},sp6,ep6=86400000000000,$n6=120000000000,Zn6=4294967296,y78,Qn6=500000,Xn6,Jn6,Gn6;var h78=D(()=>{A8();KQ1();oR0();pR0();_6();b78();gH=_(zN(),1),f78=_(xp(),1),sp6=ap6(()=>T$.createCounter("decopilot.stream.publish_errors",{description:"Number of JetStream publish failures for decopilot stream chunks",unit:"{errors}"})),y78=Math.max(1,Number(process.env.DECOPILOT_STREAM_REPLICAS??3)||3);Xn6=process.env.STREAM_ENCODE_TRACE==="1",Jn6=process.env.DECOPILOT_STREAM_TRACE==="1";Gn6=Xn6?new g78:null});function tS0($,Z,Q,Y){if(!Y)return!1;return $.emit(Z,JF(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 u78=D(()=>{Z4()});class fN1{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 Fn6($,Z){let Q=$.startsWith("thread:")?BH($):$;return[...new Set([Z,Q].filter((Y)=>!!Y))]}async function l78($,Z){let Q=Z.organizationId;try{let Y=await $.storage.taskBoard.linkedThreadIds(Z.id,Q);for(let X of Y){let J=await PU($,X);if(!J?.owner||!J?.name)continue;let G=await $.storage.threads.get(X),W=await Dm($,{threadId:X,runBranch:G?.branch}),K=Fn6(W,await F20($,X)),H=await re($,Q,$81(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 X3(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 c78=D(()=>{aZ();TW();S7()});async function m78($,Z,Q){let Y=Z.organizationId;if(!gJ(Z))return!1;if(!Lf(Q))return!1;if(await $.storage.taskBoard.hasHumanRejectedDone(Z.id,Y))return!1;let X=await $.storage.organizationSettings.get(Y),J=KU(X?.flags),G=await $.storage.taskBoard.update(Z.id,Y,{status:J},Z.updatedBy);return await r6($,{taskBoardItemId:Z.id,action:"status_changed",actorId:null,data:{from:Z.status,to:J,reason:"pr_merged"}}),T8(Y,G),console.log(`[task-board-review-sweeper] ${Z.id}: linked PR already merged \u2014 moved to ${J}`),!0}var d78=D(()=>{f4();yY();rm();wH();C9()});function wn6($){return $ instanceof qX}function jn6($,Z){return Z-$>=Dn6}class yN1{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??Un6;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??Bn6,Q=this.options.itemIntervalMs??Nn6,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()-ZZ1),O71);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()-Ln6));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 U71(this.taskBoard,X,Y),await N71(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!==u$.progress||G.assigneeId!==S8)continue;let W=await this.contextFactory(X,G.assignedBy??G.createdBy);if(!W)continue;await jH(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),wn6(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()+On6)).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!==u$.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(()=>{}),T8(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(!jn6(cB(Q,Z.reviewCycleStartedAt),Date.now()))return;await CU($,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(!gJ(Y))return!1;let X=Y.assigneeId===S8,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 l78(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 em(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 m78(G,Y,W))return!0;if(await ev$(G,Y))return!0;if(await this.resolveConflictFromSweep(G,Y,W))return!0;if(!X)return!1;if(!W71(W))return!1;return await am(G,Y,{previewMatchesHead:K71(W)}),!0}async resolveConflictFromSweep($,Z,Q){let Y=Q.find((X)=>X.state!=="closed"&&X.conflict===!0);if(!Y)return!1;return await aj($,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 Un6=60000,Nn6=300000,Bn6=50,On6=60000,Dn6=900000,Ln6=120000;var i78=D(()=>{f4();WR0();c78();_U();F$0();wH();d78();C9();wW();D71();S7();f10();sm()});import{readdir as En6,rm as oS0}from"fs/promises";import{join as rS0}from"path";async function aS0($){let Z=new Date;Z.setUTCDate(Z.getUTCDate()-zn6),Z.setUTCHours(0,0,0,0);let Q=0;try{let Y=await yy($);for(let X of Y)if(/^\d{4}$/.test(X))Q+=await p78($,X,Z);else if(!X.startsWith(".")){let J=rS0($,X),G=await yy(J);for(let K of G){if(!/^\d{4}$/.test(K))continue;Q+=await p78(J,K,Z)}if((await yy(J)).length===0)await oS0(J,{recursive:!0,force:!0})}}catch(Y){console.warn("monitoring retention cleanup failed:",Y)}return Q}async function p78($,Z,Q){let Y=0,X=rS0($,Z),J=await yy(X);for(let W of J){if(!/^\d{2}$/.test(W))continue;let K=rS0(X,W),H=await yy(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=rS0(K,U);await oS0(B,{recursive:!0,force:!0}),Y++}}if((await yy(K)).length===0)await oS0(K,{recursive:!0,force:!0})}if((await yy(X)).length===0)await oS0(X,{recursive:!0,force:!0});return Y}async function yy($){try{return(await En6($)).filter((Q)=>!Q.startsWith("."))}catch{return[]}}var zn6=30;var gN1=()=>{};import{DBOS as hN1,SchedulerMode as Pn6}from"@dbos-inc/dbos-sdk";async function Tn6(){let $=[rW(),py(),BN()],Z=0;for(let Q of $)try{Z+=await aS0(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 Rn6($,Z){await hN1.runStep(()=>Tn6(),{name:"monitoringRetention"})}function t78(){if(n78)return;n78=!0;let $=hN1.registerWorkflow(Rn6,{name:"monitoringRetentionWorkflow"});hN1.registerScheduled($,{name:"monitoringRetentionWorkflow",crontab:An6,mode:Pn6.ExactlyOncePerIntervalWhenActive})}var An6="23 4 * * *",n78=!1;var o78=D(()=>{j3();gN1()});function r78($){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 cQ.create();X.auth.user={id:Q,role:Y.role},X.organization={id:Y.orgId,slug:Y.orgSlug,name:Y.orgName};let J=await nA($.db,Z,Y.role);return X.boundAuth=RH1({auth:X.authInstance,headers:new Headers,role:Y.role,permissions:J,userId:Q}),X.access=new sz(Q,void 0,X.boundAuth,Y.role,"self"),rj(X,{id:Y.orgId,slug:Y.orgSlug}),X}}var a78=D(()=>{jK();XU()});function qn6(){return[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}]}function Mn6(){return{services:qn6(),migrationsStatus:"pending",serverUrl:null,logs:[]}}function Vn6(){for(let $ of In6)$()}function s78($){let Z=[...uN1.logs,$];uN1={...uN1,logs:Z.length>500?Z.slice(-500):Z},Vn6()}function lN1(){return kn6}var uN1,In6,kn6=!1;var cN1=D(()=>{uN1=Mn6(),In6=new Set});import{EventEmitter as Sn6}from"events";var mN1;var e78=D(()=>{cN1();mN1=new Sn6;mN1.on("request",($)=>{s78($)})});function $Q8(){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=Gp(N.params.name),O=N.params.arguments||{},L=Object.keys(O).map((j)=>Gp(j)),w=L.length>0?L.slice(0,3).join(",")+(L.length>3?"\u2026":""):"";J=`${$9.tool}${B}${$9.dim}(${w})${$9.reset}`}else if(N.method)J=`${$9.dim}${Gp(N.method)}${$9.reset}`}}catch{}}let W=Gp(X);if(X.startsWith("/mcp/conn_")){let F=X.split("/")[2]??"";W=`/mcp/${$9.mcp}${Gp(F.slice(0,12))}\u2026${$9.reset}`}else if(X==="/mcp")W=`${$9.mcp}/mcp${$9.reset}`;else if(X==="/mcp/registry")W=`${$9.mcp}/mcp/registry${$9.reset}`;let K=_n6(Y),H=G?"\u25C0":"\u2190";if(!lN1())console.log(`${$9.dim}${H}${$9.reset} ${K}${Y}${$9.reset} ${W}${J?` ${J}`:""}`);try{await Z()}finally{let F=Date.now()-Q,U=$.res.status,N=Cn6(U),B=F<1000?`${F}ms`:`${(F/1000).toFixed(1)}s`,O=G?"\u25B6":"\u2192";if(!lN1())console.log(`${$9.dim}${O}${$9.reset} ${K}${Y}${$9.reset} ${W}${J?` ${J}`:""} ${N}${U}${$9.reset} ${$9.duration}${B}${$9.reset}`);mN1.emit("request",{method:Y,path:Gp(X),status:U,duration:F,timestamp:new Date})}}}var $9,Cn6=($)=>{if($>=500)return $9.serverError;if($>=400)return $9.clientError;if($>=300)return $9.redirect;return $9.ok},_n6=($)=>{return $9[$]||$9.reset},Gp=($)=>{return $.replace(/\r/g,"").replace(/\n/g,"").replace(/\x1b\[[0-9;]*m/g,"").replace(/[\x00-\x1f\x7f-\x9f]/g,"")};var ZQ8=D(()=>{cN1();e78();$9={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 JQ8}from"crypto";import{mkdir as vn6,readdir as bn6,rm as QQ8,stat as GQ8}from"fs/promises";import{join as iN1,relative as xn6}from"path";import{z as Z8}from"zod";function KQ8($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return iN1(fn6,Z)}function HQ8($){return $.replace(/^\/+/,"").replace(/\.\./g,"")}function dN1($,Z){let Q=KQ8($),Y=HQ8(Z);return iN1(Q,Y)}function yn6($,Z,Q,Y){let X=T0().encryptionKey||"dev-secret",J=`${$}:${Z}:${Q}:${Y}`;return JQ8("sha256",X).update(J).digest("hex")}function XQ8($,Z,Q,Y,X){let J=Math.floor(Date.now()/1000)+Y,G=yn6(Z,Q,J,X),W=new URL(`/api/dev-assets/${Z}/${HQ8(Q)}`,$);return W.searchParams.set("expires",J.toString()),W.searchParams.set("signature",G),W.searchParams.set("method",X),W.toString()}function FQ8($,Z,Q){let Y=`${$}:${Z.getTime()}:${Q}`;return`"${JQ8("md5","etag").update(Y).digest("hex")}"`}async function UQ8($,Z,Q,Y,X){try{let J=await bn6($,{withFileTypes:!0});for(let G of J){let W=iN1($,G.name),H=xn6(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 UQ8(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 GQ8(W);X.objects.push({key:H,size:F.size,lastModified:F.mtime.toISOString(),etag:FQ8(W,F.mtime,F.size)})}catch{}}}}catch{}}function NQ8($,Z){let Y=Q0($).id;return[{name:"LIST_OBJECTS",description:"List objects in the local assets directory with pagination support",inputSchema:Z8.object({prefix:Z8.string().optional(),maxKeys:Z8.number().optional().default(1000),continuationToken:Z8.string().optional(),delimiter:Z8.string().optional()}),outputSchema:Z8.object({objects:Z8.array(Z8.object({key:Z8.string(),size:Z8.number(),lastModified:Z8.string(),etag:Z8.string()})),nextContinuationToken:Z8.string().optional(),isTruncated:Z8.boolean(),commonPrefixes:Z8.array(Z8.string()).optional()}),handler:async(X)=>{let J=X,G=J.prefix||"",W=J.maxKeys??1000,K=J.delimiter,H=J.continuationToken,F=KQ8(Y);await vn6(F,{recursive:!0});let U={objects:[],commonPrefixes:new Set};await UQ8(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),O=N+W<U.objects.length,L=O?B[B.length-1]?.key:void 0;return{objects:B,isTruncated:O,nextContinuationToken:L,commonPrefixes:Array.from(U.commonPrefixes).sort()}}},{name:"GET_OBJECT_METADATA",description:"Get metadata for a file in the local assets directory",inputSchema:Z8.object({key:Z8.string()}),outputSchema:Z8.object({contentType:Z8.string().optional(),contentLength:Z8.number(),lastModified:Z8.string(),etag:Z8.string(),metadata:Z8.record(Z8.string(),Z8.string()).optional()}),handler:async(X)=>{let J=X,G=dN1(Y,J.key),W=await GQ8(G);return{contentType:PF1(J.key),contentLength:W.size,lastModified:W.mtime.toISOString(),etag:FQ8(G,W.mtime,W.size)}}},{name:"GET_PRESIGNED_URL",description:"Generate a presigned URL for downloading a file from local storage",inputSchema:Z8.object({key:Z8.string(),expiresIn:Z8.number().optional()}),outputSchema:Z8.object({url:Z8.string(),expiresIn:Z8.number()}),handler:async(X)=>{let J=X,G=J.expiresIn??YQ8;return{url:XQ8(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:Z8.object({key:Z8.string(),expiresIn:Z8.number().optional(),contentType:Z8.string().optional()}),outputSchema:Z8.object({url:Z8.string(),expiresIn:Z8.number()}),handler:async(X)=>{let J=X,G=J.expiresIn??YQ8;return{url:XQ8(Z,Y,J.key,G,"PUT"),expiresIn:G}}},{name:"DELETE_OBJECT",description:"Delete a single file from local storage",inputSchema:Z8.object({key:Z8.string()}),outputSchema:Z8.object({success:Z8.boolean(),key:Z8.string()}),handler:async(X)=>{let J=X,G=dN1(Y,J.key);try{return await QQ8(G),{success:!0,key:J.key}}catch{return{success:!1,key:J.key}}}},{name:"DELETE_OBJECTS",description:"Delete multiple files from local storage",inputSchema:Z8.object({keys:Z8.array(Z8.string()).max(1000)}),outputSchema:Z8.object({deleted:Z8.array(Z8.string()),errors:Z8.array(Z8.object({key:Z8.string(),message:Z8.string()}))}),handler:async(X)=>{let J=X,G=[],W=[];return await Promise.all(J.keys.map(async(K)=>{let H=dN1(Y,K);try{await QQ8(H),G.push(K)}catch(F){W.push({key:K,message:F instanceof Error?F.message:"Unknown error"})}})),{deleted:G,errors:W}}}]}async function pN1($,Z,Q){let Y=NQ8(Z,Q),X=new gF({name:"dev-assets-mcp",version:"1.0.0"},{capabilities:{tools:{}},jsonSchemaValidator:H9});for(let G of Y){let W="shape"in G.inputSchema?G.inputSchema.shape:Z8.object({}).shape,K=G.outputSchema&&"shape"in G.outputSchema?G.outputSchema.shape:Z8.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 yX({enableJsonResponse:$.headers.get("Accept")?.includes("application/json")??!1});return await X.connect(J),yW(X,J,$,"mcp:dev-assets")}async function BQ8($,Z,Q,Y){let J=NQ8(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 fn6="./data/assets",YQ8=3600,WQ8,OQ8;var DQ8=D(()=>{D$();Ed();F8();pr();bf();TY();mk0();WQ8=new G1;WQ8.all("/",async($)=>{let Z=$.get("studioContext"),Q=new URL($.req.url),Y=`${Q.protocol}//${Q.host}`;return pN1($.req.raw,Z,Y)});OQ8=WQ8});var LQ8={};e4(LQ8,{mountDevRoutes:()=>gn6});function gn6($,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 pN1(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 BQ8(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",OQ8);let Q=new G1;Q.use("*",fH({mountPath:"/api/dev-assets"})),Q.route("/",ck0({orgFromPath:!1})),$.route("/api/dev-assets",Q)}var wQ8=D(()=>{F8();OF1();mk0();DQ8()});import{sql as hn6}from"kysely";import{randomUUID as jQ8}from"crypto";import{z as un6}from"zod";async function cn6($){let Z=new Date().toISOString(),Q=jQ8(),Y=$4.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:jQ8(),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 hn6`SELECT
|
|
3462
3462
|
pg_notify('studio_events', ${Q}),
|