decocms 4.274.0 → 4.274.1
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-uqa-UJn_.js → AlertCircle-EtJ-6uuF.js} +1 -1
- package/dist/client/assets/{AreaChart-DshOC3HB.js → AreaChart-BBxe8dQX.js} +1 -1
- package/dist/client/assets/{ArrowLeft--cC78eXL.js → ArrowLeft-t5XbB5KD.js} +1 -1
- package/dist/client/assets/{ArrowUp-DqvsPYTi.js → ArrowUp-DCsRstkl.js} +1 -1
- package/dist/client/assets/{Check-6F9BZi9G.js → Check-DpXJ8POb.js} +1 -1
- package/dist/client/assets/{CheckCircle-fX4X8i7Q.js → CheckCircle-BYK8KBaZ.js} +1 -1
- package/dist/client/assets/{ChevronDown-B-wHwg0n.js → ChevronDown-B9ansCGL.js} +1 -1
- package/dist/client/assets/{ChevronRight-DA7JeTBs.js → ChevronRight-D6ConQCT.js} +1 -1
- package/dist/client/assets/{ChevronSelectorVertical-BkF9TZo9.js → ChevronSelectorVertical-5lyv2iqA.js} +1 -1
- package/dist/client/assets/{ChevronUp-C6Q9HBjo.js → ChevronUp-_9PJuiCk.js} +1 -1
- package/dist/client/assets/{Copy01-Dmn2TtN9.js → Copy01-Clu6NCsF.js} +1 -1
- package/dist/client/assets/{CreditCard01-3NiG5wuQ.js → CreditCard01-BLTyYUBY.js} +1 -1
- package/dist/client/assets/{DotsVertical-DHdTCXCG.js → DotsVertical-Bj3OwJk0.js} +1 -1
- package/dist/client/assets/{Download01-BsRRHzUw.js → Download01-DH2jc7sP.js} +1 -1
- package/dist/client/assets/{Eye-B5-x0TnF.js → Eye-9ZdTfXOg.js} +1 -1
- package/dist/client/assets/{FilterLines-Bqqoqyws.js → FilterLines-QKV_VPHc.js} +1 -1
- package/dist/client/assets/{Globe01-CLDWpR0g.js → Globe01-C3voGz-f.js} +1 -1
- package/dist/client/assets/{Globe04-CygP9n65.js → Globe04-DPauiy9Y.js} +1 -1
- package/dist/client/assets/{HardDrive-Dh1VzAH0.js → HardDrive-Gwdzs39f.js} +1 -1
- package/dist/client/assets/{Key01-CebX5tvF.js → Key01-DnoAww-7.js} +1 -1
- package/dist/client/assets/{LinkExternal01-D7jyb_3G.js → LinkExternal01-BSXTnvGO.js} +1 -1
- package/dist/client/assets/{LockUnlocked01-CgjiEyvJ.js → LockUnlocked01-Bz7XGcXV.js} +1 -1
- package/dist/client/assets/{LogOut01-DWVYEHCc.js → LogOut01-BCxw-r_3.js} +1 -1
- package/dist/client/assets/{Monitor01-CAqa_PZP.js → Monitor01-B7870i7u.js} +1 -1
- package/dist/client/assets/{Palette-D48uFXlQ.js → Palette-BE2rzvSO.js} +1 -1
- package/dist/client/assets/{Play-CXn7iM98.js → Play-BA6Sru7Z.js} +1 -1
- package/dist/client/assets/{Plus-BWqGuUPT.js → Plus-r9Om1ccf.js} +1 -1
- package/dist/client/assets/{SearchLg-NBVZmXVd.js → SearchLg-DwmzEcT3.js} +1 -1
- package/dist/client/assets/{SearchMd-CY2gsNDM.js → SearchMd-BXaFRG82.js} +1 -1
- package/dist/client/assets/{Settings02-DlR-p_n5.js → Settings02-Dx2Ie5BG.js} +1 -1
- package/dist/client/assets/{Share07-BkbeoGru.js → Share07-D5-ZAZXS.js} +1 -1
- package/dist/client/assets/{Shield01-D8S0Uq_I.js → Shield01-ZKNkf9c7.js} +1 -1
- package/dist/client/assets/{Stars01-D02D8ddQ.js → Stars01-BwfpHFV3.js} +1 -1
- package/dist/client/assets/{Stars02-CQQ8V2lH.js → Stars02-DLslLvxh.js} +1 -1
- package/dist/client/assets/{Sun-Bat_oY-u.js → Sun-Bdmfk8ZJ.js} +1 -1
- package/dist/client/assets/{SwitchHorizontal01-DdNlJkBz.js → SwitchHorizontal01-D2fsGMnH.js} +1 -1
- package/dist/client/assets/{Tool01-B7L0kCDb.js → Tool01-CzDHDc55.js} +1 -1
- package/dist/client/assets/{Tool02-DMkJWn1j.js → Tool02-KkCLsEMl.js} +1 -1
- package/dist/client/assets/{Trash01--4Uaj0Lp.js → Trash01-CZbItL3_.js} +1 -1
- package/dist/client/assets/{TrendUp01-BQyaRQWe.js → TrendUp01-DVuhO61w.js} +1 -1
- package/dist/client/assets/{Upload01-CXrefU_9.js → Upload01-DmTgfJ8u.js} +1 -1
- package/dist/client/assets/{User01-Dikq6VNW.js → User01-DFFk0bz2.js} +1 -1
- package/dist/client/assets/{UserSquare-Ct8fH1Fg.js → UserSquare-GzS4hsZz.js} +1 -1
- package/dist/client/assets/{Users01-CG7GUjIe.js → Users01-DFOfjDhr.js} +1 -1
- package/dist/client/assets/{Users03-Cr67k4hB.js → Users03-bOx4fT4y.js} +1 -1
- package/dist/client/assets/{XCircle-DWfiSf9z.js → XCircle--TK3KS6r.js} +1 -1
- package/dist/client/assets/{XClose-H_tM2KKg.js → XClose-sIitW0a0.js} +1 -1
- package/dist/client/assets/{YAxis-COyjuLVS.js → YAxis-BaFoA8Fc.js} +1 -1
- package/dist/client/assets/{Zap-iD_zCIkM.js → Zap-4qXWNRMC.js} +1 -1
- package/dist/client/assets/{ZapSquare-v64huzTP.js → ZapSquare-BF-tm-fT.js} +1 -1
- package/dist/client/assets/{access-gate-1enwedEe.js → access-gate-CICSLq0B.js} +1 -1
- package/dist/client/assets/{agent-icon-DaPDpK9u.js → agent-icon-Vcv_ffTw.js} +1 -1
- package/dist/client/assets/{agents-list-D-S_pXaD.js → agents-list-DrCm1jRh.js} +1 -1
- package/dist/client/assets/{ai-providers-BcRcBGD1.js → ai-providers-C2yWeUaq.js} +1 -1
- package/dist/client/assets/{alert-CRdUqKwV.js → alert-BNkRxvv2.js} +1 -1
- package/dist/client/assets/{alert-dialog-ieKa5Sjb.js → alert-dialog-C8ByLH-J.js} +1 -1
- package/dist/client/assets/{api-keys-CDWaPyZD.js → api-keys-n6CmZreW.js} +1 -1
- package/dist/client/assets/{app-editor-B5SHkNaU.js → app-editor-CMTjoZ6t.js} +1 -1
- package/dist/client/assets/{auth-C6yxMpdz.js → auth-B0fCjOkW.js} +1 -1
- package/dist/client/assets/{auth-catchall-BVTYkD-B.js → auth-catchall-DunkkTMq.js} +1 -1
- package/dist/client/assets/{auth-entry-Bh4zE79c.js → auth-entry-DBJEDLSd.js} +1 -1
- package/dist/client/assets/{auth-split-layout-DaAt5iyP.js → auth-split-layout-CjoBcbVe.js} +1 -1
- package/dist/client/assets/{authenticate-and-persist-oauth-SpRGPYSK.js → authenticate-and-persist-oauth-ndp6BbJ_.js} +1 -1
- package/dist/client/assets/{automation-list-row-BTqIOP4C.js → automation-list-row-Co5miqRj.js} +1 -1
- package/dist/client/assets/{automation-runs-DqiQ_DNr.js → automation-runs-BxoLL4fq.js} +1 -1
- package/dist/client/assets/{automations-_MGkra7l.js → automations-Cq9gZPxi.js} +1 -1
- package/dist/client/assets/{avatar-XZEY0-CC.js → avatar-BnAsHc0R.js} +1 -1
- package/dist/client/assets/{badge-DRZyFaw1.js → badge-ob5NvejM.js} +1 -1
- package/dist/client/assets/{block-document-Bs2BHALW.js → block-document-7ASxQwi_.js} +1 -1
- package/dist/client/assets/{buckets-CVOk_bmE.js → buckets-CwyEjufr.js} +1 -1
- package/dist/client/assets/{bulk-category-panel-BlG5_BpX.js → bulk-category-panel-BPRBTDmU.js} +1 -1
- package/dist/client/assets/{capability-load-error-ygS1ZoIs.js → capability-load-error-Cf8imdug.js} +1 -1
- package/dist/client/assets/{cards-DLQlC3rU.js → cards-Bwgf9eiE.js} +1 -1
- package/dist/client/assets/{category-editor-D5HaoKUA.js → category-editor-CxnO9r2d.js} +1 -1
- package/dist/client/assets/{chart-CUOS12og.js → chart-CCuERb3s.js} +1 -1
- package/dist/client/assets/{chat-context-DNrtWajj.js → chat-context-BtKP05sl.js} +1 -1
- package/dist/client/assets/{checkbox-Brc4CxV1.js → checkbox-D6tbM1xk.js} +1 -1
- package/dist/client/assets/{choose-editor-BLKm5nk8.js → choose-editor-CFyyAQgT.js} +1 -1
- package/dist/client/assets/{cli-auth-success-ujZPGbOY.js → cli-auth-success-k41A167q.js} +1 -1
- package/dist/client/assets/{collection-detail-eRiSX3H8.js → collection-detail-C1ghP6GJ.js} +1 -1
- package/dist/client/assets/{collection-display-button-ccrRCRwm.js → collection-display-button-CdwkJwND.js} +1 -1
- package/dist/client/assets/{collection-search-Bw5yVODg.js → collection-search-B5x0E8yP.js} +1 -1
- package/dist/client/assets/{collection-table-wrapper-BHl5fMvu.js → collection-table-wrapper-Ci4z4vuI.js} +1 -1
- package/dist/client/assets/{collection-tabs-Err08_YZ.js → collection-tabs-BpLAqxwt.js} +1 -1
- package/dist/client/assets/{command-BsgvhkCT.js → command-BR7yykWt.js} +1 -1
- package/dist/client/assets/{commerce-onboarding-Braa2P4R.js → commerce-onboarding-DPee0CeK.js} +1 -1
- package/dist/client/assets/{connect-BxDhpT5q.js → connect-CsZ9Y2Zv.js} +1 -1
- package/dist/client/assets/{connection-yUrJC8BP.js → connection-QhLIHf7E.js} +1 -1
- package/dist/client/assets/{connection-card-ZmTdmEZU.js → connection-card-D5uhdRGv.js} +1 -1
- package/dist/client/assets/{connection-detail-DTOhwXgq.js → connection-detail-BcM91_Ch.js} +1 -1
- package/dist/client/assets/{connection-form-helpers-DVnR9DRv.js → connection-form-helpers-ELXUXJtf.js} +1 -1
- package/dist/client/assets/{connections-BljDBWyy.js → connections-CZoyM_p6.js} +1 -1
- package/dist/client/assets/{decopilot-sse-pool-BBTewKGY.js → decopilot-sse-pool-CH0uB1DM.js} +1 -1
- package/dist/client/assets/{dialog-CrBD6U6W.js → dialog-D4a1JBHE.js} +1 -1
- package/dist/client/assets/{domain-settings-CE98NIKN.js → domain-settings-V2NOazeL.js} +1 -1
- package/dist/client/assets/{drawer-DzmiLNpX.js → drawer-CWV5Sf5Z.js} +1 -1
- package/dist/client/assets/{dropdown-menu-D148Toh-.js → dropdown-menu-GO61SuNA.js} +1 -1
- package/dist/client/assets/{empty-state-DiP4wumO.js → empty-state-DcuJa5mc.js} +1 -1
- package/dist/client/assets/{extract-connection-data-B6vkFzhJ.js → extract-connection-data-CS3MjauA.js} +1 -1
- package/dist/client/assets/{file-explorer-CKoIc7ej.js → file-explorer-Svkz22M1.js} +1 -1
- package/dist/client/assets/{file-type-icon-C5OqVUYP.js → file-type-icon-CtDlmIKt.js} +1 -1
- package/dist/client/assets/{form-BjdJD45w.js → form-Clzyw7Km.js} +1 -1
- package/dist/client/assets/{general-DR5hodjQ.js → general-DdEPSn7g.js} +1 -1
- package/dist/client/assets/{github-repo-picker-DAOK0aem.js → github-repo-picker-BjrljJs1.js} +1 -1
- package/dist/client/assets/{hooks-CpbGrR-T.js → hooks-B_2NuY61.js} +1 -1
- package/dist/client/assets/{index-BYUnxz7i.js → index-0_nA9Lq8.js} +1 -1
- package/dist/client/assets/{index-1Epxw0RI.js → index-BYwxhlse.js} +1 -1
- package/dist/client/assets/{index-CPqfPXMR.js → index-BbBXwNu5.js} +5 -5
- package/dist/client/assets/{index-DpmSPQQd.js → index-Bv1sVkS6.js} +1 -1
- package/dist/client/assets/{index-BcZbVYoE.js → index-CEC7gpkY.js} +1 -1
- package/dist/client/assets/{index-D9hCnAsj.js → index-Cemcb6wh.js} +3 -3
- package/dist/client/assets/{index-DzZ4HtLE.js → index-CuclfoRi.js} +1 -1
- package/dist/client/assets/{index-DBr1CCz3.js → index-D69ZWRT6.js} +1 -1
- package/dist/client/assets/{index-efT9-4n9.js → index-DvBzfVM_.js} +1 -1
- package/dist/client/assets/{index-ptODChHS.js → index-Ly5YjTDv.js} +1 -1
- package/dist/client/assets/{index-redirect-D3hGCGY3.js → index-redirect-BOP238hx.js} +1 -1
- package/dist/client/assets/{infra-billing-Cuq1YzFO.js → infra-billing-BYppIOXV.js} +1 -1
- package/dist/client/assets/{input-B_E7j7Yx.js → input-DDdz5hkX.js} +1 -1
- package/dist/client/assets/{integration-icon-CuaP4IKg.js → integration-icon-FunkUm3N.js} +1 -1
- package/dist/client/assets/{invite-member-dialog-D8R5PoRE.js → invite-member-dialog-lW5hmWKf.js} +1 -1
- package/dist/client/assets/{label--D7VkyWL.js → label-BTSqTw4r.js} +1 -1
- package/dist/client/assets/{layout-CO60_XZ7.js → layout-DLdY-G8c.js} +1 -1
- package/dist/client/assets/{login-M6Z9aI0D.js → login-dyumY4m3.js} +1 -1
- package/dist/client/assets/{mcp-oauth-DTBHvgWE.js → mcp-oauth-DKsYayzs.js} +1 -1
- package/dist/client/assets/{members-ClQ_Gfm2.js → members-BRXxQk5U.js} +1 -1
- package/dist/client/assets/{monaco-editor-BSiK-Lj2.js → monaco-editor-DqLvkl7W.js} +1 -1
- package/dist/client/assets/{monitoring-stats-row-B68jw-3N.js → monitoring-stats-row-CtMKHRxD.js} +1 -1
- package/dist/client/assets/{multi-select-C_n4YhVP.js → multi-select-Dv5ZVPDK.js} +1 -1
- package/dist/client/assets/{oauth-callback-Ch_U3q2E.js → oauth-callback-CY_BxuzZ.js} +1 -1
- package/dist/client/assets/{oauth-callback-ai-provider-DNbKMe-d.js → oauth-callback-ai-provider-D242St7A.js} +1 -1
- package/dist/client/assets/{onboarding-Dn0nZhUx.js → onboarding-CuCnzQXJ.js} +1 -1
- package/dist/client/assets/{org-layout-BsIiz3no.js → org-layout-CJMdnzYK.js} +1 -1
- package/dist/client/assets/{organization-choice-D-H8cRxF.js → organization-choice-DHTiQ72t.js} +1 -1
- package/dist/client/assets/{orgs-ByQDaEBc.js → orgs-eI_hd-K7.js} +1 -1
- package/dist/client/assets/{page-seo-form-BsqXF88f.js → page-seo-form-BDKI5XzV.js} +1 -1
- package/dist/client/assets/{popover-DvJGhQf8.js → popover-CRfPf31n.js} +1 -1
- package/dist/client/assets/{post-calendar-CcM8lPXw.js → post-calendar-pI95lWjl.js} +1 -1
- package/dist/client/assets/{post-editor-wTPW9S64.js → post-editor-Dp2nKaq9.js} +1 -1
- package/dist/client/assets/{primitives-4KNihGoF.js → primitives-D4QIb6Cu.js} +1 -1
- package/dist/client/assets/{profile-YmY4Fcw2.js → profile-hGFxnXU7.js} +1 -1
- package/dist/client/assets/{project-app-view-D5zrd6nx.js → project-app-view-DdlivHgX.js} +1 -1
- package/dist/client/assets/record-editor-CE2KnnUn.js +1 -0
- package/dist/client/assets/{redirect-editor-ANHjPLKd.js → redirect-editor-C-KBqdEZ.js} +1 -1
- package/dist/client/assets/registry-DHqr22hj.js +2 -0
- package/dist/client/assets/{registry-layout-CidlisGN.js → registry-layout-DiZNvz8c.js} +1 -1
- package/dist/client/assets/{reports-tn2mTuTi.js → reports-BD81TH88.js} +1 -1
- package/dist/client/assets/{require-capability-Zc2feRpM.js → require-capability-Dkg5xxFy.js} +1 -1
- package/dist/client/assets/{required-auth-layout-D4-Z6kJ8.js → required-auth-layout-_fwfNdhG.js} +1 -1
- package/dist/client/assets/{reset-password-CLkNE-ua.js → reset-password-DmrKwOzx.js} +1 -1
- package/dist/client/assets/{roles-BBKqXHhG.js → roles-DAgrfAjg.js} +1 -1
- package/dist/client/assets/{search-input-Cm4Wn1Zj.js → search-input-BizSiQ-1.js} +1 -1
- package/dist/client/assets/{secrets-D5cFEvJt.js → secrets-KtoltGym.js} +1 -1
- package/dist/client/assets/{sections-editor-mmw8CY_7.js → sections-editor-DwVV5Oa2.js} +1 -1
- package/dist/client/assets/{select-D_jSMycN.js → select-eipbGMYW.js} +1 -1
- package/dist/client/assets/{select-model-DY0YY1z7.js → select-model-BjGJZ6nV.js} +1 -1
- package/dist/client/assets/{self-tool-result-DZQmgWYl.js → self-tool-result-wqsqSxKP.js} +1 -1
- package/dist/client/assets/{seo-editor-BBJQzDU0.js → seo-editor-C8kG4Clr.js} +1 -1
- package/dist/client/assets/{settings-layout-CZImXPAK.js → settings-layout-D9Hv-oSj.js} +1 -1
- package/dist/client/assets/{shell-controls-CbxwbyZy.js → shell-controls-BJGNKC7g.js} +1 -1
- package/dist/client/assets/{shell-layout-BySQ_4Kx.js → shell-layout-CYceWQCE.js} +1 -1
- package/dist/client/assets/{spinner-BPeZSbSE.js → spinner-26QU4QPr.js} +1 -1
- package/dist/client/assets/{sso-DuoT3E1s.js → sso-DHiPx2Cw.js} +1 -1
- package/dist/client/assets/{store-GyEYvCFx.js → store-DkDIIr5N.js} +1 -1
- package/dist/client/assets/store-registry-B9fN9NTM.js +2 -0
- package/dist/client/assets/{switch-DvyC-TtW.js → switch-GPiPHmQ6.js} +1 -1
- package/dist/client/assets/{synced-repos-CcpSivcb.js → synced-repos-L2ZFwhfB.js} +1 -1
- package/dist/client/assets/{tab-id-Bs_1J00T.js → tab-id-m8L2_a__.js} +1 -1
- package/dist/client/assets/{table-C5Vj0QvG.js → table-f1BfehlT.js} +1 -1
- package/dist/client/assets/{tabs-Bd8T9PE5.js → tabs-HjJ-88wj.js} +1 -1
- package/dist/client/assets/{tasks-BkZlPIp0.js → tasks-DiQqL0xX.js} +1 -1
- package/dist/client/assets/{textarea-dzhuNdLV.js → textarea-BDTKxVUe.js} +1 -1
- package/dist/client/assets/{toggle-group-BGBeHRyR.js → toggle-group-DzrirScg.js} +1 -1
- package/dist/client/assets/{toolbar-8kUG2WEK.js → toolbar-CNY6_5xG.js} +1 -1
- package/dist/client/assets/{track-BMfNq3rH.js → track-dWyLtjk-.js} +1 -1
- package/dist/client/assets/{types-DiTD5C2o.js → types-CxTns690.js} +1 -1
- package/dist/client/assets/{use-ai-providers-lXY1VU5d.js → use-ai-providers-cvWr8ggE.js} +1 -1
- package/dist/client/assets/{use-api-keys-DpcvTeUI.js → use-api-keys-4uReNKPb.js} +1 -1
- package/dist/client/assets/{use-automations-BhOtiotW.js → use-automations-5xtiCePL.js} +1 -1
- package/dist/client/assets/{use-autosave-Cay_ZbUI.js → use-autosave-TY5_P1c9.js} +1 -1
- package/dist/client/assets/{use-clock-tick-5Oj_uoK_.js → use-clock-tick-DL46CnF0.js} +1 -1
- package/dist/client/assets/{use-commerce-diagnostic-B_43lZnj.js → use-commerce-diagnostic-DMApHDxX.js} +1 -1
- package/dist/client/assets/{use-connection-BpONJiA2.js → use-connection-Bypb2cjj.js} +1 -1
- package/dist/client/assets/{use-copy-DSqeSMgK.js → use-copy-DfROxadI.js} +1 -1
- package/dist/client/assets/{use-create-virtual-mcp-CvlrLT77.js → use-create-virtual-mcp-VgA6rMVb.js} +1 -1
- package/dist/client/assets/{use-debounced-autosave-Cm8SMJ_C.js → use-debounced-autosave-DUbUTR--.js} +1 -1
- package/dist/client/assets/{use-debounced-value-DrzG5JK_.js → use-debounced-value-Ct5gn6cj.js} +1 -1
- package/dist/client/assets/{use-decopilot-events-u0Ln_HyF.js → use-decopilot-events-Y6YvTos5.js} +1 -1
- package/dist/client/assets/{use-delete-connection-BqmuGumf.js → use-delete-connection-BrlYpLFY.js} +1 -1
- package/dist/client/assets/{use-deployment-admin-DRx4PmGR.js → use-deployment-admin-DpddKf4C.js} +1 -1
- package/dist/client/assets/{use-file-configs-7LqLpeRk.js → use-file-configs-C3UrusB9.js} +1 -1
- package/dist/client/assets/{use-infinite-scroll-U1cHzsux.js → use-infinite-scroll-CH_ByZe7.js} +1 -1
- package/dist/client/assets/{use-join-requests-CAo5BO7Z.js → use-join-requests-DzjgwvRV.js} +1 -1
- package/dist/client/assets/{use-mcp-client-TF4O7BKT.js → use-mcp-client-CAOyRvNW.js} +1 -1
- package/dist/client/assets/{use-mcp-tools-5MVVOH05.js → use-mcp-tools-BVT1Yc0_.js} +1 -1
- package/dist/client/assets/{use-members-Y0hkPp62.js → use-members-DYDlElvB.js} +1 -1
- package/dist/client/assets/{use-navigate-to-agent-DIcGhJ1_.js → use-navigate-to-agent-B2OAMn8D.js} +1 -1
- package/dist/client/assets/{use-org-auth-client-CUpoQizK.js → use-org-auth-client-f4X2Q4UW.js} +1 -1
- package/dist/client/assets/{use-org-repo-syncs-ZIEv9LPn.js → use-org-repo-syncs-D-sj8taC.js} +1 -1
- package/dist/client/assets/{use-org-sso-CtBeqW65.js → use-org-sso-dnhauPzU.js} +1 -1
- package/dist/client/assets/{use-organization-roles-GNUETTYK.js → use-organization-roles-5ACB0Tq6.js} +1 -1
- package/dist/client/assets/{use-organization-settings-Cb3PL4cQ.js → use-organization-settings-Bm2nyuzM.js} +1 -1
- package/dist/client/assets/{use-registry-connections-B7NVZll7.js → use-registry-connections-BfDrk6or.js} +1 -1
- package/dist/client/assets/{use-secrets-BpbpLl7C.js → use-secrets-r-CbBeKu.js} +1 -1
- package/dist/client/assets/{use-section-preview-base-CnvgB2Cx.js → use-section-preview-base-D7DNiUWw.js} +1 -1
- package/dist/client/assets/{use-status-sounds-CPVe7A5y.js → use-status-sounds-DEjmzqS8.js} +1 -1
- package/dist/client/assets/{use-tags-BAFwWc04.js → use-tags-DMd9M5lZ.js} +1 -1
- package/dist/client/assets/{use-task-board-items-D4fSxb44.js → use-task-board-items-DSc6YeLV.js} +1 -1
- package/dist/client/assets/{use-view-mode-DXh-rH33.js → use-view-mode-l3ynK6vq.js} +1 -1
- package/dist/client/assets/{use-virtual-mcp-Dg3vghf1.js → use-virtual-mcp-BGLoynbz.js} +1 -1
- package/dist/client/assets/useInfiniteQuery-7NHV6uJJ.js +1 -0
- package/dist/client/assets/useSuspenseInfiniteQuery-C0_YA5uf.js +1 -0
- package/dist/client/assets/{users-BlP6OXyV.js → users-CAaVLy9p.js} +1 -1
- package/dist/client/assets/{variant-calendar-SbCFySVc.js → variant-calendar-CpcYLqGr.js} +1 -1
- package/dist/client/assets/{view-mode-toggle-CWPsldaZ.js → view-mode-toggle-SiP8DAox.js} +1 -1
- package/dist/client/index.html +1 -1
- package/dist/server/cli.js +2 -2
- package/dist/server/server.js +1 -1
- package/package.json +1 -1
- package/dist/client/assets/record-editor-CIjCI6kY.js +0 -1
- package/dist/client/assets/registry-CocYYFAy.js +0 -2
- package/dist/client/assets/store-registry-BVcdz6hC.js +0 -2
- package/dist/client/assets/useInfiniteQuery-DQY0kBAF.js +0 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-CrW1iUtK.js +0 -1
package/dist/server/cli.js
CHANGED
|
@@ -1429,7 +1429,7 @@ Usage: deco services <up|down|status>`),process.exit(1)}}var $p1=L(()=>{Cf()});f
|
|
|
1429
1429
|
`.execute($);if(Number(W.rows[0]?.cnt)===0){console.warn(`Failed to migrate ${J}/${K}, keeping in old table`);continue}}await Qy`
|
|
1430
1430
|
DELETE FROM kysely_migration WHERE name = ${X}
|
|
1431
1431
|
`.execute($)}}async function gr1($){await cr8($),await lr8($);let Z=new br1({db:$,provider:{getMigrations:()=>Promise.resolve(Kp0)}}),{error:X,results:Q}=await Z.migrateToLatest(),Y=0;if(Q?.forEach((G)=>{if(G.status==="Success")Y++;else if(G.status==="Error")console.error(`Failed to execute migration "${G.migrationName}"`)}),X)throw console.error("Failed to migrate"),console.error(X),X;return Y}async function dr8($){let{keepOpen:Z=!1,database:X,skipBetterAuth:Q=!1}=$??{},Y="skipped";if(!Q&&!X)Y=await Ol0();let G=X??Y8(),J=async()=>{if(!Z&&!X)await cB(G).catch((K)=>{console.warn("Warning: Error closing database:",K)})};try{let K=await gr1(G.db);return await J(),{betterAuth:Y,kysely:K}}catch(K){throw await J(),K}}async function mr8(){let $=Y8(),Z=new br1({db:$.db,provider:{getMigrations:()=>Promise.resolve(Kp0)}}),{error:X,results:Q}=await Z.migrateDown();if(Q?.forEach((Y)=>{if(Y.status==="Success")console.log(`\u2705 Migration "${Y.migrationName}" rolled back successfully`);else if(Y.status==="Error")console.error(`\u274C Failed to rollback migration "${Y.migrationName}"`)}),X)throw console.error("Failed to rollback migration"),console.error(X),X}var ur1=L(()=>{fr1();Ll0();XX()});async function rZ0($){let Z={...process.env},X=p$0($,Z);console.log(Xw1(X.settings.encryptionKey));let Q=X.settings.betterAuthSecret||(X.settings.localMode?Cn1(X.settings.dataDir):""),{ensureServices:Y}=await Promise.resolve().then(() => (YZ0(),QZ0)),{outputs:G,services:J}=await Y({home:X.settings.dataDir,externalDatabaseUrl:X.externalDatabaseUrl,externalNatsUrl:X.externalNatsUrl});if(!X.skipMigrations){let{migrateBetterAuth:W}=await Promise.resolve().then(() => (Ll0(),vn1));await W(G.databaseUrl);let{createDatabase:H}=await Promise.resolve().then(() => (XX(),op1)),{migrateToLatest:F}=await Promise.resolve().then(() => (ur1(),hr1)),N=H(G.databaseUrl);await F({keepOpen:!0,database:N,skipBetterAuth:!0})}let K={...X.settings,betterAuthSecret:Q,databaseUrl:G.databaseUrl,natsUrls:G.natsUrls,...G.s3?{s3Endpoint:G.s3.endpoint,s3Bucket:G.s3.bucket,s3AccessKeyId:G.s3.accessKeyId,s3SecretAccessKey:G.s3.secretAccessKey,s3ForcePathStyle:G.s3.forcePathStyle}:{}};return Zp1(K),{settings:K,services:J.map((W)=>({name:W.name==="PostgreSQL"?"Postgres":W.name,port:W.port})),managedServiceNames:J.filter((W)=>W.owner==="managed").map((W)=>W.name)}}var Wp0=L(()=>{Cf();_n1();V$()});var mr1={};Q0(mr1,{updateService:()=>ME,subscribeCliState:()=>Np0,setTuiConsoleIntercepted:()=>aZ0,setServerUrl:()=>Xp,setMigrationsDone:()=>Zp,setDevMode:()=>pr8,resetCliStateForTests:()=>ir8,isTuiConsoleIntercepted:()=>sZ0,getCliState:()=>Fp0,addLogEntry:()=>tB});function cr1(){return[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}]}function lr1(){return{services:cr1(),migrationsStatus:"pending",serverUrl:null,logs:[]}}function ir8(){lQ=lr1()}function $p(){for(let $ of Hp0)$()}function Fp0(){return lQ}function Np0($){return Hp0.add($),()=>Hp0.delete($)}function ME($){lQ={...lQ,services:lQ.services.map((Z)=>Z.name===$.name?$:Z)},$p()}function Zp(){lQ={...lQ,migrationsStatus:"done"},$p()}function Xp($){lQ={...lQ,serverUrl:$},$p()}function tB($){let Z=[...lQ.logs,$];lQ={...lQ,logs:Z.length>500?Z.slice(-500):Z},$p()}function pr8(){lQ={...lQ,services:[...cr1(),{name:"API",status:"pending",port:0},{name:"Vite",status:"pending",port:0}]},$p()}function aZ0($){dr1=$}function sZ0(){return dr1}var lQ,Hp0,dr1=!1;var VE=L(()=>{lQ=lr1();Hp0=new Set});import{createServer as ir1}from"net";function nr8($){return new Promise((Z)=>{let X=ir1();X.once("error",()=>Z(!1)),X.listen($,"0.0.0.0",()=>{X.close(()=>Z(!0))})})}async function Qp($){if(await nr8($))return $;let Z=await new Promise((X,Q)=>{let Y=ir1();Y.once("error",Q),Y.listen(0,"0.0.0.0",()=>{let G=Y.address(),J=typeof G==="object"&&G?G.port:0;Y.close(()=>X(J))})});return console.warn(`Port ${$} is in use, using port ${Z} instead.`),Z}var Up0=()=>{};var Op0={};Q0(Op0,{startDevServer:()=>or8,pipeToLogStore:()=>Bp0});import{join as tr8}from"path";function Bp0($){let Z=$.getReader(),X=new TextDecoder,Q="";function Y(){let G=Q.split(`
|
|
1432
|
-
`);Q=G.pop()??"";for(let J of G){let K=Bun.stripANSI(J).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;tB({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:K})}}(async()=>{try{for(;;){let{done:G,value:J}=await Z.read();if(G)break;Q+=X.decode(J,{stream:!0}),Y()}}catch{}if(Q.trim()){let G=Bun.stripANSI(Q).replace(/^\[\d+\]\s*/,"").trim();if(G)tB({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:G})}})()}async function or8($){let{baseUrl:Z,noTui:X}=$,Q=process.env.HOST==="0.0.0.0"&&Boolean(process.env.PORT),Y=Q?process.env.PORT:$.vitePort,G=Z||`http://localhost:${Y}`,J=Q?await Qp(Number(Y)+1):await Qp(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await rZ0({port:String(J),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let D of W)ME({name:D.name,status:"ready",port:D.port});Zp();let F=tr8(import.meta.dir,"..","..","..","..",".."),N=X===!0,U=Bun.spawn(["bun","run","dev:servers"],{cwd:F,env:{...process.env,PORT:String(K.port),VITE_PORT:String(Y),DATABASE_URL:K.databaseUrl,NATS_URL:K.natsUrls.join(","),NODE_ENV:K.nodeEnv,BASE_URL:G,DECOCMS_LOCAL_MODE:String(K.localMode),DECOCMS_HOME:K.dataDir,DATA_DIR:K.dataDir,DECO_CLI:"1",...K.betterAuthSecret?{BETTER_AUTH_SECRET:K.betterAuthSecret}:{},...K.s3Endpoint?{S3_ENDPOINT:K.s3Endpoint,S3_BUCKET:K.s3Bucket??"",S3_ACCESS_KEY_ID:K.s3AccessKeyId??"",S3_SECRET_ACCESS_KEY:K.s3SecretAccessKey??"",S3_FORCE_PATH_STYLE:String(K.s3ForcePathStyle)}:{},...K.natsCredsPath?{NATS_CREDS:K.natsCredsPath}:{}},stdio:["inherit",N?"inherit":"pipe",N?"inherit":"pipe"]});if(!N)Bp0(U.stdout),Bp0(U.stderr);Xp(G),ME({name:"Vite",status:"ready",port:Number(Y)}),ME({name:"API",status:"ready",port:Number(K.port)});let O=async(D)=>{if(U.kill(D),await U.exited,H.length>0){let{stopServices:w}=await Promise.resolve().then(() => (YZ0(),QZ0));await w(K.dataDir)}};return process.on("SIGINT",()=>O("SIGINT")),process.on("SIGTERM",()=>O("SIGTERM")),{port:Number(Y),process:U}}var Lp0=L(()=>{Wp0();VE();Up0()});var eZ0;var Dp0=L(()=>{eZ0={name:"decocms",version:"4.274.0",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});import{Box as ar8,Text as pr1}from"ink";import{jsx as sr8,jsxs as nr1}from"react/jsx-runtime";function tr1({version:$}){return nr1(ar8,{flexDirection:"column",marginTop:1,children:[qZ0.map((Z,X)=>sr8(pr1,{color:MZ0[X],children:Z},X)),nr1(pr1,{dimColor:!0,children:[" v",$]})]})}var or1=L(()=>{di()});import{Box as kE,Text as oB}from"ink";import{Spinner as er8}from"@inkjs/ui";import{jsx as eY,jsxs as Yy}from"react/jsx-runtime";function rr1({status:$}){if($==="pending")return eY(er8,{label:""});return eY(oB,{color:"green",children:"\u2713"})}function $a8($){return`${$.name}: ${$.port||"...."}`}function ar1({services:$,migrationsStatus:Z,home:X,serverUrl:Q}){return Yy(kE,{flexDirection:"column",paddingBottom:1,children:[eY(tr1,{version:eZ0.version}),eY(kE,{marginBottom:1,children:eY(oB,{dimColor:!0,children:"\u2500".repeat(80)})}),eY(kE,{children:Yy(oB,{dimColor:!0,children:["Home: ",X]})}),Yy(kE,{gap:2,children:[$.map((Y)=>Yy(kE,{gap:1,children:[eY(oB,{children:$a8(Y)}),eY(rr1,{status:Y.status})]},Y.name)),Yy(kE,{gap:1,children:[eY(oB,{children:"Migrations"}),eY(rr1,{status:Z})]})]}),eY(kE,{children:Q?Yy(oB,{children:["Open in browser: ",eY(oB,{color:"cyan",children:Q})]}):eY(oB,{dimColor:!0,children:"Starting..."})})]})}var sr1=L(()=>{Dp0();or1()});import{Box as Za8,Text as Yp}from"ink";import{jsx as wp0,jsxs as Ep0}from"react/jsx-runtime";function Xa8($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function er1({logs:$}){return wp0(Za8,{flexDirection:"column",children:$.map((Z,X)=>{if(Z.rawLine)return wp0(Yp,{dimColor:!0,children:Z.rawLine},X);let Q=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return Ep0(Yp,{children:[Ep0(Yp,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),wp0(Yp,{color:Xa8(Z.status),children:Z.status}),Ep0(Yp,{dimColor:!0,children:[" ",Q.padStart(8)]})]},X)})})}var $a1=()=>{};var jp0={};Q0(jp0,{App:()=>Ga8});import{Box as Qa8}from"ink";import{useSyncExternalStore as Ya8}from"react";import{jsx as Za1,jsxs as Ja8}from"react/jsx-runtime";function Ga8({home:$}){let Z=Ya8(Np0,Fp0);return Ja8(Qa8,{flexDirection:"column",children:[Za1(ar1,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),Za1(er1,{logs:Z.logs})]})}var zp0=L(()=>{sr1();$a1();VE()});var h3="thread-gate",JN="decopilot-hosted-harness",KN="decopilot-hosted-harness-sandboxed",BJ="automations",rB="background-tools",SE="task-board-github-reads",CE="jira-push";var Xa1="9";function Qa1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:Xa1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var Ya1=()=>{};import Ka8 from"pg";async function Ja1($,Z){let{databaseUrl:X,lockTimeoutMs:Q=Wa8}=$,Y=$.log??((W)=>console.log(W)),G=new Ka8.Client({connectionString:X});await G.connect();let J=Date.now(),K=!1;try{while(!K){if(K=(await G.query("SELECT pg_try_advisory_lock($1) AS locked",[Ga1.toString()])).rows[0]?.locked===!0,K)break;if(Date.now()-J>=Q)throw Error(`Timed out after ${Q}ms waiting for the DBOS migration lock. Another process is still migrating the dbos schema; this pod will restart and retry.`);await W$(Ha8)}let W=Date.now()-J;if(W>1000)Y(`[dbos] waited ${W}ms for the migration lock; another process migrated first`);return await Z()}finally{if(K)try{await G.query("SELECT pg_advisory_unlock($1)",[Ga1.toString()])}catch{}await G.end().catch(()=>{})}}var Ga1=8314027461559302n,Wa8=600000,Ha8=500;var Ka1=L(()=>{N4()});function Fa8(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function Pp0($,Z){for(let X=0;X<$.length;X++){let Q=$[X];if(Q===void 0)continue;if(Q===Z)return $[X+1];if(Q.startsWith(`${Z}=`))return Q.slice(Z.length+1)}return}function Wa1(){let $=Fa8();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:Pp0($,"--cpu-prof-dir")??process.cwd(),name:Pp0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(Pp0($,"--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 Ha1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let X=TE();if(!X)return;let Q={};try{let{heapStats:Y}=await import("bun:jsc"),G=Y(),J=Object.entries(G.objectTypeCounts).sort((K,W)=>W[1]-K[1]).slice(0,20);Q={objectCount:G.objectCount,heapSize:G.heapSize,top:Object.fromEntries(J)}}catch{}console.log(JSON.stringify({msg:"heap-watch",ts:new Date().toISOString(),uptimeS:Math.round(process.uptime()),rss:X.rss,heapUsed:X.heapUsed,heapTotal:X.heapTotal,external:X.external,arrayBuffers:X.arrayBuffers,...Q}))};return Z().catch(()=>{}),$70=setInterval(()=>void Z().catch(()=>{}),$),$70.unref?.(),process.on("SIGUSR2",()=>{try{let X=Bun.generateHeapSnapshot("v8"),Q=typeof X==="string"?X:JSON.stringify(X),Y=`/tmp/heap-${process.pid}-${Date.now()}.heapsnapshot`;Bun.write(Y,Q),console.log(JSON.stringify({msg:"heap-snapshot-written",path:Y}))}catch(X){console.error("[heap-watch] snapshot failed:",X)}}),()=>{if($70)clearInterval($70)}}var $70;var Fa1=()=>{};import*as Na8 from"bun:jsc";function Na1(){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{Ua8()}catch(G){return console.error("[stall-watchdog] failed to start sampling profiler:",G),()=>{}}let X,Q=performance.now()+Z,Y=()=>{let G=performance.now(),J=G-Q;Q=G+Z;let K=[];try{K=Ba8()?.traces??[]}catch{}if(J>$&&K.length>0){let W=new Map;for(let F of K){let N=F.frames.find((O)=>O.sourceURL&&!/Unknown Executable/.test(O.category??""))??F.frames[0];if(!N)continue;let U=(N.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),B=`${N.name??"?"} @ ${U}:${N.line??"?"}`;W.set(B,(W.get(B)??0)+1)}let H=[...W.entries()].sort((F,N)=>N[1]-F[1]).slice(0,8).map(([F,N])=>({frame:F,count:N}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(J),samplesInWindow:K.length,top:H}))}X=setTimeout(Y,Z),X.unref?.()};return X=setTimeout(Y,Z),X.unref?.(),()=>{if(X)clearTimeout(X)}}var Ua8,Ba8;var Ua1=L(()=>{({startSamplingProfiler:Ua8,samplingProfilerStackTraces:Ba8}=Na8)});function Ba1(){Wa1();let $=[Ha1(),cp1(),Na1()];return()=>{for(let Z of $)Z()}}var Oa1=L(()=>{Gl0();Fa1();Ua1()});var _E=v((La1)=>{Object.defineProperty(La1,"__esModule",{value:!0});La1.RepublishHeaders=La1.DirectMsgHeaders=La1.JsHeaders=La1.AdvisoryKind=void 0;La1.isOrderedPushConsumerOptions=Oa8;La1.isPullConsumer=La8;La1.isPushConsumer=Da8;La1.isBoundPushConsumerOptions=wa8;function Oa8($){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 La8($){return $.isPullConsumer()}function Da8($){return $.isPushConsumer()}function wa8($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}La1.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"};La1.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"};La1.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};La1.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var $G=v((wa1)=>{Object.defineProperty(wa1,"__esModule",{value:!0});wa1.TD=wa1.TE=wa1.Empty=void 0;wa1.encode=qa8;wa1.decode=Ma8;wa1.Empty=new Uint8Array(0);wa1.TE=new TextEncoder;wa1.TD=new TextDecoder;function Ia8(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}function qa8(...$){let Z=[];for(let X=0;X<$.length;X++)Z.push(wa1.TE.encode($[X]));if(Z.length===0)return wa1.Empty;if(Z.length===1)return Z[0];return Ia8(...Z)}function Ma8($){if(!$||$.length===0)return"";return wa1.TD.decode($)}});var ZG=v((za1)=>{Object.defineProperty(za1,"__esModule",{value:!0});za1.errors=za1.PermissionViolationError=za1.NoRespondersError=za1.TimeoutError=za1.RequestError=za1.ProtocolError=za1.ConnectionError=za1.DrainingConnectionError=za1.ClosedConnectionError=za1.AuthorizationError=za1.UserAuthenticationExpiredError=za1.InvalidOperationError=za1.InvalidArgumentError=za1.InvalidSubjectError=void 0;class Tp0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}za1.InvalidSubjectError=Tp0;class Z70 extends Error{constructor($,Z){super($,Z);this.name="InvalidArgumentError"}static format($,Z,X){if(Array.isArray(Z)&&Z.length>1)Z=Z[0];if(Array.isArray($))$=$.map((Q)=>`'${Q}'`),$=$.join(",");else $=`'${$}'`;return new Z70(`${$} ${Z}`,X)}}za1.InvalidArgumentError=Z70;class Rp0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}za1.InvalidOperationError=Rp0;class X70 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new X70($);return null}}za1.UserAuthenticationExpiredError=X70;class Q70 extends Error{constructor($,Z){super($,Z);this.name="AuthorizationError"}static parse($){let Z=["authorization violation","account authentication expired","authentication timeout"],X=$.toLowerCase();for(let Q=0;Q<Z.length;Q++)if(X.indexOf(Z[Q])!==-1)return new Q70($);return null}}za1.AuthorizationError=Q70;class Ip0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}za1.ClosedConnectionError=Ip0;class qp0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}za1.DrainingConnectionError=qp0;class Mp0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}za1.ConnectionError=Mp0;class Vp0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}za1.ProtocolError=Vp0;class kp0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof Y70}}za1.RequestError=kp0;class Sp0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}za1.TimeoutError=Sp0;class Y70 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}za1.NoRespondersError=Y70;class G70 extends Error{operation;subject;queue;constructor($,Z,X,Q,Y){super($,Y);this.name="PermissionViolationError",this.operation=Z,this.subject=X,this.queue=Q}static parse($){if(($?$.toLowerCase():"").indexOf("permissions violation")===-1)return null;let X="publish",Q="",Y=void 0,G=$.match(/(Publish|Subscription) to "(\S+)"/);if(G){if(X=G[1].toLowerCase(),Q=G[2],X==="subscription"){let J=$.match(/using queue "(\S+)"/);if(J)Y=J[1]}}return new G70($,X,Q,Y)}}za1.PermissionViolationError=G70;za1.errors={AuthorizationError:Q70,ClosedConnectionError:Ip0,ConnectionError:Mp0,DrainingConnectionError:qp0,InvalidArgumentError:Z70,InvalidOperationError:Rp0,InvalidSubjectError:Tp0,NoRespondersError:Y70,PermissionViolationError:G70,ProtocolError:Vp0,RequestError:kp0,TimeoutError:Sp0,UserAuthenticationExpiredError:X70}});var u3=v((Ia1)=>{Object.defineProperty(Ia1,"__esModule",{value:!0});Ia1.SimpleMutex=Ia1.Perf=void 0;Ia1.extend=ma8;Ia1.render=ia8;Ia1.timeout=pa8;Ia1.delay=na8;Ia1.deadline=ta8;Ia1.deferred=_p0;Ia1.debugDeferred=oa8;Ia1.shuffle=ra8;Ia1.collect=aa8;Ia1.jitter=Ra1;Ia1.backoff=sa8;Ia1.nanos=ea8;Ia1.millis=$s8;Ia1.randomToken=Qs8;var da8=$G(),Cp0=ZG();function ma8($,...Z){for(let X=0;X<Z.length;X++){let Q=Z[X];Object.keys(Q).forEach(function(Y){$[Y]=Q[Y]})}return $}function ia8($){return da8.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function pa8($,Z=!0){let X=Z?new Cp0.TimeoutError:null,Q,Y,G=new Promise((J,K)=>{Q={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(X===null)K(new Cp0.TimeoutError);else K(X)},$)});return Object.assign(G,Q)}function na8($=0){let Z,X=new Promise((Q)=>{let Y=setTimeout(()=>{Q()},$);Z={cancel:()=>{if(Y)clearTimeout(Y),Q()}}});return Object.assign(X,Z)}async function ta8($,Z=1000){let X=_p0(),Q=setTimeout(()=>{X.reject(new Cp0.TimeoutError)},Z);try{return await Promise.race([$,X])}finally{clearTimeout(Q)}}function _p0(){let $={},Z=new Promise((X,Q)=>{$={resolve:X,reject:Q}});return Object.assign(Z,$)}function oa8(){let $={},Z=new Promise((X,Q)=>{$={resolve:(Y)=>{console.trace("resolve",Y),X(Y)},reject:(Y)=>{console.trace("reject"),Q(Y)}}});return Object.assign(Z,$)}function ra8($){for(let Z=$.length-1;Z>0;Z--){let X=Math.floor(Math.random()*(Z+1));[$[Z],$[X]]=[$[X],$[Z]]}return $}async function aa8($){let Z=[];for await(let X of $)Z.push(X);return Z}class Aa1{timers;measures;constructor(){this.timers=new Map,this.measures=new Map}mark($){this.timers.set($,performance.now())}measure($,Z,X){let Q=this.timers.get(Z);if(Q===void 0)throw Error(`${Z} is not defined`);let Y=this.timers.get(X);if(Y===void 0)throw Error(`${X} is not defined`);this.measures.set($,Y-Q)}getEntries(){let $=[];return this.measures.forEach((Z,X)=>{$.push({name:X,duration:Z})}),$}}Ia1.Perf=Aa1;class Ta1{max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=_p0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}Ia1.SimpleMutex=Ta1;function Ra1($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function sa8($=[0,250,250,500,500,3000,5000]){if(!Array.isArray($))$=[0,250,250,500,500,3000,5000];let Z=$.length-1;return{backoff(X){return Ra1(X>Z?$[Z]:$[X])}}}function ea8($){return $*1e6}function $s8($){return Math.floor($/1e6)}var Zs8="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",WN=new Uint8Array(62);for(let $=0;$<62;$++)WN[$]=Zs8.charCodeAt($);var Xs8=218340105584896;function Qs8(){let $=Math.floor(Math.random()*Xs8),Z=$%62,X=WN[Z];$=($-Z)/62,Z=$%62;let Q=WN[Z];$=($-Z)/62,Z=$%62;let Y=WN[Z];$=($-Z)/62,Z=$%62;let G=WN[Z];$=($-Z)/62,Z=$%62;let J=WN[Z];$=($-Z)/62,Z=$%62;let K=WN[Z];$=($-Z)/62,Z=$%62;let W=WN[Z];$=($-Z)/62;let H=WN[$];return String.fromCharCode(X,Q,Y,G,J,K,W,H)}});var va1=v((Ca1)=>{Object.defineProperty(Ca1,"__esModule",{value:!0});Ca1.nuid=Ca1.NuidImpl=void 0;var js8="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",aB=62,K70=12,ka1=10,Ma1=33,zs8=333,Va1=K70+ka1,xp0=new Uint8Array(aB);for(let $=0;$<aB;$++)xp0[$]=js8.charCodeAt($);var J70=4294967296,Sa1=BigInt(aB)**BigInt(ka1),Gp=Number(Sa1/(1n<<32n)),vp0=Number(Sa1%(1n<<32n));function Ps8($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function As8($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else Ps8($)}class fp0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(Va1),this.cbuf=new Uint8Array(K70),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(Gp+1)),this.seqLo=Math.floor(Math.random()*J70);while($++<8&&this.seqHi===Gp&&this.seqLo>=vp0);if(this.seqHi===Gp&&this.seqLo>=vp0)this.seqLo=0;this.inc=Math.random()*(zs8-Ma1)+Ma1|0}setPre(){As8(this.cbuf);for(let $=0;$<K70;$++)this.buf[$]=xp0[this.cbuf[$]%aB]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let X=Va1-1;X>=K70;X--){let Q=Math.floor($/aB),G=($-Q*aB)*J70+Z,J=Math.floor(G/aB),K=G-J*aB;this.buf[X]=xp0[K],$=Q,Z=J}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=J70)this.seqLo-=J70,this.seqHi+=1;if(this.seqHi>Gp||this.seqHi===Gp&&this.seqLo>=vp0)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()}}Ca1.NuidImpl=fp0;Ca1.nuid=new fp0});var ya1=v((fa1)=>{Object.defineProperty(fa1,"__esModule",{value:!0});fa1.nuid=fa1.Nuid=void 0;var xa1=va1();fa1.Nuid=xa1.NuidImpl;fa1.nuid=xa1.nuid});var H70=v((W70)=>{Object.defineProperty(W70,"__esModule",{value:!0});W70.nuid=W70.Nuid=void 0;var ga1=ya1();Object.defineProperty(W70,"Nuid",{enumerable:!0,get:function(){return ga1.Nuid}});Object.defineProperty(W70,"nuid",{enumerable:!0,get:function(){return ga1.nuid}})});var sB=v((ha1)=>{Object.defineProperty(ha1,"__esModule",{value:!0});ha1.DEFAULT_HOST=ha1.DEFAULT_PORT=ha1.Match=void 0;ha1.syncIterator=Vs8;ha1.createInbox=ks8;var qs8=H70(),Ms8=ZG();ha1.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function Vs8($){let Z=$[Symbol.asyncIterator]();return{async next(){let X=await Z.next();if(X.done)return Promise.resolve(null);return Promise.resolve(X.value)}}}function ks8($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw Ms8.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${qs8.nuid.next()}`}ha1.DEFAULT_PORT=4222;ha1.DEFAULT_HOST="127.0.0.1"});var Jp=v((da1)=>{Object.defineProperty(da1,"__esModule",{value:!0});da1.DataBuffer=void 0;var ca1=$G();class la1{buffers;byteLength;constructor(){this.buffers=[],this.byteLength=0}static concat(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}static fromAscii($){if(!$)$="";return ca1.TE.encode($)}static toAscii($){return ca1.TD.decode($)}reset(){this.buffers.length=0,this.byteLength=0}pack(){if(this.buffers.length>1){let $=new Uint8Array(this.byteLength),Z=0;for(let X=0;X<this.buffers.length;X++)$.set(this.buffers[X],Z),Z+=this.buffers[X].length;this.buffers.length=0,this.buffers.push($)}}shift(){if(this.buffers.length){let $=this.buffers.shift();if($)return this.byteLength-=$.length,$}return new Uint8Array(0)}drain($){if(this.buffers.length){this.pack();let Z=this.buffers.pop();if(Z){let X=this.byteLength;if($===void 0||$>X)$=X;let Q=Z.subarray(0,$);if(X>$)this.buffers.push(Z.subarray($));return this.byteLength=X-$,Q}}return new Uint8Array(0)}fill($,...Z){if($)this.buffers.push($),this.byteLength+=$.length;for(let X=0;X<Z.length;X++)if(Z[X]&&Z[X].length)this.buffers.push(Z[X]),this.byteLength+=Z[X].length}peek(){if(this.buffers.length)return this.pack(),this.buffers[0];return new Uint8Array(0)}size(){return this.byteLength}length(){return this.buffers.length}}da1.DataBuffer=la1});var vE=v((pa1)=>{Object.defineProperty(pa1,"__esModule",{value:!0});pa1.LF=pa1.CR=pa1.CRLF=pa1.CR_LF_LEN=pa1.CR_LF=void 0;pa1.setTransportFactory=ys8;pa1.defaultPort=gs8;pa1.getUrlParseFn=hs8;pa1.newTransport=us8;pa1.getResolveFn=cs8;pa1.protoLen=ia1;pa1.extractProtocolMessage=ls8;var xs8=$G(),fs8=sB(),bs8=Jp(),XG;function ys8($){XG=$}function gs8(){return XG!==void 0&&XG.defaultPort!==void 0?XG.defaultPort:fs8.DEFAULT_PORT}function hs8(){return XG!==void 0&&XG.urlParseFn?XG.urlParseFn:void 0}function us8(){if(!XG||typeof XG.factory!=="function")throw Error("transport fn is not set");return XG.factory()}function cs8(){return XG!==void 0&&XG.dnsResolveFn?XG.dnsResolveFn:void 0}pa1.CR_LF=`\r
|
|
1432
|
+
`);Q=G.pop()??"";for(let J of G){let K=Bun.stripANSI(J).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;tB({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:K})}}(async()=>{try{for(;;){let{done:G,value:J}=await Z.read();if(G)break;Q+=X.decode(J,{stream:!0}),Y()}}catch{}if(Q.trim()){let G=Bun.stripANSI(Q).replace(/^\[\d+\]\s*/,"").trim();if(G)tB({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:G})}})()}async function or8($){let{baseUrl:Z,noTui:X}=$,Q=process.env.HOST==="0.0.0.0"&&Boolean(process.env.PORT),Y=Q?process.env.PORT:$.vitePort,G=Z||`http://localhost:${Y}`,J=Q?await Qp(Number(Y)+1):await Qp(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await rZ0({port:String(J),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let D of W)ME({name:D.name,status:"ready",port:D.port});Zp();let F=tr8(import.meta.dir,"..","..","..","..",".."),N=X===!0,U=Bun.spawn(["bun","run","dev:servers"],{cwd:F,env:{...process.env,PORT:String(K.port),VITE_PORT:String(Y),DATABASE_URL:K.databaseUrl,NATS_URL:K.natsUrls.join(","),NODE_ENV:K.nodeEnv,BASE_URL:G,DECOCMS_LOCAL_MODE:String(K.localMode),DECOCMS_HOME:K.dataDir,DATA_DIR:K.dataDir,DECO_CLI:"1",...K.betterAuthSecret?{BETTER_AUTH_SECRET:K.betterAuthSecret}:{},...K.s3Endpoint?{S3_ENDPOINT:K.s3Endpoint,S3_BUCKET:K.s3Bucket??"",S3_ACCESS_KEY_ID:K.s3AccessKeyId??"",S3_SECRET_ACCESS_KEY:K.s3SecretAccessKey??"",S3_FORCE_PATH_STYLE:String(K.s3ForcePathStyle)}:{},...K.natsCredsPath?{NATS_CREDS:K.natsCredsPath}:{}},stdio:["inherit",N?"inherit":"pipe",N?"inherit":"pipe"]});if(!N)Bp0(U.stdout),Bp0(U.stderr);Xp(G),ME({name:"Vite",status:"ready",port:Number(Y)}),ME({name:"API",status:"ready",port:Number(K.port)});let O=async(D)=>{if(U.kill(D),await U.exited,H.length>0){let{stopServices:w}=await Promise.resolve().then(() => (YZ0(),QZ0));await w(K.dataDir)}};return process.on("SIGINT",()=>O("SIGINT")),process.on("SIGTERM",()=>O("SIGTERM")),{port:Number(Y),process:U}}var Lp0=L(()=>{Wp0();VE();Up0()});var eZ0;var Dp0=L(()=>{eZ0={name:"decocms",version:"4.274.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":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});import{Box as ar8,Text as pr1}from"ink";import{jsx as sr8,jsxs as nr1}from"react/jsx-runtime";function tr1({version:$}){return nr1(ar8,{flexDirection:"column",marginTop:1,children:[qZ0.map((Z,X)=>sr8(pr1,{color:MZ0[X],children:Z},X)),nr1(pr1,{dimColor:!0,children:[" v",$]})]})}var or1=L(()=>{di()});import{Box as kE,Text as oB}from"ink";import{Spinner as er8}from"@inkjs/ui";import{jsx as eY,jsxs as Yy}from"react/jsx-runtime";function rr1({status:$}){if($==="pending")return eY(er8,{label:""});return eY(oB,{color:"green",children:"\u2713"})}function $a8($){return`${$.name}: ${$.port||"...."}`}function ar1({services:$,migrationsStatus:Z,home:X,serverUrl:Q}){return Yy(kE,{flexDirection:"column",paddingBottom:1,children:[eY(tr1,{version:eZ0.version}),eY(kE,{marginBottom:1,children:eY(oB,{dimColor:!0,children:"\u2500".repeat(80)})}),eY(kE,{children:Yy(oB,{dimColor:!0,children:["Home: ",X]})}),Yy(kE,{gap:2,children:[$.map((Y)=>Yy(kE,{gap:1,children:[eY(oB,{children:$a8(Y)}),eY(rr1,{status:Y.status})]},Y.name)),Yy(kE,{gap:1,children:[eY(oB,{children:"Migrations"}),eY(rr1,{status:Z})]})]}),eY(kE,{children:Q?Yy(oB,{children:["Open in browser: ",eY(oB,{color:"cyan",children:Q})]}):eY(oB,{dimColor:!0,children:"Starting..."})})]})}var sr1=L(()=>{Dp0();or1()});import{Box as Za8,Text as Yp}from"ink";import{jsx as wp0,jsxs as Ep0}from"react/jsx-runtime";function Xa8($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function er1({logs:$}){return wp0(Za8,{flexDirection:"column",children:$.map((Z,X)=>{if(Z.rawLine)return wp0(Yp,{dimColor:!0,children:Z.rawLine},X);let Q=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return Ep0(Yp,{children:[Ep0(Yp,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),wp0(Yp,{color:Xa8(Z.status),children:Z.status}),Ep0(Yp,{dimColor:!0,children:[" ",Q.padStart(8)]})]},X)})})}var $a1=()=>{};var jp0={};Q0(jp0,{App:()=>Ga8});import{Box as Qa8}from"ink";import{useSyncExternalStore as Ya8}from"react";import{jsx as Za1,jsxs as Ja8}from"react/jsx-runtime";function Ga8({home:$}){let Z=Ya8(Np0,Fp0);return Ja8(Qa8,{flexDirection:"column",children:[Za1(ar1,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),Za1(er1,{logs:Z.logs})]})}var zp0=L(()=>{sr1();$a1();VE()});var h3="thread-gate",JN="decopilot-hosted-harness",KN="decopilot-hosted-harness-sandboxed",BJ="automations",rB="background-tools",SE="task-board-github-reads",CE="jira-push";var Xa1="9";function Qa1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:Xa1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var Ya1=()=>{};import Ka8 from"pg";async function Ja1($,Z){let{databaseUrl:X,lockTimeoutMs:Q=Wa8}=$,Y=$.log??((W)=>console.log(W)),G=new Ka8.Client({connectionString:X});await G.connect();let J=Date.now(),K=!1;try{while(!K){if(K=(await G.query("SELECT pg_try_advisory_lock($1) AS locked",[Ga1.toString()])).rows[0]?.locked===!0,K)break;if(Date.now()-J>=Q)throw Error(`Timed out after ${Q}ms waiting for the DBOS migration lock. Another process is still migrating the dbos schema; this pod will restart and retry.`);await W$(Ha8)}let W=Date.now()-J;if(W>1000)Y(`[dbos] waited ${W}ms for the migration lock; another process migrated first`);return await Z()}finally{if(K)try{await G.query("SELECT pg_advisory_unlock($1)",[Ga1.toString()])}catch{}await G.end().catch(()=>{})}}var Ga1=8314027461559302n,Wa8=600000,Ha8=500;var Ka1=L(()=>{N4()});function Fa8(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function Pp0($,Z){for(let X=0;X<$.length;X++){let Q=$[X];if(Q===void 0)continue;if(Q===Z)return $[X+1];if(Q.startsWith(`${Z}=`))return Q.slice(Z.length+1)}return}function Wa1(){let $=Fa8();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:Pp0($,"--cpu-prof-dir")??process.cwd(),name:Pp0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(Pp0($,"--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 Ha1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let X=TE();if(!X)return;let Q={};try{let{heapStats:Y}=await import("bun:jsc"),G=Y(),J=Object.entries(G.objectTypeCounts).sort((K,W)=>W[1]-K[1]).slice(0,20);Q={objectCount:G.objectCount,heapSize:G.heapSize,top:Object.fromEntries(J)}}catch{}console.log(JSON.stringify({msg:"heap-watch",ts:new Date().toISOString(),uptimeS:Math.round(process.uptime()),rss:X.rss,heapUsed:X.heapUsed,heapTotal:X.heapTotal,external:X.external,arrayBuffers:X.arrayBuffers,...Q}))};return Z().catch(()=>{}),$70=setInterval(()=>void Z().catch(()=>{}),$),$70.unref?.(),process.on("SIGUSR2",()=>{try{let X=Bun.generateHeapSnapshot("v8"),Q=typeof X==="string"?X:JSON.stringify(X),Y=`/tmp/heap-${process.pid}-${Date.now()}.heapsnapshot`;Bun.write(Y,Q),console.log(JSON.stringify({msg:"heap-snapshot-written",path:Y}))}catch(X){console.error("[heap-watch] snapshot failed:",X)}}),()=>{if($70)clearInterval($70)}}var $70;var Fa1=()=>{};import*as Na8 from"bun:jsc";function Na1(){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{Ua8()}catch(G){return console.error("[stall-watchdog] failed to start sampling profiler:",G),()=>{}}let X,Q=performance.now()+Z,Y=()=>{let G=performance.now(),J=G-Q;Q=G+Z;let K=[];try{K=Ba8()?.traces??[]}catch{}if(J>$&&K.length>0){let W=new Map;for(let F of K){let N=F.frames.find((O)=>O.sourceURL&&!/Unknown Executable/.test(O.category??""))??F.frames[0];if(!N)continue;let U=(N.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),B=`${N.name??"?"} @ ${U}:${N.line??"?"}`;W.set(B,(W.get(B)??0)+1)}let H=[...W.entries()].sort((F,N)=>N[1]-F[1]).slice(0,8).map(([F,N])=>({frame:F,count:N}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(J),samplesInWindow:K.length,top:H}))}X=setTimeout(Y,Z),X.unref?.()};return X=setTimeout(Y,Z),X.unref?.(),()=>{if(X)clearTimeout(X)}}var Ua8,Ba8;var Ua1=L(()=>{({startSamplingProfiler:Ua8,samplingProfilerStackTraces:Ba8}=Na8)});function Ba1(){Wa1();let $=[Ha1(),cp1(),Na1()];return()=>{for(let Z of $)Z()}}var Oa1=L(()=>{Gl0();Fa1();Ua1()});var _E=v((La1)=>{Object.defineProperty(La1,"__esModule",{value:!0});La1.RepublishHeaders=La1.DirectMsgHeaders=La1.JsHeaders=La1.AdvisoryKind=void 0;La1.isOrderedPushConsumerOptions=Oa8;La1.isPullConsumer=La8;La1.isPushConsumer=Da8;La1.isBoundPushConsumerOptions=wa8;function Oa8($){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 La8($){return $.isPullConsumer()}function Da8($){return $.isPushConsumer()}function wa8($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}La1.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"};La1.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"};La1.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};La1.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var $G=v((wa1)=>{Object.defineProperty(wa1,"__esModule",{value:!0});wa1.TD=wa1.TE=wa1.Empty=void 0;wa1.encode=qa8;wa1.decode=Ma8;wa1.Empty=new Uint8Array(0);wa1.TE=new TextEncoder;wa1.TD=new TextDecoder;function Ia8(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}function qa8(...$){let Z=[];for(let X=0;X<$.length;X++)Z.push(wa1.TE.encode($[X]));if(Z.length===0)return wa1.Empty;if(Z.length===1)return Z[0];return Ia8(...Z)}function Ma8($){if(!$||$.length===0)return"";return wa1.TD.decode($)}});var ZG=v((za1)=>{Object.defineProperty(za1,"__esModule",{value:!0});za1.errors=za1.PermissionViolationError=za1.NoRespondersError=za1.TimeoutError=za1.RequestError=za1.ProtocolError=za1.ConnectionError=za1.DrainingConnectionError=za1.ClosedConnectionError=za1.AuthorizationError=za1.UserAuthenticationExpiredError=za1.InvalidOperationError=za1.InvalidArgumentError=za1.InvalidSubjectError=void 0;class Tp0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}za1.InvalidSubjectError=Tp0;class Z70 extends Error{constructor($,Z){super($,Z);this.name="InvalidArgumentError"}static format($,Z,X){if(Array.isArray(Z)&&Z.length>1)Z=Z[0];if(Array.isArray($))$=$.map((Q)=>`'${Q}'`),$=$.join(",");else $=`'${$}'`;return new Z70(`${$} ${Z}`,X)}}za1.InvalidArgumentError=Z70;class Rp0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}za1.InvalidOperationError=Rp0;class X70 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new X70($);return null}}za1.UserAuthenticationExpiredError=X70;class Q70 extends Error{constructor($,Z){super($,Z);this.name="AuthorizationError"}static parse($){let Z=["authorization violation","account authentication expired","authentication timeout"],X=$.toLowerCase();for(let Q=0;Q<Z.length;Q++)if(X.indexOf(Z[Q])!==-1)return new Q70($);return null}}za1.AuthorizationError=Q70;class Ip0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}za1.ClosedConnectionError=Ip0;class qp0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}za1.DrainingConnectionError=qp0;class Mp0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}za1.ConnectionError=Mp0;class Vp0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}za1.ProtocolError=Vp0;class kp0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof Y70}}za1.RequestError=kp0;class Sp0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}za1.TimeoutError=Sp0;class Y70 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}za1.NoRespondersError=Y70;class G70 extends Error{operation;subject;queue;constructor($,Z,X,Q,Y){super($,Y);this.name="PermissionViolationError",this.operation=Z,this.subject=X,this.queue=Q}static parse($){if(($?$.toLowerCase():"").indexOf("permissions violation")===-1)return null;let X="publish",Q="",Y=void 0,G=$.match(/(Publish|Subscription) to "(\S+)"/);if(G){if(X=G[1].toLowerCase(),Q=G[2],X==="subscription"){let J=$.match(/using queue "(\S+)"/);if(J)Y=J[1]}}return new G70($,X,Q,Y)}}za1.PermissionViolationError=G70;za1.errors={AuthorizationError:Q70,ClosedConnectionError:Ip0,ConnectionError:Mp0,DrainingConnectionError:qp0,InvalidArgumentError:Z70,InvalidOperationError:Rp0,InvalidSubjectError:Tp0,NoRespondersError:Y70,PermissionViolationError:G70,ProtocolError:Vp0,RequestError:kp0,TimeoutError:Sp0,UserAuthenticationExpiredError:X70}});var u3=v((Ia1)=>{Object.defineProperty(Ia1,"__esModule",{value:!0});Ia1.SimpleMutex=Ia1.Perf=void 0;Ia1.extend=ma8;Ia1.render=ia8;Ia1.timeout=pa8;Ia1.delay=na8;Ia1.deadline=ta8;Ia1.deferred=_p0;Ia1.debugDeferred=oa8;Ia1.shuffle=ra8;Ia1.collect=aa8;Ia1.jitter=Ra1;Ia1.backoff=sa8;Ia1.nanos=ea8;Ia1.millis=$s8;Ia1.randomToken=Qs8;var da8=$G(),Cp0=ZG();function ma8($,...Z){for(let X=0;X<Z.length;X++){let Q=Z[X];Object.keys(Q).forEach(function(Y){$[Y]=Q[Y]})}return $}function ia8($){return da8.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function pa8($,Z=!0){let X=Z?new Cp0.TimeoutError:null,Q,Y,G=new Promise((J,K)=>{Q={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(X===null)K(new Cp0.TimeoutError);else K(X)},$)});return Object.assign(G,Q)}function na8($=0){let Z,X=new Promise((Q)=>{let Y=setTimeout(()=>{Q()},$);Z={cancel:()=>{if(Y)clearTimeout(Y),Q()}}});return Object.assign(X,Z)}async function ta8($,Z=1000){let X=_p0(),Q=setTimeout(()=>{X.reject(new Cp0.TimeoutError)},Z);try{return await Promise.race([$,X])}finally{clearTimeout(Q)}}function _p0(){let $={},Z=new Promise((X,Q)=>{$={resolve:X,reject:Q}});return Object.assign(Z,$)}function oa8(){let $={},Z=new Promise((X,Q)=>{$={resolve:(Y)=>{console.trace("resolve",Y),X(Y)},reject:(Y)=>{console.trace("reject"),Q(Y)}}});return Object.assign(Z,$)}function ra8($){for(let Z=$.length-1;Z>0;Z--){let X=Math.floor(Math.random()*(Z+1));[$[Z],$[X]]=[$[X],$[Z]]}return $}async function aa8($){let Z=[];for await(let X of $)Z.push(X);return Z}class Aa1{timers;measures;constructor(){this.timers=new Map,this.measures=new Map}mark($){this.timers.set($,performance.now())}measure($,Z,X){let Q=this.timers.get(Z);if(Q===void 0)throw Error(`${Z} is not defined`);let Y=this.timers.get(X);if(Y===void 0)throw Error(`${X} is not defined`);this.measures.set($,Y-Q)}getEntries(){let $=[];return this.measures.forEach((Z,X)=>{$.push({name:X,duration:Z})}),$}}Ia1.Perf=Aa1;class Ta1{max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=_p0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}Ia1.SimpleMutex=Ta1;function Ra1($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function sa8($=[0,250,250,500,500,3000,5000]){if(!Array.isArray($))$=[0,250,250,500,500,3000,5000];let Z=$.length-1;return{backoff(X){return Ra1(X>Z?$[Z]:$[X])}}}function ea8($){return $*1e6}function $s8($){return Math.floor($/1e6)}var Zs8="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",WN=new Uint8Array(62);for(let $=0;$<62;$++)WN[$]=Zs8.charCodeAt($);var Xs8=218340105584896;function Qs8(){let $=Math.floor(Math.random()*Xs8),Z=$%62,X=WN[Z];$=($-Z)/62,Z=$%62;let Q=WN[Z];$=($-Z)/62,Z=$%62;let Y=WN[Z];$=($-Z)/62,Z=$%62;let G=WN[Z];$=($-Z)/62,Z=$%62;let J=WN[Z];$=($-Z)/62,Z=$%62;let K=WN[Z];$=($-Z)/62,Z=$%62;let W=WN[Z];$=($-Z)/62;let H=WN[$];return String.fromCharCode(X,Q,Y,G,J,K,W,H)}});var va1=v((Ca1)=>{Object.defineProperty(Ca1,"__esModule",{value:!0});Ca1.nuid=Ca1.NuidImpl=void 0;var js8="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",aB=62,K70=12,ka1=10,Ma1=33,zs8=333,Va1=K70+ka1,xp0=new Uint8Array(aB);for(let $=0;$<aB;$++)xp0[$]=js8.charCodeAt($);var J70=4294967296,Sa1=BigInt(aB)**BigInt(ka1),Gp=Number(Sa1/(1n<<32n)),vp0=Number(Sa1%(1n<<32n));function Ps8($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function As8($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else Ps8($)}class fp0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(Va1),this.cbuf=new Uint8Array(K70),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(Gp+1)),this.seqLo=Math.floor(Math.random()*J70);while($++<8&&this.seqHi===Gp&&this.seqLo>=vp0);if(this.seqHi===Gp&&this.seqLo>=vp0)this.seqLo=0;this.inc=Math.random()*(zs8-Ma1)+Ma1|0}setPre(){As8(this.cbuf);for(let $=0;$<K70;$++)this.buf[$]=xp0[this.cbuf[$]%aB]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let X=Va1-1;X>=K70;X--){let Q=Math.floor($/aB),G=($-Q*aB)*J70+Z,J=Math.floor(G/aB),K=G-J*aB;this.buf[X]=xp0[K],$=Q,Z=J}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=J70)this.seqLo-=J70,this.seqHi+=1;if(this.seqHi>Gp||this.seqHi===Gp&&this.seqLo>=vp0)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()}}Ca1.NuidImpl=fp0;Ca1.nuid=new fp0});var ya1=v((fa1)=>{Object.defineProperty(fa1,"__esModule",{value:!0});fa1.nuid=fa1.Nuid=void 0;var xa1=va1();fa1.Nuid=xa1.NuidImpl;fa1.nuid=xa1.nuid});var H70=v((W70)=>{Object.defineProperty(W70,"__esModule",{value:!0});W70.nuid=W70.Nuid=void 0;var ga1=ya1();Object.defineProperty(W70,"Nuid",{enumerable:!0,get:function(){return ga1.Nuid}});Object.defineProperty(W70,"nuid",{enumerable:!0,get:function(){return ga1.nuid}})});var sB=v((ha1)=>{Object.defineProperty(ha1,"__esModule",{value:!0});ha1.DEFAULT_HOST=ha1.DEFAULT_PORT=ha1.Match=void 0;ha1.syncIterator=Vs8;ha1.createInbox=ks8;var qs8=H70(),Ms8=ZG();ha1.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function Vs8($){let Z=$[Symbol.asyncIterator]();return{async next(){let X=await Z.next();if(X.done)return Promise.resolve(null);return Promise.resolve(X.value)}}}function ks8($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw Ms8.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${qs8.nuid.next()}`}ha1.DEFAULT_PORT=4222;ha1.DEFAULT_HOST="127.0.0.1"});var Jp=v((da1)=>{Object.defineProperty(da1,"__esModule",{value:!0});da1.DataBuffer=void 0;var ca1=$G();class la1{buffers;byteLength;constructor(){this.buffers=[],this.byteLength=0}static concat(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}static fromAscii($){if(!$)$="";return ca1.TE.encode($)}static toAscii($){return ca1.TD.decode($)}reset(){this.buffers.length=0,this.byteLength=0}pack(){if(this.buffers.length>1){let $=new Uint8Array(this.byteLength),Z=0;for(let X=0;X<this.buffers.length;X++)$.set(this.buffers[X],Z),Z+=this.buffers[X].length;this.buffers.length=0,this.buffers.push($)}}shift(){if(this.buffers.length){let $=this.buffers.shift();if($)return this.byteLength-=$.length,$}return new Uint8Array(0)}drain($){if(this.buffers.length){this.pack();let Z=this.buffers.pop();if(Z){let X=this.byteLength;if($===void 0||$>X)$=X;let Q=Z.subarray(0,$);if(X>$)this.buffers.push(Z.subarray($));return this.byteLength=X-$,Q}}return new Uint8Array(0)}fill($,...Z){if($)this.buffers.push($),this.byteLength+=$.length;for(let X=0;X<Z.length;X++)if(Z[X]&&Z[X].length)this.buffers.push(Z[X]),this.byteLength+=Z[X].length}peek(){if(this.buffers.length)return this.pack(),this.buffers[0];return new Uint8Array(0)}size(){return this.byteLength}length(){return this.buffers.length}}da1.DataBuffer=la1});var vE=v((pa1)=>{Object.defineProperty(pa1,"__esModule",{value:!0});pa1.LF=pa1.CR=pa1.CRLF=pa1.CR_LF_LEN=pa1.CR_LF=void 0;pa1.setTransportFactory=ys8;pa1.defaultPort=gs8;pa1.getUrlParseFn=hs8;pa1.newTransport=us8;pa1.getResolveFn=cs8;pa1.protoLen=ia1;pa1.extractProtocolMessage=ls8;var xs8=$G(),fs8=sB(),bs8=Jp(),XG;function ys8($){XG=$}function gs8(){return XG!==void 0&&XG.defaultPort!==void 0?XG.defaultPort:fs8.DEFAULT_PORT}function hs8(){return XG!==void 0&&XG.urlParseFn?XG.urlParseFn:void 0}function us8(){if(!XG||typeof XG.factory!=="function")throw Error("transport fn is not set");return XG.factory()}function cs8(){return XG!==void 0&&XG.dnsResolveFn?XG.dnsResolveFn:void 0}pa1.CR_LF=`\r
|
|
1433
1433
|
`;pa1.CR_LF_LEN=pa1.CR_LF.length;pa1.CRLF=bs8.DataBuffer.fromAscii(pa1.CR_LF);pa1.CR=new Uint8Array(pa1.CRLF)[0];pa1.LF=new Uint8Array(pa1.CRLF)[1];function ia1($){for(let Z=0;Z<$.length;Z++){let X=Z+1;if($.byteLength>X&&$[Z]===pa1.CR&&$[X]===pa1.LF)return X+1}return 0}function ls8($){let Z=ia1($);if(Z>0){let Q=new Uint8Array($).slice(0,Z);return xs8.TD.decode(Q)}return""}});var up0=v(($s1)=>{Object.defineProperty($s1,"__esModule",{value:!0});$s1.ipV4=aa1;$s1.isIP=es8;$s1.parseIP=sa1;var Kp=4,xE=16,F70=48,ra1=57,ta1=65,as8=70,oa1=97,ss8=102,hp0=16777215;function aa1($,Z,X,Q){let Y=new Uint8Array(xE);return[0,0,0,0,0,0,0,0,0,0,255,255].forEach((J,K)=>{Y[K]=J}),Y[12]=$,Y[13]=Z,Y[14]=X,Y[15]=Q,Y}function es8($){return sa1($)!==void 0}function sa1($){for(let Z=0;Z<$.length;Z++)switch($[Z]){case".":return ea1($);case":":return $e8($)}return}function ea1($){let Z=new Uint8Array(Kp);for(let X=0;X<Kp;X++){if($.length===0)return;if(X>0){if($[0]!==".")return;$=$.substring(1)}let{n:Q,c:Y,ok:G}=Ze8($);if(!G||Q>255)return;$=$.substring(Y),Z[X]=Q}return aa1(Z[0],Z[1],Z[2],Z[3])}function $e8($){let Z=new Uint8Array(xE),X=-1;if($.length>=2&&$[0]===":"&&$[1]===":"){if(X=0,$=$.substring(2),$.length===0)return Z}let Q=0;while(Q<xE){let{n:Y,c:G,ok:J}=Xe8($);if(!J||Y>65535)return;if(G<$.length&&$[G]==="."){if(X<0&&Q!=xE-Kp)return;if(Q+Kp>xE)return;let K=ea1($);if(K===void 0)return;Z[Q]=K[12],Z[Q+1]=K[13],Z[Q+2]=K[14],Z[Q+3]=K[15],$="",Q+=Kp;break}if(Z[Q]=Y>>8,Z[Q+1]=Y,Q+=2,$=$.substring(G),$.length===0)break;if($[0]!==":"||$.length==1)return;if($=$.substring(1),$[0]===":"){if(X>=0)return;if(X=Q,$=$.substring(1),$.length===0)break}}if($.length!==0)return;if(Q<xE){if(X<0)return;let Y=xE-Q;for(let G=Q-1;G>=X;G--)Z[G+Y]=Z[G];for(let G=X+Y-1;G>=X;G--)Z[G]=0}else if(X>=0)return;return Z}function Ze8($){let Z=0,X=0;for(Z=0;Z<$.length&&F70<=$.charCodeAt(Z)&&$.charCodeAt(Z)<=ra1;Z++)if(X=X*10+($.charCodeAt(Z)-F70),X>=hp0)return{n:hp0,c:Z,ok:!1};if(Z===0)return{n:0,c:0,ok:!1};return{n:X,c:Z,ok:!0}}function Xe8($){let Z=0,X=0;for(X=0;X<$.length;X++){if(F70<=$.charCodeAt(X)&&$.charCodeAt(X)<=ra1)Z*=16,Z+=$.charCodeAt(X)-F70;else if(oa1<=$.charCodeAt(X)&&$.charCodeAt(X)<=ss8)Z*=16,Z+=$.charCodeAt(X)-oa1+10;else if(ta1<=$.charCodeAt(X)&&$.charCodeAt(X)<=as8)Z*=16,Z+=$.charCodeAt(X)-ta1+10;else break;if(Z>=hp0)return{n:0,c:X,ok:!1}}if(X===0)return{n:0,c:X,ok:!1};return{n:Z,c:X,ok:!0}}});var pp0=v((Xs1)=>{Object.defineProperty(Xs1,"__esModule",{value:!0});Xs1.Servers=Xs1.ServerImpl=void 0;Xs1.isIPV4OrHostname=Zs1;Xs1.hostPort=ip0;var cp0=vE(),lp0=u3(),dp0=up0(),Je8=sB(),Ke8=ZG();function Zs1($){if($.indexOf("[")!==-1||$.indexOf("::")!==-1)return!1;if($.indexOf(".")!==-1)return!0;if($.split(":").length<=2)return!0;return!1}function mp0($){return!Zs1($)}function We8($){let X=$.toUpperCase().indexOf("::FFFF:");if(X!==-1&&$.indexOf(".")!==-1){let Q=$.substring(X+7);return Q=Q.replace("[",""),Q.replace("]","")}return $}function ip0($){if($=$.trim(),$.match(/^(.*:\/\/)(.*)/m))$=$.replace(/^(.*:\/\/)(.*)/gm,"$2");if($=We8($),mp0($)&&$.indexOf("[")===-1)$=`[${$}]`;let Z=mp0($)?$.match(/(]:)(\d+)/):$.match(/(:)(\d+)/),X=Z&&Z.length===3&&Z[1]&&Z[2]?parseInt(Z[2]):Je8.DEFAULT_PORT,Y=new URL(`${X===80?"https":"http"}://${$}`);Y.port=`${X}`;let G=Y.hostname;if(G.charAt(0)==="[")G=G.substring(1,G.length-1);return{listen:Y.host,hostname:G,port:X}}class Gy{src;listen;hostname;port;didConnect;reconnects;lastConnect;gossiped;tlsName;resolves;constructor($,Z=!1){this.src=$,this.tlsName="";let X=ip0($);this.listen=X.listen,this.hostname=X.hostname,this.port=X.port,this.didConnect=!1,this.reconnects=0,this.lastConnect=0,this.gossiped=Z}toString(){return this.listen}async resolve($){if(!$.fn||$.resolve===!1)return[this];let Z=[];if((0,dp0.isIP)(this.hostname))return[this];else{let X=await $.fn(this.hostname);if($.debug)console.log(`resolve ${this.hostname} = ${X.join(",")}`);for(let Q of X){let Y=this.port===80?"https":"http",G=new URL(`${Y}://${mp0(Q)?"["+Q+"]":Q}`);G.port=`${this.port}`;let J=new Gy(G.host,!1);J.tlsName=this.hostname,Z.push(J)}}if($.randomize)(0,lp0.shuffle)(Z);return this.resolves=Z,Z}}Xs1.ServerImpl=Gy;class N70{firstSelect;servers;currentServer;tlsName;randomize;constructor($={}){this.firstSelect=!0,this.servers=[],this.tlsName="",this.randomize=$.randomize||!1}setServers($){if(!Array.isArray($)||$.length===0)throw Ke8.InvalidArgumentError.format("servers","cannot be empty");let Z=(0,cp0.getUrlParseFn)(),X=new Map;for(let Y of this.servers)X.set(Y.listen,Y);let Q=[];for(let Y of $){Y=Z?Z(Y):Y;let{listen:G}=ip0(Y),J=X.get(G);if(J)J.gossiped=!1,Q.push(J);else Q.push(new Gy(Y))}if(this.randomize)(0,lp0.shuffle)(Q);if(this.servers=Q,this.currentServer===void 0||!Q.includes(this.currentServer))this.currentServer=Q[0],this.firstSelect=!0}clear(){this.servers.length=0}updateTLSName(){let $=this.getCurrentServer();if(!(0,dp0.isIP)($.hostname))this.tlsName=$.hostname,this.servers.forEach((Z)=>{if(Z.gossiped)Z.tlsName=this.tlsName})}getCurrentServer(){return this.currentServer}addServer($,Z=!1){let X=(0,cp0.getUrlParseFn)();$=X?X($):$;let Q=new Gy($,Z);if((0,dp0.isIP)(Q.hostname))Q.tlsName=this.tlsName;this.servers.push(Q)}selectServer(){if(this.firstSelect)return this.firstSelect=!1,this.currentServer;let $=this.servers.shift();if($)this.servers.push($),this.currentServer=$;return $}removeCurrentServer(){this.removeServer(this.currentServer)}removeServer($){if($){let Z=this.servers.indexOf($);this.servers.splice(Z,1)}}snapshot(){return N70.freezeAll(this.servers)}snapshotForHandler(){let $=this.currentServer;if(!$)return this.snapshot();let Z=this.servers.indexOf($);if(Z<=0)return this.snapshot();return N70.freezeAll([$,...this.servers.slice(0,Z),...this.servers.slice(Z+1)])}static freezeAll($){return $.map((Z)=>Object.freeze({hostname:Z.hostname,port:Z.port,listen:Z.listen,src:Z.src,tlsName:Z.tlsName,reconnects:Z.reconnects,lastConnect:Z.lastConnect,gossiped:Z.gossiped,didConnect:Z.didConnect}))}find($){return this.servers.find((Z)=>Z.listen===$.listen)}setCurrent($){this.currentServer=$}length(){return this.servers.length}next(){return this.servers.length?this.servers[0]:void 0}getServers(){return this.servers}update($,Z){let X=[],Q=[],Y=(0,cp0.getUrlParseFn)(),G=new Map;if($.connect_urls&&$.connect_urls.length>0)$.connect_urls.forEach((K)=>{K=Y?Y(K,Z):K;let W=new Gy(K,!0);G.set(K,W)});let J=[];if(this.servers.forEach((K,W)=>{let H=K.listen;if(K.gossiped&&this.currentServer.listen!==H&&G.get(H)===void 0)J.push(W);G.delete(H)}),J.reverse(),J.forEach((K)=>{let W=this.servers.splice(K,1);Q=Q.concat(W[0].listen)}),G.forEach((K,W)=>{this.servers.push(K),X.push(W)}),this.randomize&&X.length>0){let K=this.currentServer,W=this.servers.filter((H)=>H!==K);(0,lp0.shuffle)(W),this.servers=K?[K,...W]:W}return{added:X,deleted:Q}}}Xs1.Servers=N70});var U70=v((Js1)=>{Object.defineProperty(Js1,"__esModule",{value:!0});Js1.QueuedIteratorImpl=void 0;var np0=u3(),Ys1=ZG();class Gs1{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,np0.deferred)(),this.yields=[],this.iterClosed=(0,np0.deferred)(),this.time=0,this.yielding=!1,this.didBreak=!1,this.profile=!1}[Symbol.asyncIterator](){return this.iterate()}push($){if(this.done)return;if(this.didBreak){if(typeof $==="function"){let Z=$;try{Z()}catch(X){}}return}if(typeof $==="function")this.pendingFiltered++;this.yields.push($),this.signal.resolve()}async*iterate(){if(this.noIterator)throw new Ys1.InvalidOperationError("iterator cannot be used when a callback is registered");if(this.yielding)throw new Ys1.InvalidOperationError("iterator is already yielding");this.yielding=!0;try{while(!0){if(this.yields.length===0)await this.signal;if(this.err)throw this.err;let $=this.yields;this.inflight=$.length,this.yields=[];for(let Z=0;Z<$.length;Z++){if(typeof $[Z]==="function"){this.pendingFiltered--;let Q=$[Z];try{Q()}catch(Y){throw Y}if(this.err)throw this.err;continue}this.processed++,this.inflight--;let X=this.profile?Date.now():0;yield $[Z],this.time=this.profile?Date.now()-X:0}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,np0.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}}Js1.QueuedIteratorImpl=Gs1});var tp0=v((Fs1)=>{Object.defineProperty(Fs1,"__esModule",{value:!0});Fs1.MuxSubscription=void 0;var Ue8=sB(),Ws1=ZG();class Hs1{baseInbox;reqs;constructor(){this.reqs=new Map}size(){return this.reqs.size}init($){return this.baseInbox=`${(0,Ue8.createInbox)($)}.`,this.baseInbox}add($){if(!isNaN($.received))$.received=0;this.reqs.set($.token,$)}get($){return this.reqs.get($)}cancel($){this.reqs.delete($.token)}getToken($){let Z=$.subject||"";if(Z.indexOf(this.baseInbox)===0)return Z.substring(this.baseInbox.length);return null}all(){return Array.from(this.reqs.values())}handleError($,Z){if($)return this.all().forEach((X)=>{X.resolver(Z,{})}),!0;if(Z.operation==="publish"){let X=this.all().find((Q)=>{return Q.requestSubject===Z.subject});if(X)return X.resolver(Z,{}),!0}return!1}dispatcher(){return($,Z)=>{let X=this.getToken(Z);if(X){let Q=this.get(X);if(Q){if($===null)$=Z?.data?.length===0&&Z.headers?.code===503?new Ws1.NoRespondersError(Q.requestSubject):null;Q.resolver($,Z)}}}}close(){let $=new Ws1.RequestError("connection closed");this.reqs.forEach((Z)=>{Z.resolver($,{})})}}Fs1.MuxSubscription=Hs1});var op0=v((Bs1)=>{Object.defineProperty(Bs1,"__esModule",{value:!0});Bs1.Heartbeat=void 0;var Be8=u3();class Us1{ph;interval;maxOut;timer;pendings;constructor($,Z,X){this.ph=$,this.interval=Z,this.maxOut=X,this.pendings=[]}start(){this.cancel(),this._schedule()}cancel($){if(this.timer)clearTimeout(this.timer),this.timer=void 0;if(this._reset(),$)this.ph.disconnect()}_schedule(){this.timer=setTimeout(()=>{if(this.ph.dispatchStatus({type:"ping",pendingPings:this.pendings.length+1}),this.pendings.length===this.maxOut){this.cancel(!0);return}let $=(0,Be8.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})}}Bs1.Heartbeat=Us1});var sp0=v((Es1)=>{Object.defineProperty(Es1,"__esModule",{value:!0});Es1.DenoBuffer=Es1.MAX_SIZE=Es1.AssertionError=void 0;Es1.assert=Ds1;Es1.concat=ws1;Es1.append=Le8;Es1.readAll=De8;Es1.writeAll=we8;var Oe8=$G();class rp0 extends Error{constructor($){super($);this.name="AssertionError"}}Es1.AssertionError=rp0;function Ds1($,Z="Assertion failed."){if(!$)throw new rp0(Z)}var Ls1=32768;Es1.MAX_SIZE=4294967294;function B70($,Z,X=0){let Q=Z.byteLength-X;if($.byteLength>Q)$=$.subarray(0,Q);return Z.set($,X),$.byteLength}function ws1($,Z){if($===void 0&&Z===void 0)return new Uint8Array(0);if($===void 0)return Z;if(Z===void 0)return $;let X=new Uint8Array($.length+Z.length);return X.set($,0),X.set(Z,$.length),X}function Le8($,Z){return ws1($,Uint8Array.of(Z))}class ap0{_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($){Ds1($<=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=B70(this._buf.subarray(this._off),$);return this._off+=Z,Z}writeByte($){return this.write(Uint8Array.of($))}writeString($){return this.write(Oe8.TE.encode($))}write($){let Z=this._grow($.byteLength);return B70($,this._buf,Z)}_grow($){let Z=this.length;if(Z===0&&this._off!==0)this.reset();let X=this._tryGrowByReslice($);if(X>=0)return X;let Q=this.capacity;if($<=Math.floor(Q/2)-Z)B70(this._buf.subarray(this._off),this._buf);else if(Q+$>Es1.MAX_SIZE)throw Error("The buffer cannot be grown beyond the maximum size.");else{let Y=new Uint8Array(Math.min(2*Q+$,Es1.MAX_SIZE));B70(this._buf.subarray(this._off),Y),this._buf=Y}return this._off=0,this._reslice(Math.min(Z+$,Es1.MAX_SIZE)),Z}grow($){if($<0)throw Error("Buffer._grow: negative count");let Z=this._grow($);this._reslice(Z)}readFrom($){let Z=0,X=new Uint8Array(Ls1);while(!0){let Q=this.capacity-this.length<Ls1,Y=Q?X:new Uint8Array(this._buf.buffer,this.length),G=$.read(Y);if(G===null)return Z;if(Q)this.write(Y.subarray(0,G));else this._reslice(this.length+G);Z+=G}}}Es1.DenoBuffer=ap0;function De8($){let Z=new ap0;return Z.readFrom($),Z.bytes()}function we8($,Z){let X=0;while(X<Z.length)X+=$.write(Z.subarray(X))}});var Zn0=v((Ts1)=>{Object.defineProperty(Ts1,"__esModule",{value:!0});Ts1.cc=Ts1.State=Ts1.Parser=Ts1.Kind=void 0;Ts1.describe=Re8;var ep0=sp0(),$n0=$G();Ts1.Kind={OK:0,ERR:1,MSG:2,INFO:3,PING:4,PONG:5};function Re8($){let Z,X="";switch($.kind){case Ts1.Kind.MSG:Z="MSG";break;case Ts1.Kind.OK:Z="OK";break;case Ts1.Kind.ERR:Z="ERR",X=$n0.TD.decode($.data);break;case Ts1.Kind.PING:Z="PING";break;case Ts1.Kind.PONG:Z="PONG";break;case Ts1.Kind.INFO:Z="INFO",X=$n0.TD.decode($.data)}return`${Z}: ${X}`}function zs1(){let $={};return $.sid=-1,$.hdr=-1,$.size=-1,$}var Ps1=48,Ie8=57,Jy=67108864;class As1{dispatcher;state;as;drop;hdr;ma;argBuf;msgBuf;constructor($){this.dispatcher=$,this.state=Ts1.State.OP_START,this.as=0,this.drop=0,this.hdr=0}parse($){let Z;for(Z=0;Z<$.length;Z++){let X=$[Z];switch(this.state){case Ts1.State.OP_START:switch(X){case Ts1.cc.M:case Ts1.cc.m:this.state=Ts1.State.OP_M,this.hdr=-1,this.ma=zs1();break;case Ts1.cc.H:case Ts1.cc.h:this.state=Ts1.State.OP_H,this.hdr=0,this.ma=zs1();break;case Ts1.cc.P:case Ts1.cc.p:this.state=Ts1.State.OP_P;break;case Ts1.cc.PLUS:this.state=Ts1.State.OP_PLUS;break;case Ts1.cc.MINUS:this.state=Ts1.State.OP_MINUS;break;case Ts1.cc.I:case Ts1.cc.i:this.state=Ts1.State.OP_I;break;default:throw this.fail($.subarray(Z))}break;case Ts1.State.OP_H:switch(X){case Ts1.cc.M:case Ts1.cc.m:this.state=Ts1.State.OP_M;break;default:throw this.fail($.subarray(Z))}break;case Ts1.State.OP_M:switch(X){case Ts1.cc.S:case Ts1.cc.s:this.state=Ts1.State.OP_MS;break;default:throw this.fail($.subarray(Z))}break;case Ts1.State.OP_MS:switch(X){case Ts1.cc.G:case Ts1.cc.g:this.state=Ts1.State.OP_MSG;break;default:throw this.fail($.subarray(Z))}break;case Ts1.State.OP_MSG:switch(X){case Ts1.cc.SPACE:case Ts1.cc.TAB:this.state=Ts1.State.OP_MSG_SPC;break;default:throw this.fail($.subarray(Z))}break;case Ts1.State.OP_MSG_SPC:switch(X){case Ts1.cc.SPACE:case Ts1.cc.TAB:continue;default:this.state=Ts1.State.MSG_ARG,this.as=Z}break;case Ts1.State.MSG_ARG:switch(X){case Ts1.cc.CR:this.drop=1;break;case Ts1.cc.NL:{let Q=this.argBuf?this.argBuf.bytes():$.subarray(this.as,Z-this.drop);this.processMsgArgs(Q),this.drop=0,this.as=Z+1,this.state=Ts1.State.MSG_PAYLOAD,Z=this.as+this.ma.size-1;break}default:if(this.argBuf)this.argBuf.writeByte(X)}break;case Ts1.State.MSG_PAYLOAD:if(this.msgBuf)if(this.msgBuf.length>=this.ma.size){let Q=this.msgBuf.bytes({copy:!1});this.dispatcher.push({kind:Ts1.Kind.MSG,msg:this.ma,data:Q}),this.argBuf=void 0,this.msgBuf=void 0,this.state=Ts1.State.MSG_END}else{let Q=this.ma.size-this.msgBuf.length,Y=$.length-Z;if(Y<Q)Q=Y;if(Q>0)this.msgBuf.write($.subarray(Z,Z+Q)),Z=Z+Q-1;else this.msgBuf.writeByte(X)}else if(Z-this.as>=this.ma.size)this.dispatcher.push({kind:Ts1.Kind.MSG,msg:this.ma,data:$.subarray(this.as,Z)}),this.argBuf=void 0,this.msgBuf=void 0,this.state=Ts1.State.MSG_END;break;case Ts1.State.MSG_END:switch(X){case Ts1.cc.NL:this.drop=0,this.as=Z+1,this.state=Ts1.State.OP_START;break;default:continue}break;case Ts1.State.OP_PLUS:switch(X){case Ts1.cc.O:case Ts1.cc.o:this.state=Ts1.State.OP_PLUS_O;break;default:throw this.fail($.subarray(Z))}break;case Ts1.State.OP_PLUS_O:switch(X){case Ts1.cc.K:case Ts1.cc.k:this.state=Ts1.State.OP_PLUS_OK;break;default:throw this.fail($.subarray(Z))}break;case Ts1.State.OP_PLUS_OK:switch(X){case Ts1.cc.NL:this.dispatcher.push({kind:Ts1.Kind.OK}),this.drop=0,this.state=Ts1.State.OP_START;break}break;case Ts1.State.OP_MINUS:switch(X){case Ts1.cc.E:case Ts1.cc.e:this.state=Ts1.State.OP_MINUS_E;break;default:throw this.fail($.subarray(Z))}break;case Ts1.State.OP_MINUS_E:switch(X){case Ts1.cc.R:case Ts1.cc.r:this.state=Ts1.State.OP_MINUS_ER;break;default:throw this.fail($.subarray(Z))}break;case Ts1.State.OP_MINUS_ER:switch(X){case Ts1.cc.R:case Ts1.cc.r:this.state=Ts1.State.OP_MINUS_ERR;break;default:throw this.fail($.subarray(Z))}break;case Ts1.State.OP_MINUS_ERR:switch(X){case Ts1.cc.SPACE:case Ts1.cc.TAB:this.state=Ts1.State.OP_MINUS_ERR_SPC;break;default:throw this.fail($.subarray(Z))}break;case Ts1.State.OP_MINUS_ERR_SPC:switch(X){case Ts1.cc.SPACE:case Ts1.cc.TAB:continue;default:this.state=Ts1.State.MINUS_ERR_ARG,this.as=Z}break;case Ts1.State.MINUS_ERR_ARG:switch(X){case Ts1.cc.CR:this.drop=1;break;case Ts1.cc.NL:{let Q;if(this.argBuf)Q=this.argBuf.bytes(),this.argBuf=void 0;else Q=$.subarray(this.as,Z-this.drop);this.dispatcher.push({kind:Ts1.Kind.ERR,data:Q}),this.drop=0,this.as=Z+1,this.state=Ts1.State.OP_START;break}default:if(this.argBuf)this.argBuf.write(Uint8Array.of(X))}break;case Ts1.State.OP_P:switch(X){case Ts1.cc.I:case Ts1.cc.i:this.state=Ts1.State.OP_PI;break;case Ts1.cc.O:case Ts1.cc.o:this.state=Ts1.State.OP_PO;break;default:throw this.fail($.subarray(Z))}break;case Ts1.State.OP_PO:switch(X){case Ts1.cc.N:case Ts1.cc.n:this.state=Ts1.State.OP_PON;break;default:throw this.fail($.subarray(Z))}break;case Ts1.State.OP_PON:switch(X){case Ts1.cc.G:case Ts1.cc.g:this.state=Ts1.State.OP_PONG;break;default:throw this.fail($.subarray(Z))}break;case Ts1.State.OP_PONG:switch(X){case Ts1.cc.NL:this.dispatcher.push({kind:Ts1.Kind.PONG}),this.drop=0,this.state=Ts1.State.OP_START;break}break;case Ts1.State.OP_PI:switch(X){case Ts1.cc.N:case Ts1.cc.n:this.state=Ts1.State.OP_PIN;break;default:throw this.fail($.subarray(Z))}break;case Ts1.State.OP_PIN:switch(X){case Ts1.cc.G:case Ts1.cc.g:this.state=Ts1.State.OP_PING;break;default:throw this.fail($.subarray(Z))}break;case Ts1.State.OP_PING:switch(X){case Ts1.cc.NL:this.dispatcher.push({kind:Ts1.Kind.PING}),this.drop=0,this.state=Ts1.State.OP_START;break}break;case Ts1.State.OP_I:switch(X){case Ts1.cc.N:case Ts1.cc.n:this.state=Ts1.State.OP_IN;break;default:throw this.fail($.subarray(Z))}break;case Ts1.State.OP_IN:switch(X){case Ts1.cc.F:case Ts1.cc.f:this.state=Ts1.State.OP_INF;break;default:throw this.fail($.subarray(Z))}break;case Ts1.State.OP_INF:switch(X){case Ts1.cc.O:case Ts1.cc.o:this.state=Ts1.State.OP_INFO;break;default:throw this.fail($.subarray(Z))}break;case Ts1.State.OP_INFO:switch(X){case Ts1.cc.SPACE:case Ts1.cc.TAB:this.state=Ts1.State.OP_INFO_SPC;break;default:throw this.fail($.subarray(Z))}break;case Ts1.State.OP_INFO_SPC:switch(X){case Ts1.cc.SPACE:case Ts1.cc.TAB:continue;default:this.state=Ts1.State.INFO_ARG,this.as=Z}break;case Ts1.State.INFO_ARG:switch(X){case Ts1.cc.CR:this.drop=1;break;case Ts1.cc.NL:{let Q;if(this.argBuf)Q=this.argBuf.bytes(),this.argBuf=void 0;else Q=$.subarray(this.as,Z-this.drop);this.dispatcher.push({kind:Ts1.Kind.INFO,data:Q}),this.drop=0,this.as=Z+1,this.state=Ts1.State.OP_START;break}default:if(this.argBuf)this.argBuf.writeByte(X)}break;default:throw this.fail($.subarray(Z))}}if((this.state===Ts1.State.MSG_ARG||this.state===Ts1.State.MINUS_ERR_ARG||this.state===Ts1.State.INFO_ARG)&&!this.argBuf)this.argBuf=new ep0.DenoBuffer($.subarray(this.as,Z-this.drop));if(this.state===Ts1.State.MSG_PAYLOAD&&!this.msgBuf){if(!this.argBuf)this.cloneMsgArg();this.msgBuf=new ep0.DenoBuffer($.subarray(this.as))}}cloneMsgArg(){let $=this.ma.subject.length,Z=this.ma.reply?this.ma.reply.length:0,X=new Uint8Array($+Z);if(X.set(this.ma.subject),this.ma.reply)X.set(this.ma.reply,$);if(this.argBuf=new ep0.DenoBuffer(X),this.ma.subject=X.subarray(0,$),this.ma.reply)this.ma.reply=X.subarray($)}processMsgArgs($){if(this.hdr>=0)return this.processHeaderMsgArgs($);let Z=[],X=-1;for(let Q=0;Q<$.length;Q++)switch($[Q]){case Ts1.cc.SPACE:case Ts1.cc.TAB:case Ts1.cc.CR:case Ts1.cc.NL:if(X>=0)Z.push($.subarray(X,Q)),X=-1;break;default:if(X<0)X=Q}if(X>=0)Z.push($.subarray(X));switch(Z.length){case 3:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=void 0,this.ma.size=this.protoParseInt(Z[2],Jy);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],Jy);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}: ${$n0.TD.decode($)}`)}processHeaderMsgArgs($){let Z=[],X=-1;for(let Q=0;Q<$.length;Q++)switch($[Q]){case Ts1.cc.SPACE:case Ts1.cc.TAB:case Ts1.cc.CR:case Ts1.cc.NL:if(X>=0)Z.push($.subarray(X,Q)),X=-1;break;default:if(X<0)X=Q}if(X>=0)Z.push($.subarray(X));switch(Z.length){case 4:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=void 0,this.ma.hdr=this.protoParseInt(Z[2],Jy),this.ma.size=this.protoParseInt(Z[3],Jy);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],Jy),this.ma.size=this.protoParseInt(Z[4],Jy);break;default:throw this.fail($,"processHeaderMsgArgs Parse Error")}if(this.ma.sid<0)throw this.fail($,"processHeaderMsgArgs Bad or Missing Sid Error");if(this.ma.hdr<0||this.ma.hdr>this.ma.size)throw this.fail($,"processHeaderMsgArgs Bad or Missing Header Size Error");if(this.ma.size<0)throw this.fail($,"processHeaderMsgArgs Bad or Missing Size Error")}protoParseInt($,Z){if($.length===0||$.length>15)return-1;let X=0;for(let Q=0;Q<$.length;Q++){if($[Q]<Ps1||$[Q]>Ie8)return-1;X=X*10+($[Q]-Ps1)}return Z!==void 0&&X>Z?-1:X}}Ts1.Parser=As1;Ts1.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};Ts1.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 D70=v((Is1)=>{Object.defineProperty(Is1,"__esModule",{value:!0});Is1.MsgHdrsImpl=void 0;Is1.canonicalMIMEHeaderKey=Qn0;Is1.headers=Ve8;var Rs1=$G(),c3=sB(),L70=ZG();function Qn0($){let F=!0,N=Array($.length);for(let U=0;U<$.length;U++){let B=$.charCodeAt(U);if(B===58||B<33||B>126)throw L70.InvalidArgumentError.format("header",`'${$[U]}' 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;N[U]=B,F=B==45}return String.fromCharCode(...N)}function Ve8($=0,Z=""){if($===0&&Z!=="")throw L70.InvalidArgumentError.format("code","is required");else if($>0&&Z==="")throw L70.InvalidArgumentError.format("description","is required");return new Ky($,Z)}var Xn0="NATS/1.0";class Ky{_code;headers;_description;constructor($=0,Z=""){this._code=$,this._description=Z,this.headers=new Map}[Symbol.iterator](){return this.headers.entries()}size(){return this.headers.size}equals($){if($&&this.headers.size===$.headers.size&&this._code===$._code){for(let[Z,X]of this.headers){let Q=$.values(Z);if(X.length!==Q.length)return!1;let Y=[...X].sort(),G=[...Q].sort();for(let J=0;J<Y.length;J++)if(Y[J]!==G[J])return!1}return!0}return!1}static decode($){let Z=new Ky,Q=Rs1.TD.decode($).split(`\r
|
|
1434
1434
|
`),Y=Q[0];if(Y!==Xn0){let G=Y.replace(Xn0,"").trim();if(G.length>0){if(Z._code=parseInt(G,10),isNaN(Z._code))Z._code=0;let J=Z._code.toString();G=G.replace(J,""),Z._description=G.trim()}}if(Q.length>=1)Q.slice(1).map((G)=>{if(G){let J=G.indexOf(":");if(J>-1){let K=G.slice(0,J),W=G.slice(J+1).trim();Z.append(K,W)}}});return Z}toString(){if(this.headers.size===0&&this._code===0)return"";let $=Xn0;if(this._code>0&&this._description!=="")$+=` ${this._code} ${this._description}`;for(let[Z,X]of this.headers)for(let Q=0;Q<X.length;Q++)$=`${$}\r
|
|
1435
1435
|
${Z}: ${X[Q]}`;return`${$}\r
|
|
@@ -4256,7 +4256,7 @@ Respond with the structured verdict and a short reason.`,mX8;var pX8=L(()=>{j4()
|
|
|
4256
4256
|
${G.join(`
|
|
4257
4257
|
`)}`:Y}function sl6($){let Z=new Set;for(let X of $)for(let Q of X.split(`
|
|
4258
4258
|
`)){let Y=Q.trim();if(/^Co-authored-by:\s/i.test(Y))Z.add(Y)}return[...Z]}var SQ8=200,dl6=12,il6,nl6=300,CB1=3;var _B1=L(()=>{ax();dV0();il6={aheadBy:0,behindBy:0,files:[]}});function $d6($){if(!$||$.includes(".."))return!1;return el6.test($)}function _Q8($){let Z=typeof $.__resolveType==="string"?$.__resolveType:null;if(!Z||!$d6(Z))return null;let{__resolveType:X,...Q}=$;return{resolveType:Z,payload:Q}}function vQ8($,Z){return`${$.replace(/\/+$/,"")}/deco/invoke/${Z}`}var el6;var xQ8=L(()=>{el6=/^[\w./@-]+$/});function h10($,Z){let X=$?.githubRepo;if(!X?.owner||!X?.name)return null;if(!X.connectionId)return X;if(!Z.includes(X.connectionId))return null;return X}async function fQ8($,Z,X,Q){if(!Q.connectionId)throw new ex("Push requires a connected GitHub account. Connect mcp-github for this project and restart the sandbox.");let Y=$.organization?.id;if(!Y)throw new ex(D9);await oL({ctx:$,connectionId:Q.connectionId,organizationId:Y,forceRefresh:!0,onLegacyMintError:(F)=>{let N=F instanceof Error?F.message:D9;throw new ex(N)}});let{cloneUrl:G,gitUserName:J,gitUserEmail:K}=await RH(Q.connectionId,Q.owner,Q.name,$.db,$.vault).catch((F)=>{let{code:N,message:U}=dz$(F instanceof Error?F.message:String(F));throw N?new ex(U):F}),W=wd($),H=await Z.proxyDaemonRequest(X,"/_sandbox/config",{method:"PUT",headers:new Headers({"content-type":"application/json"}),body:JSON.stringify({git:{repository:{cloneUrl:G},identity:{userName:J,userEmail:K}},...W?{operator:W}:{}})});if(!H.ok){let F=await tL(H,Zd6).catch(()=>H.statusText);throw Error(`Failed to refresh sandbox git credentials (${H.status}): ${F}`)}}var Zd6=10485760,ex;var vB1=L(()=>{cJ();CV0();yr();y41();Yu();ex=class ex extends Error{constructor($){super($);this.name="GitPushAuthError"}}});function Qd6($){let Z=$.startsWith("thread:")?$.slice(7):$;if(!Z||Z.length>255||Z.includes("..")||Z.startsWith("/")||Z.endsWith("/")||Z.endsWith(".lock")||!Xd6.test(Z))throw Error(`Invalid branch name: ${$}`)}function $f($){return AbortSignal.any([$.req.raw.signal,AbortSignal.timeout(Gd6)])}async function Kd6($,Z){let X=$.var.studioContext,Q=hJ(Z.branch),Y=$.req.query("thread")??Q,G=Y&&Y===Q?Z.branchThread:Y?await X.storage.threads.get(Y).catch(()=>null):null,J=G?.virtual_mcp_id===Z.virtualMcpId?G:null,K=$v(J?.metadata?.runtime);if(K)return K;let W=kP0(Z.virtualMcpMetadata),H=W==="cms"?await NB1(X,{claimName:Z.claimName}):"alive",F=W==="cms"&&H!=="alive"?"cms":"sandbox",N=!!J&&(H==="gone"||H==="alive"&&W==="cms");if(N&&J)Oa(X,J.id,F);if(W==="cms")console.log("sandbox proxy: no runtime stamp",{route:$.req.path,method:$.req.method,reason:J?"unstamped":"threadless",liveness:H,resolved:F,stamped:N});return F}async function Wd6($){let Z=$.get("vmClaim");if(Z.runner)return Z.runner;try{return await AQ($.var.studioContext)}catch{return null}}function Zf($){let{runner:Z}=$.get("vmClaim");if(!Z)return $.json({error:"No sandbox runner configured"},503);return Z}async function Td($){let{virtualMcpMetadata:Z,connectionIds:X}=$.get("vmClaim"),Q=$.var.studioContext,Y=h10(Z,X);if(!Y)throw new m4(404,"AUTH","repo","Project has no GitHub repository");let G=a(Q);return vV0(Q,G.id,Y)}function xB1($,Z){if(Z instanceof _V0)return $.json({error:Z.message},429,{...k5,...Z.retryAfterMs===null?{}:{"Retry-After":String(Math.ceil(Z.retryAfterMs/1000))}});if(Z instanceof m4){let Q=Z.status===404?404:Z.status===409||Z.status===422?409:502;return $.json({error:Z.message},Q,k5)}let X=Z instanceof Error?Z.message:String(Z);return $.json({error:X},502,k5)}async function gQ8($,Z,X){let Q;try{Q=await fetch(Z,X)}catch{return $.json({error:"Preview unreachable"},502)}let Y;try{Y=await Q.text()}catch{return $.json({error:"Preview unreachable"},502)}return new Response(Y,{status:Q.status,headers:{"content-type":Q.headers.get("content-type")??"application/json"}})}async function hQ8($){try{let Z=await Td($),X=await mV0(Z,$.get("vmClaim").branch);return $.json(X,200,k5)}catch(Z){return xB1($,Z)}}function u10($,Z){let Q=(nV0.get($)??Promise.resolve()).catch(()=>{}).then(Z),Y=Q.catch(()=>{});return nV0.set($,Y),Y.finally(()=>{if(nV0.get($)===Y)nV0.delete($)}),Q}async function J7($,Z,X){if(!X?.runner&&$.get("vmClaim").runtime==="cms")return $.json({error:"sandbox not found: this session is sandbox-less"},404,k5);let Q=X?.runner??Zf($);if(Q instanceof Response)return Q;let{claimName:Y,userId:G,projectRef:J}=$.get("vmClaim"),K=X?.method??"POST",W=null,H=new Headers;if(X?.jsonBody!==void 0)W=X.jsonBody,H.set("content-type","application/json");else if(X?.forwardJsonBody)W=await $.req.text(),H.set("content-type","application/json");let F=X?.signal,N={method:K,headers:H,body:W,...F?{signal:F}:{}},U=async()=>{let B=await Q.proxyDaemonRequest(Y,Z,N);if(X?.map404to410&&B.status===404){try{await B.body?.cancel()}catch{}if(await Q.adoptLiveClaim({userId:G,projectRef:J},Y))B=await Q.proxyDaemonRequest(Y,Z,N);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",...k5}})}}let O=await B.text(),D=X?.redactRepoDir?Hd6(O):O,w=B.headers.get("content-type")??"application/json";return new Response(D,{status:B.status,headers:{"content-type":w,...k5}})};try{if(F){let B=U();return B.catch(()=>{}),await Promise.race([B,new Promise((D,w)=>{if(F.aborted)return w(F.reason);F.addEventListener("abort",()=>w(F.reason),{once:!0})})])}return await U()}catch(B){let O=B instanceof Error?B.message:String(B);return $.json({error:`Daemon unreachable: ${O}`},502)}}function Hd6($){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 tV0($,Z,X,Q="GET",Y){let G=await $.proxyDaemonRequest(Z,X,{method:Q,headers:new Headers,body:null});if(G.status===404&&Y){try{await G.body?.cancel()}catch{}if(await $.adoptLiveClaim(Y,Z))G=await $.proxyDaemonRequest(Z,X,{method:Q,headers:new Headers,body:null})}if(G.status===404){try{await G.body?.cancel()}catch{}throw Error("SANDBOX_GONE")}let J=await G.text();if(!G.ok){let K=`Daemon error (${G.status})`;try{K=JSON.parse(J).error??K}catch{}throw Error(K)}return JSON.parse(J)}function Fd6($){return uQ8.includes($)}var Xd6,bQ8=524288,Yd6=65536,Gd6=1e4,yQ8=2000,Jd6,nV0,k5,uQ8,cQ8=()=>{let $=new U1;$.use("/:virtualMcpId/:branch/*",Jd6),$.post("/:virtualMcpId/:branch/write",(X)=>J7(X,"/_sandbox/write",{forwardJsonBody:!0,signal:$f(X)})),$.post("/:virtualMcpId/:branch/unlink",(X)=>J7(X,"/_sandbox/unlink",{forwardJsonBody:!0,signal:$f(X)})),$.post("/:virtualMcpId/:branch/mkdir",(X)=>J7(X,"/_sandbox/mkdir",{forwardJsonBody:!0,signal:$f(X)})),$.post("/:virtualMcpId/:branch/rename",(X)=>J7(X,"/_sandbox/rename",{forwardJsonBody:!0,signal:$f(X)})),$.post("/:virtualMcpId/:branch/read",(X)=>J7(X,"/_sandbox/read",{forwardJsonBody:!0,signal:$f(X)})),$.post("/:virtualMcpId/:branch/glob",(X)=>J7(X,"/_sandbox/glob",{forwardJsonBody:!0,signal:$f(X)})),$.post("/:virtualMcpId/:branch/grep",(X)=>J7(X,"/_sandbox/grep",{forwardJsonBody:!0,signal:$f(X)})),$.post("/:virtualMcpId/:branch/exec/:script",async(X)=>{let Q=X.req.param("script");if(!Q)return X.json({error:"missing script name"},400);return J7(X,`/_sandbox/exec/${encodeURIComponent(Q)}`)}),$.post("/:virtualMcpId/:branch/exec/:script/kill",async(X)=>{let Q=X.req.param("script");if(!Q)return X.json({error:"missing script name"},400);return J7(X,`/_sandbox/exec/${encodeURIComponent(Q)}/kill`)}),$.get("/:virtualMcpId/:branch/config",(X)=>J7(X,"/_sandbox/config",{method:"GET",map404to410:!0,redactRepoDir:!0})),$.put("/:virtualMcpId/:branch/config",(X)=>J7(X,"/_sandbox/config",{method:"PUT",forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/setup/:step",async(X)=>{let Q=X.req.param("step");if(!Q||!Fd6(Q))return X.json({error:`step must be one of: ${uQ8.join(", ")}`},400);let Y=X.get("vmClaim"),G=await NB1(X.var.studioContext,{claimName:Y.claimName})==="gone"?null:await Wd6(X);if(!G)return X.json({error:"sandbox not found: nothing is running at this ref"},404,k5);if(Q==="start"){let J=a(X.var.studioContext),K=Qu(Y.virtualMcpMetadata);try{await i30({ctx:X.var.studioContext,runner:G,handle:Y.claimName,orgId:J.id,userId:Y.callerUserId,entries:K})}catch(W){let H=W instanceof Error?W.message:String(W);return X.json({error:`Failed to push env to daemon: ${H}`},502)}}return J7(X,`/_sandbox/setup/${Q}`,{signal:X.req.raw.signal,map404to410:!0,runner:G})}),$.get("/:virtualMcpId/:branch/events",(X)=>{let Q=X.get("vmClaim");if(!Q.runner)return mU(X,async(Y)=>{await Y.writeSSE({event:"phase",data:JSON.stringify({kind:"failed",reason:"unknown",message:"No sandbox runner configured on this studio instance."})})});return gX8(X,{ctx:X.var.studioContext,claimName:Q.claimName,runner:Q.runner,virtualMcpId:Q.virtualMcpId,branch:Q.branch,userId:Q.userId,projectRef:Q.projectRef,virtualMcpMetadata:Q.virtualMcpMetadata})}),$.get("/:virtualMcpId/:branch/git/status",(X)=>{if(X.get("vmClaim").runtime==="cms")return hQ8(X);return Z(X)});let Z=(X)=>J7(X,"/_sandbox/git/status",{method:"GET",map404to410:!0,signal:AbortSignal.any([X.req.raw.signal,AbortSignal.timeout(yQ8)])});return $.post("/:virtualMcpId/:branch/git/status",(X)=>{if(X.get("vmClaim").runtime==="cms")return hQ8(X);return J7(X,"/_sandbox/git/status",{map404to410:!0,signal:AbortSignal.any([X.req.raw.signal,AbortSignal.timeout(yQ8)])})}),$.post("/:virtualMcpId/:branch/git/diff",async(X)=>{let Q=X.get("vmClaim");if(Q.runtime==="cms")try{let Y=await X.req.json().catch(()=>({})),G=await Td(X),J=await iV0(G,Q.branch,Y.base);return X.json(J,200,k5)}catch(Y){return xB1(X,Y)}return J7(X,"/_sandbox/git/diff",{forwardJsonBody:!0,map404to410:!0})}),$.post("/:virtualMcpId/:branch/git/publish",async(X)=>{if(X.get("vmClaim").runtime==="cms")return X.json({ok:!0},200,k5);let Q=Zf(X);if(Q instanceof Response)return Q;let{claimName:Y,virtualMcpMetadata:G,connectionIds:J}=X.get("vmClaim"),K=X.var.studioContext;return u10(Y,async()=>{try{await UB1(K,Q,Y);let W=h10(G,J);if(W)await fQ8(K,Q,Y,W)}catch(W){if(W instanceof ex)return X.json({error:W.message},403,k5);let H=W instanceof Error?W.message:String(W);return X.json({error:H},502,k5)}return J7(X,"/_sandbox/git/publish",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/discard",async(X)=>{let Q=X.get("vmClaim");if(Q.runtime==="cms")return u10(Q.claimName,async()=>{let Y=await X.req.json().catch(()=>({})),G=Array.isArray(Y.filepaths)?Y.filepaths.filter((J)=>typeof J==="string"):[];if(G.length===0)return X.json({error:"filepaths is required"},400,k5);try{let J=await Td(X);return await CQ8(J,Q.branch,G),X.json({ok:!0},200,k5)}catch(J){let K=J instanceof m4&&J.status===409?409:502,W=J instanceof Error?J.message:String(J);return X.json({error:W},K,k5)}});return u10(Q.claimName,()=>J7(X,"/_sandbox/git/discard",{forwardJsonBody:!0,map404to410:!0}))}),$.post("/:virtualMcpId/:branch/git/rebase",async(X)=>{let Q=X.get("vmClaim");if(Q.runtime==="cms")return u10(Q.claimName,async()=>{try{let K=await X.req.json().catch(()=>({})),W=await Td(X),H=K.base??await W.getDefaultBranch();return await pV0(W,Q.branch,H),X.json({ok:!0},200,k5)}catch(K){return xB1(X,K)}});let Y=Zf(X);if(Y instanceof Response)return Y;let{claimName:G}=X.get("vmClaim"),J=X.var.studioContext;return u10(G,async()=>{try{await UB1(J,Y,G)}catch(K){let W=K instanceof Error?K.message:String(K);return X.json({error:W},502,k5)}return J7(X,"/_sandbox/git/rebase",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/suggest-commit",Q9({maxSize:bQ8,onError:(X)=>X.json({error:"Payload too large"},413,k5)}),async(X)=>{let Q=X.get("vmClaim"),Y=null;if(Q.runtime!=="cms"){let H=Zf(X);if(H instanceof Response)return H;Y=H}let{claimName:G,userId:J,projectRef:K}=Q,W=X.var.studioContext;try{let H=await X.req.json().catch(()=>({})),F=H.status,N=H.diff,U=N!=null&&typeof N.diffs==="object"&&N.diffs!==null,[B,O]=LB1(F)&&U?[F,N]:Y?await Promise.all([tV0(Y,G,"/_sandbox/git/status","GET",{userId:J,projectRef:K}),tV0(Y,G,"/_sandbox/git/diff","GET",{userId:J,projectRef:K})]):await(async()=>{let w=await Td(X);return Promise.all([mV0(w,Q.branch),iV0(w,Q.branch)])})(),D=await dX8(W,B,O);return X.json(D,200,k5)}catch(H){let F=H instanceof Error?H.message:String(H);if(F==="SANDBOX_GONE")return X.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,k5);return X.json({error:F},502,k5)}}),$.post("/:virtualMcpId/:branch/git/judge-review",Q9({maxSize:bQ8,onError:(X)=>X.json({error:"Payload too large"},413,k5)}),async(X)=>{let Q=X.get("vmClaim"),Y=null;if(Q.runtime!=="cms"){let H=Zf(X);if(H instanceof Response)return H;Y=H}let{claimName:G,userId:J,projectRef:K}=Q,W=X.var.studioContext;try{let H=await X.req.json().catch(()=>({})),F=H.status,N=H.diff,U=N!=null&&typeof N.diffs==="object"&&N.diffs!==null,[B,O]=LB1(F)&&U?[F,N]:Y?await Promise.all([tV0(Y,G,"/_sandbox/git/status","GET",{userId:J,projectRef:K}),tV0(Y,G,"/_sandbox/git/diff","GET",{userId:J,projectRef:K})]):await(async()=>{let w=await Td(X);return Promise.all([mV0(w,Q.branch),iV0(w,Q.branch)])})(),D=await iX8(W,B,O,typeof H.language==="string"?H.language:void 0);return X.json(D,200,k5)}catch(H){let F=H instanceof Error?H.message:String(H);if(F==="SANDBOX_GONE")return X.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,k5);return X.json({error:F},502,k5)}}),$.get("/:virtualMcpId/:branch/preview-fetch",async(X)=>{let Q=Zf(X);if(Q instanceof Response)return Q;let{claimName:Y}=X.get("vmClaim"),G=X.req.query("path");if(!G||!G.startsWith("/")||G.startsWith("//")||G.includes("..")||G.includes("\\"))return X.json({error:"Path not allowed"},403);let J;try{J=await Q.getPreviewUrl(Y)}catch{return X.json({error:"Preview not available"},502)}if(!J)return X.json({error:"Preview not available"},502);let K=J.replace(/\/+$/,"");return gQ8(X,`${K}${G}`)}),$.post("/:virtualMcpId/:branch/preview-invoke",Q9({maxSize:Yd6,onError:(X)=>X.json({error:"Payload too large"},413)}),async(X)=>{let Q=Zf(X);if(Q instanceof Response)return Q;let{claimName:Y}=X.get("vmClaim"),G;try{G=await Q.getPreviewUrl(Y)}catch{return X.json({error:"Preview not available"},502)}if(!G)return X.json({error:"Preview not available"},502);let J;try{J=await X.req.json()}catch{return X.json({error:"Invalid JSON body"},400)}if(!J||typeof J!=="object"||Array.isArray(J))return X.json({error:"Invalid JSON body"},400);let K=_Q8(J);if(!K)return X.json({error:"Invalid or missing __resolveType"},400);let W=vQ8(G,K.resolveType);return gQ8(X,W,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(K.payload),signal:AbortSignal.timeout(30000)})}),$};var lQ8=L(()=>{T8();DF();Dd();FB1();_r();fX8();VK();Au();bX8();vK();yX8();hX8();x41();fr();EB1();pX8();TB1();ax();_B1();xQ8();vB1();Xd6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;Jd6=SV0(async($,Z)=>{let X=$.var.studioContext;try{s(X)}catch{return $.json({error:"Unauthorized"},401)}let Q=a0(X);if(!Q)return $.json({error:"Unauthorized"},401);let Y;try{Y=a(X)}catch{return $.json({error:"Organization scope required"},403)}let G=$.req.param("virtualMcpId"),J=$.req.param("branch");if(!G||!J)return $.json({error:"virtualMcpId and branch are required"},400);try{Qd6(J)}catch(D){let w=D instanceof Error?D.message:String(D);return $.json({error:w},400)}let K=await X.storage.virtualMcps.findById(G);if(!K||K.organization_id!==Y.id)return $.json({error:"Virtual MCP not found"},404);let W=Sr({orgId:Y.id,virtualMcpId:G,branch:J}),H=await V41(X,J),F=k41(H,Q),N=xX8({userId:F,projectRef:W}),U=K.metadata??null,B=await Kd6($,{claimName:N,branch:J,virtualMcpId:G,sandboxUserId:F,virtualMcpMetadata:U,branchThread:H});if(B==="cms")return $.set("vmClaim",{claimName:N,callerUserId:Q,runner:null,virtualMcpId:G,branch:J,userId:F,projectRef:W,virtualMcpMetadata:U,connectionIds:K.connections?.map((D)=>D.connection_id)??[],runtime:B}),Z();let O;try{O=await AQ(X)}catch{O=null}if(!O)return $.json({error:"No sandbox runner found"},404);return $.set("vmClaim",{claimName:N,callerUserId:Q,runner:O,virtualMcpId:G,branch:J,userId:F,projectRef:W,virtualMcpMetadata:U,connectionIds:K.connections?.map((D)=>D.connection_id)??[],runtime:B}),Z()});nV0=new Map;k5={"Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache"};uQ8=["clone","install","start"]});function dQ8($,Z,X){let Q=fB1.get($);if(!Q)Q={pending:null,running:!1},fB1.set($,Q);if(!Q.pending)Q.pending={set:new Map,del:new Set,deps:Z,resolvers:[],rejecters:[]};let Y=Q.pending;Y.deps=Z;for(let[J,K]of Object.entries(X.set??{}))Y.set.set(J,K),Y.del.delete(J);for(let J of X.delete??[])Y.del.add(J),Y.set.delete(J);let G=new Promise((J,K)=>{Y.resolvers.push(J),Y.rejecters.push(K)});if(!Q.running)Ud6($,Q);return G}async function Ud6($,Z){Z.running=!0;try{while(Z.pending){let X=Z.pending;Z.pending=null;try{let Q=await Bd6(X);for(let Y of X.resolvers)Y(Q)}catch(Q){for(let Y of X.rejecters)Y(Q)}}}finally{if(Z.running=!1,!Z.pending)fB1.delete($)}}async function Bd6($){let{client:Z,branch:X,packagePath:Q}=$.deps;for(let Y=0;;Y++){let G=await Ad(Z,X),J=await Z.getCommitTreeSha(G),K=await Z.getTreeRecursive(J),W=kB1(K,Q),H=[],F=new Map(W.map((O)=>[O.path,{stem:O.stem,sha:O.sha}]));for(let[O,D]of $.set){let w=SB1(W,O),E=`${JSON.stringify(D,null,2)}
|
|
4259
|
-
`,j=await Z.createBlob(E);await MQ8(Z.owner,Z.repo,j,E);let z=w[0]??`${lV0(Q)}/${RB1(O)}.json`;H.push({path:z,mode:"100644",type:"blob",sha:j});let A=z.slice(z.lastIndexOf("/")+1,-5);F.set(z,{stem:A,sha:j,content:E});for(let P of w.slice(1))H.push({path:P,mode:"100644",type:"blob",sha:null}),F.delete(P)}for(let O of $.del)for(let D of SB1(W,O))H.push({path:D,mode:"100644",type:"blob",sha:null}),F.delete(D);if(H.length===0)return G;let N=Q?`${Q}/.deco/blocks.gen.json`:".deco/blocks.gen.json";if(K.some((O)=>O.type==="blob"&&O.path===N)){let O=await Promise.all([...F.values()].map(async(j)=>({stem:j.stem,content:j.content??await Z.getBlobText(j.sha)}))),{decofile:D,skipped:w}=f10(O);if(w.length>0)console.warn("decofile gen: dropped blocks that were not valid JSON",{repo:`${Z.owner}/${Z.repo}`,branch:X,packagePath:Q,blocks:w.map((j)=>j.key)});let E=await Z.createBlob(D);H.push({path:N,mode:"100644",type:"blob",sha:E})}let U=await Z.createTree(J,H),B=await Z.createCommit({message:Od6($),treeSha:U,parentShas:[G]});try{return await Z.updateRef(X,B),B}catch(O){if(!(O instanceof m4&&O.status===422)||Y>=Nd6-1)throw O;await W$(H7(2000,200,Y,2,0.5))}}}function Od6($){let Z=(Y)=>{let G=Y.slice(0,3).join(", ");return Y.length>3?`${G} (+${Y.length-3} more)`:G},X=[];if($.set.size>0)X.push(`update ${Z([...$.set.keys()])}`);if($.del.size>0)X.push(`delete ${Z([...$.del])}`);let Q=`chore(decofile): ${X.join("; ")}`;return A41(Q,$.deps.coAuthor)}var Nd6=3,fB1;var mQ8=L(()=>{TP0();fV0();N4();ax();dV0();fB1=new Map});import{createHmac as iQ8,randomBytes as Ld6,timingSafeEqual as Dd6}from"crypto";function pQ8(){if(oV0)return oV0;let $;try{let Z=y0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return oV0=$?Buffer.from($):Ld6(32),oV0}function bB1($){let Z=$.nowMs??Date.now(),X={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+wd6)/1000)},Q=Buffer.from(JSON.stringify(X)).toString("base64url"),Y=iQ8("sha256",pQ8()).update(Q).digest("base64url");return`${Q}.${Y}`}function nQ8($,Z){let X=$.indexOf(".");if(X<0)return!1;let Q=$.slice(0,X),Y=Buffer.from($.slice(X+1)),G=Buffer.from(iQ8("sha256",pQ8()).update(Q).digest("base64url"));if(Y.length!==G.length||!Dd6(Y,G))return!1;let J;try{J=JSON.parse(Buffer.from(Q,"base64url").toString())}catch{return!1}let K=Math.floor((Z.nowMs??Date.now())/1000);return J.o===Z.organizationId&&J.m===Z.virtualMcpId&&J.b===Z.branch&&typeof J.e==="number"&&J.e>=K}var wd6=21600000,oV0=null;var tQ8=L(()=>{V$()});import{z as Rd}from"zod";function jd6($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&Ed6.test($)}function eQ8($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function c10($){let Z=$.get("decofileScope");return vV0($.var.studioContext,Z.organizationId,Z.githubRepo)}function l10($,Z){if(Z instanceof m4){let Q=Z.status===404?404:Z.status===409?409:Z.status===422?409:502;return $.json({error:Z.message},Q)}let X=Z instanceof Error?Z.message:String(Z);return $.json({error:X},500)}function $Y8(){let $=new U1;return $.use("/:virtualMcpId/:branch",sQ8),$.use("/:virtualMcpId/:branch/*",sQ8),$.get("/:virtualMcpId/:branch",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await c10(Z),Y=await VQ8(Q,X.branch,X.packagePath,{createBranchIfMissing:!!X.userId}),G={ETag:`"${Y.sha}"`,"Cache-Control":"no-store","Access-Control-Allow-Origin":"*"};if(Z.req.header("if-none-match")===`"${Y.sha}"`)return Z.body(null,304,G);if(!X.userId)return Z.body(Y.decofile,200,{...G,"content-type":"application/json"});let J=bB1({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.body(`{"version":${JSON.stringify(Y.sha)},"token":${JSON.stringify(J)},"apiHost":${JSON.stringify(eQ8(Z))},"decofile":${Y.decofile}}`,200,{...G,"content-type":"application/json"})}catch(Q){return l10(Z,Q)}}),$.get("/:virtualMcpId/:branch/meta",async(Z)=>{let X=Z.get("decofileScope"),Q=X.packagePath?`${X.packagePath}/.deco/meta.gen.json`:".deco/meta.gen.json";try{let Y=await c10(Z),G=await Y.getFileTextAtRef(X.branch,Q);if(G===null){let J=await Y.getDefaultBranch();if(J!==X.branch)G=await Y.getFileTextAtRef(J,Q)}if(G===null)return Z.json({error:"meta.gen.json not committed"},404);return Z.body(G,200,{"content-type":"application/json","Cache-Control":"no-store","Access-Control-Allow-Origin":"*"})}catch(Y){return l10(Z,Y)}}),$.patch("/:virtualMcpId/:branch",Pd6,async(Z)=>{let X=Z.get("decofileScope"),Q=Z.var.studioContext,Y=Ad6.safeParse(await Z.req.json().catch(()=>null));if(!Y.success)return Z.json({error:"Invalid body",details:Y.error.issues},400);let G=Y.data;for(let J of[...Object.keys(G.set??{}),...G.delete??[]])try{xV0(J)}catch(K){let W=K instanceof Error?K.message:String(K);return Z.json({error:W},400)}for(let[J,K]of Object.entries(G.set??{}))if(typeof K!=="object"||K===null||Array.isArray(K))return Z.json({error:`Block "${J}" must be a JSON object`},400);try{let J=await c10(Z),K=await dQ8(`${X.organizationId}/${X.virtualMcpId}/${X.branch}`,{client:J,branch:X.branch,packagePath:X.packagePath,coAuthor:wd(Q)},G),W=bB1({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.json({version:K,token:W,apiHost:eQ8(Z)})}catch(J){return l10(Z,J)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await c10(Z),Y=await Q.getDefaultBranch();if(Y===X.branch)return Z.json({error:"Branch is already the default branch"},400);let G=`chore(decofile): publish ${X.branch}`;try{let J;try{J=await Q.mergeBranch(Y,X.branch,G)}catch(K){if(!(K instanceof m4&&K.status===409))throw K;await pV0(Q,X.branch,Y),J=await Q.mergeBranch(Y,X.branch,G)}return J?Z.json({result:"merged",sha:J}):Z.json({result:"up-to-date"})}catch(J){if(J instanceof m4&&J.status===409)return Z.json({error:"merge-conflict"},409);if(J instanceof m4&&J.status===405){let W=await Q.findOpenPullRequest(Y,X.branch)??await Q.createPullRequest({base:Y,head:X.branch,title:`Publish ${X.branch}`});return Z.json({result:"pull-request",number:W.number,url:W.html_url})}throw J}}catch(Q){return l10(Z,Q)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await c10(Z),Y=await Q.getDefaultBranch();if(Y===X.branch)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0});try{let{aheadBy:G,behindBy:J}=await Q.compare(Y,X.branch);return Z.json({baseBranch:Y,aheadBy:G,behindBy:J})}catch(G){if(G instanceof m4&&G.status===404)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0});throw G}}catch(Q){return l10(Z,Q)}}),$}var Ed6,oQ8=500,rQ8=262144,aQ8=1024,zd6=8388608,Pd6,Ad6,sQ8;var ZY8=L(()=>{fV0();T8();DF();FB1();CV0();vB1();TB1();mQ8();tQ8();_B1();ax();dV0();Ed6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;Pd6=Q9({maxSize:zd6,onError:($)=>$.json({error:"Payload too large"},413)}),Ad6=Rd.object({set:Rd.record(Rd.string(),Rd.unknown()).optional(),delete:Rd.array(Rd.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)<=oQ8,{message:`Patch cannot touch more than ${oQ8} blocks`}).refine(($)=>Object.values($.set??{}).every((Z)=>JSON.stringify(Z).length<=rQ8),{message:`Each block must be at most ${rQ8} bytes`}).refine(($)=>[...Object.keys($.set??{}),...$.delete??[]].every((Z)=>Z.length<=aQ8),{message:`Each block key must be at most ${aQ8} characters`}),sQ8=SV0(async($,Z)=>{let X=$.var.studioContext,Q=X.organization;if(!Q)return $.json({error:"Organization scope required"},500);let Y=$.req.param("virtualMcpId"),G=$.req.param("branch");if(!Y||!G)return $.json({error:"virtualMcpId and branch are required"},400);if(!jd6(G))return $.json({error:`Invalid branch name: ${G}`},400);let J=X.auth?.user?.id??null;if(!J){let B=$.req.query("token");if(!($.req.method==="GET"&&!$.req.path.match(/\/(publish|status)$/)))return $.json({error:"Unauthorized"},401);if(!B||!nQ8(B,{organizationId:Q.id,virtualMcpId:Y,branch:G}))return $.json({error:"Unauthorized"},401)}let K=await X.storage.virtualMcps.findById(Y);if(!K||K.organization_id!==Q.id)return $.json({error:"Virtual MCP not found"},404);let W=K.metadata??null;if(!VP0(W))return $.json({error:"Project has no preview server configured"},404);let F=K.connections?.map((B)=>B.connection_id)??[],N=h10(W,F);if(!N)return $.json({error:"Project has no GitHub repository"},404);let U=W?.runtime;return $.set("decofileScope",{organizationId:Q.id,virtualMcpId:Y,branch:G,packagePath:U?.path?.replace(/^\/+|\/+$/g,"")||null,githubRepo:N,userId:J}),Z()})});var XY8=($)=>{let Z=new U1;if(Z.use("*",lx),Z.route("/",nM0()),Z.route("/",L98()),Z.route("/",PX8()),Z.route("/",EX8()),Z.route("/",MV0()),Z.route("/tools",VX8()),Z.route("/",IX8()),Z.route("/",a78({kvStorage:$.kvStorage})),Z.route("/",o78()),Z.route("/fs",NX8({getConnection:$.getNatsConnection})),Z.route("/sandbox",cQ8()),Z.route("/decofile",$Y8()),Z.route("/",LX8()),Z.route("/deco-sites",oM0()),Z.route("/sso",cM0()),Z.route("/",VV0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",K98()),$.mountDevAssets)Z.route("/dev-assets",rM0({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("/",y48()),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",BX8()),Z.route("/mcp",Z20()),Z.route("/mcp/self",qV0()),Z.route("/mcp",Y20()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var QY8=L(()=>{T8();_N1();W98();bN1();aM0();K10();SN1();r78();s78();UX8();js();RN1();G20();QB1();OX8();DX8();jX8();AX8();qX8();GB1();kX8();JB1();X20();lQ8();ZY8()});function Td6($){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 Rd6=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},YY8=()=>{let $=new U1;return $.use("*",Rd6),$.get("/",async(Z)=>{let X=y0(),Q=X.decoSupabaseUrl,Y=X.decoSupabaseServiceKey;if(!Q||!Y)return Z.json({apps:[]});try{let G=await G7(Q,Y,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:Td6(G)})}catch(G){return console.error("[deco-apps] GET error:",G),Z.json({error:"Failed to fetch apps"},502)}}),$};var GY8=L(()=>{T8();V$();oq0()});import{z as S1}from"zod";function PF($,Z="invalid_request_error",X=null,Q=null){return{error:{message:$,type:Z,param:X,code:Q}}}function xd6($){if(!$)return null;let Z=$.indexOf(":");if(Z===-1)return{credentialId:null,modelId:$};let X=$.substring(0,Z),Q=$.substring(Z+1);if(!X||!Q)return null;return{credentialId:X,modelId:Q}}function fd6($,Z,X){try{return JSON.parse($)}catch{throw new WY8(`Invalid JSON in tool call arguments for function '${X}' (tool_call_id: ${Z}): ${$}`)}}function bd6($){let Z={};for(let X of $)if(X.role==="assistant"&&X.tool_calls)for(let Q of X.tool_calls)Z[Q.id]=Q.function.name;return $.map((X)=>{switch(X.role){case"system":return{role:"system",content:X.content};case"user":if(typeof X.content==="string")return{role:"user",content:X.content};return{role:"user",content:X.content.map((Y)=>{if(Y.type==="text")return{type:"text",text:Y.text};return{type:"image",image:Y.image_url.url}})};case"assistant":if(X.tool_calls&&X.tool_calls.length>0)return{role:"assistant",content:X.tool_calls.map((Y)=>({type:"tool-call",toolCallId:Y.id,toolName:Y.function.name,input:fd6(Y.function.arguments,Y.id,Y.function.name)}))};return{role:"assistant",content:X.content??""};case"tool":let Q=Z[X.tool_call_id]??"unknown";return{role:"tool",content:[{type:"tool-result",toolCallId:X.tool_call_id,toolName:Q,output:{type:"text",value:X.content}}]}}})}function yd6($){let Z=$.map((X)=>{let Q=X.function.parameters?zG(X.function.parameters):zG({type:"object",properties:{}});return[X.function.name,k$({description:X.function.description,inputSchema:Q})]});return Object.fromEntries(Z)}function gd6($){if(!$)return;return{openai:{response_format:$}}}function hd6(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function JY8($,Z,X,Q,Y,G){let J={model:$,messages:Z,tools:X,temperature:Q.temperature,maxTokens:Q.max_tokens,topP:Q.top_p,frequencyPenalty:Q.frequency_penalty,presencePenalty:Q.presence_penalty,stopSequences:Q.stop?Array.isArray(Q.stop)?Q.stop:[Q.stop]:void 0,abortSignal:G};return Y?{...J,providerOptions:Y}:J}function KY8($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var Id6=256,qd6,Md6,Vd6,kd6,Sd6,Cd6,_d6,vd6,WY8,HY8,FY8;var NY8=L(()=>{j4();T8();Dd();RU();qd6=S1.object({type:S1.literal("function"),function:S1.object({name:S1.string(),description:S1.string().optional(),parameters:S1.record(S1.string(),S1.unknown()).optional()})}),Md6=S1.object({id:S1.string(),type:S1.literal("function"),function:S1.object({name:S1.string(),arguments:S1.string()})}),Vd6=S1.discriminatedUnion("role",[S1.object({role:S1.literal("system"),content:S1.string(),name:S1.string().optional()}),S1.object({role:S1.literal("user"),content:S1.union([S1.string(),S1.array(S1.union([S1.object({type:S1.literal("text"),text:S1.string()}),S1.object({type:S1.literal("image_url"),image_url:S1.object({url:S1.string(),detail:S1.string().optional()})})]))]),name:S1.string().optional()}),S1.object({role:S1.literal("assistant"),content:S1.string().nullable().optional(),name:S1.string().optional(),tool_calls:S1.array(Md6).optional()}),S1.object({role:S1.literal("tool"),content:S1.string(),tool_call_id:S1.string()})]),kd6=S1.object({type:S1.literal("text")}),Sd6=S1.object({type:S1.literal("json_object")}),Cd6=S1.object({type:S1.literal("json_schema"),json_schema:S1.object({name:S1.string(),description:S1.string().optional(),schema:S1.record(S1.string(),S1.unknown()),strict:S1.boolean().optional()})}),_d6=S1.union([kd6,Sd6,Cd6]),vd6=S1.object({model:S1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:S1.array(Vd6),stream:S1.boolean().optional().default(!1),temperature:S1.number().min(0).max(2).optional(),max_tokens:S1.number().positive().optional(),top_p:S1.number().min(0).max(1).optional(),frequency_penalty:S1.number().min(-2).max(2).optional(),presence_penalty:S1.number().min(-2).max(2).optional(),stop:S1.union([S1.string(),S1.array(S1.string())]).optional(),tools:S1.array(qd6).optional(),tool_choice:S1.union([S1.literal("auto"),S1.literal("none"),S1.literal("required"),S1.object({type:S1.literal("function"),function:S1.object({name:S1.string()})})]).optional(),response_format:_d6.optional(),user:S1.string().optional()});WY8=class WY8 extends Error{constructor($){super($);this.name="MessageConversionError"}};HY8=new U1;HY8.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),X=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(PF("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(PF("Organization context is required. Ensure your API key has organization metadata.","invalid_request_error","organization"),400);if((Z.organization.slug??Z.organization.id)!==X)return $.json(PF("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Q=await $.req.json(),Y=vd6.safeParse(Q);if(!Y.success){let w=Y.error.issues[0]??{message:"Invalid request",path:[]};return $.json(PF(`Invalid request: ${w.message}`,"invalid_request_error",w.path.length>0?w.path.join("."):null),400)}let G=Y.data,J=xd6(G.model);if(!J)return $.json(PF("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:K}=J,{modelId:W}=J;if(!K){let E=(await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id})).find((j)=>tE(j.providerId));if(!E)return $.json(PF("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);K=E.id}let H;try{H=await Z.aiProviders.activate(K,Z.organization.id)}catch{return $.json(PF(`AI provider credential not found or inaccessible: ${K}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(W),N=bd6(G.messages),U=G.tools?yd6(G.tools):void 0,B=gd6(G.response_format),O=hd6(),D=Math.floor(Date.now()/1000);if(G.stream)return mU($,async(w)=>{let E=JY8(F,N,U,G,B,$.req.raw.signal);try{let j=dL(E),z=!1,A=0,P="",I=async()=>{if(P.length===0)return;let M=P;P="",await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{content:M},finish_reason:null}]})})};for await(let M of j.fullStream){if(!z&&(M.type==="text-delta"||M.type==="tool-call"))await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),z=!0;if(M.type==="text-delta"){if(P+=M.text,P.length>=Id6)await I()}else if(M.type==="tool-call"){await I();let q=A++;await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{tool_calls:[{index:q,id:M.toolCallId,type:"function",function:{name:M.toolName,arguments:JSON.stringify(M.input)}}]},finish_reason:null}]})})}else if(M.type==="finish")await I(),await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{},finish_reason:KY8(M.finishReason)}],usage:M.totalUsage?{prompt_tokens:M.totalUsage.inputTokens??0,completion_tokens:M.totalUsage.outputTokens??0,total_tokens:M.totalUsage.totalTokens??0}:void 0})})}await I(),await w.writeSSE({data:"[DONE]"})}catch(j){let z=j;console.error("[openai-compat:stream] Error:",z.message),await w.writeSSE({data:JSON.stringify({error:{message:z.message,type:"server_error"}})})}});else{let w=JY8(F,N,U,G,B,$.req.raw.signal),E=await cL(w),j={role:"assistant",content:E.text||null};if(E.toolCalls&&E.toolCalls.length>0)j.tool_calls=E.toolCalls.map((z)=>({id:z.toolCallId,type:"function",function:{name:z.toolName,arguments:JSON.stringify("input"in z?z.input:{})}})),j.content=null;return $.json({id:O,object:"chat.completion",created:D,model:G.model,choices:[{index:0,message:j,finish_reason:KY8(E.finishReason)}],usage:{prompt_tokens:E.usage?.inputTokens??0,completion_tokens:E.usage?.outputTokens??0,total_tokens:E.usage?.totalTokens??0}})}}catch(Q){let Y=Q;if(Y.name==="AbortError")return $.json(PF("Request aborted","invalid_request_error"),400);if(Y.name==="MessageConversionError")return $.json(PF(Y.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",Y.message,Y.stack),$.json(PF(Y.message,"server_error"),500)}});FY8=HY8});function ud6($){if(typeof $!=="object"||$===null)return!1;let X=$.githubRepo?.url;return typeof X==="string"&&X.length>0}function UY8(){let $=new U1;return $.use("*",async(Z,X)=>{await X(),Z.header("Cache-Control","private, no-store"),Z.header("Vary","Cookie")}),$.get("/",async(Z)=>{let X=Z.get("studioContext"),Q=a0(X);if(!Q)return Z.json({error:"Authentication required"},401);let G=(Z.req.query("site")??"").trim().toLowerCase();if(!xJ(G))return Z.json({error:"Invalid site slug"},400);let J=await X.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["organization.id as id","organization.slug as slug","organization.name as name","organization.metadata as metadata"]).where("member.userId","=",Q).execute(),K=[];for(let H of J){if(!H.slug||T7(H))continue;let F=await X.storage.virtualMcps.list(H.id);for(let N of F){if(AB$(N)!==G)continue;if(!ud6(N.metadata))continue;K.push({orgSlug:H.slug,orgName:H.name??H.slug,project:{id:N.id,title:N.title,icon:N.icon??null}})}}let W={matches:K};return Z.json(W)}),$}var BY8=L(()=>{T8();VL()});function ld6(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??cd6}}var OY8,cd6="https://ph.studio.decocms.com",LY8;var DY8=L(()=>{T8();MG0();Tv();i5();V$();EN1();Dp0();OY8=new U1;OY8.get("/",($)=>{let Z={version:eZ0.version,theme:$3$(),...CN().logo&&{logo:CN().logo},...gH()&&{internalUrl:Fn1()},...y0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!y0().firecrawlApiKey,auth:M58(),posthog:ld6(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:!gH()&&y0().agentSandboxEnabled}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});LY8=OY8});function Id($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function yB1($){return(Id($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((X)=>X.charAt(0).toUpperCase()+X.slice(1)).join(" ")}function EY8($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(Id($))}&sz=${Z}`}function wY8($,Z){let X=$.trim();if(X.length<=Z)return X;let Q=X.slice(0,Z-1),Y=Q.lastIndexOf(" ");return`${(Y>Z*0.6?Q.slice(0,Y):Q).trimEnd()}\u2026`}function jY8($){let{brand:Z,domain:X,score:Q,verdict:Y}=$,G=typeof Q==="number"?`${Z} commerce report \u2014 ${Math.round(Q)}/100 \xB7 decocms`:`${Z} commerce report \xB7 decocms`,J=`See the full ${Z} scorecard \u2014 SEO, performance, conversion & AEO signals scored by decocms.`,K=Y?.trim()?wY8(`${Y.trim().replace(/\s+/g," ")} \u2014 ${J}`,200):wY8(`How does ${X} really perform? ${J}`,200);return{title:G,description:K}}import{z as m0}from"zod";var Xf,dd6,md6,id6,pd6,zY8;var PY8=L(()=>{Xf=m0.enum(["good","bad","neutral"]),dd6=m0.preprocess(($)=>{if(Array.isArray($))return{kind:"text",value:$.find((X)=>X!==null&&typeof X!=="object")??""};return $!==null&&typeof $==="object"?$:{kind:"text",value:$}},m0.object({kind:m0.enum(["text","number","sparkline","badge","score"]).catch("text"),value:m0.coerce.string().optional(),tone:Xf.optional(),muted:m0.boolean().optional(),delta:m0.coerce.string().optional(),deltaDir:m0.enum(["up","down","neutral"]).optional(),points:m0.array(m0.coerce.number()).optional(),label:m0.coerce.string().optional()}).transform(($)=>{if($.kind==="badge"&&$.label==null)$.label=$.value??"";if($.kind==="score"){let Z=Number($.value);if(Number.isNaN(Z))return{...$,kind:"text"}}return $})),md6=m0.preprocess(($)=>{let Z=$;if(Z&&typeof Z==="object"&&!Array.isArray(Z)&&Array.isArray(Z.cells))Z=Z.cells;if(Array.isArray(Z)&&Z.length===1&&Array.isArray(Z[0]))Z=Z[0];if(Array.isArray(Z))return Z;if(Z&&typeof Z==="object")return Object.values(Z);return Z},m0.array(dd6)),id6={key:m0.coerce.string(),title:m0.coerce.string(),eyebrow:m0.coerce.string().optional(),headline:m0.coerce.string(),annotation:m0.coerce.string().optional(),methodology:m0.coerce.string().optional(),sources:m0.array(m0.object({name:m0.coerce.string(),logoUrl:m0.coerce.string()})).optional()},pd6=m0.discriminatedUnion("template",[m0.object({template:m0.literal("cover"),score:m0.object({value:m0.coerce.number(),max:m0.coerce.number().optional(),grade:m0.coerce.string().optional(),label:m0.coerce.string().optional()}).optional(),brandImage:m0.coerce.string().optional(),screenshot:m0.coerce.string().optional(),mobileScreenshot:m0.coerce.string().optional()}),m0.object({template:m0.literal("cta"),ctaUrl:m0.coerce.string().optional(),ctaLabel:m0.coerce.string().optional(),bullets:m0.array(m0.coerce.string()).optional()}),m0.object({template:m0.literal("series"),points:m0.array(m0.coerce.number()).min(2),xLabels:m0.array(m0.coerce.string()).min(1),unit:m0.coerce.string().optional(),callout:m0.object({index:m0.coerce.number(),value:m0.coerce.string(),tone:Xf.optional()})}),m0.object({template:m0.literal("threshold"),value:m0.coerce.string().default(""),metricLabel:m0.coerce.string().optional(),ratio:m0.coerce.number(),thresholdRatio:m0.coerce.number().optional(),thresholdLabel:m0.coerce.string().default(""),tone:Xf.optional()}),m0.object({template:m0.literal("stats"),stats:m0.array(m0.object({value:m0.coerce.string(),label:m0.coerce.string(),tone:Xf.optional()})).min(1)}),m0.object({template:m0.literal("bars"),items:m0.array(m0.object({value:m0.coerce.string(),label:m0.coerce.string(),ratio:m0.coerce.number(),tone:Xf.optional()})).min(1)}),m0.object({template:m0.literal("gauges"),gauges:m0.array(m0.object({label:m0.coerce.string(),value:m0.coerce.string(),status:m0.enum(["good","warn","bad"]).catch("warn"),caption:m0.coerce.string().optional(),ratio:m0.coerce.number().optional()})).min(1)}),m0.object({template:m0.literal("checklist"),checks:m0.array(m0.object({label:m0.coerce.string(),status:m0.enum(["pass","fail","warn"]).catch("fail"),value:m0.coerce.string().optional()})).min(1)}),m0.object({template:m0.literal("table"),columns:m0.array(m0.object({label:m0.coerce.string(),align:m0.enum(["left","right"]).optional()})).min(1),rows:m0.array(md6).min(1),highlightRow:m0.coerce.number().optional()}),m0.object({template:m0.literal("products"),products:m0.array(m0.object({name:m0.coerce.string(),price:m0.coerce.string().optional(),image:m0.coerce.string().optional(),url:m0.coerce.string().optional()})).min(1)}),m0.object({template:m0.literal("list"),entries:m0.array(m0.object({label:m0.coerce.string(),severity:m0.enum(["error","warning","notice"]).catch("notice")})).min(1),moreCount:m0.coerce.number().optional()}),m0.object({template:m0.literal("keywords"),volumeLabel:m0.coerce.string().optional(),keywords:m0.array(m0.object({term:m0.coerce.string(),volume:m0.coerce.string(),position:m0.coerce.number().catch(0)})).min(1)}),m0.object({template:m0.literal("competitor"),metricLabel:m0.coerce.string().optional(),competitors:m0.array(m0.object({name:m0.coerce.string(),value:m0.coerce.string(),tone:Xf.optional(),isYou:m0.boolean().optional()})).min(1)}),m0.object({template:m0.literal("scorecard"),rivalLabel:m0.coerce.string().optional(),dimensions:m0.array(m0.object({label:m0.coerce.string(),you:m0.coerce.string(),rival:m0.coerce.string().optional(),rivalName:m0.coerce.string().optional(),tone:Xf.optional()})).min(1)})]),zY8=m0.object({...id6,template:pd6})});function rV0($){let Z=[],X=[...$.sections].sort((Y,G)=>Y.position-G.position).map((Y)=>{let G=zY8.safeParse(Y.props);if(G.success)return G.data;let J=G.error.issues[0];return Z.push({section_type:Y.section_type,position:Y.position,reason:J?`${J.path.join(".")||"(root)"}: ${J.message}`:"contract violation"}),null}).filter((Y)=>Y!==null),Q=X.filter((Y)=>Y.template.template!=="cover"&&Y.template.template!=="cta").map((Y)=>({key:Y.key,title:Y.title}));return{deck:{meta:{...$.meta,scores:$.summary?.scores,scannedAt:$.scanned_at,toc:Q},slides:X},drops:Z}}var gB1=L(()=>{PY8()});import{join as AY8}from"path";async function td6($){try{let Z=await fetch(`${WH({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(nd6)});if(!Z.ok)return null;let X=await Z.json(),{deck:Q}=rV0(X);if(!Q.slides.length)return null;let Y=Q.slides.find((K)=>K.template.template==="cover"),G=Y?.template,J=G&&G.template==="cover"?G:void 0;return{brand:Q.meta.brand?.trim()||yB1($),score:Q.meta.scores?.cover??J?.score?.value,verdict:Y?.annotation?.trim()||Y?.headline?.trim()||void 0}}catch{return null}}function mG($){return $.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""")}function od6($,Z){let X=Id($),Q=Z?.brand?.trim()||yB1(X),Y=EY8(X,128),J=`${(y0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(X)}`,{title:K,description:W}=jY8({brand:Q,domain:X,score:Z?.score,verdict:Z?.verdict}),H=`${J}/og.png`,F=`${Q} commerce report by decocms`;return[`<title>${mG(K)}</title>`,`<meta name="description" content="${mG(W)}" />`,'<meta name="robots" content="noindex, follow" />','<meta property="og:type" content="website" />','<meta property="og:site_name" content="decocms" />',`<meta property="og:title" content="${mG(K)}" />`,`<meta property="og:description" content="${mG(W)}" />`,`<meta property="og:url" content="${mG(J)}" />`,`<meta property="og:image" content="${mG(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${mG(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${mG(K)}" />`,`<meta name="twitter:description" content="${mG(W)}" />`,`<meta name="twitter:image" content="${mG(H)}" />`,`<meta name="twitter:image:alt" content="${mG(F)}" />`,`<link rel="canonical" href="${mG(J)}" />`,`<link rel="icon" href="${mG(Y)}" sizes="any" />`].join(`
|
|
4259
|
+
`,j=await Z.createBlob(E);await MQ8(Z.owner,Z.repo,j,E);let z=w[0]??`${lV0(Q)}/${RB1(O)}.json`;H.push({path:z,mode:"100644",type:"blob",sha:j});let A=z.slice(z.lastIndexOf("/")+1,-5);F.set(z,{stem:A,sha:j,content:E});for(let P of w.slice(1))H.push({path:P,mode:"100644",type:"blob",sha:null}),F.delete(P)}for(let O of $.del)for(let D of SB1(W,O))H.push({path:D,mode:"100644",type:"blob",sha:null}),F.delete(D);if(H.length===0)return G;let N=Q?`${Q}/.deco/blocks.gen.json`:".deco/blocks.gen.json";if(K.some((O)=>O.type==="blob"&&O.path===N)){let O=await Promise.all([...F.values()].map(async(j)=>({stem:j.stem,content:j.content??await Z.getBlobText(j.sha)}))),{decofile:D,skipped:w}=f10(O);if(w.length>0)console.warn("decofile gen: dropped blocks that were not valid JSON",{repo:`${Z.owner}/${Z.repo}`,branch:X,packagePath:Q,blocks:w.map((j)=>j.key)});let E=await Z.createBlob(D);H.push({path:N,mode:"100644",type:"blob",sha:E})}let U=await Z.createTree(J,H),B=await Z.createCommit({message:Od6($),treeSha:U,parentShas:[G]});try{return await Z.updateRef(X,B),B}catch(O){if(!(O instanceof m4&&O.status===422)||Y>=Nd6-1)throw O;await W$(H7(2000,200,Y,2,0.5))}}}function Od6($){let Z=(Y)=>{let G=Y.slice(0,3).join(", ");return Y.length>3?`${G} (+${Y.length-3} more)`:G},X=[];if($.set.size>0)X.push(`update ${Z([...$.set.keys()])}`);if($.del.size>0)X.push(`delete ${Z([...$.del])}`);let Q=`chore(decofile): ${X.join("; ")}`;return A41(Q,$.deps.coAuthor)}var Nd6=3,fB1;var mQ8=L(()=>{TP0();fV0();N4();ax();dV0();fB1=new Map});import{createHmac as iQ8,randomBytes as Ld6,timingSafeEqual as Dd6}from"crypto";function pQ8(){if(oV0)return oV0;let $;try{let Z=y0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return oV0=$?Buffer.from($):Ld6(32),oV0}function bB1($){let Z=$.nowMs??Date.now(),X={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+wd6)/1000)},Q=Buffer.from(JSON.stringify(X)).toString("base64url"),Y=iQ8("sha256",pQ8()).update(Q).digest("base64url");return`${Q}.${Y}`}function nQ8($,Z){let X=$.indexOf(".");if(X<0)return!1;let Q=$.slice(0,X),Y=Buffer.from($.slice(X+1)),G=Buffer.from(iQ8("sha256",pQ8()).update(Q).digest("base64url"));if(Y.length!==G.length||!Dd6(Y,G))return!1;let J;try{J=JSON.parse(Buffer.from(Q,"base64url").toString())}catch{return!1}let K=Math.floor((Z.nowMs??Date.now())/1000);return J.o===Z.organizationId&&J.m===Z.virtualMcpId&&J.b===Z.branch&&typeof J.e==="number"&&J.e>=K}var wd6=21600000,oV0=null;var tQ8=L(()=>{V$()});import{z as Rd}from"zod";function jd6($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&Ed6.test($)}function eQ8($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function c10($){let Z=$.get("decofileScope");return vV0($.var.studioContext,Z.organizationId,Z.githubRepo)}function l10($,Z){if(Z instanceof m4){let Q=Z.status===404?404:Z.status===409?409:Z.status===422?409:502;return $.json({error:Z.message},Q)}let X=Z instanceof Error?Z.message:String(Z);return $.json({error:X},500)}function $Y8(){let $=new U1;return $.use("/:virtualMcpId/:branch",sQ8),$.use("/:virtualMcpId/:branch/*",sQ8),$.get("/:virtualMcpId/:branch",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await c10(Z),Y=await VQ8(Q,X.branch,X.packagePath,{createBranchIfMissing:!!X.userId}),G={ETag:`"${Y.sha}"`,"Cache-Control":"no-store","Access-Control-Allow-Origin":"*"};if(Z.req.header("if-none-match")===`"${Y.sha}"`)return Z.body(null,304,G);if(!X.userId)return Z.body(Y.decofile,200,{...G,"content-type":"application/json"});let J=bB1({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.body(`{"version":${JSON.stringify(Y.sha)},"token":${JSON.stringify(J)},"apiHost":${JSON.stringify(eQ8(Z))},"decofile":${Y.decofile}}`,200,{...G,"content-type":"application/json"})}catch(Q){return l10(Z,Q)}}),$.get("/:virtualMcpId/:branch/meta",async(Z)=>{let X=Z.get("decofileScope"),Q=X.packagePath?`${X.packagePath}/.deco/meta.gen.json`:".deco/meta.gen.json";try{let Y=await c10(Z),G=await Y.getFileTextAtRef(X.branch,Q);if(G===null){let J=await Y.getDefaultBranch();if(J!==X.branch)G=await Y.getFileTextAtRef(J,Q)}if(G===null)return Z.json({error:"meta.gen.json not committed"},404);return Z.body(G,200,{"content-type":"application/json","Cache-Control":"no-store","Access-Control-Allow-Origin":"*"})}catch(Y){return l10(Z,Y)}}),$.patch("/:virtualMcpId/:branch",Pd6,async(Z)=>{let X=Z.get("decofileScope"),Q=Z.var.studioContext,Y=Ad6.safeParse(await Z.req.json().catch(()=>null));if(!Y.success)return Z.json({error:"Invalid body",details:Y.error.issues},400);let G=Y.data;for(let J of[...Object.keys(G.set??{}),...G.delete??[]])try{xV0(J)}catch(K){let W=K instanceof Error?K.message:String(K);return Z.json({error:W},400)}for(let[J,K]of Object.entries(G.set??{}))if(typeof K!=="object"||K===null||Array.isArray(K))return Z.json({error:`Block "${J}" must be a JSON object`},400);try{let J=await c10(Z),K=await dQ8(`${X.organizationId}/${X.virtualMcpId}/${X.branch}`,{client:J,branch:X.branch,packagePath:X.packagePath,coAuthor:wd(Q)},G),W=bB1({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.json({version:K,token:W,apiHost:eQ8(Z)})}catch(J){return l10(Z,J)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await c10(Z),Y=await Q.getDefaultBranch();if(Y===X.branch)return Z.json({error:"Branch is already the default branch"},400);let G=`chore(decofile): publish ${X.branch}`;try{let J;try{J=await Q.mergeBranch(Y,X.branch,G)}catch(K){if(!(K instanceof m4&&K.status===409))throw K;await pV0(Q,X.branch,Y),J=await Q.mergeBranch(Y,X.branch,G)}return J?Z.json({result:"merged",sha:J}):Z.json({result:"up-to-date"})}catch(J){if(J instanceof m4&&J.status===409)return Z.json({error:"merge-conflict"},409);if(J instanceof m4&&J.status===405){let W=await Q.findOpenPullRequest(Y,X.branch)??await Q.createPullRequest({base:Y,head:X.branch,title:`Publish ${X.branch}`});return Z.json({result:"pull-request",number:W.number,url:W.html_url})}throw J}}catch(Q){return l10(Z,Q)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await c10(Z),Y=await Q.getDefaultBranch();if(Y===X.branch)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0});try{let{aheadBy:G,behindBy:J}=await Q.compare(Y,X.branch);return Z.json({baseBranch:Y,aheadBy:G,behindBy:J})}catch(G){if(G instanceof m4&&G.status===404)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0});throw G}}catch(Q){return l10(Z,Q)}}),$}var Ed6,oQ8=500,rQ8=1048576,aQ8=1024,zd6=8388608,Pd6,Ad6,sQ8;var ZY8=L(()=>{fV0();T8();DF();FB1();CV0();vB1();TB1();mQ8();tQ8();_B1();ax();dV0();Ed6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;Pd6=Q9({maxSize:zd6,onError:($)=>$.json({error:"Payload too large"},413)}),Ad6=Rd.object({set:Rd.record(Rd.string(),Rd.unknown()).optional(),delete:Rd.array(Rd.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)<=oQ8,{message:`Patch cannot touch more than ${oQ8} blocks`}).refine(($)=>Object.values($.set??{}).every((Z)=>JSON.stringify(Z).length<=rQ8),{message:`Each block must be at most ${rQ8} bytes`}).refine(($)=>[...Object.keys($.set??{}),...$.delete??[]].every((Z)=>Z.length<=aQ8),{message:`Each block key must be at most ${aQ8} characters`}),sQ8=SV0(async($,Z)=>{let X=$.var.studioContext,Q=X.organization;if(!Q)return $.json({error:"Organization scope required"},500);let Y=$.req.param("virtualMcpId"),G=$.req.param("branch");if(!Y||!G)return $.json({error:"virtualMcpId and branch are required"},400);if(!jd6(G))return $.json({error:`Invalid branch name: ${G}`},400);let J=X.auth?.user?.id??null;if(!J){let B=$.req.query("token");if(!($.req.method==="GET"&&!$.req.path.match(/\/(publish|status)$/)))return $.json({error:"Unauthorized"},401);if(!B||!nQ8(B,{organizationId:Q.id,virtualMcpId:Y,branch:G}))return $.json({error:"Unauthorized"},401)}let K=await X.storage.virtualMcps.findById(Y);if(!K||K.organization_id!==Q.id)return $.json({error:"Virtual MCP not found"},404);let W=K.metadata??null;if(!VP0(W))return $.json({error:"Project has no preview server configured"},404);let F=K.connections?.map((B)=>B.connection_id)??[],N=h10(W,F);if(!N)return $.json({error:"Project has no GitHub repository"},404);let U=W?.runtime;return $.set("decofileScope",{organizationId:Q.id,virtualMcpId:Y,branch:G,packagePath:U?.path?.replace(/^\/+|\/+$/g,"")||null,githubRepo:N,userId:J}),Z()})});var XY8=($)=>{let Z=new U1;if(Z.use("*",lx),Z.route("/",nM0()),Z.route("/",L98()),Z.route("/",PX8()),Z.route("/",EX8()),Z.route("/",MV0()),Z.route("/tools",VX8()),Z.route("/",IX8()),Z.route("/",a78({kvStorage:$.kvStorage})),Z.route("/",o78()),Z.route("/fs",NX8({getConnection:$.getNatsConnection})),Z.route("/sandbox",cQ8()),Z.route("/decofile",$Y8()),Z.route("/",LX8()),Z.route("/deco-sites",oM0()),Z.route("/sso",cM0()),Z.route("/",VV0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",K98()),$.mountDevAssets)Z.route("/dev-assets",rM0({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("/",y48()),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",BX8()),Z.route("/mcp",Z20()),Z.route("/mcp/self",qV0()),Z.route("/mcp",Y20()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var QY8=L(()=>{T8();_N1();W98();bN1();aM0();K10();SN1();r78();s78();UX8();js();RN1();G20();QB1();OX8();DX8();jX8();AX8();qX8();GB1();kX8();JB1();X20();lQ8();ZY8()});function Td6($){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 Rd6=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},YY8=()=>{let $=new U1;return $.use("*",Rd6),$.get("/",async(Z)=>{let X=y0(),Q=X.decoSupabaseUrl,Y=X.decoSupabaseServiceKey;if(!Q||!Y)return Z.json({apps:[]});try{let G=await G7(Q,Y,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:Td6(G)})}catch(G){return console.error("[deco-apps] GET error:",G),Z.json({error:"Failed to fetch apps"},502)}}),$};var GY8=L(()=>{T8();V$();oq0()});import{z as S1}from"zod";function PF($,Z="invalid_request_error",X=null,Q=null){return{error:{message:$,type:Z,param:X,code:Q}}}function xd6($){if(!$)return null;let Z=$.indexOf(":");if(Z===-1)return{credentialId:null,modelId:$};let X=$.substring(0,Z),Q=$.substring(Z+1);if(!X||!Q)return null;return{credentialId:X,modelId:Q}}function fd6($,Z,X){try{return JSON.parse($)}catch{throw new WY8(`Invalid JSON in tool call arguments for function '${X}' (tool_call_id: ${Z}): ${$}`)}}function bd6($){let Z={};for(let X of $)if(X.role==="assistant"&&X.tool_calls)for(let Q of X.tool_calls)Z[Q.id]=Q.function.name;return $.map((X)=>{switch(X.role){case"system":return{role:"system",content:X.content};case"user":if(typeof X.content==="string")return{role:"user",content:X.content};return{role:"user",content:X.content.map((Y)=>{if(Y.type==="text")return{type:"text",text:Y.text};return{type:"image",image:Y.image_url.url}})};case"assistant":if(X.tool_calls&&X.tool_calls.length>0)return{role:"assistant",content:X.tool_calls.map((Y)=>({type:"tool-call",toolCallId:Y.id,toolName:Y.function.name,input:fd6(Y.function.arguments,Y.id,Y.function.name)}))};return{role:"assistant",content:X.content??""};case"tool":let Q=Z[X.tool_call_id]??"unknown";return{role:"tool",content:[{type:"tool-result",toolCallId:X.tool_call_id,toolName:Q,output:{type:"text",value:X.content}}]}}})}function yd6($){let Z=$.map((X)=>{let Q=X.function.parameters?zG(X.function.parameters):zG({type:"object",properties:{}});return[X.function.name,k$({description:X.function.description,inputSchema:Q})]});return Object.fromEntries(Z)}function gd6($){if(!$)return;return{openai:{response_format:$}}}function hd6(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function JY8($,Z,X,Q,Y,G){let J={model:$,messages:Z,tools:X,temperature:Q.temperature,maxTokens:Q.max_tokens,topP:Q.top_p,frequencyPenalty:Q.frequency_penalty,presencePenalty:Q.presence_penalty,stopSequences:Q.stop?Array.isArray(Q.stop)?Q.stop:[Q.stop]:void 0,abortSignal:G};return Y?{...J,providerOptions:Y}:J}function KY8($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var Id6=256,qd6,Md6,Vd6,kd6,Sd6,Cd6,_d6,vd6,WY8,HY8,FY8;var NY8=L(()=>{j4();T8();Dd();RU();qd6=S1.object({type:S1.literal("function"),function:S1.object({name:S1.string(),description:S1.string().optional(),parameters:S1.record(S1.string(),S1.unknown()).optional()})}),Md6=S1.object({id:S1.string(),type:S1.literal("function"),function:S1.object({name:S1.string(),arguments:S1.string()})}),Vd6=S1.discriminatedUnion("role",[S1.object({role:S1.literal("system"),content:S1.string(),name:S1.string().optional()}),S1.object({role:S1.literal("user"),content:S1.union([S1.string(),S1.array(S1.union([S1.object({type:S1.literal("text"),text:S1.string()}),S1.object({type:S1.literal("image_url"),image_url:S1.object({url:S1.string(),detail:S1.string().optional()})})]))]),name:S1.string().optional()}),S1.object({role:S1.literal("assistant"),content:S1.string().nullable().optional(),name:S1.string().optional(),tool_calls:S1.array(Md6).optional()}),S1.object({role:S1.literal("tool"),content:S1.string(),tool_call_id:S1.string()})]),kd6=S1.object({type:S1.literal("text")}),Sd6=S1.object({type:S1.literal("json_object")}),Cd6=S1.object({type:S1.literal("json_schema"),json_schema:S1.object({name:S1.string(),description:S1.string().optional(),schema:S1.record(S1.string(),S1.unknown()),strict:S1.boolean().optional()})}),_d6=S1.union([kd6,Sd6,Cd6]),vd6=S1.object({model:S1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:S1.array(Vd6),stream:S1.boolean().optional().default(!1),temperature:S1.number().min(0).max(2).optional(),max_tokens:S1.number().positive().optional(),top_p:S1.number().min(0).max(1).optional(),frequency_penalty:S1.number().min(-2).max(2).optional(),presence_penalty:S1.number().min(-2).max(2).optional(),stop:S1.union([S1.string(),S1.array(S1.string())]).optional(),tools:S1.array(qd6).optional(),tool_choice:S1.union([S1.literal("auto"),S1.literal("none"),S1.literal("required"),S1.object({type:S1.literal("function"),function:S1.object({name:S1.string()})})]).optional(),response_format:_d6.optional(),user:S1.string().optional()});WY8=class WY8 extends Error{constructor($){super($);this.name="MessageConversionError"}};HY8=new U1;HY8.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),X=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(PF("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(PF("Organization context is required. Ensure your API key has organization metadata.","invalid_request_error","organization"),400);if((Z.organization.slug??Z.organization.id)!==X)return $.json(PF("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Q=await $.req.json(),Y=vd6.safeParse(Q);if(!Y.success){let w=Y.error.issues[0]??{message:"Invalid request",path:[]};return $.json(PF(`Invalid request: ${w.message}`,"invalid_request_error",w.path.length>0?w.path.join("."):null),400)}let G=Y.data,J=xd6(G.model);if(!J)return $.json(PF("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:K}=J,{modelId:W}=J;if(!K){let E=(await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id})).find((j)=>tE(j.providerId));if(!E)return $.json(PF("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);K=E.id}let H;try{H=await Z.aiProviders.activate(K,Z.organization.id)}catch{return $.json(PF(`AI provider credential not found or inaccessible: ${K}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(W),N=bd6(G.messages),U=G.tools?yd6(G.tools):void 0,B=gd6(G.response_format),O=hd6(),D=Math.floor(Date.now()/1000);if(G.stream)return mU($,async(w)=>{let E=JY8(F,N,U,G,B,$.req.raw.signal);try{let j=dL(E),z=!1,A=0,P="",I=async()=>{if(P.length===0)return;let M=P;P="",await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{content:M},finish_reason:null}]})})};for await(let M of j.fullStream){if(!z&&(M.type==="text-delta"||M.type==="tool-call"))await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),z=!0;if(M.type==="text-delta"){if(P+=M.text,P.length>=Id6)await I()}else if(M.type==="tool-call"){await I();let q=A++;await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{tool_calls:[{index:q,id:M.toolCallId,type:"function",function:{name:M.toolName,arguments:JSON.stringify(M.input)}}]},finish_reason:null}]})})}else if(M.type==="finish")await I(),await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{},finish_reason:KY8(M.finishReason)}],usage:M.totalUsage?{prompt_tokens:M.totalUsage.inputTokens??0,completion_tokens:M.totalUsage.outputTokens??0,total_tokens:M.totalUsage.totalTokens??0}:void 0})})}await I(),await w.writeSSE({data:"[DONE]"})}catch(j){let z=j;console.error("[openai-compat:stream] Error:",z.message),await w.writeSSE({data:JSON.stringify({error:{message:z.message,type:"server_error"}})})}});else{let w=JY8(F,N,U,G,B,$.req.raw.signal),E=await cL(w),j={role:"assistant",content:E.text||null};if(E.toolCalls&&E.toolCalls.length>0)j.tool_calls=E.toolCalls.map((z)=>({id:z.toolCallId,type:"function",function:{name:z.toolName,arguments:JSON.stringify("input"in z?z.input:{})}})),j.content=null;return $.json({id:O,object:"chat.completion",created:D,model:G.model,choices:[{index:0,message:j,finish_reason:KY8(E.finishReason)}],usage:{prompt_tokens:E.usage?.inputTokens??0,completion_tokens:E.usage?.outputTokens??0,total_tokens:E.usage?.totalTokens??0}})}}catch(Q){let Y=Q;if(Y.name==="AbortError")return $.json(PF("Request aborted","invalid_request_error"),400);if(Y.name==="MessageConversionError")return $.json(PF(Y.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",Y.message,Y.stack),$.json(PF(Y.message,"server_error"),500)}});FY8=HY8});function ud6($){if(typeof $!=="object"||$===null)return!1;let X=$.githubRepo?.url;return typeof X==="string"&&X.length>0}function UY8(){let $=new U1;return $.use("*",async(Z,X)=>{await X(),Z.header("Cache-Control","private, no-store"),Z.header("Vary","Cookie")}),$.get("/",async(Z)=>{let X=Z.get("studioContext"),Q=a0(X);if(!Q)return Z.json({error:"Authentication required"},401);let G=(Z.req.query("site")??"").trim().toLowerCase();if(!xJ(G))return Z.json({error:"Invalid site slug"},400);let J=await X.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["organization.id as id","organization.slug as slug","organization.name as name","organization.metadata as metadata"]).where("member.userId","=",Q).execute(),K=[];for(let H of J){if(!H.slug||T7(H))continue;let F=await X.storage.virtualMcps.list(H.id);for(let N of F){if(AB$(N)!==G)continue;if(!ud6(N.metadata))continue;K.push({orgSlug:H.slug,orgName:H.name??H.slug,project:{id:N.id,title:N.title,icon:N.icon??null}})}}let W={matches:K};return Z.json(W)}),$}var BY8=L(()=>{T8();VL()});function ld6(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??cd6}}var OY8,cd6="https://ph.studio.decocms.com",LY8;var DY8=L(()=>{T8();MG0();Tv();i5();V$();EN1();Dp0();OY8=new U1;OY8.get("/",($)=>{let Z={version:eZ0.version,theme:$3$(),...CN().logo&&{logo:CN().logo},...gH()&&{internalUrl:Fn1()},...y0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!y0().firecrawlApiKey,auth:M58(),posthog:ld6(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:!gH()&&y0().agentSandboxEnabled}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});LY8=OY8});function Id($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function yB1($){return(Id($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((X)=>X.charAt(0).toUpperCase()+X.slice(1)).join(" ")}function EY8($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(Id($))}&sz=${Z}`}function wY8($,Z){let X=$.trim();if(X.length<=Z)return X;let Q=X.slice(0,Z-1),Y=Q.lastIndexOf(" ");return`${(Y>Z*0.6?Q.slice(0,Y):Q).trimEnd()}\u2026`}function jY8($){let{brand:Z,domain:X,score:Q,verdict:Y}=$,G=typeof Q==="number"?`${Z} commerce report \u2014 ${Math.round(Q)}/100 \xB7 decocms`:`${Z} commerce report \xB7 decocms`,J=`See the full ${Z} scorecard \u2014 SEO, performance, conversion & AEO signals scored by decocms.`,K=Y?.trim()?wY8(`${Y.trim().replace(/\s+/g," ")} \u2014 ${J}`,200):wY8(`How does ${X} really perform? ${J}`,200);return{title:G,description:K}}import{z as m0}from"zod";var Xf,dd6,md6,id6,pd6,zY8;var PY8=L(()=>{Xf=m0.enum(["good","bad","neutral"]),dd6=m0.preprocess(($)=>{if(Array.isArray($))return{kind:"text",value:$.find((X)=>X!==null&&typeof X!=="object")??""};return $!==null&&typeof $==="object"?$:{kind:"text",value:$}},m0.object({kind:m0.enum(["text","number","sparkline","badge","score"]).catch("text"),value:m0.coerce.string().optional(),tone:Xf.optional(),muted:m0.boolean().optional(),delta:m0.coerce.string().optional(),deltaDir:m0.enum(["up","down","neutral"]).optional(),points:m0.array(m0.coerce.number()).optional(),label:m0.coerce.string().optional()}).transform(($)=>{if($.kind==="badge"&&$.label==null)$.label=$.value??"";if($.kind==="score"){let Z=Number($.value);if(Number.isNaN(Z))return{...$,kind:"text"}}return $})),md6=m0.preprocess(($)=>{let Z=$;if(Z&&typeof Z==="object"&&!Array.isArray(Z)&&Array.isArray(Z.cells))Z=Z.cells;if(Array.isArray(Z)&&Z.length===1&&Array.isArray(Z[0]))Z=Z[0];if(Array.isArray(Z))return Z;if(Z&&typeof Z==="object")return Object.values(Z);return Z},m0.array(dd6)),id6={key:m0.coerce.string(),title:m0.coerce.string(),eyebrow:m0.coerce.string().optional(),headline:m0.coerce.string(),annotation:m0.coerce.string().optional(),methodology:m0.coerce.string().optional(),sources:m0.array(m0.object({name:m0.coerce.string(),logoUrl:m0.coerce.string()})).optional()},pd6=m0.discriminatedUnion("template",[m0.object({template:m0.literal("cover"),score:m0.object({value:m0.coerce.number(),max:m0.coerce.number().optional(),grade:m0.coerce.string().optional(),label:m0.coerce.string().optional()}).optional(),brandImage:m0.coerce.string().optional(),screenshot:m0.coerce.string().optional(),mobileScreenshot:m0.coerce.string().optional()}),m0.object({template:m0.literal("cta"),ctaUrl:m0.coerce.string().optional(),ctaLabel:m0.coerce.string().optional(),bullets:m0.array(m0.coerce.string()).optional()}),m0.object({template:m0.literal("series"),points:m0.array(m0.coerce.number()).min(2),xLabels:m0.array(m0.coerce.string()).min(1),unit:m0.coerce.string().optional(),callout:m0.object({index:m0.coerce.number(),value:m0.coerce.string(),tone:Xf.optional()})}),m0.object({template:m0.literal("threshold"),value:m0.coerce.string().default(""),metricLabel:m0.coerce.string().optional(),ratio:m0.coerce.number(),thresholdRatio:m0.coerce.number().optional(),thresholdLabel:m0.coerce.string().default(""),tone:Xf.optional()}),m0.object({template:m0.literal("stats"),stats:m0.array(m0.object({value:m0.coerce.string(),label:m0.coerce.string(),tone:Xf.optional()})).min(1)}),m0.object({template:m0.literal("bars"),items:m0.array(m0.object({value:m0.coerce.string(),label:m0.coerce.string(),ratio:m0.coerce.number(),tone:Xf.optional()})).min(1)}),m0.object({template:m0.literal("gauges"),gauges:m0.array(m0.object({label:m0.coerce.string(),value:m0.coerce.string(),status:m0.enum(["good","warn","bad"]).catch("warn"),caption:m0.coerce.string().optional(),ratio:m0.coerce.number().optional()})).min(1)}),m0.object({template:m0.literal("checklist"),checks:m0.array(m0.object({label:m0.coerce.string(),status:m0.enum(["pass","fail","warn"]).catch("fail"),value:m0.coerce.string().optional()})).min(1)}),m0.object({template:m0.literal("table"),columns:m0.array(m0.object({label:m0.coerce.string(),align:m0.enum(["left","right"]).optional()})).min(1),rows:m0.array(md6).min(1),highlightRow:m0.coerce.number().optional()}),m0.object({template:m0.literal("products"),products:m0.array(m0.object({name:m0.coerce.string(),price:m0.coerce.string().optional(),image:m0.coerce.string().optional(),url:m0.coerce.string().optional()})).min(1)}),m0.object({template:m0.literal("list"),entries:m0.array(m0.object({label:m0.coerce.string(),severity:m0.enum(["error","warning","notice"]).catch("notice")})).min(1),moreCount:m0.coerce.number().optional()}),m0.object({template:m0.literal("keywords"),volumeLabel:m0.coerce.string().optional(),keywords:m0.array(m0.object({term:m0.coerce.string(),volume:m0.coerce.string(),position:m0.coerce.number().catch(0)})).min(1)}),m0.object({template:m0.literal("competitor"),metricLabel:m0.coerce.string().optional(),competitors:m0.array(m0.object({name:m0.coerce.string(),value:m0.coerce.string(),tone:Xf.optional(),isYou:m0.boolean().optional()})).min(1)}),m0.object({template:m0.literal("scorecard"),rivalLabel:m0.coerce.string().optional(),dimensions:m0.array(m0.object({label:m0.coerce.string(),you:m0.coerce.string(),rival:m0.coerce.string().optional(),rivalName:m0.coerce.string().optional(),tone:Xf.optional()})).min(1)})]),zY8=m0.object({...id6,template:pd6})});function rV0($){let Z=[],X=[...$.sections].sort((Y,G)=>Y.position-G.position).map((Y)=>{let G=zY8.safeParse(Y.props);if(G.success)return G.data;let J=G.error.issues[0];return Z.push({section_type:Y.section_type,position:Y.position,reason:J?`${J.path.join(".")||"(root)"}: ${J.message}`:"contract violation"}),null}).filter((Y)=>Y!==null),Q=X.filter((Y)=>Y.template.template!=="cover"&&Y.template.template!=="cta").map((Y)=>({key:Y.key,title:Y.title}));return{deck:{meta:{...$.meta,scores:$.summary?.scores,scannedAt:$.scanned_at,toc:Q},slides:X},drops:Z}}var gB1=L(()=>{PY8()});import{join as AY8}from"path";async function td6($){try{let Z=await fetch(`${WH({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(nd6)});if(!Z.ok)return null;let X=await Z.json(),{deck:Q}=rV0(X);if(!Q.slides.length)return null;let Y=Q.slides.find((K)=>K.template.template==="cover"),G=Y?.template,J=G&&G.template==="cover"?G:void 0;return{brand:Q.meta.brand?.trim()||yB1($),score:Q.meta.scores?.cover??J?.score?.value,verdict:Y?.annotation?.trim()||Y?.headline?.trim()||void 0}}catch{return null}}function mG($){return $.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""")}function od6($,Z){let X=Id($),Q=Z?.brand?.trim()||yB1(X),Y=EY8(X,128),J=`${(y0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(X)}`,{title:K,description:W}=jY8({brand:Q,domain:X,score:Z?.score,verdict:Z?.verdict}),H=`${J}/og.png`,F=`${Q} commerce report by decocms`;return[`<title>${mG(K)}</title>`,`<meta name="description" content="${mG(W)}" />`,'<meta name="robots" content="noindex, follow" />','<meta property="og:type" content="website" />','<meta property="og:site_name" content="decocms" />',`<meta property="og:title" content="${mG(K)}" />`,`<meta property="og:description" content="${mG(W)}" />`,`<meta property="og:url" content="${mG(J)}" />`,`<meta property="og:image" content="${mG(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${mG(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${mG(K)}" />`,`<meta name="twitter:description" content="${mG(W)}" />`,`<meta name="twitter:image" content="${mG(H)}" />`,`<meta name="twitter:image:alt" content="${mG(F)}" />`,`<link rel="canonical" href="${mG(J)}" />`,`<link rel="icon" href="${mG(Y)}" sizes="any" />`].join(`
|
|
4260
4260
|
`)}function rd6($,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}
|
|
4261
4261
|
</head>`)}function TY8($){let Z=new U1;return Z.get("/:domain/og.png",async(X)=>{let Q=Id(X.req.param("domain")),Y=async()=>{let G=$?Bun.file(AY8($,"report-og-fallback.png")):null;if(!G||!await G.exists())return X.notFound();return X.body(new Uint8Array(await G.arrayBuffer()),200,{"Content-Type":"image/png","Cache-Control":"public, max-age=0, s-maxage=3600"})};try{let G=await fetch(`${WH({})}/api/v2/public/diagnostics/${encodeURIComponent(Q)}/og.png`,{signal:AbortSignal.timeout(ad6)}),J=G.headers.get("content-type")??"";if(!G.ok||!J.startsWith("image/")||!G.body)return Y();return X.body(G.body,200,{"Content-Type":J,"Cache-Control":"public, max-age=0, s-maxage=604800"})}catch{return Y()}}),Z.get("/:domain",async(X)=>{let Q=X.req.param("domain"),Y=$?AY8($,"index.html"):null,G=Y?Bun.file(Y):null;if(!G||!await G.exists())return X.notFound();let J=await G.text();try{let K=await td6(Id(Q)),W=od6(Q,K);return X.html(rd6(J,W),200,{"Cache-Control":"public, max-age=0, s-maxage=300"})}catch{return X.html(J)}}),Z}var nd6=2500,ad6=1e4;var RY8=L(()=>{T8();gB1();aj();V$()});function d10($,Z){return fetch(`${WH({})}${$}`,Z)}async function sd6($,Z,X){let Q=new URLSearchParams;if(Z)Q.set("pw",Z);if(X)Q.set("lang",X);let Y=Q.toString()?`?${Q.toString()}`:"",G=await d10(`/api/v2/public/diagnostics/${encodeURIComponent($)}${Y}`,{headers:{Accept:"application/json"}});if(G.status===404)return{status:"not_found",deck:null,scanned_at:null,drops:[]};if(!G.ok)throw Error(`report read HTTP ${G.status}`);let J=await G.json(),{deck:K,drops:W}=rV0(J);return{status:K.slides.length?"ready":"empty",deck:K,scanned_at:J.scanned_at,drops:W}}var ed6,pU,IY8=async($,Z)=>{if(!$.get("reportUser"))return $.json({error:"Authentication required"},401);await Z();return},qY8;var MY8=L(()=>{T8();DG();aj();gB1();ed6=new Set(["complete","errored","terminated","unknown"]),pU=new U1;pU.use("*",async($,Z)=>{let X=await K8.api.getSession({headers:$.req.raw.headers});$.set("reportUser",X?.user?.id?{email:X.user.email}:void 0),await Z(),$.header("Cache-Control","private, no-store"),$.header("Vary","Cookie");return});pU.use("/link-token/*",IY8);pU.use("/suggest",IY8);pU.get("/site/:domain",async($)=>{let Z=$.req.param("domain").trim();if(!Z)return $.json({error:"domain is required"},400);let X=$.get("reportUser"),Q=$.req.query("key")?.trim()||void 0,Y=$.req.query("lang")?.trim()||void 0;try{let G=await sd6(Z,Q,Y);if($.header("Cache-Control","private, no-store"),X||!G.deck)return $.json(G);return $.json({...G,deck:{...G.deck,slides:G.deck.slides.slice(0,1)},truncated:G.status==="ready"})}catch{return $.json({error:"report read failed"},502)}});pU.post("/run",async($)=>{let Z=$.get("reportUser"),X;try{X=await $.req.json()}catch{return $.json({error:"invalid JSON"},400)}let Q=typeof X.domain==="string"?X.domain.trim():"";if(!Q)return $.json({error:"domain is required"},400);let Y=Z?.email,G=typeof X.distinctId==="string"&&X.distinctId.trim()&&X.distinctId.length<=200?X.distinctId.trim():void 0;try{let J=await d10("/api/v2/diagnostics/run",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${rj({})}`},body:JSON.stringify({url:Q,...Y?{email:Y}:{},distinct_id:G})});if(!J.ok)return $.json({error:`run HTTP ${J.status}`},502);let K=await J.json(),W=K.blocked?{state:"blocked"}:K.status==="fresh"?{state:"fresh"}:K.mode==="sync"?{state:"sync"}:{state:"running",id:K.id??null};return $.json(W)}catch{return $.json({error:"run failed"},502)}});pU.get("/status",async($)=>{let Z=$.req.query("id");if(!Z)return $.json({error:"id is required"},400);try{let X=await d10(`/api/v2/diagnostics/status?id=${encodeURIComponent(Z)}`,{headers:{Authorization:`Bearer ${rj({})}`}});if(!X.ok)return $.json({error:`status HTTP ${X.status}`},502);let Y=(await X.json()).status??"unknown",G={done:ed6.has(Y),status:Y};return $.json(G)}catch{return $.json({error:"status failed"},502)}});pU.get("/link-token/:id",async($)=>{let Z=$.req.param("id");try{let X=await d10(`/api/v2/public/link-tokens/${encodeURIComponent(Z)}`,{headers:{Accept:"application/json"}});if(X.status===404)return $.json(null);if(!X.ok)return $.json({error:`link token HTTP ${X.status}`},502);return $.json(await X.json())}catch{return $.json({error:"link token resolve failed"},502)}});pU.get("/suggest",async($)=>{let Z=($.req.query("q")??"").trim().slice(0,64);if(Z.length<2)return $.json({suggestions:[]});try{let X=await d10(`/api/v2/public/suggest?q=${encodeURIComponent(Z)}`,{headers:{Accept:"application/json"}});if(!X.ok)return $.json({suggestions:[]});let Q=await X.json();return $.json({suggestions:Array.isArray(Q.suggestions)?Q.suggestions:[]})}catch{return $.json({suggestions:[]})}});qY8=pU});import{createHmac as $m6,timingSafeEqual as Zm6}from"crypto";function kY8($,Z,X,Q=Date.now()){if(!Z||!X)return!1;let Y,G=[];for(let H of Z.split(",")){let F=H.indexOf("=");if(F<=0)continue;let N=H.slice(0,F).trim(),U=H.slice(F+1).trim();if(N==="t")Y=U;else if(N==="v1")G.push(U)}if(!Y||G.length===0)return!1;let J=Number(Y);if(!Number.isFinite(J)||Math.abs(Q/1000-J)>Xm6)return!1;let K=$m6("sha256",X).update(`${Y}.${$}`).digest("hex"),W=Buffer.from(K,"hex");return G.some((H)=>{let F=Buffer.from(H,"hex");return W.length===F.length&&Zm6(W,F)})}function SY8($){let Z;try{Z=JSON.parse($)}catch{return null}let X=P3(Z),Q=P3(P3(X?.data)?.object);if(!X||typeof X.type!=="string"||!Q)return null;return{id:AF(X.id),type:X.type,created:typeof X.created==="number"?X.created:void 0,livemode:typeof X.livemode==="boolean"?X.livemode:void 0,data:{object:Q}}}function CY8($){switch($){case"active":case"trialing":return"active";case"past_due":return"past_due";default:return"canceled"}}function AF($){return typeof $==="string"?$:void 0}function P3($){return typeof $==="object"&&$!==null?$:void 0}function aV0($){return typeof $==="number"?new Date($*1000):null}function cB1($){return AF($)??AF(P3($)?.id)}function Qm6($){return cB1($.subscription)??AF(P3(P3($.parent)?.subscription_details)?.subscription)}function Ym6($){let Z=aV0($.current_period_end);if(Z)return Z;let X=P3($.items)?.data;if(!Array.isArray(X))return null;let Q=0;for(let Y of X){let G=P3(Y)?.current_period_end;if(typeof G==="number"&&G>Q)Q=G}return Q>0?new Date(Q*1000):null}function hB1($,Z){let X=aV0($.created);return!!X&&!!Z.lastStripeEventAt&&X<Z.lastStripeEventAt}function uB1($,Z){let X=aV0($.created);if(!X)return;return Z.lastStripeEventAt&&Z.lastStripeEventAt>X?void 0:X}async function Gm6($,Z){let X=Z.data.object;switch(Z.type){case"checkout.session.completed":case"checkout.session.async_payment_succeeded":{let Q=AF(P3(X.metadata)?.orgId);if(!Q)return{handled:!1,reason:"no orgId"};if(AF(P3(X.metadata)?.kind)==="topup"){if(X.mode!=="payment")return{handled:!1,reason:"topup with wrong mode"};if(AF(X.payment_status)!=="paid")return{handled:!1,reason:"payment not confirmed"};let J=AF(X.id);if(!J)return console.error("stripe webhook: topup session without id",{eventId:Z.id,organizationId:Q}),{handled:!1,reason:"topup session without id"};let K=Number(P3(X.metadata)?.creditCents);if(!Number.isInteger(K)||K<=0)return console.error("stripe webhook: paid topup with bad metadata \u2014 credit NOT applied",{eventId:Z.id,organizationId:Q,creditCents:P3(X.metadata)?.creditCents}),{handled:!1,reason:"bad topup metadata"};return{handled:!0,organizationId:Q,topUp:{creditCents:K,referenceId:`stripe-topup:${J}`}}}if(X.mode!=="subscription")return{handled:!1,reason:"not a subscription checkout"};if(AF(X.payment_status)!=="paid")return{handled:!1,reason:"payment not confirmed"};let Y=await $.getBilling(Q);if(!Y)return{handled:!1,reason:"unknown org"};let G=cB1(X.subscription);if(Y.stripeSubscriptionId&&G&&Y.stripeSubscriptionId!==G)return console.error("stripe webhook: refused checkout rebind",{organizationId:Q,eventId:Z.id}),{handled:!1,reason:"org already bound to another subscription",orphanSubscriptionId:G};if(hB1(Z,Y))return{handled:!1,reason:"stale event"};return await $.updateStripeState(Q,{stripeCustomerId:cB1(X.customer),stripeSubscriptionId:G,status:"active",lastStripeEventAt:uB1(Z,Y)}),{handled:!0,organizationId:Q}}case"customer.subscription.updated":case"customer.subscription.deleted":{let Q=AF(X.id);if(!Q)return{handled:!1,reason:"no sub id"};let Y=await $.getBillingByStripeSubscriptionId(Q);if(!Y)return{handled:!1,reason:"unknown subscription"};let G=Z.type==="customer.subscription.deleted";if(!G&&hB1(Z,Y))return{handled:!1,reason:"stale event"};let J=G?"canceled":CY8(X.status);return await $.updateStripeState(Y.organizationId,{status:J,currentPeriodEnd:Ym6(X),...G&&{stripeSubscriptionId:null},lastStripeEventAt:uB1(Z,Y)}),{handled:!0,organizationId:Y.organizationId}}case"invoice.paid":{let Q=Qm6(X);if(!Q)return{handled:!1,reason:"no sub id"};let Y=await $.getBillingByStripeSubscriptionId(Q);if(!Y)return{handled:!1,reason:"unknown subscription"};if(hB1(Z,Y))return{handled:!1,reason:"stale event"};return await $.updateStripeState(Y.organizationId,{status:"active",currentPeriodEnd:aV0(X.period_end),lastStripeEventAt:uB1(Z,Y)}),{handled:!0,organizationId:Y.organizationId}}default:return{handled:!1,reason:`unhandled event ${Z.type}`}}}function Jm6($,Z){if(!Z.handled||$.livemode===!1)return null;let X=$.data.object;if(Z.topUp)return{name:"credits_topup_succeeded",organizationId:Z.organizationId,properties:{credit_cents:Z.topUp.creditCents}};switch($.type){case"checkout.session.completed":case"checkout.session.async_payment_succeeded":return{name:"subscription_started",organizationId:Z.organizationId,properties:{}};case"customer.subscription.deleted":return{name:"subscription_canceled",organizationId:Z.organizationId,properties:{}};case"customer.subscription.updated":return{name:"subscription_updated",organizationId:Z.organizationId,properties:{status:CY8(X.status),...typeof X.cancel_at_period_end==="boolean"?{cancel_at_period_end:X.cancel_at_period_end}:{}}};case"invoice.paid":if(X.billing_reason==="subscription_create")return null;return{name:"subscription_renewed",organizationId:Z.organizationId,properties:{}};default:return null}}function VY8($,Z){let X=Jm6($,Z);if(!X)return;NG({event:X.name,organizationId:X.organizationId,...$.id?{uuid:WW$(`stripe:${$.id}:${X.name}`)}:{},...$.created?{timestamp:new Date($.created*1000)}:{},properties:X.properties})}async function _Y8($){let Z=new YH(Y8().db),X=await Gm6(Z,$);if(!(X.handled&&X.topUp))VY8($,X);if(X.handled&&X.topUp)await Kc$({organizationId:X.organizationId,amountCents:X.topUp.creditCents,referenceId:X.topUp.referenceId}),VY8($,X);if(!X.handled&&X.orphanSubscriptionId)try{await EO$(X.orphanSubscriptionId),console.error("stripe webhook: canceled orphan subscription",{subscriptionId:X.orphanSubscriptionId,eventId:$.id})}catch(Q){if(!(Q instanceof wG&&(Q.status===400||Q.status===404)))throw Q}return X}var Xm6=300;var vY8=L(()=>{XX();f4();JG0();Jz();XJ1()});var Km6=1048576,lB1;var xY8=L(()=>{T8();DF();V$();vY8();lB1=new U1;lB1.post("/webhook",Q9({maxSize:Km6,onError:($)=>$.json({error:"payload too large"},413)}),async($)=>{let Z=y0().stripeWebhookSecret;if(!Z)return $.json({error:"stripe billing not configured"},503);let X=await $.req.text();if(!kY8(X,$.req.header("stripe-signature"),Z))return $.json({error:"invalid signature"},400);let Y=SY8(X);if(!Y)return $.json({error:"invalid payload"},400);let G=await _Y8(Y);return console.log("stripe webhook",{eventId:Y.id,type:Y.type,livemode:Y.livemode,...G}),$.json({received:!0})})});import{timingSafeEqual as Wm6}from"crypto";function Fm6($,Z,X){if(!Z?.startsWith("sha256="))return!1;let Q=new Bun.CryptoHasher("sha256",X).update($).digest("hex"),Y=Z.slice(7);if(Y.length!==Q.length)return!1;return Wm6(Buffer.from(Y),Buffer.from(Q))}var Hm6=5242880,dB1;var fY8=L(()=>{T8();DF();vK();dB1=new U1;dB1.post("/webhook",Q9({maxSize:Hm6,onError:($)=>$.json({error:"payload too large"},413)}),async($)=>{let Z=process.env.GITHUB_WEBHOOK_SECRET;if(!Z)return $.json({error:"github webhook not configured"},503);let X=await $.req.text();if(!Fm6(X,$.req.header("x-hub-signature-256"),Z))return $.json({error:"invalid signature"},400);if($.req.header("x-github-event")!=="push")return $.json({ok:!0,ignored:"event"});let Q;try{Q=JSON.parse(X)}catch{return $.json({error:"invalid payload"},400)}let Y=Q.ref,G=Q.repository?.full_name;if(!Y||!G)return $.json({ok:!0,ignored:"shape"});let K=(await X91())?.markTenantPoolsDirty(G,Y)??[];return $.json({ok:!0,pools:K})})});function bY8($,Z){if(Z.startsWith("text/html")||Z.startsWith("image/svg"))$.set("Content-Security-Policy","sandbox allow-scripts allow-modals allow-same-origin")}var yY8,Nm6,Um6,gY8;var hY8=L(()=>{T8();NK();nu();Ch();yY8=new U1,Nm6=["range","if-none-match","if-modified-since"],Um6=["content-type","content-length","content-range","accept-ranges","etag","last-modified"];yY8.get("/:org/files/*",async($)=>{let Z=$.get("studioContext"),X=Z.organization?.id;if(!Z.auth?.user?.id){if(al($))return $.redirect(`/login?next=${encodeURIComponent($.req.path)}`,302);throw new Q$(401,{message:"Authentication required"})}if(!X)throw new Q$(401,{message:"Organization context required"});let Q=$.req.path.replace(/^.*\/files\//,"");if(!Q)throw new Q$(400,{message:"Missing file key"});let Y=await ma(Q,Z);if(!Y)throw new Q$(503,{message:"Object storage not configured"});if(Y.startsWith("data:")&&_J()){let W=Y.match(/^data:([^;]+);base64,(.+)$/s);if(!W)throw new Q$(500,{message:"Invalid data URL from storage"});let[,H,F]=W,N=Buffer.from(F,"base64"),U=new Headers({"Content-Type":H,"Cache-Control":"private, max-age=86400"});return bY8(U,H),new Response(N,{status:200,headers:U})}let G=new Headers;for(let W of Nm6){let H=$.req.header(W);if(H)G.set(W,H)}let J=await fetch(Y,{headers:G});if(J.status===403||J.status===404)throw new Q$(404,{message:"File not found"});if(!J.ok&&J.status!==304&&J.status!==416)throw console.error(`[files] upstream storage error ${J.status} for key:`,Q),new Q$(502,{message:"Upstream storage error"});let K=new Headers;for(let W of Um6){let H=J.headers.get(W);if(H)K.set(W,H)}return K.set("Cache-Control","private, max-age=86400"),bY8(K,K.get("content-type")??""),new Response(J.body,{status:J.status,headers:K})});gY8=yY8});var m10=v((Qf)=>{var Bm6=Qf&&Qf.__createBinding||(Object.create?function($,Z,X,Q){if(Q===void 0)Q=X;var Y=Object.getOwnPropertyDescriptor(Z,X);if(!Y||("get"in Y?!Z.__esModule:Y.writable||Y.configurable))Y={enumerable:!0,get:function(){return Z[X]}};Object.defineProperty($,Q,Y)}:function($,Z,X,Q){if(Q===void 0)Q=X;$[Q]=Z[X]}),Om6=Qf&&Qf.__exportStar||function($,Z){for(var X in $)if(X!=="default"&&!Object.prototype.hasOwnProperty.call(Z,X))Bm6(Z,$,X)};Object.defineProperty(Qf,"__esModule",{value:!0});Om6(QG(),Qf)});var lY8=v((uY8)=>{Object.defineProperty(uY8,"__esModule",{value:!0});uY8.version=void 0;uY8.version="3.4.0"});var iY8=v((TF)=>{var Lm6=TF&&TF.__importDefault||function($){return $&&$.__esModule?$:{default:$}};Object.defineProperty(TF,"__esModule",{value:!0});TF.NodeTransport=TF.VERSION=void 0;TF.nodeResolveHost=Pm6;var Q5=m10(),Dm6=K0("net"),mB1=K0("tls"),wm6=K0("path"),dY8=K0("fs"),Em6=Lm6(K0("dns")),jm6=lY8();TF.VERSION=jm6.version;var zm6="nats.js";class mY8{socket;version;lang;yields=[];signal=(0,Q5.deferred)();closedNotification=(0,Q5.deferred)();options;connected=!1;tlsName="";done=!1;closeError;constructor(){this.lang=zm6,this.version=TF.VERSION}async connect($,Z){this.tlsName=$.tlsName,this.options=Z;let{tls:X}=this.options,{handshakeFirst:Q}=X||{};try{if(Q===!0)this.socket=await this.tlsFirst($);else this.socket=await this.dial($);if(this.done)this.socket?.destroy();let Y=await this.peekInfo();(0,Q5.checkOptions)(Y,Z);let{tls_required:G,tls_available:J}=Y,K=J===!0&&Z.tls!==null;if(!Q&&(G||K))this.socket=await this.startTLS();if(this.done)this.socket?.destroy();if(G&&this.socket.encrypted!==!0)throw Q5.errors.InvalidArgumentError.format("tls","is not available on this server");return this.connected=!0,this.setupHandlers(),this.signal.resolve(),Promise.resolve()}catch(Y){let G=Y;if(!G)G=new Q5.errors.ConnectionError("error connecting - node provided an undefined error");let{code:J}=G,K=J==="ECONNREFUSED"?new Q5.errors.ConnectionError("connection refused",{cause:G}):G;throw this.socket?.destroy(),K}}dial($){let Z=(0,Q5.deferred)(),X,Q=(0,Dm6.createConnection)($.port,$.hostname,()=>{Z.resolve(Q),Q.removeAllListeners()});return Q.on("error",(Y)=>{X=Y}),Q.on("close",()=>{Q.removeAllListeners(),Z.reject(X)}),Q.setNoDelay(!0),Z}get isClosed(){return this.done}close($){return this._closed($,!1)}peekInfo(){let $=(0,Q5.deferred)(),Z;return this.socket.on("data",(X)=>{this.yields.push(X);let Q=Q5.DataBuffer.concat(...this.yields),Y=(0,Q5.extractProtocolMessage)(Q);if(Y!=="")try{let G=Q5.INFO.exec(Y);if(!G)throw Error("unexpected response from server");let J=JSON.parse(G[1]);$.resolve(J)}catch(G){$.reject(G)}finally{this.socket.removeAllListeners()}}),this.socket.on("error",(X)=>{Z=X}),this.socket.on("close",()=>{this.socket.removeAllListeners(),$.reject(Z)}),$}loadFile($){if(!$)return Promise.resolve();let Z=(0,Q5.deferred)();try{if($=(0,wm6.resolve)($),!(0,dY8.existsSync)($))Z.reject(Error(`${$} doesn't exist`));(0,dY8.readFile)($,(X,Q)=>{if(X)return Z.reject(X);Z.resolve(Q)})}catch(X){Z.reject(X)}return Z}async loadClientCerts(){let $={},{certFile:Z,cert:X,caFile:Q,ca:Y,keyFile:G,key:J}=this.options.tls;try{if(Z){let K=await this.loadFile(Z);if(K)$.cert=K}else if(X)$.cert=X;if(G){let K=await this.loadFile(G);if(K)$.key=K}else if(J)$.key=J;if(Q){let K=await this.loadFile(Q);if(K)$.ca=[K]}else if(Y)$.ca=Y;return Promise.resolve($)}catch(K){return Promise.reject(K)}}async tlsFirst($){let Z,X={servername:this.tlsName,rejectUnauthorized:!0};if(this.socket)X.socket=this.socket;if(typeof this.options.tls==="object")try{let Y=await this.loadClientCerts()||{};X=(0,Q5.extend)(X,this.options.tls,Y)}catch(Y){return Promise.reject(new Q5.errors.ConnectionError(Y.message,{cause:Y}))}let Q=(0,Q5.deferred)();try{let Y=(0,mB1.connect)($.port,$.hostname,X,()=>{Y.removeAllListeners(),Q.resolve(Y)});Y.on("error",(G)=>{Z=G}),Y.on("secureConnect",()=>{if(X.rejectUnauthorized===!1)return;if(!Y.authorized)throw Y.authorizationError}),Y.on("close",()=>{Q.reject(Z),Y.removeAllListeners()}),Y.setNoDelay(!0)}catch(Y){Q.reject(new Q5.errors.ConnectionError(Y.message,{cause:Y}))}return Q}async startTLS(){let $,Z={socket:this.socket,servername:this.tlsName,rejectUnauthorized:!0};if(typeof this.options.tls==="object")try{let Q=await this.loadClientCerts()||{};Z=(0,Q5.extend)(Z,this.options.tls,Q)}catch(Q){return Promise.reject(new Q5.errors.ConnectionError(Q.message,{cause:Q}))}let X=(0,Q5.deferred)();try{let Q=(0,mB1.connect)(Z,()=>{Q.removeAllListeners(),X.resolve(Q)});Q.on("error",(Y)=>{$=Y}),Q.on("secureConnect",()=>{if(Z.rejectUnauthorized===!1)return;if(!Q.authorized)throw Q.authorizationError}),Q.on("close",()=>{X.reject($),Q.removeAllListeners()})}catch(Q){X.reject(new Q5.errors.ConnectionError(Q.message,{cause:Q}))}return X}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,Q5.render)($[Z])}`);yield $[Z]}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,Q5.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 mB1.TLSSocket}_send($){if(this.isClosed||this.socket===void 0)return Promise.resolve();if(this.options.debug)console.info(`< ${(0,Q5.render)($)}`);let Z=(0,Q5.deferred)();try{this.socket.write($,(X)=>{if(X){if(this.options.debug)console.error(`!!! ${(0,Q5.render)($)}: ${X}`);return Z.reject(X)}return Z.resolve()})}catch(X){if(this.options.debug)console.error(`!!! ${(0,Q5.render)($)}: ${X}`);Z.reject(X)}return Z}send($){this._send($).catch((X)=>{})}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(X){if(this.options.debug)console.log("transport close terminated with an error",X)}try{if(this.socket)this.socket.removeAllListeners(),this.socket?.destroy(),this.socket=void 0}catch(X){console.log(X)}this.done=!0,this.closedNotification.resolve(this.closeError)}closed(){return this.closedNotification}}TF.NodeTransport=mY8;function Pm6($){let Z=(0,Q5.deferred)();return Em6.default.lookup($,{all:!0},(X,Q)=>{if(X){Z.reject(X);return}let Y=[];for(let G of Q)Y.push(G.address);if(Y.length===0)Y.push($);Z.resolve(Y)}),Z}});var rY8=v((oY8)=>{Object.defineProperty(oY8,"__esModule",{value:!0});oY8.connect=Am6;var pY8=iY8(),nY8=m10(),tY8=m10();function Am6($={}){if((0,tY8.hasWsProtocol)($))return Promise.reject(tY8.errors.InvalidArgumentError.format("servers","node client doesn't support websockets, use the 'wsconnect' function instead"));return(0,nY8.setTransportFactory)({factory:()=>{return new pY8.NodeTransport},dnsResolveFn:pY8.nodeResolveHost}),nY8.NatsConnectionImpl.connect($)}});var aY8=v((nU)=>{var Rm6=nU&&nU.__createBinding||(Object.create?function($,Z,X,Q){if(Q===void 0)Q=X;var Y=Object.getOwnPropertyDescriptor(Z,X);if(!Y||("get"in Y?!Z.__esModule:Y.writable||Y.configurable))Y={enumerable:!0,get:function(){return Z[X]}};Object.defineProperty($,Q,Y)}:function($,Z,X,Q){if(Q===void 0)Q=X;$[Q]=Z[X]}),Im6=nU&&nU.__exportStar||function($,Z){for(var X in $)if(X!=="default"&&!Object.prototype.hasOwnProperty.call(Z,X))Rm6(Z,$,X)};Object.defineProperty(nU,"__esModule",{value:!0});nU.connect=void 0;var qm6=rY8();Object.defineProperty(nU,"connect",{enumerable:!0,get:function(){return qm6.connect}});Im6(m10(),nU)});function ZG8($){let Z=$?.connectFn??Sm6,X=null,Q=null,Y=!1,G=!1,J=!1,K=[];function W(){return X!==null&&!X.isClosed()&&!X.isDraining()&&!J}function H(){console.log(`[NatsProvider] fireReady: ${K.length} callbacks`);for(let U of K)try{U()}catch{}}function F(U){(async()=>{for await(let B of U.status())if(B.type==="disconnect")console.log("[NatsProvider] Disconnected"),J=!0;else if(B.type==="reconnect")console.log("[NatsProvider] Reconnected, re-firing ready callbacks"),J=!1,Q=null,H()})().catch(()=>{})}async function N(U,B){let O=0;while(!G)try{X=await Z({servers:U,timeout:km6,reconnect:!0,maxReconnectAttempts:-1,...B?{authenticator:B}:{}}),console.log(`[NatsProvider] Connected to ${X.getServer()} after ${O} attempt(s)`),Q=null,J=!1,F(X),H();return}catch{O++;let D=H7(Vm6,Mm6,O-1,2,0.5);await W$(D)}}return{init(U,B){if(Y)return;Y=!0,G=!1;let O=B?.creds?sY8.credsAuthenticator(new TextEncoder().encode(B.creds)):void 0;N(U,O).catch(()=>{})},isConnected(){return W()},getConnection(){return W()?X:null},getJetStream(){if(!W())return null;if(!Q)Q=$G8.jetstream(X);return Q},onReady(U){if(K.push(U),W())try{U()}catch{}},async drain(){if(G=!0,Y=!1,Q=null,J=!1,X){let U=X;X=null,await U.drain().catch(()=>{})}}}}function Sm6($){return eY8.connect($)}var sY8,eY8,$G8,Mm6=100,Vm6=3000,km6=3000;var XG8=L(()=>{N4();sY8=k(wp(),1),eY8=k(aY8(),1),$G8=k(dE(),1)});function iB1($,Z){return`${$}.${Z}`}class pB1{cache;constructor($){this.cache=vl({ttlMs:$?.ttlMs??Cm6,maxSize:$?.maxSize??_m6})}async get($,Z){return this.cache.get(iB1($,Z))??null}async set($,Z,X){this.cache.set(iB1($,Z),X)}async invalidate($,Z){this.cache.delete(iB1($,Z))}teardown(){this.cache.clear()}}var Cm6=600000,_m6=5000;var QG8=()=>{};function sV0($,Z){return`${$}:${Z}`}function nB1($){let Z=vl({ttlMs:$?.ttlMs??vm6,maxSize:$?.maxSize??xm6}),X=$?.getConnection,Q=crypto.randomUUID(),Y=new TextEncoder,G=new TextDecoder,J=null;function K(W,H){let F=X?.();if(!F)return;try{F.publish(YG8,Y.encode(JSON.stringify({organizationId:W,keyId:H,originId:Q})))}catch(N){console.warn("[ProviderKeyCache] Publish failed (non-critical):",N)}}return{get(W,H){return Z.get(sV0(W,H))},set(W,H,F){Z.set(sV0(W,H),F)},invalidate(W,H){Z.delete(sV0(W,H)),K(W,H)},start(){if(J)return;let W=X?.();if(!W)return;J=W.subscribe(YG8),(async()=>{for await(let H of J)try{let F=JSON.parse(G.decode(H.data));if(F.originId===Q)continue;Z.delete(sV0(F.organizationId,F.keyId))}catch{}})().catch(console.error)},teardown(){J?.unsubscribe(),J=null,Z.clear()}}}var YG8="studio.ai-provider-keys.invalidate",vm6=30000,xm6=5000;var GG8=()=>{};class tB1{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 X=new TextDecoder,Q=Z.subscribe("studio.decopilot.cancel");this.subscription=Q,(async()=>{for await(let Y of Q)try{let G=JSON.parse(X.decode(Y.data));if(G.originId===this.originId)continue;this.onCancel?.(G.taskId)}catch{}})().catch(console.error)}broadcast($){if(/[.*>\s]/.test($)){console.warn("[NatsCancelBroadcast] Invalid threadId, skipping broadcast");return}this.onCancel?.($);try{let Z=this.options.getConnection();if(!Z)return;let X=this.encoder.encode(JSON.stringify({taskId:$,originId:this.originId}));Z.publish("studio.decopilot.cancel",X)}catch(Z){console.warn("[NatsCancelBroadcast] Publish failed (non-critical):",Z)}}async stop(){this.subscription?.unsubscribe(),this.subscription=null,this.onCancel=null}}var JG8=($)=>{let Z;return()=>Z??=$()},oB1,rB1;var KG8=L(()=>{v6();oB1=JG8(()=>P$.createHistogram("decopilot.stream.encode_ms",{description:"Per-chunk JSON.stringify+encode time for decopilot stream",unit:"ms"})),rB1=JG8(()=>P$.createCounter("decopilot.stream.published_chunks",{description:"Logical decopilot stream chunks published to JetStream",unit:"{chunks}"}))});function lm6(){return{name:OU,subjects:[`${zX1}.>`],storage:WW.StorageType.File,max_age:ym6,max_bytes:hm6,max_msgs_per_subject:cm6,discard:WW.DiscardPolicy.Old,retention:WW.RetentionPolicy.Limits,duplicate_window:gm6,num_replicas:um6}}class NG8{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 WG8($){let Z=FG8.headers();for(let[X,Q]of Object.entries($))Z.set(X,Q);return Z}function pm6($,Z){let X=0;return{publish(Q,Y,G,J){Q.publish(Y,G,J?{headers:J}:void 0).catch((K)=>{if(X++,bm6().add(1,{"org.id":Z??"unknown"}),X===1||X%100===0)console.warn(`[Decopilot] JetStream publish failed for thread ${$} (${X} total):`,K)})},get errorCount(){return X}}}function HG8($){if(!($ instanceof Error))return!1;if($.name==="TimeoutError")return!0;return/timeout|no responders|503|not enabled/i.test($.message)}class aB1{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=lm6(),X=await Y5(async()=>{let Q=this.options.getJetStreamManager?await this.options.getJetStreamManager():await WW.jetstreamManager($);try{await Q.streams.info(OU),await Q.streams.update(OU,Z)}catch(Y){if(Y instanceof Error&&Y.message.includes("stream not found"))await Q.streams.add(Z);else if(Y instanceof Error&&/can ?not change.*storage|storage type/i.test(Y.message))await Q.streams.delete(OU),await Q.streams.add(Z);else throw Y}return Q},{maxAttempts:5,minTimeout:250,maxTimeout:4000,jitter:0.5,isRetriable:HG8});this.js=this.options.getJetStream(),this.jsm=X,console.log(`[Decopilot] StreamBuffer.init ${this.js?"ready":"degraded (js=null)"}`)}pump($,Z,X,Q){let Y=this.js;if(!Y)return console.warn(`[Decopilot] pump: JetStream client unavailable for thread ${Z}; chunks NOT published to NATS`),Promise.resolve();let G=pm6(Z,Q),J=!1,K=()=>{if(J)return;J=!0;let H=Zb$(Z);Y.publish(H.subject,H.data).catch(()=>{})};X.addEventListener("abort",K,{once:!0});let W=(H)=>{let F=performance.now(),N=AX1(H,{runId:Z}),U=performance.now()-F;oB1().record(U),rB1().add(1,{"org.id":Q??"unknown"}),im6?.record(U,N.reduce((B,O)=>B+O.data.length,0));for(let B of N)G.publish(Y,B.subject,B.data,B.headers?WG8(B.headers):void 0)};return(async()=>{let H=$.getReader(),F=0,N=0,U;try{while(!0){let{done:B,value:O}=await H.read();if(B)break;if(W(O),N++,++F>=64)F=0,await new Promise((D)=>setImmediate(D))}}catch(B){U=B,console.warn(`[Decopilot] stream pump error for thread ${Z}:`,B?.message??B)}finally{if(H.releaseLock(),K(),mm6)console.warn(JSON.stringify({msg:"decopilot-stream-diag",event:"pump-done",taskId:Z,publishedChunks:N,publishErrors:G.errorCount}))}if(U!==void 0)throw U})()}async publishSerialized($,Z){try{return await Y5(()=>$.publish(Z.subject,Z.data,{...Z.headers?{headers:WG8(Z.headers)}:{},...Z.msgId?{msgID:Z.msgId}:{}}),{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:HG8}),!0}catch(X){return console.error(`[Decopilot] publish failed after retries subject=${Z.subject}`,X),!1}}async publishRawChunk($,Z,X){let Q=this.js;if(!Q)return!1;let Y=performance.now(),G=AX1(Z,{runId:$,dedup:X});oB1().record(performance.now()-Y),rB1().add(1);for(let J of G)if(!await this.publishSerialized(Q,J))return!1;return!0}async publishDone($,Z,X){let Q=this.js;if(!Q)return!1;let Y=$b$({runId:$,fenceToken:Z,finalSeq:X});return await this.publishSerialized(Q,Y)}async createTailStream($,Z,X){let Q=this.js;if(!Q)return console.warn(`[Decopilot] createTailStream: JetStream client unavailable for thread ${$}; no live tail`),null;let Y=X?.deliverPolicy==="new"?WW.DeliverPolicy.New:WW.DeliverPolicy.All,G=X?.closeOnDone??!1,J=qD($),K;try{K=await(await Q.consumers.get(OU,{filter_subjects:J,deliver_policy:Y})).consume()}catch(D){return console.warn("[Decopilot] JetStream tail unavailable (non-critical):",D?.message??D),null}let F=fT0({messages:async function*(){try{for await(let D of K)yield{subject:D.subject,data:D.data,headers:D.headers}}finally{K.stop()}}(),onCancel:()=>K.stop()}).pipeThrough(CT0()).pipeThrough(_T0()).getReader(),N=!1,U=()=>{if(N)return;N=!0;try{F.releaseLock()}catch{}},B=!1,O=()=>{if(B)return;B=!0,K.stop(),F.cancel().catch(()=>{}),U()};return Z?.addEventListener("abort",O,{once:!0}),new ReadableStream({async pull(D){for(;;){let{done:w,value:E}=await F.read();if(w){O(),D.close();return}let j=E;if(j.kind==="done"){if(G){O(),D.close();return}continue}D.enqueue(j.chunk);return}},cancel(){O()}})}purge($){if(!this.jsm)return;this.jsm.streams.purge(OU,{filter:qD($)}).catch(()=>{})}teardown(){this.js=null,this.jsm=null}}var WW,FG8,fm6=($)=>{let Z;return()=>Z??=$()},bm6,ym6=86400000000000,gm6=120000000000,hm6=4294967296,um6,cm6=500000,dm6,mm6,im6;var UG8=L(()=>{N4();TX1();bT0();vT0();v6();KG8();WW=k(dE(),1),FG8=k(wp(),1),bm6=fm6(()=>P$.createCounter("decopilot.stream.publish_errors",{description:"Number of JetStream publish failures for decopilot stream chunks",unit:"{errors}"})),um6=Math.max(1,Number(process.env.DECOPILOT_STREAM_REPLICAS??3)||3);dm6=process.env.STREAM_ENCODE_TRACE==="1",mm6=process.env.DECOPILOT_STREAM_TRACE==="1";im6=dm6?new NG8:null});function eV0($,Z,X,Q){if(!Q)return!1;return $.emit(Z,cW(X,Q.status,{title:Q.title??void 0,virtualMcpId:Q.virtual_mcp_id??void 0,createdBy:Q.created_by??void 0,triggerId:Q.trigger_id??null,branch:Q.branch??null,harnessId:Q.harness_id??void 0,createdAt:Q.created_at,updatedAt:Q.updated_at})),!0}var BG8=L(()=>{g8()});class sB1{storage;options;timer=null;constructor($,Z={}){this.storage=$;this.options=Z}start(){if(this.timer)return;let $=this.options.intervalMs??300000;this.timer=setInterval(()=>{this.runOnce()},$)}async runOnce(){let $=this.options.staleAfterMs??3600000;try{let Z=await this.storage.sweepAbandoned($);if(Z>0)console.log(`[async-research-sweeper] marked ${Z} stale jobs as abandoned`);return Z}catch(Z){return console.error("[async-research-sweeper] sweep failed",Z),0}}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}async function OG8($,Z,X){let Q=Z.organizationId;if(Z.status!=="in_review")return!1;if(!jv(X))return!1;if(await $.storage.taskBoard.hasHumanRejectedDone(Z.id,Q))return!1;let Y=await $.storage.taskBoard.update(Z.id,Q,{status:"done"},Z.updatedBy);return await O6($,{taskBoardItemId:Z.id,action:"status_changed",actorId:null,data:{from:Z.status,to:"done",reason:"pr_merged"}}),u$(Q,Y),console.log(`[task-board-review-sweeper] ${Z.id}: linked PR already merged \u2014 moved to done`),!0}var LG8=L(()=>{qX();mu();q5()});function em6($){return $ instanceof DX}function $i6($,Z){return Z-$>=am6}class eB1{taskBoard;contextFactory;billing;options;timer=null;running=!1;cursor=null;constructor($,Z,X,Q={}){this.taskBoard=$;this.contextFactory=Z;this.billing=X;this.options=Q}start(){if(this.timer)return;let $=this.options.intervalMs??nm6;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??om6,X=this.options.itemIntervalMs??tm6,Q=new Date(Date.now()-X),Y=await this.taskBoard.listItemsPendingReview(Z,this.cursor,Q),G=Y.at(-1);this.cursor=Y.length===Z&&G?{updatedAt:G.updatedAt,id:G.id}:null;for(let{id:J,organizationId:K}of Y)try{if(await this.reconcileItem(J,K,Q))$++}catch(W){console.error(`[task-board-review-sweeper] ${J} failed`,W)}await this.reapNeverStartedThreads(Z),$+=await this.dispatchDueRetries(Z),await this.reactToUnhandledFailures(Z)}catch(Z){console.error("[task-board-review-sweeper] sweep failed",Z)}finally{this.running=!1}return $}async reapNeverStartedThreads($){try{let Z=await this.taskBoard.failNeverStartedLinkedThreads($,new Date(Date.now()-m91),hZ1);for(let X of Z)console.warn(`[task-board-review-sweeper] failed never-started thread ${X.threadId} on ${X.itemId}`)}catch(Z){console.error("[task-board-review-sweeper] reaping failed",Z)}}async reactToUnhandledFailures($){let Z=await this.taskBoard.listItemsStuckAfterFailure($,new Date(Date.now()-sm6));for(let{id:X,organizationId:Q,threadId:Y}of Z)try{console.warn(`[task-board-review-sweeper] reacting to an unhandled failure on ${X}`),await yZ1(this.taskBoard,Y,Q),await gZ1(this.taskBoard,this.billing,Y,Q)}catch(G){console.error(`[task-board-review-sweeper] unhandled-failure reaction for ${X} failed`,G)}}async dispatchDueRetries($){let Z=0,X=await this.taskBoard.listItemsDueForRetry($,new Date);for(let{id:Q,organizationId:Y,attempts:G}of X)try{if(!await this.taskBoard.claimDueRetry(Q,Y,new Date))continue;let J=await this.taskBoard.getById(Q,Y);if(!J||J.status!=="in_progress"||J.assigneeId!==E8)continue;let K=await this.contextFactory(Y,J.assignedBy??J.createdBy);if(!K)continue;await hK(K,J,{runClass:"retry"}),Z++,console.warn(`[task-board-review-sweeper] re-dispatched ${Q} after a failure (attempt ${G})`)}catch(J){if(console.error(`[task-board-review-sweeper] retry dispatch for ${Q} failed`,J),em6(J)){await this.returnToTodo(Q,Y,J instanceof Error?J.message:String(J));continue}await this.taskBoard.scheduleRunRetry(Q,Y,G,new Date(Date.now()+rm6)).catch((K)=>console.error(`[task-board-review-sweeper] re-arming ${Q} failed`,K))}return Z}async returnToTodo($,Z,X){try{let Q=await this.taskBoard.getById($,Z);if(!Q||Q.status!=="in_progress")return;let Y=await this.taskBoard.returnToTodoAfterFailure($,Z,Q.updatedBy);if(!Y)return;await this.taskBoard.recordActivity({taskBoardItemId:$,action:"status_changed",actorId:null,data:{from:"in_progress",to:"todo",reason:X}}).catch(()=>{}),u$(Z,Y)}catch(Q){console.error(`[task-board-review-sweeper] returning ${$} to todo failed`,Q)}}async handOffReviewWithoutPr($,Z){let X=await this.taskBoard.listActivity(Z.id,Z.organizationId);if(!$i6(lN(X),Date.now()))return;await yH($,Z,"no pull request is linked to this task \u2014 there is nothing for a "+"reviewer to review")}async reconcileItem($,Z,X){if(!await this.taskBoard.claimSweep($,Z,X))return!1;let Q=await this.taskBoard.getById($,Z);if(!Q)return!1;if(Q.status!=="in_review")return!1;let Y=Q.assigneeId===E8,G=await this.taskBoard.listPrs($,Z),J=await this.contextFactory(Z,Q.assignedBy??Q.createdBy);if(!J)return!1;if(G.length===0){if(Y)await this.handOffReviewWithoutPr(J,Q);return!1}let K=await Promise.all(G.map(async(W)=>({...W,...await pu(Z,W)})));if(K.every((W)=>W.state===null))console.warn(`[task-board-review-sweeper] ${$}: no live PR state from GitHub (${K.length} PR(s)) \u2014 proceeding on unknown`);if(await OG8(J,Q,K))return!0;if(await cb$(J,Q))return!0;if(!Y)return!1;if(!G71(K))return!1;return await nA0(J,Q,{previewMatchesHead:J71(K)}),!0}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}var nm6=60000,tm6=300000,om6=50,rm6=60000,am6=900000,sm6=120000;var DG8=L(()=>{a5();rZ1();bH();Ns();LG8();q5();bJ();uZ1();aJ();ua()});import{readdir as Zi6,rm as $k0}from"fs/promises";import{join as Zk0}from"path";async function Xk0($){let Z=new Date;Z.setUTCDate(Z.getUTCDate()-Xi6),Z.setUTCHours(0,0,0,0);let X=0;try{let Q=await Yf($);for(let Y of Q)if(/^\d{4}$/.test(Y))X+=await wG8($,Y,Z);else if(!Y.startsWith(".")){let G=Zk0($,Y),J=await Yf(G);for(let W of J){if(!/^\d{4}$/.test(W))continue;X+=await wG8(G,W,Z)}if((await Yf(G)).length===0)await $k0(G,{recursive:!0,force:!0})}}catch(Q){console.warn("monitoring retention cleanup failed:",Q)}return X}async function wG8($,Z,X){let Q=0,Y=Zk0($,Z),G=await Yf(Y);for(let K of G){if(!/^\d{2}$/.test(K))continue;let W=Zk0(Y,K),H=await Yf(W);for(let N of H){if(!/^\d{2}$/.test(N))continue;let U=new Date(`${Z}-${K}-${N}T00:00:00Z`);if(isNaN(U.getTime()))continue;if(U<X){let B=Zk0(W,N);await $k0(B,{recursive:!0,force:!0}),Q++}}if((await Yf(W)).length===0)await $k0(W,{recursive:!0,force:!0})}if((await Yf(Y)).length===0)await $k0(Y,{recursive:!0,force:!0});return Q}async function Yf($){try{return(await Zi6($)).filter((X)=>!X.startsWith("."))}catch{return[]}}var Xi6=30;var $O1=()=>{};import{DBOS as ZO1,SchedulerMode as Qi6}from"@dbos-inc/dbos-sdk";async function Gi6(){let $=[f3(),lb(),QN()],Z=0;for(let X of $)try{Z+=await Xk0(X)}catch(Q){console.error("[monitoring-retention] cleanup failed:",Q)}return console.log(`[monitoring-retention] deleted ${Z} day-dir(s) across ${$.length} signal dir(s)`),{deleted:Z,dirs:$.length}}async function Ji6($,Z){await ZO1.runStep(()=>Gi6(),{name:"monitoringRetention"})}function jG8(){if(EG8)return;EG8=!0;let $=ZO1.registerWorkflow(Ji6,{name:"monitoringRetentionWorkflow"});ZO1.registerScheduled($,{name:"monitoringRetentionWorkflow",crontab:Yi6,mode:Qi6.ExactlyOncePerIntervalWhenActive})}var Yi6="23 4 * * *",EG8=!1;var zG8=L(()=>{aY();$O1()});function PG8($){return async(Z,X)=>{let Q=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","=",X).where("member.organizationId","=",Z).executeTakeFirst();if(!Q)return console.warn(`[automationContextFactory] User ${X} not found in org ${Z} \u2014 returning null`),null;let Y=await oJ.create();Y.auth.user={id:X,role:Q.role},Y.organization={id:Q.orgId,slug:Q.orgSlug,name:Q.orgName};let G=await ta($.db,Z,Q.role);return Y.boundAuth=ZN1({auth:Y.authInstance,headers:new Headers,role:Q.role,permissions:G,userId:X}),Y.access=new xj(X,void 0,Y.boundAuth,Q.role,"self"),DD(Y,{id:Q.orgId,slug:Q.orgSlug}),Y}}var AG8=L(()=>{fj();wD()});import{EventEmitter as Ki6}from"events";var XO1;var TG8=L(()=>{VE();XO1=new Ki6;XO1.on("request",($)=>{tB($)})});function RG8(){return async($,Z)=>{let X=Date.now(),Q=$.req.method,Y=$.req.path;if(Y==="/api/auth/get-session"||Y.includes("favicon")){await Z();return}let G="",J=!1;if(Y.startsWith("/mcp")&&Q==="POST"){J=!0;try{if($.req.header("Content-Type")?.includes("application/json")){let U=await $.req.raw.clone().json();if(U.method==="tools/call"&&U.params?.name){let B=qd(U.params.name),O=U.params.arguments||{},D=Object.keys(O).map((E)=>qd(E)),w=D.length>0?D.slice(0,3).join(",")+(D.length>3?"\u2026":""):"";G=`${U5.tool}${B}${U5.dim}(${w})${U5.reset}`}else if(U.method)G=`${U5.dim}${qd(U.method)}${U5.reset}`}}catch{}}let K=qd(Y);if(Y.startsWith("/mcp/conn_")){let F=Y.split("/")[2]??"";K=`/mcp/${U5.mcp}${qd(F.slice(0,12))}\u2026${U5.reset}`}else if(Y==="/mcp")K=`${U5.mcp}/mcp${U5.reset}`;else if(Y==="/mcp/registry")K=`${U5.mcp}/mcp/registry${U5.reset}`;let W=Hi6(Q),H=J?"\u25C0":"\u2190";if(!sZ0())console.log(`${U5.dim}${H}${U5.reset} ${W}${Q}${U5.reset} ${K}${G?` ${G}`:""}`);try{await Z()}finally{let F=Date.now()-X,N=$.res.status,U=Wi6(N),B=F<1000?`${F}ms`:`${(F/1000).toFixed(1)}s`,O=J?"\u25B6":"\u2192";if(!sZ0())console.log(`${U5.dim}${O}${U5.reset} ${W}${Q}${U5.reset} ${K}${G?` ${G}`:""} ${U}${N}${U5.reset} ${U5.duration}${B}${U5.reset}`);XO1.emit("request",{method:Q,path:qd(Y),status:N,duration:F,timestamp:new Date})}}}var U5,Wi6=($)=>{if($>=500)return U5.serverError;if($>=400)return U5.clientError;if($>=300)return U5.redirect;return U5.ok},Hi6=($)=>{return U5[$]||U5.reset},qd=($)=>{return $.replace(/\r/g,"").replace(/\n/g,"").replace(/\x1b\[[0-9;]*m/g,"").replace(/[\x00-\x1f\x7f-\x9f]/g,"")};var IG8=L(()=>{VE();TG8();U5={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 kG8}from"crypto";import{mkdir as Fi6,readdir as Ni6,rm as qG8,stat as SG8}from"fs/promises";import{join as YO1,relative as Ui6}from"path";import{z as I$}from"zod";function _G8($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return YO1(Bi6,Z)}function vG8($){return $.replace(/^\/+/,"").replace(/\.\./g,"")}function QO1($,Z){let X=_G8($),Q=vG8(Z);return YO1(X,Q)}function Oi6($,Z,X,Q){let Y=y0().encryptionKey||"dev-secret",G=`${$}:${Z}:${X}:${Q}`;return kG8("sha256",Y).update(G).digest("hex")}function VG8($,Z,X,Q,Y){let G=Math.floor(Date.now()/1000)+Q,J=Oi6(Z,X,G,Y),K=new URL(`/api/dev-assets/${Z}/${vG8(X)}`,$);return K.searchParams.set("expires",G.toString()),K.searchParams.set("signature",J),K.searchParams.set("method",Y),K.toString()}function xG8($,Z,X){let Q=`${$}:${Z.getTime()}:${X}`;return`"${kG8("md5","etag").update(Q).digest("hex")}"`}async function fG8($,Z,X,Q,Y){try{let G=await Ni6($,{withFileTypes:!0});for(let J of G){let K=YO1($,J.name),H=Ui6(Z,K).replace(/\\/g,"/");if(X&&!H.startsWith(X))continue;if(J.isDirectory())if(Q){let F=H+"/";if(!X||F.startsWith(X)){if(!(X?H.slice(X.length):H).includes("/"))Y.commonPrefixes.add(F)}}else await fG8(K,Z,X,Q,Y);else if(J.isFile()){if(Q&&X){let F=H.slice(X.length);if(F.includes(Q)){let N=F.indexOf(Q),U=X+F.slice(0,N+1);Y.commonPrefixes.add(U);continue}}try{let F=await SG8(K);Y.objects.push({key:H,size:F.size,lastModified:F.mtime.toISOString(),etag:xG8(K,F.mtime,F.size)})}catch{}}}}catch{}}function bG8($,Z){let Q=a($).id;return[{name:"LIST_OBJECTS",description:"List objects in the local assets directory with pagination support",inputSchema:I$.object({prefix:I$.string().optional(),maxKeys:I$.number().optional().default(1000),continuationToken:I$.string().optional(),delimiter:I$.string().optional()}),outputSchema:I$.object({objects:I$.array(I$.object({key:I$.string(),size:I$.number(),lastModified:I$.string(),etag:I$.string()})),nextContinuationToken:I$.string().optional(),isTruncated:I$.boolean(),commonPrefixes:I$.array(I$.string()).optional()}),handler:async(Y)=>{let G=Y,J=G.prefix||"",K=G.maxKeys??1000,W=G.delimiter,H=G.continuationToken,F=_G8(Q);await Fi6(F,{recursive:!0});let N={objects:[],commonPrefixes:new Set};await fG8(F,F,J,W,N),N.objects.sort((w,E)=>w.key.localeCompare(E.key));let U=0;if(H){if(U=N.objects.findIndex((w)=>w.key>H),U===-1)U=N.objects.length}let B=N.objects.slice(U,U+K),O=U+K<N.objects.length,D=O?B[B.length-1]?.key:void 0;return{objects:B,isTruncated:O,nextContinuationToken:D,commonPrefixes:Array.from(N.commonPrefixes).sort()}}},{name:"GET_OBJECT_METADATA",description:"Get metadata for a file in the local assets directory",inputSchema:I$.object({key:I$.string()}),outputSchema:I$.object({contentType:I$.string().optional(),contentLength:I$.number(),lastModified:I$.string(),etag:I$.string(),metadata:I$.record(I$.string(),I$.string()).optional()}),handler:async(Y)=>{let G=Y,J=QO1(Q,G.key),K=await SG8(J);return{contentType:gN1(G.key),contentLength:K.size,lastModified:K.mtime.toISOString(),etag:xG8(J,K.mtime,K.size)}}},{name:"GET_PRESIGNED_URL",description:"Generate a presigned URL for downloading a file from local storage",inputSchema:I$.object({key:I$.string(),expiresIn:I$.number().optional()}),outputSchema:I$.object({url:I$.string(),expiresIn:I$.number()}),handler:async(Y)=>{let G=Y,J=G.expiresIn??MG8;return{url:VG8(Z,Q,G.key,J,"GET"),expiresIn:J}}},{name:"PUT_PRESIGNED_URL",description:"Generate a presigned URL for uploading a file to local storage",inputSchema:I$.object({key:I$.string(),expiresIn:I$.number().optional(),contentType:I$.string().optional()}),outputSchema:I$.object({url:I$.string(),expiresIn:I$.number()}),handler:async(Y)=>{let G=Y,J=G.expiresIn??MG8;return{url:VG8(Z,Q,G.key,J,"PUT"),expiresIn:J}}},{name:"DELETE_OBJECT",description:"Delete a single file from local storage",inputSchema:I$.object({key:I$.string()}),outputSchema:I$.object({success:I$.boolean(),key:I$.string()}),handler:async(Y)=>{let G=Y,J=QO1(Q,G.key);try{return await qG8(J),{success:!0,key:G.key}}catch{return{success:!1,key:G.key}}}},{name:"DELETE_OBJECTS",description:"Delete multiple files from local storage",inputSchema:I$.object({keys:I$.array(I$.string()).max(1000)}),outputSchema:I$.object({deleted:I$.array(I$.string()),errors:I$.array(I$.object({key:I$.string(),message:I$.string()}))}),handler:async(Y)=>{let G=Y,J=[],K=[];return await Promise.all(G.keys.map(async(W)=>{let H=QO1(Q,W);try{await qG8(H),J.push(W)}catch(F){K.push({key:W,message:F instanceof Error?F.message:"Unknown error"})}})),{deleted:J,errors:K}}}]}async function GO1($,Z,X){let Q=bG8(Z,X),Y=new tW({name:"dev-assets-mcp",version:"1.0.0"},{capabilities:{tools:{}},jsonSchemaValidator:j5});for(let J of Q){let K="shape"in J.inputSchema?J.inputSchema.shape:I$.object({}).shape,W=J.outputSchema&&"shape"in J.outputSchema?J.outputSchema.shape:I$.object({}).shape;Y.registerTool(J.name,{description:J.description??"",inputSchema:K,outputSchema:W,annotations:J.annotations,_meta:J._meta},async(H)=>{try{let F=await J.handler(H);return{content:[{type:"text",text:JSON.stringify(F)}],structuredContent:F}}catch(F){return{content:[{type:"text",text:`Error: ${F.message}`}],isError:!0}}})}let G=new qQ({enableJsonResponse:$.headers.get("Accept")?.includes("application/json")??!1});return await Y.connect(G),G3(Y,G,$,"mcp:dev-assets")}async function yG8($,Z,X,Q){let G=bG8(X,Q).find((J)=>J.name===$);if(!G)return{content:[{type:"text",text:`Tool not found: ${$}`}],isError:!0};try{let J=await G.handler(Z);return{content:[{type:"text",text:JSON.stringify(J)}]}}catch(J){return{content:[{type:"text",text:J instanceof Error?J.message:String(J)}],isError:!0}}}var Bi6="./data/assets",MG8=3600,CG8,gG8;var hG8=L(()=>{V$();Hc();T8();Pn();cv();KQ();aM0();CG8=new U1;CG8.all("/",async($)=>{let Z=$.get("studioContext"),X=new URL($.req.url),Q=`${X.protocol}//${X.host}`;return GO1($.req.raw,Z,Q)});gG8=CG8});var uG8={};Q0(uG8,{mountDevRoutes:()=>Li6});function Li6($,Z){$.all("/mcp/:connectionId{.*_dev-assets$}",Z,async(Q)=>{let Y=Q.get("studioContext"),G=new URL(Q.req.url),J=`${G.protocol}//${G.host}`;return GO1(Q.req.raw,Y,J)}),$.all("/mcp/:connectionId{.*_dev-assets$}/call-tool/:toolName",Z,async(Q)=>{let Y=Q.get("studioContext"),G=new URL(Q.req.url),J=`${G.protocol}//${G.host}`,K=Q.req.param("toolName");if(!K)return Q.json({error:"Missing tool name"},400);let W=await Q.req.json(),H=await yG8(K,W,Y,J);if(H.isError)return Q.json(H.content,500);return Q.json(H.content)}),$.use("/mcp/dev-assets",Z),$.route("/mcp/dev-assets",gG8);let X=new U1;X.use("*",JW({mountPath:"/api/dev-assets"})),X.route("/",rM0({orgFromPath:!1})),$.route("/api/dev-assets",X)}var cG8=L(()=>{T8();CN1();aM0();hG8()});import{sql as Di6}from"kysely";import{randomUUID as lG8}from"crypto";import{z as wi6}from"zod";async function ji6($){let Z=new Date().toISOString(),X=lG8(),Q=y8.SELF($.organizationId),Y="registry.publish_request.created",G={requestId:$.request.id,requestedId:$.request.requested_id,title:$.request.title,status:$.request.status,createdAt:$.request.created_at,requester:{name:$.request.requester_name,email:$.request.requester_email}};await $.db.insertInto("events").values({id:X,organization_id:$.organizationId,type:"registry.publish_request.created",source:Q,specversion:"1.0",subject:$.request.id,time:Z,datacontenttype:"application/json",dataschema:null,data:JSON.stringify(G),cron:null,status:"pending",attempts:0,last_error:null,next_retry_at:null,created_at:Z,updated_at:Z}).execute();let J=await $.db.selectFrom("event_subscriptions").select(["id"]).where("organization_id","=",$.organizationId).where("enabled","=",1).where("event_type","=","registry.publish_request.created").where((K)=>K.or([K("publisher","is",null),K("publisher","=",Q)])).execute();if(J.length>0)await $.db.insertInto("event_deliveries").values(J.map((K)=>({id:lG8(),event_id:X,subscription_id:K.id,status:"pending",attempts:0,last_error:null,delivered_at:null,next_retry_at:null,created_at:Z}))).execute();try{await Di6`SELECT
|
|
4262
4262
|
pg_notify('studio_events', ${X}),
|