decocms 4.263.3 → 4.263.4
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-C8ZNKM0T.js → AlertCircle-BTYGLFie.js} +1 -1
- package/dist/client/assets/{AreaChart-BYK2gWYF.js → AreaChart-jerPjG-w.js} +1 -1
- package/dist/client/assets/{ArrowLeft-C4S3t4gh.js → ArrowLeft-BajYEy7J.js} +1 -1
- package/dist/client/assets/{ArrowUp-BjteiNgF.js → ArrowUp-fnzebitz.js} +1 -1
- package/dist/client/assets/{Check-7fxTQqwV.js → Check-CJxsk2cd.js} +1 -1
- package/dist/client/assets/{CheckCircle-Ds0VlJAl.js → CheckCircle-D8lsJrHv.js} +1 -1
- package/dist/client/assets/{ChevronDown-DC3VmpPs.js → ChevronDown-Chn5-yQ3.js} +1 -1
- package/dist/client/assets/{ChevronRight-DB1jERJP.js → ChevronRight-BUEJ-jyA.js} +1 -1
- package/dist/client/assets/{ChevronSelectorVertical-B9rG_ZYr.js → ChevronSelectorVertical-DuwT0Cdn.js} +1 -1
- package/dist/client/assets/{ChevronUp-DklUcnpq.js → ChevronUp-Bis3nYDt.js} +1 -1
- package/dist/client/assets/{Copy01-0rsYyxBd.js → Copy01-oY33F6A4.js} +1 -1
- package/dist/client/assets/{CreditCard01-C02kJIQ-.js → CreditCard01-BEFAf8Rs.js} +1 -1
- package/dist/client/assets/{DotsVertical-CtEAbV8O.js → DotsVertical-CmNP1NFD.js} +1 -1
- package/dist/client/assets/{Download01-B_W2m-uX.js → Download01-BOB13r_i.js} +1 -1
- package/dist/client/assets/{Eye-CCl0QwVV.js → Eye-BQM4yrzA.js} +1 -1
- package/dist/client/assets/{FilterLines-v44MczT5.js → FilterLines-CM6IqjC1.js} +1 -1
- package/dist/client/assets/{Globe01-Dr2wIPy6.js → Globe01-BLkvMUGE.js} +1 -1
- package/dist/client/assets/{Globe04-BlbLK8Qh.js → Globe04-CJdUUoxg.js} +1 -1
- package/dist/client/assets/{HardDrive-DKQRwLSP.js → HardDrive-BFDRJjzR.js} +1 -1
- package/dist/client/assets/{Key01-kpUUZaqy.js → Key01-B5VoA08Z.js} +1 -1
- package/dist/client/assets/{LinkExternal01-NyjdMVf7.js → LinkExternal01-bgUoyTwQ.js} +1 -1
- package/dist/client/assets/{LockUnlocked01-DsKz0Xl2.js → LockUnlocked01-o0Eo7MuU.js} +1 -1
- package/dist/client/assets/{LogOut01-Dd8QdhEu.js → LogOut01-CKpl9BLq.js} +1 -1
- package/dist/client/assets/{Monitor01-CCXNZQlH.js → Monitor01-BHWFnGlJ.js} +1 -1
- package/dist/client/assets/{Palette-BffjPXio.js → Palette-DAsj4nYm.js} +1 -1
- package/dist/client/assets/{Play-D8AheaUt.js → Play-Ir6C5jzg.js} +1 -1
- package/dist/client/assets/{Plus-DfL6u6I_.js → Plus-CySlFZzQ.js} +1 -1
- package/dist/client/assets/{SearchLg-D1p_gJI8.js → SearchLg-BevUi4lQ.js} +1 -1
- package/dist/client/assets/{SearchMd-DVItXoZb.js → SearchMd-CUh5hEpd.js} +1 -1
- package/dist/client/assets/{Settings02-Bvo1tVwA.js → Settings02-DxEKOFeo.js} +1 -1
- package/dist/client/assets/{Share07-3Y0P_W3_.js → Share07-BAxn1THr.js} +1 -1
- package/dist/client/assets/{Shield01-C4putjAN.js → Shield01-Br0XuRfn.js} +1 -1
- package/dist/client/assets/{Stars01-ClK-g0zk.js → Stars01-DGSNhagZ.js} +1 -1
- package/dist/client/assets/{Stars02-DTCJxH0_.js → Stars02-DNyS1gcT.js} +1 -1
- package/dist/client/assets/{Sun-DBnfC6xb.js → Sun-CSIUl7xv.js} +1 -1
- package/dist/client/assets/{SwitchHorizontal01-CQZ9t4Uh.js → SwitchHorizontal01-C8-bgNQy.js} +1 -1
- package/dist/client/assets/{Tool01-K1KtrUp3.js → Tool01-BjI8gxt5.js} +1 -1
- package/dist/client/assets/{Tool02-CaMOVLUq.js → Tool02-Ct3UvI4j.js} +1 -1
- package/dist/client/assets/{Trash01-Hh3vb-pV.js → Trash01-lppJr9kF.js} +1 -1
- package/dist/client/assets/{TrendUp01-Cpu4_O9X.js → TrendUp01-vMMFYqH0.js} +1 -1
- package/dist/client/assets/{Upload01-PO1Z12J3.js → Upload01-CePHCnzY.js} +1 -1
- package/dist/client/assets/{User01-ClQH_5NK.js → User01-BqNQxSWl.js} +1 -1
- package/dist/client/assets/{UserSquare-DtGKXF0N.js → UserSquare-kfbSM3R7.js} +1 -1
- package/dist/client/assets/{Users01-Bvqsn2Z0.js → Users01-GyxqhIQS.js} +1 -1
- package/dist/client/assets/{Users03-C1f0X_bD.js → Users03-C8z46zgV.js} +1 -1
- package/dist/client/assets/{XCircle-qXvFFF3a.js → XCircle-BMgdweBK.js} +1 -1
- package/dist/client/assets/{XClose-F4_KA-E6.js → XClose-DnnJN04M.js} +1 -1
- package/dist/client/assets/{YAxis-Bwjlsmrn.js → YAxis-CFtxNrGp.js} +1 -1
- package/dist/client/assets/{Zap-DK06ViId.js → Zap-f9eGztfW.js} +1 -1
- package/dist/client/assets/{ZapSquare-B8eYKtXE.js → ZapSquare-Z5gRSAcI.js} +1 -1
- package/dist/client/assets/{access-gate-C5Y4THSz.js → access-gate-CESQMRUh.js} +1 -1
- package/dist/client/assets/{agent-icon-BRsJ64Gp.js → agent-icon-BpKbS82g.js} +1 -1
- package/dist/client/assets/{agents-list-Cb5QyV0J.js → agents-list-DisSvTPm.js} +1 -1
- package/dist/client/assets/{ai-providers-F9sUAX3N.js → ai-providers-DvMfqbG9.js} +1 -1
- package/dist/client/assets/{alert-DjabJJJC.js → alert-Cjb2EB7F.js} +1 -1
- package/dist/client/assets/{alert-dialog-C6uvTNV5.js → alert-dialog-_waxzl9D.js} +1 -1
- package/dist/client/assets/{api-keys-DmdCnjmd.js → api-keys-DMd6myi1.js} +1 -1
- package/dist/client/assets/{app-editor-CCEPa5_q.js → app-editor-BITYEeNm.js} +1 -1
- package/dist/client/assets/{auth-BjDvWFq6.js → auth-B5QCuHwo.js} +1 -1
- package/dist/client/assets/{auth-catchall-CpusPL_F.js → auth-catchall-Db5A8udm.js} +1 -1
- package/dist/client/assets/{auth-entry-DhkykqHc.js → auth-entry-orPtywn8.js} +1 -1
- package/dist/client/assets/{auth-split-layout-BvVQruwK.js → auth-split-layout-BSXvcLZl.js} +1 -1
- package/dist/client/assets/{authenticate-and-persist-oauth-CfcfVqDI.js → authenticate-and-persist-oauth-CxmxlpAo.js} +1 -1
- package/dist/client/assets/{automation-list-row-BO2X7Ov7.js → automation-list-row-kxVusV6D.js} +1 -1
- package/dist/client/assets/{automation-runs-BQpimZeU.js → automation-runs-aScQH7yb.js} +1 -1
- package/dist/client/assets/{automations-CYoHIEOo.js → automations-DFz--AKt.js} +1 -1
- package/dist/client/assets/{avatar-CiQyTRfd.js → avatar-BYLlYMrS.js} +1 -1
- package/dist/client/assets/{badge-Dp3mR27V.js → badge-DYcNbwP1.js} +1 -1
- package/dist/client/assets/{block-document-By6966PS.js → block-document-8DQ-Aj-N.js} +1 -1
- package/dist/client/assets/{buckets-BtAjuTXp.js → buckets-CsXTuRWK.js} +1 -1
- package/dist/client/assets/{bulk-category-panel-Crj0FXFd.js → bulk-category-panel-0Znxf5_5.js} +1 -1
- package/dist/client/assets/{capability-load-error-DcN5DOFH.js → capability-load-error-CDe54R-X.js} +1 -1
- package/dist/client/assets/{cards-BKUYovMU.js → cards-DOZsSvdL.js} +1 -1
- package/dist/client/assets/{category-editor-BrklTiAF.js → category-editor-CxuIuX9c.js} +1 -1
- package/dist/client/assets/{chart-56471C1Y.js → chart-CoRPyY38.js} +1 -1
- package/dist/client/assets/{chat-context-_CA_JeeY.js → chat-context-Cdt5JBGq.js} +1 -1
- package/dist/client/assets/{checkbox-C1bUrPvW.js → checkbox-Z9SepXvp.js} +1 -1
- package/dist/client/assets/{choose-editor-nese6qE5.js → choose-editor-CHzYYlGa.js} +1 -1
- package/dist/client/assets/{cli-auth-success-CCmWyNoP.js → cli-auth-success-DJY05d2g.js} +1 -1
- package/dist/client/assets/{collection-detail-B90a00NV.js → collection-detail-BqqcCOIU.js} +1 -1
- package/dist/client/assets/{collection-display-button-FKEWPN7M.js → collection-display-button-BEoC7J9b.js} +1 -1
- package/dist/client/assets/{collection-search-Bd6xu3h9.js → collection-search-BQ3PDw8g.js} +1 -1
- package/dist/client/assets/{collection-table-wrapper-15zlEhjP.js → collection-table-wrapper-CTaHHWBu.js} +1 -1
- package/dist/client/assets/{collection-tabs-3ta98PDW.js → collection-tabs-BHE3DhBM.js} +1 -1
- package/dist/client/assets/{command-pFth6-af.js → command-Cj_b6QuL.js} +1 -1
- package/dist/client/assets/{commerce-onboarding-BQlfD3LU.js → commerce-onboarding-DwEGH-Pm.js} +1 -1
- package/dist/client/assets/{connect-DMudoU2M.js → connect-DoOLtkHq.js} +1 -1
- package/dist/client/assets/{connection-QHosBlKh.js → connection-Bxg7evEC.js} +1 -1
- package/dist/client/assets/{connection-card-DXUN0HbG.js → connection-card-Bwep8BgY.js} +1 -1
- package/dist/client/assets/{connection-detail-BQZMFHWj.js → connection-detail-vMhRTHvc.js} +1 -1
- package/dist/client/assets/{connection-form-helpers-Dw_uRR_o.js → connection-form-helpers-ChTIA9-X.js} +1 -1
- package/dist/client/assets/{connections-Cdozilw9.js → connections-DABID4YF.js} +1 -1
- package/dist/client/assets/{decopilot-sse-pool-B2gldwFf.js → decopilot-sse-pool-CMc1xBx0.js} +1 -1
- package/dist/client/assets/{dialog-CLVbCjMu.js → dialog-K8-1cCDF.js} +1 -1
- package/dist/client/assets/{domain-settings-DoR6E0N1.js → domain-settings-CTNhof1S.js} +1 -1
- package/dist/client/assets/{drawer-Ckbm2CWJ.js → drawer-ClBcSM08.js} +1 -1
- package/dist/client/assets/{dropdown-menu-D2aUCLYk.js → dropdown-menu-C-7wwHBe.js} +1 -1
- package/dist/client/assets/{empty-state-BF41trPY.js → empty-state-CSKHHWG6.js} +1 -1
- package/dist/client/assets/{extract-connection-data-A9qAyYQA.js → extract-connection-data-C1XM4jmB.js} +1 -1
- package/dist/client/assets/{file-explorer-ws1ucCZl.js → file-explorer-BCiGm1Z3.js} +1 -1
- package/dist/client/assets/{file-type-icon-wuRfMh_5.js → file-type-icon-BrVi1nrA.js} +1 -1
- package/dist/client/assets/{form-BI3-Eb2L.js → form-Cv16yv_N.js} +1 -1
- package/dist/client/assets/{general-Dkq5x-QZ.js → general-DD84yKYj.js} +1 -1
- package/dist/client/assets/{github-repo-picker-BMkV5srU.js → github-repo-picker-DEedlZZB.js} +1 -1
- package/dist/client/assets/{hooks-DlPXzzl8.js → hooks-BsA5QClW.js} +1 -1
- package/dist/client/assets/{index-DS_PtpmP.js → index-BAzBxxL9.js} +3 -3
- package/dist/client/assets/{index-DAPcjavx.js → index-BL55GcNa.js} +1 -1
- package/dist/client/assets/{index-CV8Bfh5R.js → index-Bsu_VttZ.js} +6 -6
- package/dist/client/assets/{index-B1veCTx1.js → index-CiZciEsK.js} +1 -1
- package/dist/client/assets/{index-B_Ad5QPQ.js → index-D00QDYEH.js} +1 -1
- package/dist/client/assets/{index-DJM5ojUf.js → index-D6BHz3vf.js} +1 -1
- package/dist/client/assets/{index-Dh9w3kQB.js → index-DJjhCQSJ.js} +1 -1
- package/dist/client/assets/{index-C2XLHMiw.js → index-DgS45S3b.js} +1 -1
- package/dist/client/assets/{index-Dl5uUBVr.js → index-DwV5rndB.js} +1 -1
- package/dist/client/assets/{index-Cssg9t23.js → index-Rsz-z5IL.js} +1 -1
- package/dist/client/assets/{index-redirect-DO74fkKf.js → index-redirect-CbiwayST.js} +1 -1
- package/dist/client/assets/{infra-billing-DLGhuOLw.js → infra-billing-DTpLPCfp.js} +1 -1
- package/dist/client/assets/{input-Dsyfk4jo.js → input-CvrE4LEJ.js} +1 -1
- package/dist/client/assets/{integration-icon-DQzHhbi_.js → integration-icon-BnqPyHmt.js} +1 -1
- package/dist/client/assets/{invite-member-dialog-6MS0bODt.js → invite-member-dialog-CzYyGuZd.js} +1 -1
- package/dist/client/assets/{label-AZH9h-dP.js → label-CXiyMNnc.js} +1 -1
- package/dist/client/assets/{layout-jQzTnGd2.js → layout-CsrmRfJK.js} +1 -1
- package/dist/client/assets/{login-B5ShBVQi.js → login-BM_k5b-A.js} +1 -1
- package/dist/client/assets/{mcp-oauth-CV7iuGWl.js → mcp-oauth-BY7cxtZI.js} +1 -1
- package/dist/client/assets/{members-DyI3pT9y.js → members-Bee-glAy.js} +1 -1
- package/dist/client/assets/{monaco-editor-CEXQCwfP.js → monaco-editor-ywPI1t16.js} +1 -1
- package/dist/client/assets/{monitoring-stats-row-C3Te4mdv.js → monitoring-stats-row-q0lDnj97.js} +1 -1
- package/dist/client/assets/{multi-select-DPBlx32W.js → multi-select-6289Ji5Q.js} +1 -1
- package/dist/client/assets/{oauth-callback-CrdVqleB.js → oauth-callback-BI2EXPp9.js} +1 -1
- package/dist/client/assets/{oauth-callback-ai-provider-KyQ1PZrQ.js → oauth-callback-ai-provider-CPN_n1pK.js} +1 -1
- package/dist/client/assets/{onboarding-BslW1pcP.js → onboarding-B1OeoqRD.js} +1 -1
- package/dist/client/assets/{org-layout-CO6jG1v2.js → org-layout-CJfUhWa8.js} +1 -1
- package/dist/client/assets/{organization-choice-CoM8gu7M.js → organization-choice-BI4eKBGM.js} +1 -1
- package/dist/client/assets/{orgs-CwehcPGm.js → orgs-DA0vFIQ1.js} +1 -1
- package/dist/client/assets/{page-seo-form-9OJihF4x.js → page-seo-form-jRWN82Bz.js} +1 -1
- package/dist/client/assets/{popover-BRZicoZW.js → popover-wGCNVbgm.js} +1 -1
- package/dist/client/assets/{post-calendar-hEguUc5o.js → post-calendar-pijaG7Tm.js} +1 -1
- package/dist/client/assets/{post-editor-pLSbc6mp.js → post-editor-B-3AULjS.js} +1 -1
- package/dist/client/assets/{primitives-CtBKfa_X.js → primitives-Do4YdhnP.js} +1 -1
- package/dist/client/assets/{profile-n9hx6gY-.js → profile-GePno2yS.js} +1 -1
- package/dist/client/assets/{project-app-view-DoK4zGoF.js → project-app-view-CYxJURVY.js} +1 -1
- package/dist/client/assets/record-editor-CnkB9zNF.js +1 -0
- package/dist/client/assets/{redirect-editor-feQIS-ih.js → redirect-editor-DJr4emyY.js} +1 -1
- package/dist/client/assets/registry-Br8pQVRC.js +2 -0
- package/dist/client/assets/{registry-layout-DaMCQA8V.js → registry-layout-BB4KsmkV.js} +1 -1
- package/dist/client/assets/{reports-DGCK2_12.js → reports-DzSMI3MZ.js} +1 -1
- package/dist/client/assets/{require-capability-BuB0VaIt.js → require-capability-Cr0gRW-f.js} +1 -1
- package/dist/client/assets/{required-auth-layout-C8K6T2Dl.js → required-auth-layout-ykPgRGg9.js} +1 -1
- package/dist/client/assets/{reset-password-Bv3lK8g1.js → reset-password-CWtcCFTs.js} +1 -1
- package/dist/client/assets/{roles-04svMQ-w.js → roles-Cy9PVzUY.js} +1 -1
- package/dist/client/assets/{search-input-BMFjaZW8.js → search-input-DzsO4XKy.js} +1 -1
- package/dist/client/assets/{secrets-CAom0Pas.js → secrets-DlU_ZsyZ.js} +1 -1
- package/dist/client/assets/{sections-editor-DYATNkxM.js → sections-editor-Cj6XZcig.js} +1 -1
- package/dist/client/assets/{select-v0HyS5wV.js → select-B2e4NALY.js} +1 -1
- package/dist/client/assets/{select-model-DbrnwWTj.js → select-model-BsIRDtab.js} +1 -1
- package/dist/client/assets/{self-tool-result-r1jsmu7J.js → self-tool-result-BBoUTXvN.js} +1 -1
- package/dist/client/assets/{seo-editor-BqjKMW9L.js → seo-editor-NyY02_7W.js} +1 -1
- package/dist/client/assets/{settings-layout-D3s-EDDq.js → settings-layout-DdXTfyPZ.js} +1 -1
- package/dist/client/assets/{shell-controls-BH090Ymi.js → shell-controls-DQlWaCbv.js} +1 -1
- package/dist/client/assets/{shell-layout-Ca7ET_6R.js → shell-layout-BH-NXnM4.js} +1 -1
- package/dist/client/assets/{spinner-Dzoa8exR.js → spinner-Bb-1R-dk.js} +1 -1
- package/dist/client/assets/{sprints-BDnw_QJc.js → sprints-C6bMPt1I.js} +1 -1
- package/dist/client/assets/{sso-Br3gVbj4.js → sso-Dvg67Md-.js} +1 -1
- package/dist/client/assets/{store-TksVzK51.js → store-DpbTTyvZ.js} +1 -1
- package/dist/client/assets/store-registry-BRvvONYG.js +2 -0
- package/dist/client/assets/{switch-CPOt6c8D.js → switch-BvYQVlYb.js} +1 -1
- package/dist/client/assets/{synced-repos-DMsM8gK7.js → synced-repos-4t6ZPuYG.js} +1 -1
- package/dist/client/assets/{tab-id-BOj9dZWT.js → tab-id-DMd10Dlk.js} +1 -1
- package/dist/client/assets/{table-yXN-B6JM.js → table-rERv-Q2u.js} +1 -1
- package/dist/client/assets/{tabs-DMoGi1te.js → tabs-C3QvtS8u.js} +1 -1
- package/dist/client/assets/{task-key-C2W_oYAM.js → task-key-sEZ4dWP_.js} +1 -1
- package/dist/client/assets/{tasks-BrWj9zEH.js → tasks-Rs06jPVw.js} +1 -1
- package/dist/client/assets/{textarea-CegtzxU_.js → textarea-DZcoj6k2.js} +1 -1
- package/dist/client/assets/{toggle-group-5omFh11U.js → toggle-group-CT-LedBS.js} +1 -1
- package/dist/client/assets/{toolbar-DORhO8If.js → toolbar-DDbKD-Ay.js} +1 -1
- package/dist/client/assets/{track-B8qKGWO9.js → track-BoWa7pFa.js} +1 -1
- package/dist/client/assets/{types-CE4AuZSY.js → types-CHsUC77L.js} +1 -1
- package/dist/client/assets/{use-ai-providers-DAYMp9NI.js → use-ai-providers-vhWA7gSP.js} +1 -1
- package/dist/client/assets/{use-api-keys-DnFSxnvy.js → use-api-keys-CwfibyAQ.js} +1 -1
- package/dist/client/assets/{use-automations-DWv6iLeU.js → use-automations-CqECqdXg.js} +1 -1
- package/dist/client/assets/{use-autosave-iV8J_MuB.js → use-autosave-CTd3ujOq.js} +1 -1
- package/dist/client/assets/{use-clock-tick-BuVoJTdT.js → use-clock-tick-c_pjCx_y.js} +1 -1
- package/dist/client/assets/{use-commerce-diagnostic-KLE4UXiE.js → use-commerce-diagnostic-BpYk1Ih5.js} +1 -1
- package/dist/client/assets/{use-connection-BJir_wda.js → use-connection-Brp0ROSB.js} +1 -1
- package/dist/client/assets/{use-copy-Ddcpb0Jm.js → use-copy-JYzS-t0x.js} +1 -1
- package/dist/client/assets/{use-create-virtual-mcp-D0oAOlYC.js → use-create-virtual-mcp-T4W7BRl2.js} +1 -1
- package/dist/client/assets/{use-debounced-autosave-DYJOZB4t.js → use-debounced-autosave-Lcvsez5G.js} +1 -1
- package/dist/client/assets/{use-debounced-value-DXPF8RW0.js → use-debounced-value-CHx-_V6p.js} +1 -1
- package/dist/client/assets/{use-decopilot-events-CUYP3xa6.js → use-decopilot-events-EyNfu7Kq.js} +1 -1
- package/dist/client/assets/{use-delete-connection-CaYWV75o.js → use-delete-connection-9tv1jgN0.js} +1 -1
- package/dist/client/assets/{use-deployment-admin-DiSPyrP4.js → use-deployment-admin-BH2VfdtE.js} +1 -1
- package/dist/client/assets/{use-file-configs-BZNx7FRl.js → use-file-configs-EX9fsqJc.js} +1 -1
- package/dist/client/assets/{use-infinite-scroll-DGa9MpTS.js → use-infinite-scroll-BwpbIlWm.js} +1 -1
- package/dist/client/assets/{use-join-requests-_j9mGSpf.js → use-join-requests-D3OvgAR4.js} +1 -1
- package/dist/client/assets/{use-mcp-client-Zz1TwEAh.js → use-mcp-client-DP99b3Me.js} +1 -1
- package/dist/client/assets/{use-mcp-tools-CXwtpaPy.js → use-mcp-tools-CjeO7xTP.js} +1 -1
- package/dist/client/assets/{use-members--D0gY-Nz.js → use-members-Fg8xu9zL.js} +1 -1
- package/dist/client/assets/{use-navigate-to-agent-BTDz1KOs.js → use-navigate-to-agent-B3WHCfCa.js} +1 -1
- package/dist/client/assets/{use-org-auth-client-C8dt2CEh.js → use-org-auth-client-CbgB99m_.js} +1 -1
- package/dist/client/assets/{use-org-repo-syncs-BMPkdDGr.js → use-org-repo-syncs-mnINiKx8.js} +1 -1
- package/dist/client/assets/{use-org-sso-DAANUxzR.js → use-org-sso-JpsBVP_t.js} +1 -1
- package/dist/client/assets/{use-organization-roles-C4JrUmJs.js → use-organization-roles-SDielVSw.js} +1 -1
- package/dist/client/assets/{use-organization-settings-BZyz9Mop.js → use-organization-settings-CjuBssHq.js} +1 -1
- package/dist/client/assets/{use-registry-connections-DrNpncD0.js → use-registry-connections-DYlN_mpo.js} +1 -1
- package/dist/client/assets/{use-secrets-XCXR_vh8.js → use-secrets-BFX9kjjo.js} +1 -1
- package/dist/client/assets/{use-section-preview-base-BuCg0_G0.js → use-section-preview-base-CMJMRXCJ.js} +1 -1
- package/dist/client/assets/{use-status-sounds-CjE1Nwyt.js → use-status-sounds-YIMtdt9I.js} +1 -1
- package/dist/client/assets/{use-tags-CtHBcu1c.js → use-tags-CGvsLsNg.js} +1 -1
- package/dist/client/assets/{use-view-mode-D2QnCor3.js → use-view-mode-DcnCbu_t.js} +1 -1
- package/dist/client/assets/{use-virtual-mcp-BHOLpD1P.js → use-virtual-mcp-Dg7xWNG-.js} +1 -1
- package/dist/client/assets/useInfiniteQuery-oSGVjzuL.js +1 -0
- package/dist/client/assets/useSuspenseInfiniteQuery-Cu_rUEsy.js +1 -0
- package/dist/client/assets/{users-BdTetp54.js → users-H55pONgO.js} +1 -1
- package/dist/client/assets/{variant-calendar-OvwXqvaE.js → variant-calendar-B3KUJEEH.js} +1 -1
- package/dist/client/assets/{view-mode-toggle-DYMYSHNc.js → view-mode-toggle-CVgUIU1G.js} +1 -1
- package/dist/client/index.html +1 -1
- package/dist/server/cli.js +1 -1
- package/dist/server/server.js +1 -1
- package/package.json +1 -1
- package/dist/client/assets/record-editor-BiTWcS2C.js +0 -1
- package/dist/client/assets/registry-zK072Ecp.js +0 -2
- package/dist/client/assets/store-registry-CH-meU9J.js +0 -2
- package/dist/client/assets/useInfiniteQuery-DrLMltTg.js +0 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-bgdhkmFx.js +0 -1
package/dist/server/server.js
CHANGED
|
@@ -2861,7 +2861,7 @@ Respond with the structured verdict and a short reason.`,xh$;var gh$=D(()=>{B4()
|
|
|
2861
2861
|
${G.join(`
|
|
2862
2862
|
`)}`:Y}function WK6($){let Z=new Set;for(let X of $)for(let Q of X.split(`
|
|
2863
2863
|
`)){let Y=Q.trim();if(/^Co-authored-by:\s/i.test(Y))Z.add(Y)}return[...Z]}var Au$=200,sW6=12,$K6,XK6=300,AZ1=3;var TZ1=D(()=>{m_();CA0();$K6={aheadBy:0,behindBy:0,files:[]}});function HK6($){if(!$||$.includes(".."))return!1;return KK6.test($)}function Ru$($){let Z=typeof $.__resolveType==="string"?$.__resolveType:null;if(!Z||!HK6(Z))return null;let{__resolveType:X,...Q}=$;return{resolveType:Z,payload:Q}}function Iu$($,Z){return`${$.replace(/\/+$/,"")}/deco/invoke/${Z}`}var KK6;var qu$=D(()=>{KK6=/^[\w./@-]+$/});function RZ1($){let Z;try{Z=new URL($)}catch{return null}if(!Z.hostname.endsWith(".localhost"))return null;let X=Z.host;return Z.hostname="127.0.0.1",{url:Z.toString(),hostHeader:X}}function da($,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 Mu$($,Z,X,Q){if(!Q.connectionId)throw new p_("Push requires a connected GitHub account. Connect mcp-github for this project and restart the sandbox.");let Y=$.organization?.id;if(!Y)throw new p_(Y9);await XB({ctx:$,connectionId:Q.connectionId,organizationId:Y,forceRefresh:!0,onLegacyMintError:(F)=>{let N=F instanceof Error?F.message:Y9;throw new p_(N)}});let{cloneUrl:G,gitUserName:J,gitUserEmail:W}=await QB(Q.connectionId,Q.owner,Q.name,$.db,$.vault).catch((F)=>{let{code:N,message:U}=U6$(F instanceof Error?F.message:String(F));throw N?new p_(U):F}),K=Bu($),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:W}},...K?{operator:K}:{}})});if(!H.ok){let F=await jB(H,FK6).catch(()=>H.statusText);throw Error(`Failed to refresh sandbox git credentials (${H.status}): ${F}`)}}var FK6=10485760,p_;var IZ1=D(()=>{oG();jA0();Un();vm0();Jy();p_=class p_ extends Error{constructor($){super($);this.name="GitPushAuthError"}}});function UK6($){let Z=$.startsWith("thread:")?$.slice(7):$;if(!Z||Z.length>255||Z.includes("..")||Z.startsWith("/")||Z.endsWith("/")||Z.endsWith(".lock")||!NK6.test(Z))throw Error(`Invalid branch name: ${$}`)}function n_($){return AbortSignal.any([$.req.raw.signal,AbortSignal.timeout(BK6)])}async function LK6($,Z){let X=$.var.studioContext,Q=b3(Z.branch),Y=$.req.query("thread")??Q,G=Y&&Y===Q?Z.branchThread:Y?await X.storage.threads.get(Y).catch(()=>null):null,J=G?.virtual_mcp_id===Z.virtualMcpId?G:null,W=aS(J?.metadata?.runtime);if(W)return W;let K=PB0(Z.virtualMcpMetadata),H=K==="cms"?await XZ1(X,{claimName:Z.claimName,userId:Z.sandboxUserId,branch:Z.branch,virtualMcpMetadata:Z.virtualMcpMetadata}):"alive",F=K==="cms"&&H!=="alive"?"cms":"sandbox",N=!!J&&(H==="gone"||H==="alive"&&K==="cms");if(N&&J)On(X,J.id,F);if(K==="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 wK6($){let Z=$.get("vmClaim");if(Z.runner)return Z.runner;try{let{provider:X}=await gZ($.var.studioContext,{userId:Z.userId,branch:Z.branch,virtualMcpMetadata:Z.virtualMcpMetadata});return X}catch{return null}}function t_($){let{runner:Z}=$.get("vmClaim");if(!Z)return $.json({error:"No sandbox runner configured"},503);return Z}async function zu($){let{virtualMcpMetadata:Z,connectionIds:X}=$.get("vmClaim"),Q=$.var.studioContext,Y=da(Z,X);if(!Y)throw new u4(404,"AUTH","repo","Project has no GitHub repository");let G=t(Q);return PA0(Q,G.id,Y)}function qZ1($,Z){if(Z instanceof zA0)return $.json({error:Z.message},429,{...z5,...Z.retryAfterMs===null?{}:{"Retry-After":String(Math.ceil(Z.retryAfterMs/1000))}});if(Z instanceof u4){let Q=Z.status===404?404:Z.status===409||Z.status===422?409:502;return $.json({error:Z.message},Q,z5)}let X=Z instanceof Error?Z.message:String(Z);return $.json({error:X},502,z5)}async function Su$($,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 Cu$($){try{let Z=await zu($),X=await _A0(Z,$.get("vmClaim").branch);return $.json(X,200,z5)}catch(Z){return qZ1($,Z)}}function ma($,Z){let Q=(bA0.get($)??Promise.resolve()).catch(()=>{}).then(Z),Y=Q.catch(()=>{});return bA0.set($,Y),Y.finally(()=>{if(bA0.get($)===Y)bA0.delete($)}),Q}async function pZ($,Z,X){if(!X?.runner&&$.get("vmClaim").runtime==="cms")return $.json({error:"sandbox not found: this session is sandbox-less"},404,z5);let Q=X?.runner??t_($);if(Q instanceof Response)return Q;let{claimName:Y,userId:G,projectRef:J}=$.get("vmClaim"),W=X?.method??"POST",K=null,H=new Headers;if(X?.jsonBody!==void 0)K=X.jsonBody,H.set("content-type","application/json");else if(X?.forwardJsonBody)K=await $.req.text(),H.set("content-type","application/json");let F=X?.signal,N={method:W,headers:H,body:K,...F?{signal:F}:{}},U=async()=>{let O=await Q.proxyDaemonRequest(Y,Z,N);if(X?.map404to410&&O.status===404){try{await O.body?.cancel()}catch{}if(await Q.adoptLiveClaim?.({userId:G,projectRef:J},Y))O=await Q.proxyDaemonRequest(Y,Z,N);if(O.status===404){try{await O.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",...z5}})}}let B=await O.text(),L=X?.redactRepoDirUnlessDesktop&&Q.kind!=="user-desktop"?EK6(B):B,w=O.headers.get("content-type")??"application/json";return new Response(L,{status:O.status,headers:{"content-type":w,...z5}})};try{if(F){let O=U();return O.catch(()=>{}),await Promise.race([O,new Promise((L,w)=>{if(F.aborted)return w(F.reason);F.addEventListener("abort",()=>w(F.reason),{once:!0})})])}return await U()}catch(O){let B=O instanceof Error?O.message:String(O);return $.json({error:`Daemon unreachable: ${B}`},502)}}function EK6($){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 xA0($,Z,X,Q="GET",Y){let G=await $.proxyDaemonRequest(Z,X,{method:Q,headers:new Headers,body:null});if(G.status===404&&Y){try{await G.body?.cancel()}catch{}if(await $.adoptLiveClaim?.(Y,Z))G=await $.proxyDaemonRequest(Z,X,{method:Q,headers:new Headers,body:null})}if(G.status===404){try{await G.body?.cancel()}catch{}throw Error("SANDBOX_GONE")}let J=await G.text();if(!G.ok){let W=`Daemon error (${G.status})`;try{W=JSON.parse(J).error??W}catch{}throw Error(W)}return JSON.parse(J)}function jK6($){return _u$.includes($)}var NK6,ku$=524288,OK6=65536,BK6=1e4,Vu$=2000,DK6,bA0,z5,_u$,vu$=()=>{let $=new F1;$.use("/:virtualMcpId/:branch/*",DK6),$.post("/:virtualMcpId/:branch/write",(X)=>pZ(X,"/_sandbox/write",{forwardJsonBody:!0,signal:n_(X)})),$.post("/:virtualMcpId/:branch/unlink",(X)=>pZ(X,"/_sandbox/unlink",{forwardJsonBody:!0,signal:n_(X)})),$.post("/:virtualMcpId/:branch/mkdir",(X)=>pZ(X,"/_sandbox/mkdir",{forwardJsonBody:!0,signal:n_(X)})),$.post("/:virtualMcpId/:branch/rename",(X)=>pZ(X,"/_sandbox/rename",{forwardJsonBody:!0,signal:n_(X)})),$.post("/:virtualMcpId/:branch/read",(X)=>pZ(X,"/_sandbox/read",{forwardJsonBody:!0,signal:n_(X)})),$.post("/:virtualMcpId/:branch/glob",(X)=>pZ(X,"/_sandbox/glob",{forwardJsonBody:!0,signal:n_(X)})),$.post("/:virtualMcpId/:branch/grep",(X)=>pZ(X,"/_sandbox/grep",{forwardJsonBody:!0,signal:n_(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 pZ(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 pZ(X,`/_sandbox/exec/${encodeURIComponent(Q)}/kill`)}),$.get("/:virtualMcpId/:branch/config",(X)=>pZ(X,"/_sandbox/config",{method:"GET",map404to410:!0,redactRepoDirUnlessDesktop:!0})),$.put("/:virtualMcpId/:branch/config",(X)=>pZ(X,"/_sandbox/config",{method:"PUT",forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/setup/:step",async(X)=>{let Q=X.req.param("step");if(!Q||!jK6(Q))return X.json({error:`step must be one of: ${_u$.join(", ")}`},400);let Y=X.get("vmClaim"),G=await XZ1(X.var.studioContext,{claimName:Y.claimName,userId:Y.userId,branch:Y.branch,virtualMcpMetadata:Y.virtualMcpMetadata})==="gone"?null:await wK6(X);if(!G)return X.json({error:"sandbox not found: nothing is running at this ref"},404,z5);if(Q==="start"){let J=t(X.var.studioContext),W=Ry(Y.virtualMcpMetadata);try{await wB0({ctx:X.var.studioContext,runner:G,handle:Y.claimName,orgId:J.id,userId:Y.callerUserId,entries:W})}catch(K){let H=K instanceof Error?K.message:String(K);return X.json({error:`Failed to push env to daemon: ${H}`},502)}}return pZ(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 kN(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 Sh$(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 Cu$(X);return Z(X)});let Z=(X)=>pZ(X,"/_sandbox/git/status",{method:"GET",map404to410:!0,signal:AbortSignal.any([X.req.raw.signal,AbortSignal.timeout(Vu$)])});return $.post("/:virtualMcpId/:branch/git/status",(X)=>{if(X.get("vmClaim").runtime==="cms")return Cu$(X);return pZ(X,"/_sandbox/git/status",{map404to410:!0,signal:AbortSignal.any([X.req.raw.signal,AbortSignal.timeout(Vu$)])})}),$.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 zu(X),J=await vA0(G,Q.branch,Y.base);return X.json(J,200,z5)}catch(Y){return qZ1(X,Y)}return pZ(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,z5);let Q=t_(X);if(Q instanceof Response)return Q;let{claimName:Y,virtualMcpMetadata:G,connectionIds:J}=X.get("vmClaim"),W=X.var.studioContext;return ma(Y,async()=>{try{await QZ1(W,Q,Y);let K=da(G,J);if(K)await Mu$(W,Q,Y,K)}catch(K){if(K instanceof p_)return X.json({error:K.message},403,z5);let H=K instanceof Error?K.message:String(K);return X.json({error:H},502,z5)}return pZ(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 ma(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,z5);try{let J=await zu(X);return await Tu$(J,Q.branch,G),X.json({ok:!0},200,z5)}catch(J){let W=J instanceof u4&&J.status===409?409:502,K=J instanceof Error?J.message:String(J);return X.json({error:K},W,z5)}});return ma(Q.claimName,()=>pZ(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 ma(Q.claimName,async()=>{try{let W=await X.req.json().catch(()=>({})),K=await zu(X),H=W.base??await K.getDefaultBranch();return await fA0(K,Q.branch,H),X.json({ok:!0},200,z5)}catch(W){return qZ1(X,W)}});let Y=t_(X);if(Y instanceof Response)return Y;let{claimName:G}=X.get("vmClaim"),J=X.var.studioContext;return ma(G,async()=>{try{await QZ1(J,Y,G)}catch(W){let K=W instanceof Error?W.message:String(W);return X.json({error:K},502,z5)}return pZ(X,"/_sandbox/git/rebase",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/suggest-commit",V9({maxSize:ku$,onError:(X)=>X.json({error:"Payload too large"},413,z5)}),async(X)=>{let Q=X.get("vmClaim"),Y=null;if(Q.runtime!=="cms"){let H=t_(X);if(H instanceof Response)return H;Y=H}let{claimName:G,userId:J,projectRef:W}=Q,K=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,[O,B]=JZ1(F)&&U?[F,N]:Y?await Promise.all([xA0(Y,G,"/_sandbox/git/status","GET",{userId:J,projectRef:W}),xA0(Y,G,"/_sandbox/git/diff","GET",{userId:J,projectRef:W})]):await(async()=>{let w=await zu(X);return Promise.all([_A0(w,Q.branch),vA0(w,Q.branch)])})(),L=await bh$(K,O,B);return X.json(L,200,z5)}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,z5);return X.json({error:F},502,z5)}}),$.post("/:virtualMcpId/:branch/git/judge-review",V9({maxSize:ku$,onError:(X)=>X.json({error:"Payload too large"},413,z5)}),async(X)=>{let Q=X.get("vmClaim"),Y=null;if(Q.runtime!=="cms"){let H=t_(X);if(H instanceof Response)return H;Y=H}let{claimName:G,userId:J,projectRef:W}=Q,K=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,[O,B]=JZ1(F)&&U?[F,N]:Y?await Promise.all([xA0(Y,G,"/_sandbox/git/status","GET",{userId:J,projectRef:W}),xA0(Y,G,"/_sandbox/git/diff","GET",{userId:J,projectRef:W})]):await(async()=>{let w=await zu(X);return Promise.all([_A0(w,Q.branch),vA0(w,Q.branch)])})(),L=await yh$(K,O,B,typeof H.language==="string"?H.language:void 0);return X.json(L,200,z5)}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,z5);return X.json({error:F},502,z5)}}),$.get("/:virtualMcpId/:branch/preview-fetch",async(X)=>{let Q=t_(X);if(Q instanceof Response)return Q;let{claimName:Y}=X.get("vmClaim"),G=X.req.query("path");if(!G||!G.startsWith("/")||G.startsWith("//")||G.includes("..")||G.includes("\\"))return X.json({error:"Path not allowed"},403);let J;try{J=await Q.getPreviewUrl(Y)}catch{return X.json({error:"Preview not available"},502)}if(!J)return X.json({error:"Preview not available"},502);let W=J.replace(/\/+$/,""),K=RZ1(`${W}${G}`);return Su$(X,K?.url??`${W}${G}`,{...K?{headers:{host:K.hostHeader}}:{}})}),$.post("/:virtualMcpId/:branch/preview-invoke",V9({maxSize:OK6,onError:(X)=>X.json({error:"Payload too large"},413)}),async(X)=>{let Q=t_(X);if(Q instanceof Response)return Q;let{claimName:Y}=X.get("vmClaim"),G;try{G=await Q.getPreviewUrl(Y)}catch{return X.json({error:"Preview not available"},502)}if(!G)return X.json({error:"Preview not available"},502);let J;try{J=await X.req.json()}catch{return X.json({error:"Invalid JSON body"},400)}if(!J||typeof J!=="object"||Array.isArray(J))return X.json({error:"Invalid JSON body"},400);let W=Ru$(J);if(!W)return X.json({error:"Invalid or missing __resolveType"},400);let K=Iu$(G,W.resolveType),H=RZ1(K);return Su$(X,H?.url??K,{method:"POST",headers:{"content-type":"application/json",...H?{host:H.hostHeader}:{}},body:JSON.stringify(W.payload),signal:AbortSignal.timeout(30000)})}),$};var fu$=D(()=>{D8();jN();Ou();ZZ1();kF();Mh$();x3();Iy();kh$();xF();Vh$();Ch$();Qn0();Fn();HZ1();gh$();BZ1();m_();TZ1();qu$();IZ1();NK6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;DK6=EA0(async($,Z)=>{let X=$.var.studioContext;try{r(X)}catch{return $.json({error:"Unauthorized"},401)}let Q=Y1(X);if(!Q)return $.json({error:"Unauthorized"},401);let Y;try{Y=t(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{UK6(J)}catch(L){let w=L instanceof Error?L.message:String(L);return $.json({error:w},400)}let W=await X.storage.virtualMcps.findById(G);if(!W||W.organization_id!==Y.id)return $.json({error:"Virtual MCP not found"},404);let K=Mp({orgId:Y.id,virtualMcpId:G,branch:J}),H=await sp0(X,J),F=ep0(H,Q),N=qh$({userId:F,projectRef:K}),U=W.metadata??null,O=await LK6($,{claimName:N,branch:J,virtualMcpId:G,sandboxUserId:F,virtualMcpMetadata:U,branchThread:H});if(O==="cms")return $.set("vmClaim",{claimName:N,callerUserId:Q,runner:null,virtualMcpId:G,branch:J,userId:F,projectRef:K,virtualMcpMetadata:U,connectionIds:W.connections?.map((L)=>L.connection_id)??[],runtime:O}),Z();let B;try{B=(await gZ(X,{userId:F,branch:J,virtualMcpMetadata:U})).provider}catch{B=null}if(!B)return $.json({error:"No sandbox runner found"},404);return $.set("vmClaim",{claimName:N,callerUserId:Q,runner:B,virtualMcpId:G,branch:J,userId:F,projectRef:K,virtualMcpMetadata:U,connectionIds:W.connections?.map((L)=>L.connection_id)??[],runtime:O}),Z()});bA0=new Map;z5={"Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache"};_u$=["clone","install","start"]});function bu$($,Z,X){let Q=MZ1.get($);if(!Q)Q={pending:null,running:!1},MZ1.set($,Q);if(!Q.pending)Q.pending={set:new Map,del:new Set,deps:Z,resolvers:[],rejecters:[]};let Y=Q.pending;Y.deps=Z;for(let[J,W]of Object.entries(X.set??{}))Y.set.set(J,W),Y.del.delete(J);for(let J of X.delete??[])Y.del.add(J),Y.set.delete(J);let G=new Promise((J,W)=>{Y.resolvers.push(J),Y.rejecters.push(W)});if(!Q.running)PK6($,Q);return G}async function PK6($,Z){Z.running=!0;try{while(Z.pending){let X=Z.pending;Z.pending=null;try{let Q=await AK6(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)MZ1.delete($)}}async function AK6($){let{client:Z,branch:X,packagePath:Q}=$.deps;for(let Y=0;;Y++){let G=await ju(Z,X),J=await Z.getCommitTreeSha(G),W=await Z.getTreeRecursive(J),K=zZ1(W,Q),H=[],F=new Map(K.map((B)=>[B.path,{stem:B.stem,sha:B.sha}]));for(let[B,L]of $.set){let w=PZ1(K,B),E=`${JSON.stringify(L,null,2)}
|
|
2864
|
-
`,j=await Z.createBlob(E);await ju$(Z.owner,Z.repo,j,E);let z=w[0]??`${SA0(Q)}/${DZ1(B)}.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 B of $.del)for(let L of PZ1(K,B))H.push({path:L,mode:"100644",type:"blob",sha:null}),F.delete(L);if(H.length===0)return G;let N=Q?`${Q}/.deco/blocks.gen.json`:".deco/blocks.gen.json";if(W.some((B)=>B.type==="blob"&&B.path===N)){let B=await Promise.all([...F.values()].map(async(j)=>({stem:j.stem,content:j.content??await Z.getBlobText(j.sha)}))),{decofile:L,skipped:w}=ha(B);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(L);H.push({path:N,mode:"100644",type:"blob",sha:E})}let U=await Z.createTree(J,H),O=await Z.createCommit({message:TK6($),treeSha:U,parentShas:[G]});try{return await Z.updateRef(X,O),O}catch(B){if(!(B instanceof u4&&B.status===422)||Y>=zK6-1)throw B;await D$(oZ(2000,200,Y,2,0.5))}}}function TK6($){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 Rm0(Q,$.deps.coAuthor)}var zK6=3,MZ1;var xu$=D(()=>{HB0();TA0();w4();m_();CA0();MZ1=new Map});import{createHmac as yu$,randomBytes as RK6,timingSafeEqual as IK6}from"crypto";function gu$(){if(yA0)return yA0;let $;try{let Z=b0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return yA0=$?Buffer.from($):RK6(32),yA0}function kZ1($){let Z=$.nowMs??Date.now(),X={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+qK6)/1000)},Q=Buffer.from(JSON.stringify(X)).toString("base64url"),Y=yu$("sha256",gu$()).update(Q).digest("base64url");return`${Q}.${Y}`}function hu$($,Z){let X=$.indexOf(".");if(X<0)return!1;let Q=$.slice(0,X),Y=Buffer.from($.slice(X+1)),G=Buffer.from(yu$("sha256",gu$()).update(Q).digest("base64url"));if(Y.length!==G.length||!IK6(Y,G))return!1;let J;try{J=JSON.parse(Buffer.from(Q,"base64url").toString())}catch{return!1}let W=Math.floor((Z.nowMs??Date.now())/1000);return J.o===Z.organizationId&&J.m===Z.virtualMcpId&&J.b===Z.branch&&typeof J.e==="number"&&J.e>=W}var qK6=21600000,yA0=null;var uu$=D(()=>{q$()});import{z as Pu}from"zod";function kK6($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&MK6.test($)}function lu$($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function ia($){let Z=$.get("decofileScope");return PA0($.var.studioContext,Z.organizationId,Z.githubRepo)}function pa($,Z){if(Z instanceof u4){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 du$(){let $=new F1;return $.use("/:virtualMcpId/:branch",cu$),$.use("/:virtualMcpId/:branch/*",cu$),$.get("/:virtualMcpId/:branch",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await ia(Z),Y=await zu$(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=kZ1({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.body(`{"version":${JSON.stringify(Y.sha)},"token":${JSON.stringify(J)},"apiHost":${JSON.stringify(lu$(Z))},"decofile":${Y.decofile}}`,200,{...G,"content-type":"application/json"})}catch(Q){return pa(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 ia(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 pa(Z,Y)}}),$.patch("/:virtualMcpId/:branch",async(Z)=>{let X=Z.get("decofileScope"),Q=Z.var.studioContext,Y=VK6.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{AA0(J)}catch(W){let K=W instanceof Error?W.message:String(W);return Z.json({error:K},400)}for(let[J,W]of Object.entries(G.set??{}))if(typeof W!=="object"||W===null||Array.isArray(W))return Z.json({error:`Block "${J}" must be a JSON object`},400);try{let J=await ia(Z),W=await bu$(`${X.organizationId}/${X.virtualMcpId}/${X.branch}`,{client:J,branch:X.branch,packagePath:X.packagePath,coAuthor:Bu(Q)},G),K=kZ1({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.json({version:W,token:K,apiHost:lu$(Z)})}catch(J){return pa(Z,J)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await ia(Z),Y=await Q.getDefaultBranch();if(Y===X.branch)return Z.json({error:"Branch is already the default branch"},400);let G=`chore(decofile): publish ${X.branch}`;try{let J;try{J=await Q.mergeBranch(Y,X.branch,G)}catch(W){if(!(W instanceof u4&&W.status===409))throw W;await fA0(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 u4&&J.status===409)return Z.json({error:"merge-conflict"},409);if(J instanceof u4&&J.status===405){let K=await Q.findOpenPullRequest(Y,X.branch)??await Q.createPullRequest({base:Y,head:X.branch,title:`Publish ${X.branch}`});return Z.json({result:"pull-request",number:K.number,url:K.html_url})}throw J}}catch(Q){return pa(Z,Q)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await ia(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 u4&&G.status===404)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0});throw G}}catch(Q){return pa(Z,Q)}}),$}var MK6,VK6,cu$;var mu$=D(()=>{TA0();D8();ZZ1();jA0();IZ1();BZ1();xu$();uu$();TZ1();m_();CA0();MK6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;VK6=Pu.object({set:Pu.record(Pu.string(),Pu.unknown()).optional(),delete:Pu.array(Pu.string()).optional()}).refine(($)=>Object.keys($.set??{}).length>0||($.delete?.length??0)>0,{message:"Patch must set or delete at least one block"}),cu$=EA0(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(!kK6(G))return $.json({error:`Invalid branch name: ${G}`},400);let J=X.auth?.user?.id??null;if(!J){let O=$.req.query("token");if(!($.req.method==="GET"&&!$.req.path.match(/\/(publish|status)$/)))return $.json({error:"Unauthorized"},401);if(!O||!hu$(O,{organizationId:Q.id,virtualMcpId:Y,branch:G}))return $.json({error:"Unauthorized"},401)}let W=await X.storage.virtualMcps.findById(Y);if(!W||W.organization_id!==Q.id)return $.json({error:"Virtual MCP not found"},404);let K=W.metadata??null;if(!zB0(K))return $.json({error:"Project has no preview server configured"},404);let F=W.connections?.map((O)=>O.connection_id)??[],N=da(K,F);if(!N)return $.json({error:"Project has no GitHub repository"},404);let U=K?.runtime;return $.set("decofileScope",{organizationId:Q.id,virtualMcpId:Y,branch:G,packagePath:U?.path?.replace(/^\/+|\/+$/g,"")||null,githubRepo:N,userId:J}),Z()})});var iu$=($)=>{let Z=new F1;if(Z.use("*",b_),Z.route("/",bP0()),Z.route("/",Wx$()),Z.route("/",Oh$()),Z.route("/",Fh$()),Z.route("/",DA0()),Z.route("/tools",zh$()),Z.route("/",wh$()),Z.route("/",dg$({kvStorage:$.kvStorage})),Z.route("/",cg$()),Z.route("/fs",Qh$({getConnection:$.getNatsConnection})),Z.route("/sandbox",vu$()),Z.route("/decofile",du$()),Z.route("/",Wh$()),Z.route("/deco-sites",yP0()),Z.route("/sso",VP0()),Z.route("/",LA0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",eb$()),$.mountDevAssets)Z.route("/dev-assets",gP0({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("/",vv$()),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",Gh$()),Z.route("/mcp",cL0()),Z.route("/mcp/self",BA0()),Z.route("/mcp",mL0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var pu$=D(()=>{D8();T51();$x$();M51();hP0();Na();P51();lg$();mg$();Yh$();Et();O51();iL0();t91();Jh$();Kh$();Nh$();Bh$();Eh$();r91();Ph$();a91();lL0();fu$();mu$()});function SK6($){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 CK6=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},nu$=()=>{let $=new F1;return $.use("*",CK6),$.get("/",async(Z)=>{let X=b0(),Q=X.decoSupabaseUrl,Y=X.decoSupabaseServiceKey;if(!Q||!Y)return Z.json({apps:[]});try{let G=await iZ(Q,Y,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:SK6(G)})}catch(G){return console.error("[deco-apps] GET error:",G),Z.json({error:"Failed to fetch apps"},502)}}),$};var tu$=D(()=>{D8();q$();bz0()});import{z as M1}from"zod";function HH($,Z="invalid_request_error",X=null,Q=null){return{error:{message:$,type:Z,param:X,code:Q}}}function cK6($){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 lK6($,Z,X){try{return JSON.parse($)}catch{throw new au$(`Invalid JSON in tool call arguments for function '${X}' (tool_call_id: ${Z}): ${$}`)}}function dK6($){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:lK6(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 mK6($){let Z=$.map((X)=>{let Q=X.function.parameters?lY(X.function.parameters):lY({type:"object",properties:{}});return[X.function.name,I$({description:X.function.description,inputSchema:Q})]});return Object.fromEntries(Z)}function iK6($){if(!$)return;return{openai:{response_format:$}}}function pK6(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function ou$($,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 ru$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var _K6=256,vK6,fK6,bK6,xK6,yK6,gK6,hK6,uK6,au$,su$,eu$;var $c$=D(()=>{B4();D8();Ou();WN();vK6=M1.object({type:M1.literal("function"),function:M1.object({name:M1.string(),description:M1.string().optional(),parameters:M1.record(M1.string(),M1.unknown()).optional()})}),fK6=M1.object({id:M1.string(),type:M1.literal("function"),function:M1.object({name:M1.string(),arguments:M1.string()})}),bK6=M1.discriminatedUnion("role",[M1.object({role:M1.literal("system"),content:M1.string(),name:M1.string().optional()}),M1.object({role:M1.literal("user"),content:M1.union([M1.string(),M1.array(M1.union([M1.object({type:M1.literal("text"),text:M1.string()}),M1.object({type:M1.literal("image_url"),image_url:M1.object({url:M1.string(),detail:M1.string().optional()})})]))]),name:M1.string().optional()}),M1.object({role:M1.literal("assistant"),content:M1.string().nullable().optional(),name:M1.string().optional(),tool_calls:M1.array(fK6).optional()}),M1.object({role:M1.literal("tool"),content:M1.string(),tool_call_id:M1.string()})]),xK6=M1.object({type:M1.literal("text")}),yK6=M1.object({type:M1.literal("json_object")}),gK6=M1.object({type:M1.literal("json_schema"),json_schema:M1.object({name:M1.string(),description:M1.string().optional(),schema:M1.record(M1.string(),M1.unknown()),strict:M1.boolean().optional()})}),hK6=M1.union([xK6,yK6,gK6]),uK6=M1.object({model:M1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:M1.array(bK6),stream:M1.boolean().optional().default(!1),temperature:M1.number().min(0).max(2).optional(),max_tokens:M1.number().positive().optional(),top_p:M1.number().min(0).max(1).optional(),frequency_penalty:M1.number().min(-2).max(2).optional(),presence_penalty:M1.number().min(-2).max(2).optional(),stop:M1.union([M1.string(),M1.array(M1.string())]).optional(),tools:M1.array(vK6).optional(),tool_choice:M1.union([M1.literal("auto"),M1.literal("none"),M1.literal("required"),M1.object({type:M1.literal("function"),function:M1.object({name:M1.string()})})]).optional(),response_format:hK6.optional(),user:M1.string().optional()});au$=class au$ extends Error{constructor($){super($);this.name="MessageConversionError"}};su$=new F1;su$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),X=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(HH("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(HH("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(HH("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Q=await $.req.json(),Y=uK6.safeParse(Q);if(!Y.success){let w=Y.error.issues[0]??{message:"Invalid request",path:[]};return $.json(HH(`Invalid request: ${w.message}`,"invalid_request_error",w.path.length>0?w.path.join("."):null),400)}let G=Y.data,J=cK6(G.model);if(!J)return $.json(HH("Invalid model format. Expected 'model_id' or 'credential_id:model_id' (e.g., 'claude-sonnet-4-6' or 'key_abc123:claude-sonnet-4-6')","invalid_request_error","model"),400);let{credentialId:W}=J,{modelId:K}=J;if(!W){let E=(await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id})).find((j)=>hL(j.providerId));if(!E)return $.json(HH("No AI provider credentials configured for this organization. Add a credential in settings or specify one explicitly via 'credential_id:model_id'.","invalid_request_error","model"),400);W=E.id}let H;try{H=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json(HH(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),N=dK6(G.messages),U=G.tools?mK6(G.tools):void 0,O=iK6(G.response_format),B=pK6(),L=Math.floor(Date.now()/1000);if(G.stream)return kN($,async(w)=>{let E=ou$(F,N,U,G,O,$.req.raw.signal);try{let j=$B(E),z=!1,A=0,P="",I=async()=>{if(P.length===0)return;let q=P;P="",await w.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:L,model:G.model,choices:[{index:0,delta:{content:q},finish_reason:null}]})})};for await(let q of j.fullStream){if(!z&&(q.type==="text-delta"||q.type==="tool-call"))await w.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:L,model:G.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),z=!0;if(q.type==="text-delta"){if(P+=q.text,P.length>=_K6)await I()}else if(q.type==="tool-call"){await I();let M=A++;await w.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:L,model:G.model,choices:[{index:0,delta:{tool_calls:[{index:M,id:q.toolCallId,type:"function",function:{name:q.toolName,arguments:JSON.stringify(q.input)}}]},finish_reason:null}]})})}else if(q.type==="finish")await I(),await w.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:L,model:G.model,choices:[{index:0,delta:{},finish_reason:ru$(q.finishReason)}],usage:q.totalUsage?{prompt_tokens:q.totalUsage.inputTokens??0,completion_tokens:q.totalUsage.outputTokens??0,total_tokens:q.totalUsage.totalTokens??0}:void 0})})}await 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=ou$(F,N,U,G,O,$.req.raw.signal),E=await sO(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:B,object:"chat.completion",created:L,model:G.model,choices:[{index:0,message:j,finish_reason:ru$(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(HH("Request aborted","invalid_request_error"),400);if(Y.name==="MessageConversionError")return $.json(HH(Y.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",Y.message,Y.stack),$.json(HH(Y.message,"server_error"),500)}});eu$=su$});function nK6($){if(typeof $!=="object"||$===null)return!1;let X=$.githubRepo?.url;return typeof X==="string"&&X.length>0}function Zc$(){let $=new F1;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=Y1(X);if(!Q)return Z.json({error:"Authentication required"},401);let G=(Z.req.query("site")??"").trim().toLowerCase();if(!mG(G))return Z.json({error:"Invalid site slug"},400);let J=await X.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["organization.id as id","organization.slug as slug","organization.name as name","organization.metadata as metadata"]).where("member.userId","=",Q).execute(),W=[];for(let H of J){if(!H.slug||H7(H))continue;let F=await X.storage.virtualMcps.list(H.id);for(let N of F){if($s1(N)!==G)continue;if(!nK6(N.metadata))continue;W.push({orgSlug:H.slug,orgName:H.name??H.slug,project:{id:N.id,title:N.title,icon:N.icon??null}})}}let K={matches:W};return Z.json(K)}),$}var Xc$=D(()=>{D8();hO()});var Yc$;var Qc$=D(()=>{Yc$={name:"decocms",version:"4.263.3",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","@nats-io/jwt":"0.0.10-5","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});function rK6(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??oK6}}var Gc$,oK6="https://ph.studio.decocms.com",Jc$;var Wc$=D(()=>{D8();$u0();MC();L9();q$();K51();Qc$();Gc$=new F1;Gc$.get("/",($)=>{let Z={version:Yc$.version,theme:qm1(),...Sw().logo&&{logo:Sw().logo},...fK()&&{internalUrl:QC1()},...b0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!b0().firecrawlApiKey,auth:wb$(),posthog:rK6(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:!fK()&&b0().sandboxProviderKind==="agent-sandbox"}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});Jc$=Gc$});function Au($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function VZ1($){return(Au($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((X)=>X.charAt(0).toUpperCase()+X.slice(1)).join(" ")}function Hc$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(Au($))}&sz=${Z}`}function Kc$($,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 Fc$($){let{brand:Z,domain:X,score:Q,verdict:Y}=$,G=typeof Q==="number"?`${Z} commerce report \u2014 ${Math.round(Q)}/100 \xB7 decocms`:`${Z} commerce report \xB7 decocms`,J=`See the full ${Z} scorecard \u2014 SEO, performance, conversion & AEO signals scored by decocms.`,W=Y?.trim()?Kc$(`${Y.trim().replace(/\s+/g," ")} \u2014 ${J}`,200):Kc$(`How does ${X} really perform? ${J}`,200);return{title:G,description:W}}import{z as l0}from"zod";var o_,aK6,sK6,eK6,$H6,Nc$;var Uc$=D(()=>{o_=l0.enum(["good","bad","neutral"]),aK6=l0.preprocess(($)=>{if(Array.isArray($))return{kind:"text",value:$.find((X)=>X!==null&&typeof X!=="object")??""};return $!==null&&typeof $==="object"?$:{kind:"text",value:$}},l0.object({kind:l0.enum(["text","number","sparkline","badge","score"]).catch("text"),value:l0.coerce.string().optional(),tone:o_.optional(),muted:l0.boolean().optional(),delta:l0.coerce.string().optional(),deltaDir:l0.enum(["up","down","neutral"]).optional(),points:l0.array(l0.coerce.number()).optional(),label:l0.coerce.string().optional()}).transform(($)=>{if($.kind==="badge"&&$.label==null)$.label=$.value??"";if($.kind==="score"){let Z=Number($.value);if(Number.isNaN(Z))return{...$,kind:"text"}}return $})),sK6=l0.preprocess(($)=>{let Z=$;if(Z&&typeof Z==="object"&&!Array.isArray(Z)&&Array.isArray(Z.cells))Z=Z.cells;if(Array.isArray(Z)&&Z.length===1&&Array.isArray(Z[0]))Z=Z[0];if(Array.isArray(Z))return Z;if(Z&&typeof Z==="object")return Object.values(Z);return Z},l0.array(aK6)),eK6={key:l0.coerce.string(),title:l0.coerce.string(),eyebrow:l0.coerce.string().optional(),headline:l0.coerce.string(),annotation:l0.coerce.string().optional(),methodology:l0.coerce.string().optional(),sources:l0.array(l0.object({name:l0.coerce.string(),logoUrl:l0.coerce.string()})).optional()},$H6=l0.discriminatedUnion("template",[l0.object({template:l0.literal("cover"),score:l0.object({value:l0.coerce.number(),max:l0.coerce.number().optional(),grade:l0.coerce.string().optional(),label:l0.coerce.string().optional()}).optional(),brandImage:l0.coerce.string().optional(),screenshot:l0.coerce.string().optional(),mobileScreenshot:l0.coerce.string().optional()}),l0.object({template:l0.literal("cta"),ctaUrl:l0.coerce.string().optional(),ctaLabel:l0.coerce.string().optional(),bullets:l0.array(l0.coerce.string()).optional()}),l0.object({template:l0.literal("series"),points:l0.array(l0.coerce.number()).min(2),xLabels:l0.array(l0.coerce.string()).min(1),unit:l0.coerce.string().optional(),callout:l0.object({index:l0.coerce.number(),value:l0.coerce.string(),tone:o_.optional()})}),l0.object({template:l0.literal("threshold"),value:l0.coerce.string().default(""),metricLabel:l0.coerce.string().optional(),ratio:l0.coerce.number(),thresholdRatio:l0.coerce.number().optional(),thresholdLabel:l0.coerce.string().default(""),tone:o_.optional()}),l0.object({template:l0.literal("stats"),stats:l0.array(l0.object({value:l0.coerce.string(),label:l0.coerce.string(),tone:o_.optional()})).min(1)}),l0.object({template:l0.literal("bars"),items:l0.array(l0.object({value:l0.coerce.string(),label:l0.coerce.string(),ratio:l0.coerce.number(),tone:o_.optional()})).min(1)}),l0.object({template:l0.literal("gauges"),gauges:l0.array(l0.object({label:l0.coerce.string(),value:l0.coerce.string(),status:l0.enum(["good","warn","bad"]).catch("warn"),caption:l0.coerce.string().optional(),ratio:l0.coerce.number().optional()})).min(1)}),l0.object({template:l0.literal("checklist"),checks:l0.array(l0.object({label:l0.coerce.string(),status:l0.enum(["pass","fail","warn"]).catch("fail"),value:l0.coerce.string().optional()})).min(1)}),l0.object({template:l0.literal("table"),columns:l0.array(l0.object({label:l0.coerce.string(),align:l0.enum(["left","right"]).optional()})).min(1),rows:l0.array(sK6).min(1),highlightRow:l0.coerce.number().optional()}),l0.object({template:l0.literal("products"),products:l0.array(l0.object({name:l0.coerce.string(),price:l0.coerce.string().optional(),image:l0.coerce.string().optional(),url:l0.coerce.string().optional()})).min(1)}),l0.object({template:l0.literal("list"),entries:l0.array(l0.object({label:l0.coerce.string(),severity:l0.enum(["error","warning","notice"]).catch("notice")})).min(1),moreCount:l0.coerce.number().optional()}),l0.object({template:l0.literal("keywords"),volumeLabel:l0.coerce.string().optional(),keywords:l0.array(l0.object({term:l0.coerce.string(),volume:l0.coerce.string(),position:l0.coerce.number().catch(0)})).min(1)}),l0.object({template:l0.literal("competitor"),metricLabel:l0.coerce.string().optional(),competitors:l0.array(l0.object({name:l0.coerce.string(),value:l0.coerce.string(),tone:o_.optional(),isYou:l0.boolean().optional()})).min(1)}),l0.object({template:l0.literal("scorecard"),rivalLabel:l0.coerce.string().optional(),dimensions:l0.array(l0.object({label:l0.coerce.string(),you:l0.coerce.string(),rival:l0.coerce.string().optional(),rivalName:l0.coerce.string().optional(),tone:o_.optional()})).min(1)})]),Nc$=l0.object({...eK6,template:$H6})});function gA0($){let Z=[],X=[...$.sections].sort((Y,G)=>Y.position-G.position).map((Y)=>{let G=Nc$.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 SZ1=D(()=>{Uc$()});import{join as Oc$}from"path";async function XH6($){try{let Z=await fetch(`${QK({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(ZH6)});if(!Z.ok)return null;let X=await Z.json(),{deck:Q}=gA0(X);if(!Q.slides.length)return null;let Y=Q.slides.find((W)=>W.template.template==="cover"),G=Y?.template,J=G&&G.template==="cover"?G:void 0;return{brand:Q.meta.brand?.trim()||VZ1($),score:Q.meta.scores?.cover??J?.score?.value,verdict:Y?.annotation?.trim()||Y?.headline?.trim()||void 0}}catch{return null}}function FG($){return $.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""")}function QH6($,Z){let X=Au($),Q=Z?.brand?.trim()||VZ1(X),Y=Hc$(X,128),J=`${(b0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(X)}`,{title:W,description:K}=Fc$({brand:Q,domain:X,score:Z?.score,verdict:Z?.verdict}),H=`${J}/og.png`,F=`${Q} commerce report by decocms`;return[`<title>${FG(W)}</title>`,`<meta name="description" content="${FG(K)}" />`,'<meta name="robots" content="noindex, follow" />','<meta property="og:type" content="website" />','<meta property="og:site_name" content="decocms" />',`<meta property="og:title" content="${FG(W)}" />`,`<meta property="og:description" content="${FG(K)}" />`,`<meta property="og:url" content="${FG(J)}" />`,`<meta property="og:image" content="${FG(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${FG(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${FG(W)}" />`,`<meta name="twitter:description" content="${FG(K)}" />`,`<meta name="twitter:image" content="${FG(H)}" />`,`<meta name="twitter:image:alt" content="${FG(F)}" />`,`<link rel="canonical" href="${FG(J)}" />`,`<link rel="icon" href="${FG(Y)}" sizes="any" />`].join(`
|
|
2864
|
+
`,j=await Z.createBlob(E);await ju$(Z.owner,Z.repo,j,E);let z=w[0]??`${SA0(Q)}/${DZ1(B)}.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 B of $.del)for(let L of PZ1(K,B))H.push({path:L,mode:"100644",type:"blob",sha:null}),F.delete(L);if(H.length===0)return G;let N=Q?`${Q}/.deco/blocks.gen.json`:".deco/blocks.gen.json";if(W.some((B)=>B.type==="blob"&&B.path===N)){let B=await Promise.all([...F.values()].map(async(j)=>({stem:j.stem,content:j.content??await Z.getBlobText(j.sha)}))),{decofile:L,skipped:w}=ha(B);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(L);H.push({path:N,mode:"100644",type:"blob",sha:E})}let U=await Z.createTree(J,H),O=await Z.createCommit({message:TK6($),treeSha:U,parentShas:[G]});try{return await Z.updateRef(X,O),O}catch(B){if(!(B instanceof u4&&B.status===422)||Y>=zK6-1)throw B;await D$(oZ(2000,200,Y,2,0.5))}}}function TK6($){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 Rm0(Q,$.deps.coAuthor)}var zK6=3,MZ1;var xu$=D(()=>{HB0();TA0();w4();m_();CA0();MZ1=new Map});import{createHmac as yu$,randomBytes as RK6,timingSafeEqual as IK6}from"crypto";function gu$(){if(yA0)return yA0;let $;try{let Z=b0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return yA0=$?Buffer.from($):RK6(32),yA0}function kZ1($){let Z=$.nowMs??Date.now(),X={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+qK6)/1000)},Q=Buffer.from(JSON.stringify(X)).toString("base64url"),Y=yu$("sha256",gu$()).update(Q).digest("base64url");return`${Q}.${Y}`}function hu$($,Z){let X=$.indexOf(".");if(X<0)return!1;let Q=$.slice(0,X),Y=Buffer.from($.slice(X+1)),G=Buffer.from(yu$("sha256",gu$()).update(Q).digest("base64url"));if(Y.length!==G.length||!IK6(Y,G))return!1;let J;try{J=JSON.parse(Buffer.from(Q,"base64url").toString())}catch{return!1}let W=Math.floor((Z.nowMs??Date.now())/1000);return J.o===Z.organizationId&&J.m===Z.virtualMcpId&&J.b===Z.branch&&typeof J.e==="number"&&J.e>=W}var qK6=21600000,yA0=null;var uu$=D(()=>{q$()});import{z as Pu}from"zod";function kK6($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&MK6.test($)}function lu$($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function ia($){let Z=$.get("decofileScope");return PA0($.var.studioContext,Z.organizationId,Z.githubRepo)}function pa($,Z){if(Z instanceof u4){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 du$(){let $=new F1;return $.use("/:virtualMcpId/:branch",cu$),$.use("/:virtualMcpId/:branch/*",cu$),$.get("/:virtualMcpId/:branch",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await ia(Z),Y=await zu$(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=kZ1({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.body(`{"version":${JSON.stringify(Y.sha)},"token":${JSON.stringify(J)},"apiHost":${JSON.stringify(lu$(Z))},"decofile":${Y.decofile}}`,200,{...G,"content-type":"application/json"})}catch(Q){return pa(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 ia(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 pa(Z,Y)}}),$.patch("/:virtualMcpId/:branch",async(Z)=>{let X=Z.get("decofileScope"),Q=Z.var.studioContext,Y=VK6.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{AA0(J)}catch(W){let K=W instanceof Error?W.message:String(W);return Z.json({error:K},400)}for(let[J,W]of Object.entries(G.set??{}))if(typeof W!=="object"||W===null||Array.isArray(W))return Z.json({error:`Block "${J}" must be a JSON object`},400);try{let J=await ia(Z),W=await bu$(`${X.organizationId}/${X.virtualMcpId}/${X.branch}`,{client:J,branch:X.branch,packagePath:X.packagePath,coAuthor:Bu(Q)},G),K=kZ1({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.json({version:W,token:K,apiHost:lu$(Z)})}catch(J){return pa(Z,J)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await ia(Z),Y=await Q.getDefaultBranch();if(Y===X.branch)return Z.json({error:"Branch is already the default branch"},400);let G=`chore(decofile): publish ${X.branch}`;try{let J;try{J=await Q.mergeBranch(Y,X.branch,G)}catch(W){if(!(W instanceof u4&&W.status===409))throw W;await fA0(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 u4&&J.status===409)return Z.json({error:"merge-conflict"},409);if(J instanceof u4&&J.status===405){let K=await Q.findOpenPullRequest(Y,X.branch)??await Q.createPullRequest({base:Y,head:X.branch,title:`Publish ${X.branch}`});return Z.json({result:"pull-request",number:K.number,url:K.html_url})}throw J}}catch(Q){return pa(Z,Q)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await ia(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 u4&&G.status===404)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0});throw G}}catch(Q){return pa(Z,Q)}}),$}var MK6,VK6,cu$;var mu$=D(()=>{TA0();D8();ZZ1();jA0();IZ1();BZ1();xu$();uu$();TZ1();m_();CA0();MK6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;VK6=Pu.object({set:Pu.record(Pu.string(),Pu.unknown()).optional(),delete:Pu.array(Pu.string()).optional()}).refine(($)=>Object.keys($.set??{}).length>0||($.delete?.length??0)>0,{message:"Patch must set or delete at least one block"}),cu$=EA0(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(!kK6(G))return $.json({error:`Invalid branch name: ${G}`},400);let J=X.auth?.user?.id??null;if(!J){let O=$.req.query("token");if(!($.req.method==="GET"&&!$.req.path.match(/\/(publish|status)$/)))return $.json({error:"Unauthorized"},401);if(!O||!hu$(O,{organizationId:Q.id,virtualMcpId:Y,branch:G}))return $.json({error:"Unauthorized"},401)}let W=await X.storage.virtualMcps.findById(Y);if(!W||W.organization_id!==Q.id)return $.json({error:"Virtual MCP not found"},404);let K=W.metadata??null;if(!zB0(K))return $.json({error:"Project has no preview server configured"},404);let F=W.connections?.map((O)=>O.connection_id)??[],N=da(K,F);if(!N)return $.json({error:"Project has no GitHub repository"},404);let U=K?.runtime;return $.set("decofileScope",{organizationId:Q.id,virtualMcpId:Y,branch:G,packagePath:U?.path?.replace(/^\/+|\/+$/g,"")||null,githubRepo:N,userId:J}),Z()})});var iu$=($)=>{let Z=new F1;if(Z.use("*",b_),Z.route("/",bP0()),Z.route("/",Wx$()),Z.route("/",Oh$()),Z.route("/",Fh$()),Z.route("/",DA0()),Z.route("/tools",zh$()),Z.route("/",wh$()),Z.route("/",dg$({kvStorage:$.kvStorage})),Z.route("/",cg$()),Z.route("/fs",Qh$({getConnection:$.getNatsConnection})),Z.route("/sandbox",vu$()),Z.route("/decofile",du$()),Z.route("/",Wh$()),Z.route("/deco-sites",yP0()),Z.route("/sso",VP0()),Z.route("/",LA0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",eb$()),$.mountDevAssets)Z.route("/dev-assets",gP0({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("/",vv$()),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",Gh$()),Z.route("/mcp",cL0()),Z.route("/mcp/self",BA0()),Z.route("/mcp",mL0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var pu$=D(()=>{D8();T51();$x$();M51();hP0();Na();P51();lg$();mg$();Yh$();Et();O51();iL0();t91();Jh$();Kh$();Nh$();Bh$();Eh$();r91();Ph$();a91();lL0();fu$();mu$()});function SK6($){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 CK6=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},nu$=()=>{let $=new F1;return $.use("*",CK6),$.get("/",async(Z)=>{let X=b0(),Q=X.decoSupabaseUrl,Y=X.decoSupabaseServiceKey;if(!Q||!Y)return Z.json({apps:[]});try{let G=await iZ(Q,Y,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:SK6(G)})}catch(G){return console.error("[deco-apps] GET error:",G),Z.json({error:"Failed to fetch apps"},502)}}),$};var tu$=D(()=>{D8();q$();bz0()});import{z as M1}from"zod";function HH($,Z="invalid_request_error",X=null,Q=null){return{error:{message:$,type:Z,param:X,code:Q}}}function cK6($){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 lK6($,Z,X){try{return JSON.parse($)}catch{throw new au$(`Invalid JSON in tool call arguments for function '${X}' (tool_call_id: ${Z}): ${$}`)}}function dK6($){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:lK6(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 mK6($){let Z=$.map((X)=>{let Q=X.function.parameters?lY(X.function.parameters):lY({type:"object",properties:{}});return[X.function.name,I$({description:X.function.description,inputSchema:Q})]});return Object.fromEntries(Z)}function iK6($){if(!$)return;return{openai:{response_format:$}}}function pK6(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function ou$($,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 ru$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var _K6=256,vK6,fK6,bK6,xK6,yK6,gK6,hK6,uK6,au$,su$,eu$;var $c$=D(()=>{B4();D8();Ou();WN();vK6=M1.object({type:M1.literal("function"),function:M1.object({name:M1.string(),description:M1.string().optional(),parameters:M1.record(M1.string(),M1.unknown()).optional()})}),fK6=M1.object({id:M1.string(),type:M1.literal("function"),function:M1.object({name:M1.string(),arguments:M1.string()})}),bK6=M1.discriminatedUnion("role",[M1.object({role:M1.literal("system"),content:M1.string(),name:M1.string().optional()}),M1.object({role:M1.literal("user"),content:M1.union([M1.string(),M1.array(M1.union([M1.object({type:M1.literal("text"),text:M1.string()}),M1.object({type:M1.literal("image_url"),image_url:M1.object({url:M1.string(),detail:M1.string().optional()})})]))]),name:M1.string().optional()}),M1.object({role:M1.literal("assistant"),content:M1.string().nullable().optional(),name:M1.string().optional(),tool_calls:M1.array(fK6).optional()}),M1.object({role:M1.literal("tool"),content:M1.string(),tool_call_id:M1.string()})]),xK6=M1.object({type:M1.literal("text")}),yK6=M1.object({type:M1.literal("json_object")}),gK6=M1.object({type:M1.literal("json_schema"),json_schema:M1.object({name:M1.string(),description:M1.string().optional(),schema:M1.record(M1.string(),M1.unknown()),strict:M1.boolean().optional()})}),hK6=M1.union([xK6,yK6,gK6]),uK6=M1.object({model:M1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:M1.array(bK6),stream:M1.boolean().optional().default(!1),temperature:M1.number().min(0).max(2).optional(),max_tokens:M1.number().positive().optional(),top_p:M1.number().min(0).max(1).optional(),frequency_penalty:M1.number().min(-2).max(2).optional(),presence_penalty:M1.number().min(-2).max(2).optional(),stop:M1.union([M1.string(),M1.array(M1.string())]).optional(),tools:M1.array(vK6).optional(),tool_choice:M1.union([M1.literal("auto"),M1.literal("none"),M1.literal("required"),M1.object({type:M1.literal("function"),function:M1.object({name:M1.string()})})]).optional(),response_format:hK6.optional(),user:M1.string().optional()});au$=class au$ extends Error{constructor($){super($);this.name="MessageConversionError"}};su$=new F1;su$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),X=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(HH("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(HH("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(HH("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Q=await $.req.json(),Y=uK6.safeParse(Q);if(!Y.success){let w=Y.error.issues[0]??{message:"Invalid request",path:[]};return $.json(HH(`Invalid request: ${w.message}`,"invalid_request_error",w.path.length>0?w.path.join("."):null),400)}let G=Y.data,J=cK6(G.model);if(!J)return $.json(HH("Invalid model format. Expected 'model_id' or 'credential_id:model_id' (e.g., 'claude-sonnet-4-6' or 'key_abc123:claude-sonnet-4-6')","invalid_request_error","model"),400);let{credentialId:W}=J,{modelId:K}=J;if(!W){let E=(await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id})).find((j)=>hL(j.providerId));if(!E)return $.json(HH("No AI provider credentials configured for this organization. Add a credential in settings or specify one explicitly via 'credential_id:model_id'.","invalid_request_error","model"),400);W=E.id}let H;try{H=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json(HH(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),N=dK6(G.messages),U=G.tools?mK6(G.tools):void 0,O=iK6(G.response_format),B=pK6(),L=Math.floor(Date.now()/1000);if(G.stream)return kN($,async(w)=>{let E=ou$(F,N,U,G,O,$.req.raw.signal);try{let j=$B(E),z=!1,A=0,P="",I=async()=>{if(P.length===0)return;let q=P;P="",await w.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:L,model:G.model,choices:[{index:0,delta:{content:q},finish_reason:null}]})})};for await(let q of j.fullStream){if(!z&&(q.type==="text-delta"||q.type==="tool-call"))await w.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:L,model:G.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),z=!0;if(q.type==="text-delta"){if(P+=q.text,P.length>=_K6)await I()}else if(q.type==="tool-call"){await I();let M=A++;await w.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:L,model:G.model,choices:[{index:0,delta:{tool_calls:[{index:M,id:q.toolCallId,type:"function",function:{name:q.toolName,arguments:JSON.stringify(q.input)}}]},finish_reason:null}]})})}else if(q.type==="finish")await I(),await w.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:L,model:G.model,choices:[{index:0,delta:{},finish_reason:ru$(q.finishReason)}],usage:q.totalUsage?{prompt_tokens:q.totalUsage.inputTokens??0,completion_tokens:q.totalUsage.outputTokens??0,total_tokens:q.totalUsage.totalTokens??0}:void 0})})}await 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=ou$(F,N,U,G,O,$.req.raw.signal),E=await sO(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:B,object:"chat.completion",created:L,model:G.model,choices:[{index:0,message:j,finish_reason:ru$(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(HH("Request aborted","invalid_request_error"),400);if(Y.name==="MessageConversionError")return $.json(HH(Y.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",Y.message,Y.stack),$.json(HH(Y.message,"server_error"),500)}});eu$=su$});function nK6($){if(typeof $!=="object"||$===null)return!1;let X=$.githubRepo?.url;return typeof X==="string"&&X.length>0}function Zc$(){let $=new F1;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=Y1(X);if(!Q)return Z.json({error:"Authentication required"},401);let G=(Z.req.query("site")??"").trim().toLowerCase();if(!mG(G))return Z.json({error:"Invalid site slug"},400);let J=await X.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["organization.id as id","organization.slug as slug","organization.name as name","organization.metadata as metadata"]).where("member.userId","=",Q).execute(),W=[];for(let H of J){if(!H.slug||H7(H))continue;let F=await X.storage.virtualMcps.list(H.id);for(let N of F){if($s1(N)!==G)continue;if(!nK6(N.metadata))continue;W.push({orgSlug:H.slug,orgName:H.name??H.slug,project:{id:N.id,title:N.title,icon:N.icon??null}})}}let K={matches:W};return Z.json(K)}),$}var Xc$=D(()=>{D8();hO()});var Yc$;var Qc$=D(()=>{Yc$={name:"decocms",version:"4.263.4",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","@nats-io/jwt":"0.0.10-5","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});function rK6(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??oK6}}var Gc$,oK6="https://ph.studio.decocms.com",Jc$;var Wc$=D(()=>{D8();$u0();MC();L9();q$();K51();Qc$();Gc$=new F1;Gc$.get("/",($)=>{let Z={version:Yc$.version,theme:qm1(),...Sw().logo&&{logo:Sw().logo},...fK()&&{internalUrl:QC1()},...b0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!b0().firecrawlApiKey,auth:wb$(),posthog:rK6(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:!fK()&&b0().sandboxProviderKind==="agent-sandbox"}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});Jc$=Gc$});function Au($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function VZ1($){return(Au($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((X)=>X.charAt(0).toUpperCase()+X.slice(1)).join(" ")}function Hc$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(Au($))}&sz=${Z}`}function Kc$($,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 Fc$($){let{brand:Z,domain:X,score:Q,verdict:Y}=$,G=typeof Q==="number"?`${Z} commerce report \u2014 ${Math.round(Q)}/100 \xB7 decocms`:`${Z} commerce report \xB7 decocms`,J=`See the full ${Z} scorecard \u2014 SEO, performance, conversion & AEO signals scored by decocms.`,W=Y?.trim()?Kc$(`${Y.trim().replace(/\s+/g," ")} \u2014 ${J}`,200):Kc$(`How does ${X} really perform? ${J}`,200);return{title:G,description:W}}import{z as l0}from"zod";var o_,aK6,sK6,eK6,$H6,Nc$;var Uc$=D(()=>{o_=l0.enum(["good","bad","neutral"]),aK6=l0.preprocess(($)=>{if(Array.isArray($))return{kind:"text",value:$.find((X)=>X!==null&&typeof X!=="object")??""};return $!==null&&typeof $==="object"?$:{kind:"text",value:$}},l0.object({kind:l0.enum(["text","number","sparkline","badge","score"]).catch("text"),value:l0.coerce.string().optional(),tone:o_.optional(),muted:l0.boolean().optional(),delta:l0.coerce.string().optional(),deltaDir:l0.enum(["up","down","neutral"]).optional(),points:l0.array(l0.coerce.number()).optional(),label:l0.coerce.string().optional()}).transform(($)=>{if($.kind==="badge"&&$.label==null)$.label=$.value??"";if($.kind==="score"){let Z=Number($.value);if(Number.isNaN(Z))return{...$,kind:"text"}}return $})),sK6=l0.preprocess(($)=>{let Z=$;if(Z&&typeof Z==="object"&&!Array.isArray(Z)&&Array.isArray(Z.cells))Z=Z.cells;if(Array.isArray(Z)&&Z.length===1&&Array.isArray(Z[0]))Z=Z[0];if(Array.isArray(Z))return Z;if(Z&&typeof Z==="object")return Object.values(Z);return Z},l0.array(aK6)),eK6={key:l0.coerce.string(),title:l0.coerce.string(),eyebrow:l0.coerce.string().optional(),headline:l0.coerce.string(),annotation:l0.coerce.string().optional(),methodology:l0.coerce.string().optional(),sources:l0.array(l0.object({name:l0.coerce.string(),logoUrl:l0.coerce.string()})).optional()},$H6=l0.discriminatedUnion("template",[l0.object({template:l0.literal("cover"),score:l0.object({value:l0.coerce.number(),max:l0.coerce.number().optional(),grade:l0.coerce.string().optional(),label:l0.coerce.string().optional()}).optional(),brandImage:l0.coerce.string().optional(),screenshot:l0.coerce.string().optional(),mobileScreenshot:l0.coerce.string().optional()}),l0.object({template:l0.literal("cta"),ctaUrl:l0.coerce.string().optional(),ctaLabel:l0.coerce.string().optional(),bullets:l0.array(l0.coerce.string()).optional()}),l0.object({template:l0.literal("series"),points:l0.array(l0.coerce.number()).min(2),xLabels:l0.array(l0.coerce.string()).min(1),unit:l0.coerce.string().optional(),callout:l0.object({index:l0.coerce.number(),value:l0.coerce.string(),tone:o_.optional()})}),l0.object({template:l0.literal("threshold"),value:l0.coerce.string().default(""),metricLabel:l0.coerce.string().optional(),ratio:l0.coerce.number(),thresholdRatio:l0.coerce.number().optional(),thresholdLabel:l0.coerce.string().default(""),tone:o_.optional()}),l0.object({template:l0.literal("stats"),stats:l0.array(l0.object({value:l0.coerce.string(),label:l0.coerce.string(),tone:o_.optional()})).min(1)}),l0.object({template:l0.literal("bars"),items:l0.array(l0.object({value:l0.coerce.string(),label:l0.coerce.string(),ratio:l0.coerce.number(),tone:o_.optional()})).min(1)}),l0.object({template:l0.literal("gauges"),gauges:l0.array(l0.object({label:l0.coerce.string(),value:l0.coerce.string(),status:l0.enum(["good","warn","bad"]).catch("warn"),caption:l0.coerce.string().optional(),ratio:l0.coerce.number().optional()})).min(1)}),l0.object({template:l0.literal("checklist"),checks:l0.array(l0.object({label:l0.coerce.string(),status:l0.enum(["pass","fail","warn"]).catch("fail"),value:l0.coerce.string().optional()})).min(1)}),l0.object({template:l0.literal("table"),columns:l0.array(l0.object({label:l0.coerce.string(),align:l0.enum(["left","right"]).optional()})).min(1),rows:l0.array(sK6).min(1),highlightRow:l0.coerce.number().optional()}),l0.object({template:l0.literal("products"),products:l0.array(l0.object({name:l0.coerce.string(),price:l0.coerce.string().optional(),image:l0.coerce.string().optional(),url:l0.coerce.string().optional()})).min(1)}),l0.object({template:l0.literal("list"),entries:l0.array(l0.object({label:l0.coerce.string(),severity:l0.enum(["error","warning","notice"]).catch("notice")})).min(1),moreCount:l0.coerce.number().optional()}),l0.object({template:l0.literal("keywords"),volumeLabel:l0.coerce.string().optional(),keywords:l0.array(l0.object({term:l0.coerce.string(),volume:l0.coerce.string(),position:l0.coerce.number().catch(0)})).min(1)}),l0.object({template:l0.literal("competitor"),metricLabel:l0.coerce.string().optional(),competitors:l0.array(l0.object({name:l0.coerce.string(),value:l0.coerce.string(),tone:o_.optional(),isYou:l0.boolean().optional()})).min(1)}),l0.object({template:l0.literal("scorecard"),rivalLabel:l0.coerce.string().optional(),dimensions:l0.array(l0.object({label:l0.coerce.string(),you:l0.coerce.string(),rival:l0.coerce.string().optional(),rivalName:l0.coerce.string().optional(),tone:o_.optional()})).min(1)})]),Nc$=l0.object({...eK6,template:$H6})});function gA0($){let Z=[],X=[...$.sections].sort((Y,G)=>Y.position-G.position).map((Y)=>{let G=Nc$.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 SZ1=D(()=>{Uc$()});import{join as Oc$}from"path";async function XH6($){try{let Z=await fetch(`${QK({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(ZH6)});if(!Z.ok)return null;let X=await Z.json(),{deck:Q}=gA0(X);if(!Q.slides.length)return null;let Y=Q.slides.find((W)=>W.template.template==="cover"),G=Y?.template,J=G&&G.template==="cover"?G:void 0;return{brand:Q.meta.brand?.trim()||VZ1($),score:Q.meta.scores?.cover??J?.score?.value,verdict:Y?.annotation?.trim()||Y?.headline?.trim()||void 0}}catch{return null}}function FG($){return $.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""")}function QH6($,Z){let X=Au($),Q=Z?.brand?.trim()||VZ1(X),Y=Hc$(X,128),J=`${(b0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(X)}`,{title:W,description:K}=Fc$({brand:Q,domain:X,score:Z?.score,verdict:Z?.verdict}),H=`${J}/og.png`,F=`${Q} commerce report by decocms`;return[`<title>${FG(W)}</title>`,`<meta name="description" content="${FG(K)}" />`,'<meta name="robots" content="noindex, follow" />','<meta property="og:type" content="website" />','<meta property="og:site_name" content="decocms" />',`<meta property="og:title" content="${FG(W)}" />`,`<meta property="og:description" content="${FG(K)}" />`,`<meta property="og:url" content="${FG(J)}" />`,`<meta property="og:image" content="${FG(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${FG(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${FG(W)}" />`,`<meta name="twitter:description" content="${FG(K)}" />`,`<meta name="twitter:image" content="${FG(H)}" />`,`<meta name="twitter:image:alt" content="${FG(F)}" />`,`<link rel="canonical" href="${FG(J)}" />`,`<link rel="icon" href="${FG(Y)}" sizes="any" />`].join(`
|
|
2865
2865
|
`)}function YH6($,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}
|
|
2866
2866
|
</head>`)}function Bc$($){let Z=new F1;return Z.get("/:domain/og.png",async(X)=>{let Q=Au(X.req.param("domain")),Y=async()=>{let G=$?Bun.file(Oc$($,"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(`${QK({})}/api/v2/public/diagnostics/${encodeURIComponent(Q)}/og.png`,{signal:AbortSignal.timeout(GH6)}),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=$?Oc$($,"index.html"):null,G=Y?Bun.file(Y):null;if(!G||!await G.exists())return X.notFound();let J=await G.text();try{let W=await XH6(Au(Q)),K=QH6(Q,W);return X.html(YH6(J,K),200,{"Cache-Control":"public, max-age=0, s-maxage=300"})}catch{return X.html(J)}}),Z}var ZH6=2500,GH6=1e4;var Dc$=D(()=>{D8();SZ1();mw();q$()});function na($,Z){return fetch(`${QK({})}${$}`,Z)}async function JH6($,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 na(`/api/v2/public/diagnostics/${encodeURIComponent($)}${Y}`,{headers:{Accept:"application/json"}});if(G.status===404)return{status:"not_found",deck:null,scanned_at:null,drops:[]};if(!G.ok)throw Error(`report read HTTP ${G.status}`);let J=await G.json(),{deck:W,drops:K}=gA0(J);return{status:W.slides.length?"ready":"empty",deck:W,scanned_at:J.scanned_at,drops:K}}var WH6,SN,Lc$=async($,Z)=>{if(!$.get("reportUser"))return $.json({error:"Authentication required"},401);await Z();return},wc$;var Ec$=D(()=>{D8();gY();mw();SZ1();WH6=new Set(["complete","errored","terminated","unknown"]),SN=new F1;SN.use("*",async($,Z)=>{let X=await F8.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});SN.use("/link-token/*",Lc$);SN.use("/suggest",Lc$);SN.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 JH6(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)}});SN.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 na("/api/v2/diagnostics/run",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${dw({})}`},body:JSON.stringify({url:Q,...Y?{email:Y}:{},distinct_id:G})});if(!J.ok)return $.json({error:`run HTTP ${J.status}`},502);let W=await J.json(),K=W.blocked?{state:"blocked"}:W.status==="fresh"?{state:"fresh"}:W.mode==="sync"?{state:"sync"}:{state:"running",id:W.id??null};return $.json(K)}catch{return $.json({error:"run failed"},502)}});SN.get("/status",async($)=>{let Z=$.req.query("id");if(!Z)return $.json({error:"id is required"},400);try{let X=await na(`/api/v2/diagnostics/status?id=${encodeURIComponent(Z)}`,{headers:{Authorization:`Bearer ${dw({})}`}});if(!X.ok)return $.json({error:`status HTTP ${X.status}`},502);let Y=(await X.json()).status??"unknown",G={done:WH6.has(Y),status:Y};return $.json(G)}catch{return $.json({error:"status failed"},502)}});SN.get("/link-token/:id",async($)=>{let Z=$.req.param("id");try{let X=await na(`/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)}});SN.get("/suggest",async($)=>{let Z=($.req.query("q")??"").trim().slice(0,64);if(Z.length<2)return $.json({suggestions:[]});try{let X=await na(`/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:[]})}});wc$=SN});import{createHmac as KH6,timingSafeEqual as HH6}from"crypto";function zc$($,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)>FH6)return!1;let W=KH6("sha256",X).update(`${Y}.${$}`).digest("hex"),K=Buffer.from(W,"hex");return G.some((H)=>{let F=Buffer.from(H,"hex");return K.length===F.length&&HH6(K,F)})}function Pc$($){let Z;try{Z=JSON.parse($)}catch{return null}let X=SJ(Z),Q=SJ(SJ(X?.data)?.object);if(!X||typeof X.type!=="string"||!Q)return null;return{id:FH(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 Ac$($){switch($){case"active":case"trialing":return"active";case"past_due":return"past_due";default:return"canceled"}}function FH($){return typeof $==="string"?$:void 0}function SJ($){return typeof $==="object"&&$!==null?$:void 0}function hA0($){return typeof $==="number"?new Date($*1000):null}function vZ1($){return FH($)??FH(SJ($)?.id)}function NH6($){return vZ1($.subscription)??FH(SJ(SJ($.parent)?.subscription_details)?.subscription)}function UH6($){let Z=hA0($.current_period_end);if(Z)return Z;let X=SJ($.items)?.data;if(!Array.isArray(X))return null;let Q=0;for(let Y of X){let G=SJ(Y)?.current_period_end;if(typeof G==="number"&&G>Q)Q=G}return Q>0?new Date(Q*1000):null}function CZ1($,Z){let X=hA0($.created);return!!X&&!!Z.lastStripeEventAt&&X<Z.lastStripeEventAt}function _Z1($,Z){let X=hA0($.created);if(!X)return;return Z.lastStripeEventAt&&Z.lastStripeEventAt>X?void 0:X}async function OH6($,Z){let X=Z.data.object;switch(Z.type){case"checkout.session.completed":case"checkout.session.async_payment_succeeded":{let Q=FH(SJ(X.metadata)?.orgId);if(!Q)return{handled:!1,reason:"no orgId"};if(FH(SJ(X.metadata)?.kind)==="topup"){if(X.mode!=="payment")return{handled:!1,reason:"topup with wrong mode"};if(FH(X.payment_status)!=="paid")return{handled:!1,reason:"payment not confirmed"};let J=FH(X.id);if(!J)return console.error("stripe webhook: topup session without id",{eventId:Z.id,organizationId:Q}),{handled:!1,reason:"topup session without id"};let W=Number(SJ(X.metadata)?.creditCents);if(!Number.isInteger(W)||W<=0)return console.error("stripe webhook: paid topup with bad metadata \u2014 credit NOT applied",{eventId:Z.id,organizationId:Q,creditCents:SJ(X.metadata)?.creditCents}),{handled:!1,reason:"bad topup metadata"};return{handled:!0,organizationId:Q,topUp:{creditCents:W,referenceId:`stripe-topup:${J}`}}}if(X.mode!=="subscription")return{handled:!1,reason:"not a subscription checkout"};if(FH(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=vZ1(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(CZ1(Z,Y))return{handled:!1,reason:"stale event"};return await $.updateStripeState(Q,{stripeCustomerId:vZ1(X.customer),stripeSubscriptionId:G,status:"active",lastStripeEventAt:_Z1(Z,Y)}),{handled:!0,organizationId:Q}}case"customer.subscription.updated":case"customer.subscription.deleted":{let Q=FH(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&&CZ1(Z,Y))return{handled:!1,reason:"stale event"};let J=G?"canceled":Ac$(X.status);return await $.updateStripeState(Y.organizationId,{status:J,currentPeriodEnd:UH6(X),...G&&{stripeSubscriptionId:null},lastStripeEventAt:_Z1(Z,Y)}),{handled:!0,organizationId:Y.organizationId}}case"invoice.paid":{let Q=NH6(X);if(!Q)return{handled:!1,reason:"no sub id"};let Y=await $.getBillingByStripeSubscriptionId(Q);if(!Y)return{handled:!1,reason:"unknown subscription"};if(CZ1(Z,Y))return{handled:!1,reason:"stale event"};return await $.updateStripeState(Y.organizationId,{status:"active",currentPeriodEnd:hA0(X.period_end),lastStripeEventAt:_Z1(Z,Y)}),{handled:!0,organizationId:Y.organizationId}}default:return{handled:!1,reason:`unhandled event ${Z.type}`}}}function BH6($,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:Ac$(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 jc$($,Z){let X=BH6($,Z);if(!X)return;vY({event:X.name,organizationId:X.organizationId,...$.id?{uuid:fp1(`stripe:${$.id}:${X.name}`)}:{},...$.created?{timestamp:new Date($.created*1000)}:{},properties:X.properties})}async function Tc$($){let Z=new eW(l8().db),X=await OH6(Z,$);if(!(X.handled&&X.topUp))jc$($,X);if(X.handled&&X.topUp)await Zw$({organizationId:X.organizationId,amountCents:X.topUp.creditCents,referenceId:X.topUp.referenceId}),jc$($,X);if(!X.handled&&X.orphanSubscriptionId)try{await rs1(X.orphanSubscriptionId),console.error("stripe webhook: canceled orphan subscription",{subscriptionId:X.orphanSubscriptionId,eventId:$.id})}catch(Q){if(!(Q instanceof hY&&(Q.status===400||Q.status===404)))throw Q}return X}var FH6=300;var Rc$=D(()=>{gG();C4();o60();ew();ie0()});var DH6=1048576,fZ1;var Ic$=D(()=>{D8();jN();q$();Rc$();fZ1=new F1;fZ1.post("/webhook",V9({maxSize:DH6,onError:($)=>$.json({error:"payload too large"},413)}),async($)=>{let Z=b0().stripeWebhookSecret;if(!Z)return $.json({error:"stripe billing not configured"},503);let X=await $.req.text();if(!zc$(X,$.req.header("stripe-signature"),Z))return $.json({error:"invalid signature"},400);let Y=Pc$(X);if(!Y)return $.json({error:"invalid payload"},400);let G=await Tc$(Y);return console.log("stripe webhook",{eventId:Y.id,type:Y.type,livemode:Y.livemode,...G}),$.json({received:!0})})});import{timingSafeEqual as LH6}from"crypto";function EH6($,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 LH6(Buffer.from(Y),Buffer.from(Q))}var wH6=5242880,bZ1;var qc$=D(()=>{D8();jN();Wn();bZ1=new F1;bZ1.post("/webhook",V9({maxSize:wH6,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(!EH6(X,$.req.header("x-hub-signature-256"),Z))return $.json({error:"invalid signature"},400);if($.req.header("x-github-event")!=="push")return $.json({ok:!0,ignored:"event"});let Q;try{Q=JSON.parse(X)}catch{return $.json({error:"invalid payload"},400)}let Y=Q.ref,G=Q.repository?.full_name;if(!Y||!G)return $.json({ok:!0,ignored:"shape"});let W=(await op0())?.markTenantPoolsDirty(G,Y)??[];return $.json({ok:!0,pools:W})})});function Mc$($,Z){if(Z.startsWith("text/html")||Z.startsWith("image/svg"))$.set("Content-Security-Policy","sandbox allow-scripts allow-modals allow-same-origin")}var kc$,jH6,zH6,Vc$;var Sc$=D(()=>{D8();L3();ty();yx();kc$=new F1,jH6=["range","if-none-match","if-modified-since"],zH6=["content-type","content-length","content-range","accept-ranges","etag","last-modified"];kc$.get("/:org/files/*",async($)=>{let Z=$.get("studioContext"),X=Z.organization?.id;if(!Z.auth?.user?.id){if(th($))return $.redirect(`/login?next=${encodeURIComponent($.req.path)}`,302);throw new Z$(401,{message:"Authentication required"})}if(!X)throw new Z$(401,{message:"Organization context required"});let Q=$.req.path.replace(/^.*\/files\//,"");if(!Q)throw new Z$(400,{message:"Missing file key"});let Y=await sn(Q,Z);if(!Y)throw new Z$(503,{message:"Object storage not configured"});if(Y.startsWith("data:")&&lG()){let K=Y.match(/^data:([^;]+);base64,(.+)$/s);if(!K)throw new Z$(500,{message:"Invalid data URL from storage"});let[,H,F]=K,N=Buffer.from(F,"base64"),U=new Headers({"Content-Type":H,"Cache-Control":"private, max-age=86400"});return Mc$(U,H),new Response(N,{status:200,headers:U})}let G=new Headers;for(let K of jH6){let H=$.req.header(K);if(H)G.set(K,H)}let J=await fetch(Y,{headers:G});if(J.status===403||J.status===404)throw new Z$(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 Z$(502,{message:"Upstream storage error"});let W=new Headers;for(let K of zH6){let H=J.headers.get(K);if(H)W.set(K,H)}return W.set("Cache-Control","private, max-age=86400"),Mc$(W,W.get("content-type")??""),new Response(J.body,{status:J.status,headers:W})});Vc$=kc$});var ta=_((r_)=>{var PH6=r_&&r_.__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]}),AH6=r_&&r_.__exportStar||function($,Z){for(var X in $)if(X!=="default"&&!Object.prototype.hasOwnProperty.call(Z,X))PH6(Z,$,X)};Object.defineProperty(r_,"__esModule",{value:!0});AH6(EY(),r_)});var vc$=_((Cc$)=>{Object.defineProperty(Cc$,"__esModule",{value:!0});Cc$.version=void 0;Cc$.version="3.4.0"});var xc$=_((NH)=>{var TH6=NH&&NH.__importDefault||function($){return $&&$.__esModule?$:{default:$}};Object.defineProperty(NH,"__esModule",{value:!0});NH.NodeTransport=NH.VERSION=void 0;NH.nodeResolveHost=VH6;var r6=ta(),RH6=z0("net"),xZ1=z0("tls"),IH6=z0("path"),fc$=z0("fs"),qH6=TH6(z0("dns")),MH6=vc$();NH.VERSION=MH6.version;var kH6="nats.js";class bc${socket;version;lang;yields=[];signal=(0,r6.deferred)();closedNotification=(0,r6.deferred)();options;connected=!1;tlsName="";done=!1;closeError;constructor(){this.lang=kH6,this.version=NH.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,r6.checkOptions)(Y,Z);let{tls_required:G,tls_available:J}=Y,W=J===!0&&Z.tls!==null;if(!Q&&(G||W))this.socket=await this.startTLS();if(this.done)this.socket?.destroy();if(G&&this.socket.encrypted!==!0)throw r6.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 r6.errors.ConnectionError("error connecting - node provided an undefined error");let{code:J}=G,W=J==="ECONNREFUSED"?new r6.errors.ConnectionError("connection refused",{cause:G}):G;throw this.socket?.destroy(),W}}dial($){let Z=(0,r6.deferred)(),X,Q=(0,RH6.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,r6.deferred)(),Z;return this.socket.on("data",(X)=>{this.yields.push(X);let Q=r6.DataBuffer.concat(...this.yields),Y=(0,r6.extractProtocolMessage)(Q);if(Y!=="")try{let G=r6.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,r6.deferred)();try{if($=(0,IH6.resolve)($),!(0,fc$.existsSync)($))Z.reject(Error(`${$} doesn't exist`));(0,fc$.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 W=await this.loadFile(Z);if(W)$.cert=W}else if(X)$.cert=X;if(G){let W=await this.loadFile(G);if(W)$.key=W}else if(J)$.key=J;if(Q){let W=await this.loadFile(Q);if(W)$.ca=[W]}else if(Y)$.ca=Y;return Promise.resolve($)}catch(W){return Promise.reject(W)}}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,r6.extend)(X,this.options.tls,Y)}catch(Y){return Promise.reject(new r6.errors.ConnectionError(Y.message,{cause:Y}))}let Q=(0,r6.deferred)();try{let Y=(0,xZ1.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 r6.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,r6.extend)(Z,this.options.tls,Q)}catch(Q){return Promise.reject(new r6.errors.ConnectionError(Q.message,{cause:Q}))}let X=(0,r6.deferred)();try{let Q=(0,xZ1.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 r6.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,r6.render)($[Z])}`);yield $[Z]}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,r6.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 xZ1.TLSSocket}_send($){if(this.isClosed||this.socket===void 0)return Promise.resolve();if(this.options.debug)console.info(`< ${(0,r6.render)($)}`);let Z=(0,r6.deferred)();try{this.socket.write($,(X)=>{if(X){if(this.options.debug)console.error(`!!! ${(0,r6.render)($)}: ${X}`);return Z.reject(X)}return Z.resolve()})}catch(X){if(this.options.debug)console.error(`!!! ${(0,r6.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}}NH.NodeTransport=bc$;function VH6($){let Z=(0,r6.deferred)();return qH6.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 cc$=_((uc$)=>{Object.defineProperty(uc$,"__esModule",{value:!0});uc$.connect=SH6;var yc$=xc$(),gc$=ta(),hc$=ta();function SH6($={}){if((0,hc$.hasWsProtocol)($))return Promise.reject(hc$.errors.InvalidArgumentError.format("servers","node client doesn't support websockets, use the 'wsconnect' function instead"));return(0,gc$.setTransportFactory)({factory:()=>{return new yc$.NodeTransport},dnsResolveFn:yc$.nodeResolveHost}),gc$.NatsConnectionImpl.connect($)}});var lc$=_((CN)=>{var _H6=CN&&CN.__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]}),vH6=CN&&CN.__exportStar||function($,Z){for(var X in $)if(X!=="default"&&!Object.prototype.hasOwnProperty.call(Z,X))_H6(Z,$,X)};Object.defineProperty(CN,"__esModule",{value:!0});CN.connect=void 0;var fH6=cc$();Object.defineProperty(CN,"connect",{enumerable:!0,get:function(){return fH6.connect}});vH6(ta(),CN)});function pc$($){let Z=$?.connectFn??gH6,X=null,Q=null,Y=!1,G=!1,J=!1,W=[];function K(){return X!==null&&!X.isClosed()&&!X.isDraining()&&!J}function H(){console.log(`[NatsProvider] fireReady: ${W.length} callbacks`);for(let U of W)try{U()}catch{}}function F(U){(async()=>{for await(let O of U.status())if(O.type==="disconnect")console.log("[NatsProvider] Disconnected"),J=!0;else if(O.type==="reconnect")console.log("[NatsProvider] Reconnected, re-firing ready callbacks"),J=!1,Q=null,H()})().catch(()=>{})}async function N(U,O){let B=0;while(!G)try{X=await Z({servers:U,timeout:yH6,reconnect:!0,maxReconnectAttempts:-1,...O?{authenticator:O}:{}}),console.log(`[NatsProvider] Connected to ${X.getServer()} after ${B} attempt(s)`),Q=null,J=!1,F(X),H();return}catch{B++;let L=oZ(xH6,bH6,B-1,2,0.5);await D$(L)}}return{init(U,O){if(Y)return;Y=!0,G=!1;let B=O?.creds?dc$.credsAuthenticator(new TextEncoder().encode(O.creds)):void 0;N(U,B).catch(()=>{})},isConnected(){return K()},getConnection(){return K()?X:null},getJetStream(){if(!K())return null;if(!Q)Q=ic$.jetstream(X);return Q},onReady(U){if(W.push(U),K())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 gH6($){return mc$.connect($)}var dc$,mc$,ic$,bH6=100,xH6=3000,yH6=3000;var nc$=D(()=>{w4();dc$=V(nu(),1),mc$=V(lc$(),1),ic$=V(pD(),1)});function yZ1($,Z){return`${$}.${Z}`}class gZ1{cache;constructor($){this.cache=Ch({ttlMs:$?.ttlMs??hH6,maxSize:$?.maxSize??uH6})}async get($,Z){return this.cache.get(yZ1($,Z))??null}async set($,Z,X){this.cache.set(yZ1($,Z),X)}async invalidate($,Z){this.cache.delete(yZ1($,Z))}teardown(){this.cache.clear()}}var hH6=600000,uH6=5000;var tc$=()=>{};function uA0($,Z){return`${$}:${Z}`}function hZ1($){let Z=Ch({ttlMs:$?.ttlMs??cH6,maxSize:$?.maxSize??lH6}),X=$?.getConnection,Q=crypto.randomUUID(),Y=new TextEncoder,G=new TextDecoder,J=null;function W(K,H){let F=X?.();if(!F)return;try{F.publish(oc$,Y.encode(JSON.stringify({organizationId:K,keyId:H,originId:Q})))}catch(N){console.warn("[ProviderKeyCache] Publish failed (non-critical):",N)}}return{get(K,H){return Z.get(uA0(K,H))},set(K,H,F){Z.set(uA0(K,H),F)},invalidate(K,H){Z.delete(uA0(K,H)),W(K,H)},start(){if(J)return;let K=X?.();if(!K)return;J=K.subscribe(oc$),(async()=>{for await(let H of J)try{let F=JSON.parse(G.decode(H.data));if(F.originId===Q)continue;Z.delete(uA0(F.organizationId,F.keyId))}catch{}})().catch(console.error)},teardown(){J?.unsubscribe(),J=null,Z.clear()}}}var oc$="studio.ai-provider-keys.invalidate",cH6=30000,lH6=5000;var rc$=()=>{};class uZ1{options;subscriptions=[];onCancel=null;encoder=new TextEncoder;originId=crypto.randomUUID();seenMessageIds=new Set;constructor($){this.options=$}async start($){if($)this.onCancel=$;if(this.subscriptions.length>0)return;if(!this.onCancel)return;let Z=this.options.getConnection();if(!Z)return;let X=new TextDecoder;this.subscriptions=ac$.map((Q)=>Z.subscribe(Q));for(let Q of this.subscriptions)(async()=>{for await(let Y of Q)try{let G=JSON.parse(X.decode(Y.data));if(G.originId===this.originId)continue;if(G.messageId&&this.hasSeen(G.messageId))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,messageId:crypto.randomUUID()}));for(let Q of ac$)Z.publish(Q,X)}catch(Z){console.warn("[NatsCancelBroadcast] Publish failed (non-critical):",Z)}}publishControlFrame($,Z){}async stop(){for(let $ of this.subscriptions)$.unsubscribe();this.subscriptions=[],this.seenMessageIds.clear(),this.onCancel=null}hasSeen($){if(this.seenMessageIds.has($))return!0;if(this.seenMessageIds.add($),this.seenMessageIds.size>1000){let Z=this.seenMessageIds.values().next().value;if(Z)this.seenMessageIds.delete(Z)}return!1}}var ac$;var sc$=D(()=>{ac$=["studio.decopilot.cancel","mesh.decopilot.cancel"]});var ec$=($)=>{let Z;return()=>Z??=$()},cZ1,lZ1;var $l$=D(()=>{I6();cZ1=ec$(()=>L$.createHistogram("decopilot.stream.encode_ms",{description:"Per-chunk JSON.stringify+encode time for decopilot stream",unit:"ms"})),lZ1=ec$(()=>L$.createCounter("decopilot.stream.published_chunks",{description:"Logical decopilot stream chunks published to JetStream",unit:"{chunks}"}))});function oH6(){return{name:aF,subjects:[`${LL0}.>`],storage:BW.StorageType.File,max_age:iH6,max_bytes:nH6,max_msgs_per_subject:tH6,discard:BW.DiscardPolicy.Old,retention:BW.RetentionPolicy.Limits,duplicate_window:pH6,num_replicas:1}}class Ql${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 Zl$($){let Z=Xl$.headers();for(let[X,Q]of Object.entries($))Z.set(X,Q);return Z}function eH6($,Z){let X=0;return{publish(Q,Y,G,J){Q.publish(Y,G,J?{headers:J}:void 0).catch((W)=>{if(X++,mH6().add(1,{"org.id":Z??"unknown"}),X===1||X%100===0)console.warn(`[Decopilot] JetStream publish failed for thread ${$} (${X} total):`,W)})},get errorCount(){return X}}}function $F6($){if(!($ instanceof Error))return!1;if($.name==="TimeoutError")return!0;return/timeout|no responders|503/i.test($.message)}class dZ1{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=oH6(),X=await v5(async()=>{let Q=this.options.getJetStreamManager?await this.options.getJetStreamManager():await BW.jetstreamManager($);try{await Q.streams.info(aF),await Q.streams.update(aF,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(aF),await Q.streams.add(Z);else throw Y}return Q},{maxAttempts:5,minTimeout:250,maxTimeout:4000,jitter:0.5,isRetriable:$F6});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=eH6(Z,Q),J=!1,W=()=>{if(J)return;J=!0;let H=YU$(Z);Y.publish(H.subject,H.data).catch(()=>{})};X.addEventListener("abort",W,{once:!0});let K=(H)=>{let F=performance.now(),N=Ur0(H,{runId:Z}),U=performance.now()-F;if(cZ1().record(U),lZ1().add(1,{"org.id":Q??"unknown"}),sH6?.record(U,N.reduce((O,B)=>O+B.data.length,0)),N.length===0){console.warn(`[Decopilot] dropping oversized stream chunk for thread ${Z}`);return}for(let O of N)G.publish(Y,O.subject,O.data,O.headers?Zl$(O.headers):void 0)};return(async()=>{let H=$.getReader(),F=0,N=0,U;try{while(!0){let{done:O,value:B}=await H.read();if(O)break;if(K(B),N++,++F>=64)F=0,await new Promise((L)=>setImmediate(L))}}catch(O){U=O,console.warn(`[Decopilot] stream pump error for thread ${Z}:`,O?.message??O)}finally{if(H.releaseLock(),W(),aH6)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 publishRawChunk($,Z,X){let Q=this.js;if(!Q)return!1;let Y=performance.now(),G=Ur0(Z,{runId:$,dedup:X});if(cZ1().record(performance.now()-Y),lZ1().add(1),G.length===0)return console.warn(`[Decopilot] dropping oversized raw chunk for thread ${$} (> MAX_CHUNKED_BYTES)`),!0;for(let J of G)await Q.publish(J.subject,J.data,{...J.headers?{headers:Zl$(J.headers)}:{},...J.msgId?{msgID:J.msgId}:{}});return!0}async publishDone($,Z,X){let Q=this.js;if(!Q)return!1;let Y=QU$({runId:$,fenceToken:Z,finalSeq:X});return await Q.publish(Y.subject,Y.data,{msgID:Y.msgId}),!0}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"?BW.DeliverPolicy.New:BW.DeliverPolicy.All,G=X?.closeOnDone??!1,J=gB($),W;try{W=await(await Q.consumers.get(aF,{filter_subjects:J,deliver_policy:Y})).consume()}catch(L){return console.warn("[Decopilot] JetStream tail unavailable (non-critical):",L?.message??L),null}let F=PL0({messages:async function*(){try{for await(let L of W)yield{subject:L.subject,data:L.data,headers:L.headers}}finally{W.stop()}}(),onCancel:()=>W.stop()}).pipeThrough(wL0()).pipeThrough(EL0()).getReader(),N=!1,U=()=>{if(N)return;N=!0;try{F.releaseLock()}catch{}},O=!1,B=()=>{if(O)return;O=!0,W.stop(),F.cancel().catch(()=>{}),U()};return Z?.addEventListener("abort",B,{once:!0}),new ReadableStream({async pull(L){for(;;){let{done:w,value:E}=await F.read();if(w){B(),L.close();return}let j=E;if(j.kind==="done"){if(G){B(),L.close();return}continue}L.enqueue(j.chunk);return}},cancel(){B()}})}purge($){if(!this.jsm)return;this.jsm.streams.purge(aF,{filter:gB($)}).catch(()=>{})}teardown(){this.js=null,this.jsm=null}}var BW,Xl$,dH6=($)=>{let Z;return()=>Z??=$()},mH6,iH6=86400000000000,pH6=120000000000,nH6=4294967296,tH6=500000,rH6,aH6,sH6;var Yl$=D(()=>{w4();Or0();AL0();jL0();I6();$l$();BW=V(pD(),1),Xl$=V(nu(),1),mH6=dH6(()=>L$.createCounter("decopilot.stream.publish_errors",{description:"Number of JetStream publish failures for decopilot stream chunks",unit:"{errors}"}));rH6=process.env.STREAM_ENCODE_TRACE==="1",aH6=process.env.DECOPILOT_STREAM_TRACE==="1";sH6=rH6?new Ql$:null});function cA0($,Z,X,Q){if(!Q)return!1;return $.emit(Z,xW(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 Gl$=D(()=>{P8()});class mZ1{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 Jl$($,Z,X){let Q=Z.organizationId;if(Z.status!=="in_review")return!1;if(!Ya(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 F6($,{taskBoardItemId:Z.id,action:"status_changed",actorId:null,data:{from:Z.status,to:"done",reason:"pr_merged"}}),h$(Q,Y),console.log(`[task-board-review-sweeper] ${Z.id}: linked PR already merged \u2014 moved to done`),!0}var Wl$=D(()=>{HX();Ga();w5()});function WF6($){return $ instanceof a7}function KF6($,Z){return Z-$>=GF6}class iZ1{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??ZF6;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??QF6,X=this.options.itemIntervalMs??XF6,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:W}of Y)try{if(await this.reconcileItem(J,W,Q))$++}catch(K){console.error(`[task-board-review-sweeper] ${J} failed`,K)}await this.reapNeverStartedThreads(Z),$+=await this.dispatchDueRetries(Z),await this.reactToUnhandledFailures(Z)}catch(Z){console.error("[task-board-review-sweeper] sweep failed",Z)}finally{this.running=!1}return $}async reapNeverStartedThreads($){try{let Z=await this.taskBoard.failNeverStartedLinkedThreads($,new Date(Date.now()-kt0),No0);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()-JF6));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 Ho0(this.taskBoard,Y,Q),await Fo0(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!==T8)continue;let W=await this.contextFactory(Y,J.assignedBy??J.createdBy);if(!W)continue;await n3(W,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),WF6(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()+YF6)).catch((W)=>console.error(`[task-board-review-sweeper] re-arming ${Q} failed`,W))}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(()=>{}),h$(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(!KF6(AF(X),Date.now()))return;await vK($,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===T8,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 W=await Promise.all(G.map(async(K)=>({...K,...await ny(Z,K)})));if(W.every((K)=>K.state===null))console.warn(`[task-board-review-sweeper] ${$}: no live PR state from GitHub (${W.length} PR(s)) \u2014 proceeding on unknown`);if(await Jl$(J,Q,W.map((K)=>K.merged)))return!0;if(await mU$(J,Q))return!0;if(!Y)return!1;if(!Co0(W))return!1;return await uD0(J,Q,{previewMatchesHead:_o0(W)}),!0}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}var ZF6=60000,XF6=300000,QF6=50,YF6=60000,GF6=900000,JF6=120000;var Kl$=D(()=>{X9();Ao0();_K();Ut();Wl$();w5();pG();Uo0();HJ();tn()});import{readdir as HF6,rm as lA0}from"fs/promises";import{join as dA0}from"path";async function mA0($){let Z=new Date;Z.setUTCDate(Z.getUTCDate()-FF6),Z.setUTCHours(0,0,0,0);let X=0;try{let Q=await a_($);for(let Y of Q)if(/^\d{4}$/.test(Y))X+=await Hl$($,Y,Z);else if(!Y.startsWith(".")){let G=dA0($,Y),J=await a_(G);for(let K of J){if(!/^\d{4}$/.test(K))continue;X+=await Hl$(G,K,Z)}if((await a_(G)).length===0)await lA0(G,{recursive:!0,force:!0})}}catch(Q){console.warn("monitoring retention cleanup failed:",Q)}return X}async function Hl$($,Z,X){let Q=0,Y=dA0($,Z),G=await a_(Y);for(let W of G){if(!/^\d{2}$/.test(W))continue;let K=dA0(Y,W),H=await a_(K);for(let N of H){if(!/^\d{2}$/.test(N))continue;let U=new Date(`${Z}-${W}-${N}T00:00:00Z`);if(isNaN(U.getTime()))continue;if(U<X){let O=dA0(K,N);await lA0(O,{recursive:!0,force:!0}),Q++}}if((await a_(K)).length===0)await lA0(K,{recursive:!0,force:!0})}if((await a_(Y)).length===0)await lA0(Y,{recursive:!0,force:!0});return Q}async function a_($){try{return(await HF6($)).filter((X)=>!X.startsWith("."))}catch{return[]}}var FF6=30;var pZ1=()=>{};import{DBOS as nZ1,SchedulerMode as NF6}from"@dbos-inc/dbos-sdk";async function OF6(){let $=[vJ(),s_(),DH()],Z=0;for(let X of $)try{Z+=await mA0(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 BF6($,Z){await nZ1.runStep(()=>OF6(),{name:"monitoringRetention"})}function Nl$(){if(Fl$)return;Fl$=!0;let $=nZ1.registerWorkflow(BF6,{name:"monitoringRetentionWorkflow"});nZ1.registerScheduled($,{name:"monitoringRetentionWorkflow",crontab:UF6,mode:NF6.ExactlyOncePerIntervalWhenActive})}var UF6="23 4 * * *",Fl$=!1;var Ul$=D(()=>{BY();pZ1()});function Ol$($){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 WJ.create();Y.auth.user={id:X,role:Q.role},Y.organization={id:Q.orgId,slug:Q.orgSlug,name:Q.orgName};let G=await Xt($.db,Z,Q.role);return Y.boundAuth=i61({auth:Y.authInstance,headers:new Headers,role:Q.role,permissions:G,userId:X}),Y.access=new qw(X,void 0,Y.boundAuth,Q.role,"self"),CB(Y,{id:Q.orgId,slug:Q.orgSlug}),Y}}var Bl$=D(()=>{Mw();_B()});function DF6(){return{services:[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}],migrationsStatus:"pending",serverUrl:null,logs:[]}}function wF6(){for(let $ of LF6)$()}function Dl$($){let Z=[...tZ1.logs,$];tZ1={...tZ1,logs:Z.length>500?Z.slice(-500):Z},wF6()}function oZ1(){return EF6}var tZ1,LF6,EF6=!1;var rZ1=D(()=>{tZ1=DF6(),LF6=new Set});import{EventEmitter as jF6}from"events";var aZ1;var Ll$=D(()=>{rZ1();aZ1=new jF6;aZ1.on("request",($)=>{Dl$($)})});function wl$(){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 O=Tu(U.params.name),B=U.params.arguments||{},L=Object.keys(B).map((E)=>Tu(E)),w=L.length>0?L.slice(0,3).join(",")+(L.length>3?"\u2026":""):"";G=`${G5.tool}${O}${G5.dim}(${w})${G5.reset}`}else if(U.method)G=`${G5.dim}${Tu(U.method)}${G5.reset}`}}catch{}}let W=Tu(Y);if(Y.startsWith("/mcp/conn_")){let F=Y.split("/")[2]??"";W=`/mcp/${G5.mcp}${Tu(F.slice(0,12))}\u2026${G5.reset}`}else if(Y==="/mcp")W=`${G5.mcp}/mcp${G5.reset}`;else if(Y==="/mcp/registry")W=`${G5.mcp}/mcp/registry${G5.reset}`;let K=PF6(Q),H=J?"\u25C0":"\u2190";if(!oZ1())console.log(`${G5.dim}${H}${G5.reset} ${K}${Q}${G5.reset} ${W}${G?` ${G}`:""}`);try{await Z()}finally{let F=Date.now()-X,N=$.res.status,U=zF6(N),O=F<1000?`${F}ms`:`${(F/1000).toFixed(1)}s`,B=J?"\u25B6":"\u2192";if(!oZ1())console.log(`${G5.dim}${B}${G5.reset} ${K}${Q}${G5.reset} ${W}${G?` ${G}`:""} ${U}${N}${G5.reset} ${G5.duration}${O}${G5.reset}`);aZ1.emit("request",{method:Q,path:Tu(Y),status:N,duration:F,timestamp:new Date})}}}var G5,zF6=($)=>{if($>=500)return G5.serverError;if($>=400)return G5.clientError;if($>=300)return G5.redirect;return G5.ok},PF6=($)=>{return G5[$]||G5.reset},Tu=($)=>{return $.replace(/\r/g,"").replace(/\n/g,"").replace(/\x1b\[[0-9;]*m/g,"").replace(/[\x00-\x1f\x7f-\x9f]/g,"")};var El$=D(()=>{rZ1();Ll$();G5={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 Al$}from"crypto";import{mkdir as AF6,readdir as TF6,rm as jl$,stat as Tl$}from"fs/promises";import{join as eZ1,relative as RF6}from"path";import{z as A$}from"zod";function Il$($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return eZ1(IF6,Z)}function ql$($){return $.replace(/^\/+/,"").replace(/\.\./g,"")}function sZ1($,Z){let X=Il$($),Q=ql$(Z);return eZ1(X,Q)}function qF6($,Z,X,Q){let Y=b0().encryptionKey||"dev-secret",G=`${$}:${Z}:${X}:${Q}`;return Al$("sha256",Y).update(G).digest("hex")}function Pl$($,Z,X,Q,Y){let G=Math.floor(Date.now()/1000)+Q,J=qF6(Z,X,G,Y),W=new URL(`/api/dev-assets/${Z}/${ql$(X)}`,$);return W.searchParams.set("expires",G.toString()),W.searchParams.set("signature",J),W.searchParams.set("method",Y),W.toString()}function Ml$($,Z,X){let Q=`${$}:${Z.getTime()}:${X}`;return`"${Al$("md5","etag").update(Q).digest("hex")}"`}async function kl$($,Z,X,Q,Y){try{let G=await TF6($,{withFileTypes:!0});for(let J of G){let W=eZ1($,J.name),H=RF6(Z,W).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 kl$(W,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 Tl$(W);Y.objects.push({key:H,size:F.size,lastModified:F.mtime.toISOString(),etag:Ml$(W,F.mtime,F.size)})}catch{}}}}catch{}}function Vl$($,Z){let Q=t($).id;return[{name:"LIST_OBJECTS",description:"List objects in the local assets directory with pagination support",inputSchema:A$.object({prefix:A$.string().optional(),maxKeys:A$.number().optional().default(1000),continuationToken:A$.string().optional(),delimiter:A$.string().optional()}),outputSchema:A$.object({objects:A$.array(A$.object({key:A$.string(),size:A$.number(),lastModified:A$.string(),etag:A$.string()})),nextContinuationToken:A$.string().optional(),isTruncated:A$.boolean(),commonPrefixes:A$.array(A$.string()).optional()}),handler:async(Y)=>{let G=Y,J=G.prefix||"",W=G.maxKeys??1000,K=G.delimiter,H=G.continuationToken,F=Il$(Q);await AF6(F,{recursive:!0});let N={objects:[],commonPrefixes:new Set};await kl$(F,F,J,K,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 O=N.objects.slice(U,U+W),B=U+W<N.objects.length,L=B?O[O.length-1]?.key:void 0;return{objects:O,isTruncated:B,nextContinuationToken:L,commonPrefixes:Array.from(N.commonPrefixes).sort()}}},{name:"GET_OBJECT_METADATA",description:"Get metadata for a file in the local assets directory",inputSchema:A$.object({key:A$.string()}),outputSchema:A$.object({contentType:A$.string().optional(),contentLength:A$.number(),lastModified:A$.string(),etag:A$.string(),metadata:A$.record(A$.string(),A$.string()).optional()}),handler:async(Y)=>{let G=Y,J=sZ1(Q,G.key),W=await Tl$(J);return{contentType:V51(G.key),contentLength:W.size,lastModified:W.mtime.toISOString(),etag:Ml$(J,W.mtime,W.size)}}},{name:"GET_PRESIGNED_URL",description:"Generate a presigned URL for downloading a file from local storage",inputSchema:A$.object({key:A$.string(),expiresIn:A$.number().optional()}),outputSchema:A$.object({url:A$.string(),expiresIn:A$.number()}),handler:async(Y)=>{let G=Y,J=G.expiresIn??zl$;return{url:Pl$(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:A$.object({key:A$.string(),expiresIn:A$.number().optional(),contentType:A$.string().optional()}),outputSchema:A$.object({url:A$.string(),expiresIn:A$.number()}),handler:async(Y)=>{let G=Y,J=G.expiresIn??zl$;return{url:Pl$(Z,Q,G.key,J,"PUT"),expiresIn:J}}},{name:"DELETE_OBJECT",description:"Delete a single file from local storage",inputSchema:A$.object({key:A$.string()}),outputSchema:A$.object({success:A$.boolean(),key:A$.string()}),handler:async(Y)=>{let G=Y,J=sZ1(Q,G.key);try{return await jl$(J),{success:!0,key:G.key}}catch{return{success:!1,key:G.key}}}},{name:"DELETE_OBJECTS",description:"Delete multiple files from local storage",inputSchema:A$.object({keys:A$.array(A$.string()).max(1000)}),outputSchema:A$.object({deleted:A$.array(A$.string()),errors:A$.array(A$.object({key:A$.string(),message:A$.string()}))}),handler:async(Y)=>{let G=Y,J=[],W=[];return await Promise.all(G.keys.map(async(K)=>{let H=sZ1(Q,K);try{await jl$(H),J.push(K)}catch(F){W.push({key:K,message:F instanceof Error?F.message:"Unknown error"})}})),{deleted:J,errors:W}}}]}async function $71($,Z,X){let Q=Vl$(Z,X),Y=new dW({name:"dev-assets-mcp",version:"1.0.0"},{capabilities:{tools:{}},jsonSchemaValidator:F5});for(let J of Q){let W="shape"in J.inputSchema?J.inputSchema.shape:A$.object({}).shape,K=J.outputSchema&&"shape"in J.outputSchema?J.outputSchema.shape:A$.object({}).shape;Y.registerTool(J.name,{description:J.description??"",inputSchema:W,outputSchema:K,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 XQ({enableJsonResponse:$.headers.get("Accept")?.includes("application/json")??!1});return await Y.connect(G),BJ(Y,G,$,"mcp:dev-assets")}async function Sl$($,Z,X,Q){let G=Vl$(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 IF6="./data/assets",zl$=3600,Rl$,Cl$;var _l$=D(()=>{q$();Wg();D8();Ld();fC();yX();hP0();Rl$=new F1;Rl$.all("/",async($)=>{let Z=$.get("studioContext"),X=new URL($.req.url),Q=`${X.protocol}//${X.host}`;return $71($.req.raw,Z,Q)});Cl$=Rl$});var vl$={};J4(vl$,{mountDevRoutes:()=>MF6});function MF6($,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 $71(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}`,W=Q.req.param("toolName");if(!W)return Q.json({error:"Missing tool name"},400);let K=await Q.req.json(),H=await Sl$(W,K,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",Cl$);let X=new F1;X.use("*",UW({mountPath:"/api/dev-assets"})),X.route("/",gP0({orgFromPath:!1})),$.route("/api/dev-assets",X)}var fl$=D(()=>{D8();A51();hP0();_l$()});import{sql as kF6}from"kysely";import{randomUUID as bl$}from"crypto";import{z as VF6}from"zod";async function CF6($){let Z=new Date().toISOString(),X=bl$(),Q=S8.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((W)=>W.or([W("publisher","is",null),W("publisher","=",Q)])).execute();if(J.length>0)await $.db.insertInto("event_deliveries").values(J.map((W)=>({id:bl$(),event_id:X,subscription_id:W.id,status:"pending",attempts:0,last_error:null,delivered_at:null,next_retry_at:null,created_at:Z}))).execute();try{await kF6`SELECT
|
|
2867
2867
|
pg_notify('studio_events', ${X}),
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as B,b as L,j as r}from"./index-DS_PtpmP.js";import{I as A}from"./input-Dsyfk4jo.js";import{L as F}from"./label-AZH9h-dP.js";import{S as R,a as V,b as z,c as O,d as D}from"./select-v0HyS5wV.js";import{T as G}from"./textarea-CegtzxU_.js";import{G as J,V as M,K as X,X as $,a5 as q}from"./index-CV8Bfh5R.js";import{s as P}from"./primitives-CtBKfa_X.js";import{u as H}from"./use-autosave-iV8J_MuB.js";import"./Check-7fxTQqwV.js";import"./ChevronDown-DC3VmpPs.js";import"./ChevronUp-DklUcnpq.js";import"./ArrowUp-BjteiNgF.js";import"./chat-context-_CA_JeeY.js";import"./tab-id-BOj9dZWT.js";import"./dialog-CLVbCjMu.js";import"./Copy01-0rsYyxBd.js";import"./Download01-B_W2m-uX.js";import"./session-runtime-wVXsCwcJ.js";import"./hooks-DlPXzzl8.js";import"./use-mcp-client-Zz1TwEAh.js";import"./constants-_08zpzmT.js";import"./auth-BjDvWFq6.js";import"./decopilot-sse-pool-B2gldwFf.js";import"./backoff-CrEUbyZT.js";import"./delay-CnY5UFtP.js";import"./use-is-desktop-app-BNujXJc_.js";import"./use-virtual-mcp-BHOLpD1P.js";import"./use-ai-providers-DAYMp9NI.js";import"./use-decopilot-events-CUYP3xa6.js";import"./use-organization-settings-BZyz9Mop.js";import"./automation-runs-BQpimZeU.js";import"./agent-icon-BRsJ64Gp.js";import"./AlertCircle-C8ZNKM0T.js";import"./Tool01-K1KtrUp3.js";import"./ArrowLeft-C4S3t4gh.js";import"./Tool02-CaMOVLUq.js";import"./XCircle-qXvFFF3a.js";import"./TrendUp01-Cpu4_O9X.js";import"./ZapSquare-B8eYKtXE.js";import"./Users03-C1f0X_bD.js";import"./UserSquare-DtGKXF0N.js";import"./CheckCircle-Ds0VlJAl.js";import"./ChevronRight-DB1jERJP.js";import"./ChevronSelectorVertical-B9rG_ZYr.js";import"./DotsVertical-CtEAbV8O.js";import"./Stars02-DTCJxH0_.js";import"./CreditCard01-C02kJIQ-.js";import"./Settings02-Bvo1tVwA.js";import"./Eye-CCl0QwVV.js";import"./FilterLines-v44MczT5.js";import"./Share07-3Y0P_W3_.js";import"./Globe01-Dr2wIPy6.js";import"./Globe04-BlbLK8Qh.js";import"./SwitchHorizontal01-CQZ9t4Uh.js";import"./HardDrive-DKQRwLSP.js";import"./Key01-kpUUZaqy.js";import"./LinkExternal01-NyjdMVf7.js";import"./LockUnlocked01-DsKz0Xl2.js";import"./LogOut01-Dd8QdhEu.js";import"./Monitor01-CCXNZQlH.js";import"./Sun-DBnfC6xb.js";import"./Palette-BffjPXio.js";import"./Play-D8AheaUt.js";import"./Plus-DfL6u6I_.js";import"./SearchLg-D1p_gJI8.js";import"./SearchMd-DVItXoZb.js";import"./Shield01-C4putjAN.js";import"./Stars01-ClK-g0zk.js";import"./Trash01-Hh3vb-pV.js";import"./Upload01-PO1Z12J3.js";import"./User01-ClQH_5NK.js";import"./Users01-Bvqsn2Z0.js";import"./XClose-F4_KA-E6.js";import"./Zap-DK06ViId.js";import"./useInfiniteQuery-DrLMltTg.js";import"./use-infinite-scroll-DGa9MpTS.js";import"./use-connection-BJir_wda.js";import"./table-yXN-B6JM.js";import"./empty-state-BF41trPY.js";import"./use-members--D0gY-Nz.js";import"./use-org-auth-client-C8dt2CEh.js";import"./use-clock-tick-BuVoJTdT.js";import"./use-automations-DWv6iLeU.js";import"./useSuspenseInfiniteQuery-bgdhkmFx.js";import"./avatar-CiQyTRfd.js";import"./format-time-BnbuEtat.js";import"./differenceInSeconds-NQ4PDo0z.js";import"./use-copy-Ddcpb0Jm.js";import"./monaco-editor-CEXQCwfP.js";import"./spinner-Dzoa8exR.js";import"./types-CE4AuZSY.js";import"./shell-layout-Ca7ET_6R.js";import"./required-auth-layout-C8K6T2Dl.js";import"./use-org-sso-DAANUxzR.js";import"./integration-icon-DQzHhbi_.js";import"./use-navigate-to-agent-BTDz1KOs.js";import"./reusable-new-chat-CzvRy4Pe.js";import"./chart-56471C1Y.js";import"./index-B_Ad5QPQ.js";import"./form-BI3-Eb2L.js";import"./file-type-icon-wuRfMh_5.js";import"./drawer-Ckbm2CWJ.js";import"./collection-search-Bd6xu3h9.js";import"./tabs-DMoGi1te.js";import"./toggle-group-5omFh11U.js";import"./use-commerce-diagnostic-KLE4UXiE.js";import"./popover-BRZicoZW.js";import"./self-tool-result-r1jsmu7J.js";import"./alert-dialog-C6uvTNV5.js";import"./extract-connection-data-A9qAyYQA.js";import"./metadata-dUsYcpuu.js";import"./provision-repo-scoped-github-connection-CMPWtdMv.js";import"./use-debounced-value-DXPF8RW0.js";import"./authenticate-and-persist-oauth-CfcfVqDI.js";import"./mcp-oauth-CV7iuGWl.js";import"./track-B8qKGWO9.js";import"./toolbar-DORhO8If.js";import"./github-repo-picker-BMkV5srU.js";import"./use-mcp-tools-CXwtpaPy.js";import"./agent-capabilities-C4tLW0Za.js";import"./connection-card-DXUN0HbG.js";import"./use-registry-connections-DrNpncD0.js";import"./retry-CErkP7V6.js";import"./connection-slug-eyAPH6o3.js";import"./connection-form-helpers-Dw_uRR_o.js";import"./collection-tabs-3ta98PDW.js";import"./badge-Dp3mR27V.js";import"./command-pFth6-af.js";import"./index-B1veCTx1.js";import"./select-model-DbrnwWTj.js";import"./checkbox-C1bUrPvW.js";import"./ai-providers-logos-DD3qZ33J.js";import"./cards-BKUYovMU.js";import"./dropdown-menu-D2aUCLYk.js";import"./question-004-sINsf4GQ.js";import"./use-status-sounds-CjE1Nwyt.js";import"./use-file-configs-BZNx7FRl.js";import"./pt-BR-CLy76QW2.js";import"./switch-CPOt6c8D.js";import"./use-debounced-autosave-DYJOZB4t.js";import"./search-input-BMFjaZW8.js";import"./index-C2XLHMiw.js";import"./use-secrets-XCXR_vh8.js";import"./AreaChart-BYK2gWYF.js";import"./task-key-C2W_oYAM.js";import"./sprints-BDnw_QJc.js";import"./use-tags-CtHBcu1c.js";import"./get-initials-D-f_fDFw.js";import"./automation-list-row-BO2X7Ov7.js";import"./site-error--i37Vnuw.js";import"./use-org-repo-syncs-BMPkdDGr.js";const Q={authors:[{key:"name",labelKey:"sandbox.recordEditor.fieldName",widget:"text"},{key:"type",labelKey:"sandbox.recordEditor.fieldType",widget:"select",options:[{value:"Person",labelKey:"sandbox.recordEditor.optionPerson"},{value:"Organization",labelKey:"sandbox.recordEditor.optionOrganization"}]},{key:"email",labelKey:"sandbox.recordEditor.fieldEmail",widget:"text",placeholderKey:"sandbox.recordEditor.placeholderEmail"},{key:"jobTitle",labelKey:"sandbox.recordEditor.fieldJobTitle",widget:"text"},{key:"company",labelKey:"sandbox.recordEditor.fieldCompany",widget:"text"},{key:"avatar",labelKey:"sandbox.recordEditor.fieldAvatar",widget:"image"}]},U={authors:"sandbox.recordEditor.titleAuthor"};function Dr(I){const t=B.c(39),{orgSlug:E,virtualMcpId:K,branch:w,kind:a,blockKey:b,block:f}=I,i=L();let h;t[0]!==w||t[1]!==E||t[2]!==K?(h={orgSlug:E,virtualMcpId:K,branch:w},t[0]=w,t[1]=E,t[2]=K,t[3]=h):h=t[3];const p=J(h);let g;t[4]!==f||t[5]!==a?(g=M(f,a),t[4]=f,t[5]=a,t[6]=g):g=t[6];const C=g;let k;t[7]!==b||t[8]!==a||t[9]!==p?(k=l=>{p.mutate({blockKey:b,data:$(b,a,l)})},t[7]=b,t[8]=a,t[9]=p,t[10]=k):k=t[10];const[e,S]=H(C,k);let v;t[11]!==e||t[12]!==S?(v=(l,o)=>S({...e,[l]:o}),t[11]=e,t[12]=S,t[13]=v):v=t[13];const s=v,N=U[a];let n;t[14]!==i||t[15]!==N?(n=i(N),t[14]=i,t[15]=N,t[16]=n):n=t[16];let c;t[17]!==n?(c=r.jsx("span",{className:"text-sm font-medium",children:n}),t[17]=n,t[18]=c):c=t[18];let d;t[19]!==p.isError||t[20]!==p.isPending?(d=r.jsx(X,{isPending:p.isPending,isError:p.isError}),t[19]=p.isError,t[20]=p.isPending,t[21]=d):d=t[21];let y;t[22]!==c||t[23]!==d?(y=r.jsxs("div",{className:"flex h-12 shrink-0 items-center justify-between border-b px-6",children:[c,d]}),t[22]=c,t[23]=d,t[24]=y):y=t[24];const T=Q[a];let x;if(t[25]!==e||t[26]!==s||t[27]!==i||t[28]!==T){let l;t[30]!==e||t[31]!==s||t[32]!==i?(l=o=>r.jsx("div",{className:"space-y-2",children:o.widget==="image"?r.jsx(q,{schema:{type:"string",format:"image-uri",title:i(o.labelKey)},value:e[o.key],onChange:m=>s(o.key,m),path:o.key,label:i(o.labelKey)}):o.widget==="select"?r.jsxs(r.Fragment,{children:[r.jsx(F,{htmlFor:o.key,children:i(o.labelKey)}),r.jsxs(R,{value:P(e[o.key])||o.options?.[0]?.value,onValueChange:m=>s(o.key,m),children:[r.jsx(V,{id:o.key,className:"h-10 w-full",children:r.jsx(z,{placeholder:i(o.labelKey)})}),r.jsx(O,{children:(o.options??[]).map(m=>r.jsx(D,{value:m.value,children:i(m.labelKey)},m.value))})]})]}):r.jsxs(r.Fragment,{children:[r.jsx(F,{htmlFor:o.key,children:i(o.labelKey)}),o.widget==="textarea"?r.jsx(G,{id:o.key,value:P(e[o.key]),onChange:m=>s(o.key,m.target.value),rows:3}):r.jsx(A,{id:o.key,value:P(e[o.key]),placeholder:o.placeholderKey?i(o.placeholderKey):void 0,onChange:m=>s(o.key,m.target.value),className:"h-10"})]})},o.key),t[30]=e,t[31]=s,t[32]=i,t[33]=l):l=t[33],x=T.map(l),t[25]=e,t[26]=s,t[27]=i,t[28]=T,t[29]=x}else x=t[29];let u;t[34]!==x?(u=r.jsx("div",{className:"min-w-0 flex-1 overflow-y-auto px-6 py-6",children:r.jsx("div",{className:"mx-auto max-w-xl space-y-6",children:x})}),t[34]=x,t[35]=u):u=t[35];let j;return t[36]!==u||t[37]!==y?(j=r.jsxs("div",{className:"flex h-full flex-col",children:[y,u]}),t[36]=u,t[37]=y,t[38]=j):j=t[38],j}export{Dr as RecordEditor};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/registry-layout-DaMCQA8V.js","assets/index-DS_PtpmP.js","assets/index-DfOjcoHJ.css","assets/Tool02-CaMOVLUq.js","assets/CheckCircle-Ds0VlJAl.js","assets/Settings02-Bvo1tVwA.js","assets/use-mcp-client-Zz1TwEAh.js","assets/constants-_08zpzmT.js","assets/auth-BjDvWFq6.js","assets/useInfiniteQuery-DrLMltTg.js","assets/use-infinite-scroll-DGa9MpTS.js","assets/badge-Dp3mR27V.js","assets/input-Dsyfk4jo.js","assets/dropdown-menu-D2aUCLYk.js","assets/Check-7fxTQqwV.js","assets/ChevronRight-DB1jERJP.js","assets/DotsVertical-CtEAbV8O.js","assets/table-yXN-B6JM.js","assets/toggle-group-5omFh11U.js","assets/use-view-mode-D2QnCor3.js","assets/FilterLines-v44MczT5.js","assets/Globe01-Dr2wIPy6.js","assets/SearchMd-DVItXoZb.js","assets/dialog-CLVbCjMu.js","assets/AlertCircle-C8ZNKM0T.js","assets/Download01-B_W2m-uX.js","assets/Upload01-PO1Z12J3.js","assets/metadata-dUsYcpuu.js","assets/alert-dialog-C6uvTNV5.js","assets/Trash01-Hh3vb-pV.js","assets/label-AZH9h-dP.js","assets/select-v0HyS5wV.js","assets/ChevronDown-DC3VmpPs.js","assets/ChevronUp-DklUcnpq.js","assets/switch-CPOt6c8D.js","assets/textarea-CegtzxU_.js","assets/ArrowLeft-C4S3t4gh.js","assets/XCircle-qXvFFF3a.js","assets/checkbox-C1bUrPvW.js","assets/Eye-CCl0QwVV.js","assets/LinkExternal01-NyjdMVf7.js","assets/use-copy-Ddcpb0Jm.js","assets/Copy01-0rsYyxBd.js","assets/Key01-kpUUZaqy.js","assets/Plus-DfL6u6I_.js","assets/mcp-oauth-CV7iuGWl.js","assets/Play-D8AheaUt.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{c as i,j as e,r as s,k as a,bc as o}from"./index-DS_PtpmP.js";import{R as c}from"./require-capability-BuB0VaIt.js";import"./access-gate-C5Y4THSz.js";import"./capability-load-error-DcN5DOFH.js";const n=s.lazy(()=>o(()=>import("./registry-layout-DaMCQA8V.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46])));function u(){const r=i.c(1);let t;return r[0]===Symbol.for("react.memo_cache_sentinel")?(t=e.jsx(c,{capability:"registry:manage",area:"the registry",children:e.jsx(s.Suspense,{fallback:e.jsx("div",{className:"flex-1 flex items-center justify-center",children:e.jsx(a,{size:20,className:"animate-spin text-muted-foreground"})}),children:e.jsx(n,{})})}),r[0]=t):t=r[0],t}export{u as default};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/registry-layout-DaMCQA8V.js","assets/index-DS_PtpmP.js","assets/index-DfOjcoHJ.css","assets/Tool02-CaMOVLUq.js","assets/CheckCircle-Ds0VlJAl.js","assets/Settings02-Bvo1tVwA.js","assets/use-mcp-client-Zz1TwEAh.js","assets/constants-_08zpzmT.js","assets/auth-BjDvWFq6.js","assets/useInfiniteQuery-DrLMltTg.js","assets/use-infinite-scroll-DGa9MpTS.js","assets/badge-Dp3mR27V.js","assets/input-Dsyfk4jo.js","assets/dropdown-menu-D2aUCLYk.js","assets/Check-7fxTQqwV.js","assets/ChevronRight-DB1jERJP.js","assets/DotsVertical-CtEAbV8O.js","assets/table-yXN-B6JM.js","assets/toggle-group-5omFh11U.js","assets/use-view-mode-D2QnCor3.js","assets/FilterLines-v44MczT5.js","assets/Globe01-Dr2wIPy6.js","assets/SearchMd-DVItXoZb.js","assets/dialog-CLVbCjMu.js","assets/AlertCircle-C8ZNKM0T.js","assets/Download01-B_W2m-uX.js","assets/Upload01-PO1Z12J3.js","assets/metadata-dUsYcpuu.js","assets/alert-dialog-C6uvTNV5.js","assets/Trash01-Hh3vb-pV.js","assets/label-AZH9h-dP.js","assets/select-v0HyS5wV.js","assets/ChevronDown-DC3VmpPs.js","assets/ChevronUp-DklUcnpq.js","assets/switch-CPOt6c8D.js","assets/textarea-CegtzxU_.js","assets/ArrowLeft-C4S3t4gh.js","assets/XCircle-qXvFFF3a.js","assets/checkbox-C1bUrPvW.js","assets/Eye-CCl0QwVV.js","assets/LinkExternal01-NyjdMVf7.js","assets/use-copy-Ddcpb0Jm.js","assets/Copy01-0rsYyxBd.js","assets/Key01-kpUUZaqy.js","assets/Plus-DfL6u6I_.js","assets/mcp-oauth-CV7iuGWl.js","assets/Play-D8AheaUt.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{c,d as n,f as m,j as t,k as f,r as l,bc as p}from"./index-DS_PtpmP.js";import{R as u}from"./require-capability-BuB0VaIt.js";import"./access-gate-C5Y4THSz.js";import"./capability-load-error-DcN5DOFH.js";const g=l.lazy(()=>p(()=>import("./registry-layout-DaMCQA8V.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46])));function h(){const e=c.c(5),i=n();let s;e[0]===Symbol.for("react.memo_cache_sentinel")?(s={from:"/shell/$org"},e[0]=s):s=e[0];const{org:o}=m(s);let r;e[1]===Symbol.for("react.memo_cache_sentinel")?(r=t.jsx("div",{className:"h-full flex items-center justify-center",children:t.jsx(f,{size:20,className:"animate-spin text-muted-foreground"})}),e[1]=r):r=e[1];let a;return e[2]!==i||e[3]!==o?(a=t.jsx(u,{capability:"registry:manage",area:"the registry",children:t.jsx(l.Suspense,{fallback:r,children:t.jsx(g,{onBack:()=>i({to:"/$org/settings/store",params:{org:o}})})})}),e[2]=i,e[3]=o,e[4]=a):a=e[4],a}export{h as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{I as u}from"./use-infinite-scroll-DGa9MpTS.js";import{eR as i}from"./index-DS_PtpmP.js";function t(e,r){return i(e,u,r)}export{t as u};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{I as s}from"./use-infinite-scroll-DGa9MpTS.js";import{eR as u,bD as n}from"./index-DS_PtpmP.js";function a(e,r){return u({...e,enabled:!0,suspense:!0,throwOnError:n},s,r)}export{a as u};
|