decocms 4.181.3 → 4.181.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-BTxQkLh_.js → AlertCircle-CoDXlJfQ.js} +1 -1
- package/dist/client/assets/{AreaChart-54GTf9Wv.js → AreaChart-DtqNZyBO.js} +1 -1
- package/dist/client/assets/{ArrowUp-CiT0cU4D.js → ArrowUp-DzfdS3AP.js} +1 -1
- package/dist/client/assets/{ArrowUpRight-KmOQGUGd.js → ArrowUpRight-DjsHhUlZ.js} +1 -1
- package/dist/client/assets/{Check-Dw-gymvq.js → Check-DI_6pNdk.js} +1 -1
- package/dist/client/assets/{CheckCircle-CJSSqHjK.js → CheckCircle-BSFO3b73.js} +1 -1
- package/dist/client/assets/{ChevronDown-DJaWgVC0.js → ChevronDown-BwM0X3Lv.js} +1 -1
- package/dist/client/assets/{ChevronRight-DLaD7kHP.js → ChevronRight-CTbTO73Q.js} +1 -1
- package/dist/client/assets/{ChevronUp-C4i-02np.js → ChevronUp-Cwzjy6X3.js} +1 -1
- package/dist/client/assets/{Copy01-Cmo8Ag8o.js → Copy01-7VI3n1x-.js} +1 -1
- package/dist/client/assets/{CpuChip01-K-xlLMGB.js → CpuChip01-BN0rbNJS.js} +1 -1
- package/dist/client/assets/{CreditCard01-CmetOEMF.js → CreditCard01-CSLH62wc.js} +1 -1
- package/dist/client/assets/{DotsVertical-BH53E0xj.js → DotsVertical-EB14YMVh.js} +1 -1
- package/dist/client/assets/{Eye-B6gNJQkZ.js → Eye-DINm0uLy.js} +1 -1
- package/dist/client/assets/{FilterLines-Cpf5z5Iu.js → FilterLines-BJuXgX-U.js} +1 -1
- package/dist/client/assets/{HardDrive-Dv_gzUWs.js → HardDrive-mjyPSUZo.js} +1 -1
- package/dist/client/assets/{Key01-ai3raIR8.js → Key01-BDhVzHQl.js} +1 -1
- package/dist/client/assets/{LayoutLeft-BUkBSDrI.js → LayoutLeft-DvUn9Rfo.js} +1 -1
- package/dist/client/assets/{LinkExternal01-C_HyHuei.js → LinkExternal01-DHgvfD-u.js} +1 -1
- package/dist/client/assets/{LogOut01-CcD6g7YP.js → LogOut01-BkaI9bsE.js} +1 -1
- package/dist/client/assets/{Monitor01-DH8zVvcw.js → Monitor01-m26Bkt8-.js} +1 -1
- package/dist/client/assets/{Palette-BVF7aPzx.js → Palette-CZEbJkf3.js} +1 -1
- package/dist/client/assets/{Play-DktqrYeq.js → Play-DNhPZ0zd.js} +1 -1
- package/dist/client/assets/{Plus-D3gVN1IJ.js → Plus-B81Kmsvq.js} +1 -1
- package/dist/client/assets/{SearchLg-X8pCQ7Bs.js → SearchLg-D6RI0hoW.js} +1 -1
- package/dist/client/assets/{SearchMd-BGw6nenO.js → SearchMd-DiAJ6_xd.js} +1 -1
- package/dist/client/assets/{Settings02-DLn641-3.js → Settings02-BSOfJdnI.js} +1 -1
- package/dist/client/assets/{Shield01-MX0RzfQ2.js → Shield01-DELZfYhd.js} +1 -1
- package/dist/client/assets/{Star01-jcE2iXLN.js → Star01-Dlpf7047.js} +1 -1
- package/dist/client/assets/{Stars01-B33s_mIG.js → Stars01-F8Z91iCj.js} +1 -1
- package/dist/client/assets/{Stars02-CUMfm05b.js → Stars02-DFyqMz7m.js} +1 -1
- package/dist/client/assets/{Sun-DL3Et2O2.js → Sun-BJ8Bkr6l.js} +1 -1
- package/dist/client/assets/{SwitchHorizontal01-Ca1irFIT.js → SwitchHorizontal01-DyBdX2K6.js} +1 -1
- package/dist/client/assets/{Tool01-CoHxo05I.js → Tool01-C1PnI1l2.js} +1 -1
- package/dist/client/assets/{Tool02-q7KgS36M.js → Tool02-CluH7azC.js} +1 -1
- package/dist/client/assets/{Trash01-C_iTJrzM.js → Trash01-k_h_Tggg.js} +1 -1
- package/dist/client/assets/{TrendUp01-C64GToZR.js → TrendUp01-NM4dpGZ4.js} +1 -1
- package/dist/client/assets/{Upload01-C_wNHEuX.js → Upload01-BYIhCx3Z.js} +1 -1
- package/dist/client/assets/{User01-DbfhZ4ti.js → User01-CjTC4Ds9.js} +1 -1
- package/dist/client/assets/{Users01-DVMG5rdr.js → Users01-eC8BAkrP.js} +1 -1
- package/dist/client/assets/{Users03-CJSf0I5d.js → Users03-CAzfWqj_.js} +1 -1
- package/dist/client/assets/{X-BGd3Yd9R.js → X-B0BGtJWX.js} +1 -1
- package/dist/client/assets/{XCircle-BzhEmj9C.js → XCircle-Bs7nQ8ND.js} +1 -1
- package/dist/client/assets/{XClose-yx7RXMlE.js → XClose-DoLGTjTv.js} +1 -1
- package/dist/client/assets/{Zap-Cc1RYTno.js → Zap-B_A4GU2C.js} +1 -1
- package/dist/client/assets/{ZapSquare--_Wuc2N_.js → ZapSquare-BCJFJSNK.js} +1 -1
- package/dist/client/assets/{access-gate-BSUWjwCs.js → access-gate-3o7Fxz7A.js} +1 -1
- package/dist/client/assets/{add-section-modal-CB73EjN8.js → add-section-modal-BQSeDYh8.js} +1 -1
- package/dist/client/assets/{agent-icon-LwtXnQ8r.js → agent-icon-Cp2zkusx.js} +1 -1
- package/dist/client/assets/{agents-list-CrnSFHfy.js → agents-list-fbKp7W8r.js} +1 -1
- package/dist/client/assets/{ai-providers-oJ038Zl_.js → ai-providers-BDfvcd5z.js} +1 -1
- package/dist/client/assets/{alert-BGnJ_noO.js → alert-DAsfiHLl.js} +1 -1
- package/dist/client/assets/{alert-dialog-qDSW0Crq.js → alert-dialog-Cs4aDt3P.js} +1 -1
- package/dist/client/assets/{app-editor-DILiTJoW.js → app-editor-sxEKRC1f.js} +1 -1
- package/dist/client/assets/{auth-DIPKpaIr.js → auth-BMv6ws0Q.js} +1 -1
- package/dist/client/assets/{auth-catchall-CYL9uxik.js → auth-catchall-BV-ShEH0.js} +1 -1
- package/dist/client/assets/{auth-entry-DImJpw9E.js → auth-entry-CdV0yOYx.js} +1 -1
- package/dist/client/assets/{auth-split-layout-s6sRFVyK.js → auth-split-layout-CagxWH9r.js} +1 -1
- package/dist/client/assets/{authenticate-and-persist-oauth-CaPu7RQh.js → authenticate-and-persist-oauth-DijvaOaZ.js} +1 -1
- package/dist/client/assets/{automation-list-row-3pYfyU0O.js → automation-list-row-C7NACULR.js} +1 -1
- package/dist/client/assets/{automation-runs-D2d3Wb2r.js → automation-runs-DhTJGBwT.js} +1 -1
- package/dist/client/assets/{automations-DclhicEU.js → automations-0ykMO47a.js} +1 -1
- package/dist/client/assets/{avatar-CEbbtaiZ.js → avatar-B70WS_I4.js} +1 -1
- package/dist/client/assets/{badge-C1OyErpa.js → badge-C24L-Prv.js} +1 -1
- package/dist/client/assets/{billing-DRZX3EmX.js → billing-DNvuhOBv.js} +1 -1
- package/dist/client/assets/{block-document-C3rhxAfS.js → block-document-BJ420alM.js} +1 -1
- package/dist/client/assets/{brand-context-aUlyRlh0.js → brand-context-Qucn2Xsj.js} +1 -1
- package/dist/client/assets/{buckets-DELnzTrg.js → buckets-DdHF8G3P.js} +1 -1
- package/dist/client/assets/{bulk-category-panel-MPj9Giz3.js → bulk-category-panel-BtkQTad7.js} +1 -1
- package/dist/client/assets/{calendar-Cgmlwp6s.js → calendar-CAfHfTmu.js} +1 -1
- package/dist/client/assets/{capability-load-error-CO2UqFKW.js → capability-load-error-ChEAZwzL.js} +1 -1
- package/dist/client/assets/{card-D0L8m2Fk.js → card-BKElrnBc.js} +1 -1
- package/dist/client/assets/{category-editor-B-verZ0D.js → category-editor-CLqlhywG.js} +1 -1
- package/dist/client/assets/{chat-context-D6CbggZW.js → chat-context-Bw7SDxGs.js} +6 -6
- package/dist/client/assets/{checkbox-DtFnclfC.js → checkbox-CFSUO6it.js} +1 -1
- package/dist/client/assets/{cli-auth-success-Bicb4f4q.js → cli-auth-success-D6Es4_O8.js} +1 -1
- package/dist/client/assets/{collection-detail-CAcg5xcf.js → collection-detail-CbcPEQz3.js} +1 -1
- package/dist/client/assets/{collection-display-button-BCy_2J75.js → collection-display-button-BJhGqViy.js} +1 -1
- package/dist/client/assets/{collection-search-2xNmmwyF.js → collection-search-ChLfje4B.js} +1 -1
- package/dist/client/assets/{collection-table-wrapper-CTDA0KGg.js → collection-table-wrapper-D6vyICk_.js} +1 -1
- package/dist/client/assets/{collection-tabs-CTBrfSnI.js → collection-tabs-Cs-EMZJI.js} +1 -1
- package/dist/client/assets/{command-CC22u5HT.js → command-PnS9-KkJ.js} +1 -1
- package/dist/client/assets/{commerce-onboarding-DPhOKMuI.js → commerce-onboarding-BFliR3_E.js} +1 -1
- package/dist/client/assets/{companions-core-DhobrWwt.js → companions-core-BEk0bI5I.js} +1 -1
- package/dist/client/assets/{connect-BpuNc0ED.js → connect-Tz0_q97h.js} +1 -1
- package/dist/client/assets/{connection-D7v6o0sJ.js → connection-B1s_uL8d.js} +1 -1
- package/dist/client/assets/{connection-card-Go0wl4dH.js → connection-card-B8CKrJsN.js} +1 -1
- package/dist/client/assets/{connection-detail-DHeSqYBk.js → connection-detail-NFG3cS8L.js} +1 -1
- package/dist/client/assets/{connection-form-helpers-C8vqp-PX.js → connection-form-helpers-BiyFYIQA.js} +1 -1
- package/dist/client/assets/{connections-B0ZbAgCH.js → connections-DbqXTRKp.js} +1 -1
- package/dist/client/assets/{decopilot-sse-pool-BSRr7Awl.js → decopilot-sse-pool-C_mYTLoK.js} +1 -1
- package/dist/client/assets/{dialog-nd9Y9UDf.js → dialog-BlrnnfmP.js} +1 -1
- package/dist/client/assets/{domain-settings-BwjA2jso.js → domain-settings-CqgkCnG9.js} +1 -1
- package/dist/client/assets/{drawer-Y02E8bZP.js → drawer-D3ba3yLz.js} +1 -1
- package/dist/client/assets/{dropdown-menu-DYJ4Ot9-.js → dropdown-menu-Bx7ltfaz.js} +1 -1
- package/dist/client/assets/{empty-state-CCnFw3SI.js → empty-state-Ch5-qN6i.js} +1 -1
- package/dist/client/assets/{extract-connection-data-B6jF9vIP.js → extract-connection-data-DWzl0TVG.js} +1 -1
- package/dist/client/assets/{file-explorer-DpEAqpKl.js → file-explorer-CRpY-v2P.js} +1 -1
- package/dist/client/assets/{form-DZe1OoXa.js → form-QPeVr96w.js} +1 -1
- package/dist/client/assets/{general-BcbT-g-z.js → general-c3VcV2nT.js} +1 -1
- package/dist/client/assets/{github-repo-picker-R7F1yX2B.js → github-repo-picker-_ZnF776T.js} +1 -1
- package/dist/client/assets/{hooks-BcHj3Ob3.js → hooks-C5MdZvD4.js} +1 -1
- package/dist/client/assets/{index-CdeKbNns.js → index-3-LMqfQ2.js} +3 -3
- package/dist/client/assets/{index-BC57PyF6.js → index-BKdsYgJk.js} +1 -1
- package/dist/client/assets/{index-FXSmmHSb.js → index-BN6mjWFs.js} +1 -1
- package/dist/client/assets/{index-Bd-WG2FD.js → index-By7f4dxu.js} +1 -1
- package/dist/client/assets/{index-DjdZgCR6.js → index-CPa17j_1.js} +1 -1
- package/dist/client/assets/{index-Cattr6nA.js → index-CwRZ2eRJ.js} +5 -5
- package/dist/client/assets/{index-D01T8L5t.js → index-D4oq2KWo.js} +1 -1
- package/dist/client/assets/{index-Dllcdz9M.js → index-DPt9op1f.js} +1 -1
- package/dist/client/assets/{index-Ci-xAbr8.js → index-DY47_3bP.js} +1 -1
- package/dist/client/assets/{index-DSL_ub0T.js → index-D_qN7ztl.js} +3 -3
- package/dist/client/assets/{index-Cd-mxy8I.js → index-Dyko4qaC.js} +1 -1
- package/dist/client/assets/{index-Bk-CGEfI.js → index-OSPPmtTZ.js} +1 -1
- package/dist/client/assets/{index-redirect-CmpV-Jj_.js → index-redirect-DdSC2EvH.js} +1 -1
- package/dist/client/assets/{input-D-iDTYtd.js → input-D9Jkg0Ts.js} +1 -1
- package/dist/client/assets/{integration-icon-BdwbQSLL.js → integration-icon-rZyJJxlQ.js} +1 -1
- package/dist/client/assets/{invite-member-dialog-BzkSk1Ge.js → invite-member-dialog-ChjW_rxM.js} +1 -1
- package/dist/client/assets/{label-CxOnDTfr.js → label-ZNBaIWEv.js} +1 -1
- package/dist/client/assets/{layout-GbjkVmGk.js → layout-8Z2jUN00.js} +1 -1
- package/dist/client/assets/{login-BPeVUOhv.js → login-CsWF7180.js} +1 -1
- package/dist/client/assets/{mcp-oauth-DPdfbG_o.js → mcp-oauth-C7dcOLuW.js} +1 -1
- package/dist/client/assets/{members-Dm_2MGcL.js → members-BN1GNZMG.js} +1 -1
- package/dist/client/assets/{monaco-editor-C86Ru8dd.js → monaco-editor-D77M7bec.js} +1 -1
- package/dist/client/assets/{monitoring-stats-row-BwPJ9hvQ.js → monitoring-stats-row-DKR_TjL0.js} +1 -1
- package/dist/client/assets/{multi-select-CmcBjW31.js → multi-select-uAHTiP2r.js} +1 -1
- package/dist/client/assets/{oauth-callback-CW40581a.js → oauth-callback-CLUUMHBU.js} +1 -1
- package/dist/client/assets/{oauth-callback-ai-provider-BxEnbW0f.js → oauth-callback-ai-provider-wb-h-pia.js} +1 -1
- package/dist/client/assets/{onboarding-DkoxJYt2.js → onboarding-BWjBskCT.js} +1 -1
- package/dist/client/assets/{org-layout-4xil_83z.js → org-layout-CL0ZKqte.js} +1 -1
- package/dist/client/assets/{organization-choice-DXN-yJMk.js → organization-choice-BbKtFXAC.js} +1 -1
- package/dist/client/assets/{orgs-pac80290.js → orgs-Or9kyiju.js} +1 -1
- package/dist/client/assets/{page-seo-form-Bk_lJRhg.js → page-seo-form-BndAvZ9u.js} +1 -1
- package/dist/client/assets/{popover-BzY6SGD5.js → popover-DQ75zYg5.js} +1 -1
- package/dist/client/assets/{post-editor-Caeo9yZ0.js → post-editor-C9EHuxMH.js} +1 -1
- package/dist/client/assets/{primitives-D59xgpfo.js → primitives-DIcxOhBZ.js} +1 -1
- package/dist/client/assets/{profile-CWK3fjie.js → profile-7pKp2rOM.js} +1 -1
- package/dist/client/assets/project-app-view-BXHpuIWL.js +1 -0
- package/dist/client/assets/record-editor-B0lY4ATs.js +1 -0
- package/dist/client/assets/{redirect-editor-CV9xq4Ct.js → redirect-editor-CvtWY3HB.js} +1 -1
- package/dist/client/assets/registry-B7D6Ql17.js +2 -0
- package/dist/client/assets/{registry-layout-BtBW4sei.js → registry-layout-Bn2lgUai.js} +1 -1
- package/dist/client/assets/{reports-zFMLtR1A.js → reports-7tXOKFVI.js} +1 -1
- package/dist/client/assets/{require-capability-Br1pAJen.js → require-capability-B6LMVGHv.js} +1 -1
- package/dist/client/assets/{required-auth-layout-D-kXHcFc.js → required-auth-layout-CogeMTvH.js} +1 -1
- package/dist/client/assets/{reset-password-DxnpIDQZ.js → reset-password-CPEOmW50.js} +1 -1
- package/dist/client/assets/{roles-BkhveSy6.js → roles-C27KypL_.js} +1 -1
- package/dist/client/assets/{search-input-C115Kksl.js → search-input-BNnWzMLc.js} +1 -1
- package/dist/client/assets/{secrets-BBfooOeU.js → secrets-CTCckJMX.js} +1 -1
- package/dist/client/assets/{sections-editor-DK40H8jT.js → sections-editor-a2lgUSp0.js} +1 -1
- package/dist/client/assets/{select-DoSBsXS-.js → select-Rt6PHNLS.js} +1 -1
- package/dist/client/assets/{select-model-BoNfnd6b.js → select-model-SPVuQjmD.js} +1 -1
- package/dist/client/assets/{self-tool-result-DtUlgJUE.js → self-tool-result-BO5xY3K8.js} +1 -1
- package/dist/client/assets/{seo-editor-BIY7X9oK.js → seo-editor-CdGMZ5D1.js} +1 -1
- package/dist/client/assets/{settings-layout-BJ2Ef5pZ.js → settings-layout-D7E7ki7W.js} +1 -1
- package/dist/client/assets/{settings-section-CDsu-DGw.js → settings-section-C-TQNwV0.js} +1 -1
- package/dist/client/assets/{shell-controls-Dr9vMfYa.js → shell-controls-CR8pGOJY.js} +1 -1
- package/dist/client/assets/{shell-layout-DBQkutH7.js → shell-layout-Ce7M8XgS.js} +1 -1
- package/dist/client/assets/{sidebar-B2MwaU8I.js → sidebar-CzS9qRLM.js} +1 -1
- package/dist/client/assets/{skeleton-Byy9MKOd.js → skeleton-D3cVH2Ir.js} +1 -1
- package/dist/client/assets/{spinner-DkNs3_AG.js → spinner-BprurTJe.js} +1 -1
- package/dist/client/assets/{sso-DBWJAZWr.js → sso-DJOzyPMU.js} +1 -1
- package/dist/client/assets/{store-CEwQ2QQ2.js → store-12c6YOsA.js} +1 -1
- package/dist/client/assets/store-registry-D4GQNhaq.js +2 -0
- package/dist/client/assets/{studio-tools-CCpiCxVq.js → studio-tools-CmR4bmJa.js} +1 -1
- package/dist/client/assets/{switch-Ckyz60oQ.js → switch-PbC9_T5E.js} +1 -1
- package/dist/client/assets/{tab-id-DamQoqFe.js → tab-id-Cpj2BYHk.js} +1 -1
- package/dist/client/assets/{table-g2dB7kHC.js → table-CNsHXRlz.js} +1 -1
- package/dist/client/assets/{tabs-DhhmWcXn.js → tabs-C3Es5g8C.js} +1 -1
- package/dist/client/assets/{textarea-ml1xcq4m.js → textarea-Bm-UZKbN.js} +1 -1
- package/dist/client/assets/{toggle-group-DaJb5ecI.js → toggle-group-27ep7cd-.js} +1 -1
- package/dist/client/assets/{toolbar-Dehgj7Nj.js → toolbar-DNyY1X0W.js} +1 -1
- package/dist/client/assets/{tooltip-fNNHHvCP.js → tooltip-Bqc21s4V.js} +1 -1
- package/dist/client/assets/{use-ai-providers-CwtqZyAl.js → use-ai-providers-CzKbxhup.js} +1 -1
- package/dist/client/assets/{use-automations-v0SaJAdt.js → use-automations-rRRSxnoZ.js} +1 -1
- package/dist/client/assets/{use-autosave-CNHqftWQ.js → use-autosave-DrBeJOpe.js} +1 -1
- package/dist/client/assets/{use-capability-6s_CDaCx.js → use-capability-VnR-Twlo.js} +1 -1
- package/dist/client/assets/{use-clock-tick-Cw81SvwW.js → use-clock-tick-CUyOHcGd.js} +1 -1
- package/dist/client/assets/{use-connection-CzkVTaht.js → use-connection-D3-WOivL.js} +1 -1
- package/dist/client/assets/{use-copy-BYYLTgJg.js → use-copy-Cjfxc3lq.js} +1 -1
- package/dist/client/assets/{use-create-virtual-mcp-jDvPk26o.js → use-create-virtual-mcp-CRDZzFsT.js} +1 -1
- package/dist/client/assets/{use-debounced-autosave-CWSN1_X_.js → use-debounced-autosave-BpiVpYEy.js} +1 -1
- package/dist/client/assets/{use-debounced-value-D4-eJghO.js → use-debounced-value-Bu743rfC.js} +1 -1
- package/dist/client/assets/{use-deco-credits-Dwwqo-VH.js → use-deco-credits-CP_p1OYX.js} +1 -1
- package/dist/client/assets/{use-decopilot-events-CMeACuxN.js → use-decopilot-events-Delyy2tX.js} +1 -1
- package/dist/client/assets/{use-delete-connection-DV_zsO6y.js → use-delete-connection-C1FVu_kj.js} +1 -1
- package/dist/client/assets/{use-deployment-admin-By7yhBUI.js → use-deployment-admin-CcCT1pCe.js} +1 -1
- package/dist/client/assets/{use-file-configs-Z-5fKuaj.js → use-file-configs-Df4t2Af8.js} +1 -1
- package/dist/client/assets/{use-infinite-scroll-fXFRW5gQ.js → use-infinite-scroll-D2k2RfjH.js} +1 -1
- package/dist/client/assets/{use-join-requests-BoAzPTLj.js → use-join-requests-YHxzWRzU.js} +1 -1
- package/dist/client/assets/{use-mcp-client-DqHVlRT-.js → use-mcp-client-CnwXp_2G.js} +1 -1
- package/dist/client/assets/{use-mcp-tools-DBw2JL-y.js → use-mcp-tools-D5PDAbX3.js} +1 -1
- package/dist/client/assets/{use-members-DsNs-XXd.js → use-members-CsrR9sVE.js} +1 -1
- package/dist/client/assets/{use-mobile-DTQQN7CZ.js → use-mobile-D5XNhGmt.js} +1 -1
- package/dist/client/assets/{use-navigate-to-agent-DGSYNDms.js → use-navigate-to-agent-CY1Sg2mI.js} +1 -1
- package/dist/client/assets/{use-open-billing-url-BiA8ypry.js → use-open-billing-url-7wNr3nsC.js} +1 -1
- package/dist/client/assets/{use-org-auth-client-BoO3p-ZD.js → use-org-auth-client-DsEUDhGt.js} +1 -1
- package/dist/client/assets/{use-org-sso-pjSvX-hU.js → use-org-sso-BMMGsez5.js} +1 -1
- package/dist/client/assets/{use-organization-roles-CDb_-Y7M.js → use-organization-roles-D98NHp0f.js} +1 -1
- package/dist/client/assets/{use-organization-settings-DDGI0ux_.js → use-organization-settings-CkydqUPj.js} +1 -1
- package/dist/client/assets/{use-registry-connections-9HNFG4EX.js → use-registry-connections-DvnxAxTA.js} +1 -1
- package/dist/client/assets/{use-secrets-DuY_szss.js → use-secrets-DlAqH1JF.js} +1 -1
- package/dist/client/assets/{use-status-sounds-DrHItgaG.js → use-status-sounds-U-yjXYPT.js} +1 -1
- package/dist/client/assets/{use-tags-D9BTOCB6.js → use-tags-BZHcYzsF.js} +1 -1
- package/dist/client/assets/{use-view-mode-BBNpqulX.js → use-view-mode-BA8gjl_j.js} +1 -1
- package/dist/client/assets/{use-virtual-mcp-CTQtyJk0.js → use-virtual-mcp-BwEqvBeg.js} +1 -1
- package/dist/client/assets/useInfiniteQuery-CaECIb_7.js +1 -0
- package/dist/client/assets/{useQueries-YKDnkiqD.js → useQueries-WiRQeQU4.js} +1 -1
- package/dist/client/assets/{useRouterState-D-3vvriX.js → useRouterState-B84y8ONz.js} +1 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-C6u02L7d.js +1 -0
- package/dist/client/assets/{users-DFm1KNAU.js → users-CStj2qH-.js} +1 -1
- package/dist/client/assets/{variant-calendar-lUVRsxSt.js → variant-calendar-B0iPSTvz.js} +1 -1
- package/dist/client/assets/{view-mode-toggle-BjkWD1Pd.js → view-mode-toggle-dBtur0IN.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/project-app-view-DOxMbUNa.js +0 -1
- package/dist/client/assets/record-editor-_niGq24j.js +0 -1
- package/dist/client/assets/registry-DNAqKX9b.js +0 -2
- package/dist/client/assets/store-registry-D7sYPe7R.js +0 -2
- package/dist/client/assets/useInfiniteQuery-CAndPTbu.js +0 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-CR3WF7F3.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as $,r as T,m as f,j as i}from"./index-
|
|
1
|
+
import{c as $,r as T,m as f,j as i}from"./index-D_qN7ztl.js";import{c as k,T as I,a as P}from"./tooltip-Bqc21s4V.js";const M={sm:{button:"size-7",buttonWithLabel:"h-7",icon:"size-4"},md:{button:"size-9",buttonWithLabel:"h-9",icon:"size-5"},lg:{button:"size-12",buttonWithLabel:"h-12",icon:"size-6"}};function B(E){const t=$.c(27),{value:s,onValueChange:y,options:o,size:C,fullWidth:L,className:z}=E,_=C===void 0?"sm":C,b=L===void 0?!1:L;let h;t[0]===Symbol.for("react.memo_cache_sentinel")?(h=[],t[0]=h):h=t[0];const R=T.useRef(h);let x;t[1]===Symbol.for("react.memo_cache_sentinel")?(x={left:0,width:0,opacity:0},t[1]=x):x=t[1];const[d,S]=T.useState(x);let g,p;t[2]!==o||t[3]!==s?(g=()=>{const e=o.findIndex(j=>j.value===s),m=R.current[e];m&&S({left:m.offsetLeft,width:m.offsetWidth,opacity:1})},p=[s,o],t[2]=o,t[3]=s,t[4]=g,t[5]=p):(g=t[4],p=t[5]),T.useEffect(g,p);const l=M[_];let n;t[6]!==z?(n=f("relative flex gap-0 bg-muted rounded-lg",z),t[6]=z,t[7]=n):n=t[7];let a;t[8]!==l||t[9]!==b||t[10]!==y||t[11]!==o||t[12]!==s?(a=o.map((e,m)=>{const j=i.jsxs("button",{ref:V=>{R.current[m]=V},type:"button",onClick:()=>y(e.value),"aria-label":e.label,className:f("relative z-10 flex items-center justify-center gap-2 rounded-lg transition-colors [transition-timing-function:var(--ease-out-cubic)] duration-200",b?"flex-1 h-12 px-4":e.label?f(l.buttonWithLabel,"px-3"):l.button),children:[i.jsx("span",{className:f("transition-colors ease-out duration-200 flex items-center justify-center [&>svg]:size-[1em]",l.icon,s===e.value?"text-foreground":"text-muted-foreground"),children:e.icon}),e.label&&i.jsx("span",{className:f("text-xs transition-colors ease-out duration-200 whitespace-nowrap",s===e.value?"text-foreground":"text-muted-foreground"),children:e.label})]},e.value);return e.tooltip?i.jsxs(k,{children:[i.jsx(I,{asChild:!0,children:j}),i.jsx(P,{side:"bottom",children:e.tooltip})]},e.value):j}),t[8]=l,t[9]=b,t[10]=y,t[11]=o,t[12]=s,t[13]=a):a=t[13];const w=b?"h-12":l.button;let r;t[14]!==w?(r=f("absolute z-0 bg-background rounded-lg border-shadow transition-all [transition-timing-function:var(--ease-out-cubic)] duration-200",w),t[14]=w,t[15]=r):r=t[15];const W=`${d.left}px`,N=`${d.width}px`;let c;t[16]!==d.opacity||t[17]!==W||t[18]!==N?(c={left:W,width:N,opacity:d.opacity},t[16]=d.opacity,t[17]=W,t[18]=N,t[19]=c):c=t[19];let u;t[20]!==r||t[21]!==c?(u=i.jsx("div",{className:r,style:c}),t[20]=r,t[21]=c,t[22]=u):u=t[22];let v;return t[23]!==u||t[24]!==n||t[25]!==a?(v=i.jsxs("div",{className:n,children:[a,u]}),t[23]=u,t[24]=n,t[25]=a,t[26]=v):v=t[26],v}export{B as V};
|
package/dist/client/index.html
CHANGED
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
<meta name="twitter:description" content="Hire specialized agents, give them access to your tools, and let them deliver real projects — with planning, verification, and observability built in." />
|
|
51
51
|
<meta name="twitter:image" content="/og-image.png" />
|
|
52
52
|
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
|
53
|
-
<script type="module" crossorigin src="/assets/index-
|
|
53
|
+
<script type="module" crossorigin src="/assets/index-D_qN7ztl.js"></script>
|
|
54
54
|
<link rel="stylesheet" crossorigin href="/assets/index-CUIiLem4.css">
|
|
55
55
|
</head>
|
|
56
56
|
<body>
|
package/dist/server/cli.js
CHANGED
|
@@ -1286,7 +1286,7 @@ Usage: deco services <up|down|status>`),process.exit(1)}}var ju1=O(()=>{Ov()});f
|
|
|
1286
1286
|
`.execute($);if(Number(W.rows[0]?.cnt)===0){console.warn(`Failed to migrate ${J}/${K}, keeping in old table`);continue}}await lf`
|
|
1287
1287
|
DELETE FROM kysely_migration WHERE name = ${X}
|
|
1288
1288
|
`.execute($)}}async function Sm1($){await Zh6($),await Xh6($);let Z=new Mm1({db:$,provider:{getMigrations:()=>Promise.resolve(Ql0)}}),{error:X,results:Q}=await Z.migrateToLatest(),Y=0;if(Q?.forEach((G)=>{if(G.status==="Success")Y++;else if(G.status==="Error")console.error(`Failed to execute migration "${G.migrationName}"`)}),X)throw console.error("Failed to migrate"),console.error(X),X;return Y}async function Qh6($){let{keepOpen:Z=!1,database:X,skipBetterAuth:Q=!1}=$??{},Y="skipped";if(!Q&&!X)Y=await bg0();let G=X??H6(),J=async()=>{if(!Z&&!X)await Xw(G).catch((K)=>{console.warn("Warning: Error closing database:",K)})};try{let K=await Sm1(G.db);return await J(),{betterAuth:Y,kysely:K}}catch(K){throw await J(),K}}async function Yh6(){let $=H6(),Z=new Mm1({db:$.db,provider:{getMigrations:()=>Promise.resolve(Ql0)}}),{error:X,results:Q}=await Z.migrateDown();if(Q?.forEach((Y)=>{if(Y.status==="Success")console.log(`\u2705 Migration "${Y.migrationName}" rolled back successfully`);else if(Y.status==="Error")console.error(`\u274C Failed to rollback migration "${Y.migrationName}"`)}),X)throw console.error("Failed to rollback migration"),console.error(X),X}var Cm1=O(()=>{qm1();yg0();m7()});async function k50($){let Z={...process.env},X=T00($,Z);console.log($U1(X.settings.encryptionKey));let Q=X.settings.betterAuthSecret||(X.settings.localMode?ac1(X.settings.dataDir):""),{ensureServices:Y}=await Promise.resolve().then(() => (u$0(),h$0)),{outputs:G,services:J}=await Y({home:X.settings.dataDir,externalDatabaseUrl:X.externalDatabaseUrl,externalNatsUrl:X.externalNatsUrl});if(!X.skipMigrations){let{migrateBetterAuth:W}=await Promise.resolve().then(() => (yg0(),ec1));await W(G.databaseUrl);let{createDatabase:H}=await Promise.resolve().then(() => (m7(),Oc1)),{migrateToLatest:N}=await Promise.resolve().then(() => (Cm1(),Vm1)),U=H(G.databaseUrl);await N({keepOpen:!0,database:U,skipBetterAuth:!0})}let K={...X.settings,betterAuthSecret:Q,databaseUrl:G.databaseUrl,natsUrls:G.natsUrls,...G.s3?{s3Endpoint:G.s3.endpoint,s3Bucket:G.s3.bucket,s3AccessKeyId:G.s3.accessKeyId,s3SecretAccessKey:G.s3.secretAccessKey,s3ForcePathStyle:G.s3.forcePathStyle}:{},...G.natsTunnel?{natsPublicUrl:G.natsTunnel.publicUrl,natsAccountJwt:G.natsTunnel.accountJwt,natsAccountSigningKey:G.natsTunnel.accountSigningKey,natsOperatorJwt:G.natsTunnel.operatorJwt,natsTunnelPublicEnabled:!0,natsCredsPath:G.natsTunnel.credsPath}:{}};return Pu1(K),{settings:K,services:J.map((W)=>({name:W.name==="PostgreSQL"?"Postgres":W.name,port:W.port})),managedServiceNames:J.filter((W)=>W.owner==="managed").map((W)=>W.name)}}var Yl0=O(()=>{Ov();sc1();y8()});var vm1={};O0(vm1,{updateService:()=>bD,subscribeCliState:()=>Kl0,setTuiConsoleIntercepted:()=>S50,setServerUrl:()=>Om,setMigrationsDone:()=>Bm,setDevMode:()=>Kh6,resetCliStateForTests:()=>Gh6,isTuiConsoleIntercepted:()=>V50,getCliState:()=>Jl0,addLogEntry:()=>Kw});function _m1(){return{services:[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}],migrationsStatus:"pending",serverUrl:null,logs:[]}}function Gh6(){qQ=_m1()}function Jh6(){return[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}]}function wm(){for(let $ of Gl0)$()}function Jl0(){return qQ}function Kl0($){return Gl0.add($),()=>Gl0.delete($)}function bD($){qQ={...qQ,services:qQ.services.map((Z)=>Z.name===$.name?$:Z)},wm()}function Bm(){qQ={...qQ,migrationsStatus:"done"},wm()}function Om($){qQ={...qQ,serverUrl:$},wm()}function Kw($){let Z=[...qQ.logs,$];qQ={...qQ,logs:Z.length>500?Z.slice(-500):Z},wm()}function Kh6(){qQ={...qQ,services:[...Jh6(),{name:"API",status:"pending",port:0},{name:"Vite",status:"pending",port:0}]},wm()}function S50($){xm1=$}function V50(){return xm1}var qQ,Gl0,xm1=!1;var yD=O(()=>{qQ=_m1();Gl0=new Set});import{createServer as fm1}from"net";function Wh6($){return new Promise((Z)=>{let X=fm1();X.once("error",()=>Z(!1)),X.listen($,"0.0.0.0",()=>{X.close(()=>Z(!0))})})}async function Lm($){if(await Wh6($))return $;let Z=await new Promise((X,Q)=>{let Y=fm1();Y.once("error",Q),Y.listen(0,"0.0.0.0",()=>{let G=Y.address(),J=typeof G==="object"&&G?G.port:0;Y.close(()=>X(J))})});return console.warn(`Port ${$} is in use, using port ${Z} instead.`),Z}var Wl0=()=>{};function Dm($){return $.replace(/\x1b\[[0-9;]*m/g,"")}var Hl0={};O0(Hl0,{startDevServer:()=>Nh6});import{join as Hh6}from"path";function bm1($){let Z=$.getReader(),X=new TextDecoder,Q="";function Y(){let G=Q.split(`
|
|
1289
|
-
`);Q=G.pop()??"";for(let J of G){let K=Dm(J).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;Kw({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:K})}}(async()=>{for(;;){let{done:G,value:J}=await Z.read();if(G)break;Q+=X.decode(J,{stream:!0}),Y()}if(Q.trim()){let G=Dm(Q).replace(/^\[\d+\]\s*/,"").trim();if(G)Kw({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:G})}})()}async function Nh6($){let{baseUrl:Z,noTui:X}=$,Q=process.env.HOST==="0.0.0.0"&&Boolean(process.env.PORT),Y=Q?process.env.PORT:$.vitePort,G=Z||`http://localhost:${Y}`,J=Q?await Lm(Number(Y)+1):await Lm(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await k50({port:String(J),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let L of W)bD({name:L.name,status:"ready",port:L.port});Bm();let N=Hh6(import.meta.dir,"..","..","..","..",".."),U=X===!0,F=Bun.spawn(["bun","run","dev:servers"],{cwd:N,env:{...process.env,PORT:String(K.port),VITE_PORT:String(Y),DATABASE_URL:K.databaseUrl,NATS_URL:K.natsUrls.join(","),NODE_ENV:K.nodeEnv,BASE_URL:G,DECOCMS_LOCAL_MODE:String(K.localMode),DECOCMS_HOME:K.dataDir,DATA_DIR:K.dataDir,DECO_CLI:"1",...K.betterAuthSecret?{BETTER_AUTH_SECRET:K.betterAuthSecret}:{},...K.s3Endpoint?{S3_ENDPOINT:K.s3Endpoint,S3_BUCKET:K.s3Bucket??"",S3_ACCESS_KEY_ID:K.s3AccessKeyId??"",S3_SECRET_ACCESS_KEY:K.s3SecretAccessKey??"",S3_FORCE_PATH_STYLE:String(K.s3ForcePathStyle)}:{},...K.natsPublicUrl&&K.natsAccountJwt&&K.natsAccountSigningKey?{NATS_PUBLIC_URL:K.natsPublicUrl,NATS_ACCOUNT_JWT:K.natsAccountJwt,NATS_ACCOUNT_SIGNING_KEY:K.natsAccountSigningKey,NATS_OPERATOR_JWT:K.natsOperatorJwt??"",NATS_TUNNEL_PUBLIC_ENABLED:"true",...K.natsCredsPath?{NATS_CREDS:K.natsCredsPath}:{}}:{}},stdio:["inherit",U?"inherit":"pipe",U?"inherit":"pipe"]});if(!U)bm1(F.stdout),bm1(F.stderr);Om(G),bD({name:"Vite",status:"ready",port:Number(Y)}),bD({name:"API",status:"ready",port:Number(K.port)});let B=async(L)=>{if(F.kill(L),await F.exited,H.length>0){let{stopServices:D}=await Promise.resolve().then(() => (u$0(),h$0));await D(K.dataDir)}};return process.on("SIGINT",()=>B("SIGINT")),process.on("SIGTERM",()=>B("SIGTERM")),{port:Number(Y),process:F}}var Nl0=O(()=>{Yl0();yD();Wl0()});var C50;var Ul0=O(()=>{C50={name:"decocms",version:"4.181.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",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.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"}}});import{Box as Fh6,Text as ym1}from"ink";import{jsx as wh6,jsxs as gm1}from"react/jsx-runtime";function hm1({version:$}){return gm1(Fh6,{flexDirection:"column",marginTop:1,children:[K50.map((Z,X)=>wh6(ym1,{color:W50[X],children:Z},X)),gm1(ym1,{dimColor:!0,children:[" v",$]})]})}var um1=O(()=>{Xm()});import{Box as gD,Text as Ww}from"ink";import{Spinner as Bh6}from"@inkjs/ui";import{jsx as vY,jsxs as df}from"react/jsx-runtime";function cm1({status:$}){if($==="pending")return vY(Bh6,{label:""});return vY(Ww,{color:"green",children:"\u2713"})}function Oh6($){return`${$.name}: ${$.port||"...."}`}function lm1({services:$,migrationsStatus:Z,home:X,serverUrl:Q}){return df(gD,{flexDirection:"column",paddingBottom:1,children:[vY(hm1,{version:C50.version}),vY(gD,{marginBottom:1,children:vY(Ww,{dimColor:!0,children:"\u2500".repeat(80)})}),vY(gD,{children:df(Ww,{dimColor:!0,children:["Home: ",X]})}),df(gD,{gap:2,children:[$.map((Y)=>df(gD,{gap:1,children:[vY(Ww,{children:Oh6(Y)}),vY(cm1,{status:Y.status})]},Y.name)),df(gD,{gap:1,children:[vY(Ww,{children:"Migrations"}),vY(cm1,{status:Z})]})]}),vY(gD,{children:Q?df(Ww,{children:["Open in browser: ",vY(Ww,{color:"cyan",children:Q})]}):vY(Ww,{dimColor:!0,children:"Starting..."})})]})}var dm1=O(()=>{Ul0();um1()});import{Box as Lh6,Text as Em}from"ink";import{jsx as Fl0,jsxs as wl0}from"react/jsx-runtime";function Dh6($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function mm1({logs:$}){return Fl0(Lh6,{flexDirection:"column",children:$.map((Z,X)=>{if(Z.rawLine)return Fl0(Em,{dimColor:!0,children:Z.rawLine},X);let Q=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return wl0(Em,{children:[wl0(Em,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),Fl0(Em,{color:Dh6(Z.status),children:Z.status}),wl0(Em,{dimColor:!0,children:[" ",Q.padStart(8)]})]},X)})})}var im1=()=>{};var Bl0={};O0(Bl0,{App:()=>jh6});import{Box as Eh6}from"ink";import{useSyncExternalStore as zh6}from"react";import{jsx as nm1,jsxs as Ph6}from"react/jsx-runtime";function jh6({home:$}){let Z=zh6(Kl0,Jl0);return Ph6(Eh6,{flexDirection:"column",children:[nm1(lm1,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),nm1(mm1,{logs:Z.logs})]})}var Ol0=O(()=>{dm1();im1();yD()});var GJ="thread-gate",jN="decopilot-hosted-harness",lG="automations",Hw="background-tools";var pm1="7";function tm1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:pm1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var om1=()=>{};function Ah6(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function Ll0($,Z){for(let X=0;X<$.length;X++){let Q=$[X];if(Q===void 0)continue;if(Q===Z)return $[X+1];if(Q.startsWith(`${Z}=`))return Q.slice(Z.length+1)}return}function rm1(){let $=Ah6();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:Ll0($,"--cpu-prof-dir")??process.cwd(),name:Ll0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(Ll0($,"--cpu-prof-interval")??1000),note:"profile is written on process exit"}));return}if(process.env.CPU_PROFILE)console.warn(JSON.stringify({msg:"cpu-profiling-requested-but-inactive",hint:'CPU profiling is a Bun launch flag. Set BUN_OPTIONS="--cpu-prof --cpu-prof-md --cpu-prof-dir=/tmp" before starting the process.'}))}function am1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let X=_D();if(!X)return;let Q={};try{let{heapStats:Y}=await import("bun:jsc"),G=Y(),J=Object.entries(G.objectTypeCounts).sort((K,W)=>W[1]-K[1]).slice(0,20);Q={objectCount:G.objectCount,heapSize:G.heapSize,top:Object.fromEntries(J)}}catch{}console.log(JSON.stringify({msg:"heap-watch",ts:new Date().toISOString(),uptimeS:Math.round(process.uptime()),rss:X.rss,heapUsed:X.heapUsed,heapTotal:X.heapTotal,external:X.external,arrayBuffers:X.arrayBuffers,...Q}))};return Z().catch(()=>{}),_50=setInterval(()=>void Z().catch(()=>{}),$),_50.unref?.(),process.on("SIGUSR2",()=>{try{let X=Bun.generateHeapSnapshot("v8"),Q=typeof X==="string"?X:JSON.stringify(X),Y=`/tmp/heap-${process.pid}-${Date.now()}.heapsnapshot`;Bun.write(Y,Q),console.log(JSON.stringify({msg:"heap-snapshot-written",path:Y}))}catch(X){console.error("[heap-watch] snapshot failed:",X)}}),()=>{if(_50)clearInterval(_50)}}var _50;var sm1=()=>{};import*as Th6 from"bun:jsc";function em1(){if(process.env.STALL_WATCHDOG!=="1")return()=>{};let $=Number(process.env.STALL_WATCHDOG_MS??100),Z=Number(process.env.STALL_WATCHDOG_TICK_MS??50);try{Rh6()}catch(G){return console.error("[stall-watchdog] failed to start sampling profiler:",G),()=>{}}let X,Q=performance.now()+Z,Y=()=>{let G=performance.now(),J=G-Q;Q=G+Z;let K=[];try{K=Ih6()?.traces??[]}catch{}if(J>$&&K.length>0){let W=new Map;for(let N of K){let U=N.frames.find((B)=>B.sourceURL&&!/Unknown Executable/.test(B.category??""))??N.frames[0];if(!U)continue;let F=(U.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),w=`${U.name??"?"} @ ${F}:${U.line??"?"}`;W.set(w,(W.get(w)??0)+1)}let H=[...W.entries()].sort((N,U)=>U[1]-N[1]).slice(0,8).map(([N,U])=>({frame:N,count:U}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(J),samplesInWindow:K.length,top:H}))}X=setTimeout(Y,Z),X.unref?.()};return X=setTimeout(Y,Z),X.unref?.(),()=>{if(X)clearTimeout(X)}}var Rh6,Ih6;var $i1=O(()=>{({startSamplingProfiler:Rh6,samplingProfilerStackTraces:Ih6}=Th6)});function Zi1(){rm1();let $=[am1(),Kc1(),em1()];return()=>{for(let Z of $)Z()}}var Xi1=O(()=>{qg0();sm1();$i1()});var hD=_((Qi1)=>{Object.defineProperty(Qi1,"__esModule",{value:!0});Qi1.RepublishHeaders=Qi1.DirectMsgHeaders=Qi1.JsHeaders=Qi1.AdvisoryKind=void 0;Qi1.isOrderedPushConsumerOptions=qh6;Qi1.isPullConsumer=Mh6;Qi1.isPushConsumer=kh6;Qi1.isBoundPushConsumerOptions=Sh6;function qh6($){if($&&typeof $==="object")return"name_prefix"in $||"deliver_subject_prefix"in $||"filter_subjects"in $||"filter_subject"in $||"deliver_policy"in $||"opt_start_seq"in $||"opt_start_time"in $||"replay_policy"in $||"inactive_threshold"in $||"headers_only"in $||"deliver_prefix"in $;return!1}function Mh6($){return $.isPullConsumer()}function kh6($){return $.isPushConsumer()}function Sh6($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}Qi1.AdvisoryKind={API:"api_audit",StreamAction:"stream_action",ConsumerAction:"consumer_action",SnapshotCreate:"snapshot_create",SnapshotComplete:"snapshot_complete",RestoreCreate:"restore_create",RestoreComplete:"restore_complete",MaxDeliver:"max_deliver",Terminated:"terminated",Ack:"consumer_ack",StreamLeaderElected:"stream_leader_elected",StreamQuorumLost:"stream_quorum_lost",ConsumerLeaderElected:"consumer_leader_elected",ConsumerQuorumLost:"consumer_quorum_lost"};Qi1.JsHeaders={StreamSourceHdr:"Nats-Stream-Source",LastConsumerSeqHdr:"Nats-Last-Consumer",LastStreamSeqHdr:"Nats-Last-Stream",ConsumerStalledHdr:"Nats-Consumer-Stalled",MessageSizeHdr:"Nats-Msg-Size",RollupHdr:"Nats-Rollup",RollupValueSubject:"sub",RollupValueAll:"all",PendingMessagesHdr:"Nats-Pending-Messages",PendingBytesHdr:"Nats-Pending-Bytes",RequiredApiLevel:"Nats-Required-Api-Level"};Qi1.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};Qi1.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var fY=_((Gi1)=>{Object.defineProperty(Gi1,"__esModule",{value:!0});Gi1.TD=Gi1.TE=Gi1.Empty=void 0;Gi1.encode=gh6;Gi1.decode=hh6;Gi1.Empty=new Uint8Array(0);Gi1.TE=new TextEncoder;Gi1.TD=new TextDecoder;function yh6(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}function gh6(...$){let Z=[];for(let X=0;X<$.length;X++)Z.push(Gi1.TE.encode($[X]));if(Z.length===0)return Gi1.Empty;if(Z.length===1)return Z[0];return yh6(...Z)}function hh6($){if(!$||$.length===0)return"";return Gi1.TD.decode($)}});var bY=_((Wi1)=>{Object.defineProperty(Wi1,"__esModule",{value:!0});Wi1.errors=Wi1.PermissionViolationError=Wi1.NoRespondersError=Wi1.TimeoutError=Wi1.RequestError=Wi1.ProtocolError=Wi1.ConnectionError=Wi1.DrainingConnectionError=Wi1.ClosedConnectionError=Wi1.AuthorizationError=Wi1.UserAuthenticationExpiredError=Wi1.InvalidOperationError=Wi1.InvalidArgumentError=Wi1.InvalidSubjectError=void 0;class El0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}Wi1.InvalidSubjectError=El0;class x50 extends Error{constructor($,Z){super($,Z);this.name="InvalidArgumentError"}static format($,Z,X){if(Array.isArray(Z)&&Z.length>1)Z=Z[0];if(Array.isArray($))$=$.map((Q)=>`'${Q}'`),$=$.join(",");else $=`'${$}'`;return new x50(`${$} ${Z}`,X)}}Wi1.InvalidArgumentError=x50;class zl0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}Wi1.InvalidOperationError=zl0;class v50 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new v50($);return null}}Wi1.UserAuthenticationExpiredError=v50;class f50 extends Error{constructor($,Z){super($,Z);this.name="AuthorizationError"}static parse($){let Z=["authorization violation","account authentication expired","authentication timeout"],X=$.toLowerCase();for(let Q=0;Q<Z.length;Q++)if(X.indexOf(Z[Q])!==-1)return new f50($);return null}}Wi1.AuthorizationError=f50;class jl0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}Wi1.ClosedConnectionError=jl0;class Pl0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}Wi1.DrainingConnectionError=Pl0;class Al0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}Wi1.ConnectionError=Al0;class Tl0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}Wi1.ProtocolError=Tl0;class Rl0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof b50}}Wi1.RequestError=Rl0;class Il0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}Wi1.TimeoutError=Il0;class b50 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}Wi1.NoRespondersError=b50;class y50 extends Error{operation;subject;queue;constructor($,Z,X,Q,Y){super($,Y);this.name="PermissionViolationError",this.operation=Z,this.subject=X,this.queue=Q}static parse($){if(($?$.toLowerCase():"").indexOf("permissions violation")===-1)return null;let X="publish",Q="",Y=void 0,G=$.match(/(Publish|Subscription) to "(\S+)"/);if(G){if(X=G[1].toLowerCase(),Q=G[2],X==="subscription"){let J=$.match(/using queue "(\S+)"/);if(J)Y=J[1]}}return new y50($,X,Q,Y)}}Wi1.PermissionViolationError=y50;Wi1.errors={AuthorizationError:f50,ClosedConnectionError:jl0,ConnectionError:Al0,DrainingConnectionError:Pl0,InvalidArgumentError:x50,InvalidOperationError:zl0,InvalidSubjectError:El0,NoRespondersError:b50,PermissionViolationError:y50,ProtocolError:Tl0,RequestError:Rl0,TimeoutError:Il0,UserAuthenticationExpiredError:v50}});var JJ=_((wi1)=>{Object.defineProperty(wi1,"__esModule",{value:!0});wi1.SimpleMutex=wi1.Perf=void 0;wi1.extend=Xu6;wi1.render=Qu6;wi1.timeout=Yu6;wi1.delay=Gu6;wi1.deadline=Ju6;wi1.deferred=Ml0;wi1.debugDeferred=Ku6;wi1.shuffle=Wu6;wi1.collect=Hu6;wi1.jitter=Fi1;wi1.backoff=Nu6;wi1.nanos=Uu6;wi1.millis=Fu6;wi1.randomToken=Ou6;var Zu6=fY(),ql0=bY();function Xu6($,...Z){for(let X=0;X<Z.length;X++){let Q=Z[X];Object.keys(Q).forEach(function(Y){$[Y]=Q[Y]})}return $}function Qu6($){return Zu6.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function Yu6($,Z=!0){let X=Z?new ql0.TimeoutError:null,Q,Y,G=new Promise((J,K)=>{Q={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(X===null)K(new ql0.TimeoutError);else K(X)},$)});return Object.assign(G,Q)}function Gu6($=0){let Z,X=new Promise((Q)=>{let Y=setTimeout(()=>{Q()},$);Z={cancel:()=>{if(Y)clearTimeout(Y),Q()}}});return Object.assign(X,Z)}async function Ju6($,Z=1000){let X=Ml0(),Q=setTimeout(()=>{X.reject(new ql0.TimeoutError)},Z);try{return await Promise.race([$,X])}finally{clearTimeout(Q)}}function Ml0(){let $={},Z=new Promise((X,Q)=>{$={resolve:X,reject:Q}});return Object.assign(Z,$)}function Ku6(){let $={},Z=new Promise((X,Q)=>{$={resolve:(Y)=>{console.trace("resolve",Y),X(Y)},reject:(Y)=>{console.trace("reject"),Q(Y)}}});return Object.assign(Z,$)}function Wu6($){for(let Z=$.length-1;Z>0;Z--){let X=Math.floor(Math.random()*(Z+1));[$[Z],$[X]]=[$[X],$[Z]]}return $}async function Hu6($){let Z=[];for await(let X of $)Z.push(X);return Z}class Ni1{timers;measures;constructor(){this.timers=new Map,this.measures=new Map}mark($){this.timers.set($,performance.now())}measure($,Z,X){let Q=this.timers.get(Z);if(Q===void 0)throw Error(`${Z} is not defined`);let Y=this.timers.get(X);if(Y===void 0)throw Error(`${X} is not defined`);this.measures.set($,Y-Q)}getEntries(){let $=[];return this.measures.forEach((Z,X)=>{$.push({name:X,duration:Z})}),$}}wi1.Perf=Ni1;class Ui1{max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=Ml0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}wi1.SimpleMutex=Ui1;function Fi1($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function Nu6($=[0,250,250,500,500,3000,5000]){if(!Array.isArray($))$=[0,250,250,500,500,3000,5000];let Z=$.length-1;return{backoff(X){return Fi1(X>Z?$[Z]:$[X])}}}function Uu6($){return $*1e6}function Fu6($){return Math.floor($/1e6)}var wu6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",PN=new Uint8Array(62);for(let $=0;$<62;$++)PN[$]=wu6.charCodeAt($);var Bu6=218340105584896;function Ou6(){let $=Math.floor(Math.random()*Bu6),Z=$%62,X=PN[Z];$=($-Z)/62,Z=$%62;let Q=PN[Z];$=($-Z)/62,Z=$%62;let Y=PN[Z];$=($-Z)/62,Z=$%62;let G=PN[Z];$=($-Z)/62,Z=$%62;let J=PN[Z];$=($-Z)/62,Z=$%62;let K=PN[Z];$=($-Z)/62,Z=$%62;let W=PN[Z];$=($-Z)/62;let H=PN[$];return String.fromCharCode(X,Q,Y,G,J,K,W,H)}});var Pi1=_((zi1)=>{Object.defineProperty(zi1,"__esModule",{value:!0});zi1.nuid=zi1.NuidImpl=void 0;var Cu6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",Nw=62,h50=12,Di1=10,Oi1=33,_u6=333,Li1=h50+Di1,Sl0=new Uint8Array(Nw);for(let $=0;$<Nw;$++)Sl0[$]=Cu6.charCodeAt($);var g50=4294967296,Ei1=BigInt(Nw)**BigInt(Di1),zm=Number(Ei1/(1n<<32n)),kl0=Number(Ei1%(1n<<32n));function xu6($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function vu6($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else xu6($)}class Vl0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(Li1),this.cbuf=new Uint8Array(h50),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(zm+1)),this.seqLo=Math.floor(Math.random()*g50);while($++<8&&this.seqHi===zm&&this.seqLo>=kl0);if(this.seqHi===zm&&this.seqLo>=kl0)this.seqLo=0;this.inc=Math.random()*(_u6-Oi1)+Oi1|0}setPre(){vu6(this.cbuf);for(let $=0;$<h50;$++)this.buf[$]=Sl0[this.cbuf[$]%Nw]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let X=Li1-1;X>=h50;X--){let Q=Math.floor($/Nw),G=($-Q*Nw)*g50+Z,J=Math.floor(G/Nw),K=G-J*Nw;this.buf[X]=Sl0[K],$=Q,Z=J}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=g50)this.seqLo-=g50,this.seqHi+=1;if(this.seqHi>zm||this.seqHi===zm&&this.seqLo>=kl0)this.setPre(),this.initSeqAndInc();this.fillSeq();let $=this.buf;return String.fromCharCode($[0],$[1],$[2],$[3],$[4],$[5],$[6],$[7],$[8],$[9],$[10],$[11],$[12],$[13],$[14],$[15],$[16],$[17],$[18],$[19],$[20],$[21])}reset(){this.init()}}zi1.NuidImpl=Vl0;zi1.nuid=new Vl0});var Ii1=_((Ti1)=>{Object.defineProperty(Ti1,"__esModule",{value:!0});Ti1.nuid=Ti1.Nuid=void 0;var Ai1=Pi1();Ti1.Nuid=Ai1.NuidImpl;Ti1.nuid=Ai1.nuid});var c50=_((u50)=>{Object.defineProperty(u50,"__esModule",{value:!0});u50.nuid=u50.Nuid=void 0;var qi1=Ii1();Object.defineProperty(u50,"Nuid",{enumerable:!0,get:function(){return qi1.Nuid}});Object.defineProperty(u50,"nuid",{enumerable:!0,get:function(){return qi1.nuid}})});var Uw=_((Mi1)=>{Object.defineProperty(Mi1,"__esModule",{value:!0});Mi1.DEFAULT_HOST=Mi1.DEFAULT_PORT=Mi1.Match=void 0;Mi1.syncIterator=uu6;Mi1.createInbox=cu6;var gu6=c50(),hu6=bY();Mi1.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function uu6($){let Z=$[Symbol.asyncIterator]();return{async next(){let X=await Z.next();if(X.done)return Promise.resolve(null);return Promise.resolve(X.value)}}}function cu6($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw hu6.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${gu6.nuid.next()}`}Mi1.DEFAULT_PORT=4222;Mi1.DEFAULT_HOST="127.0.0.1"});var jm=_((Ci1)=>{Object.defineProperty(Ci1,"__esModule",{value:!0});Ci1.DataBuffer=void 0;var Si1=fY();class Vi1{buffers;byteLength;constructor(){this.buffers=[],this.byteLength=0}static concat(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}static fromAscii($){if(!$)$="";return Si1.TE.encode($)}static toAscii($){return Si1.TD.decode($)}reset(){this.buffers.length=0,this.byteLength=0}pack(){if(this.buffers.length>1){let $=new Uint8Array(this.byteLength),Z=0;for(let X=0;X<this.buffers.length;X++)$.set(this.buffers[X],Z),Z+=this.buffers[X].length;this.buffers.length=0,this.buffers.push($)}}shift(){if(this.buffers.length){let $=this.buffers.shift();if($)return this.byteLength-=$.length,$}return new Uint8Array(0)}drain($){if(this.buffers.length){this.pack();let Z=this.buffers.pop();if(Z){let X=this.byteLength;if($===void 0||$>X)$=X;let Q=Z.subarray(0,$);if(X>$)this.buffers.push(Z.subarray($));return this.byteLength=X-$,Q}}return new Uint8Array(0)}fill($,...Z){if($)this.buffers.push($),this.byteLength+=$.length;for(let X=0;X<Z.length;X++)if(Z[X]&&Z[X].length)this.buffers.push(Z[X]),this.byteLength+=Z[X].length}peek(){if(this.buffers.length)return this.pack(),this.buffers[0];return new Uint8Array(0)}size(){return this.byteLength}length(){return this.buffers.length}}Ci1.DataBuffer=Vi1});var uD=_((vi1)=>{Object.defineProperty(vi1,"__esModule",{value:!0});vi1.LF=vi1.CR=vi1.CRLF=vi1.CR_LF_LEN=vi1.CR_LF=void 0;vi1.setTransportFactory=ou6;vi1.defaultPort=ru6;vi1.getUrlParseFn=au6;vi1.newTransport=su6;vi1.getResolveFn=eu6;vi1.protoLen=xi1;vi1.extractProtocolMessage=$c6;var nu6=fY(),pu6=Uw(),tu6=jm(),yY;function ou6($){yY=$}function ru6(){return yY!==void 0&&yY.defaultPort!==void 0?yY.defaultPort:pu6.DEFAULT_PORT}function au6(){return yY!==void 0&&yY.urlParseFn?yY.urlParseFn:void 0}function su6(){if(!yY||typeof yY.factory!=="function")throw Error("transport fn is not set");return yY.factory()}function eu6(){return yY!==void 0&&yY.dnsResolveFn?yY.dnsResolveFn:void 0}vi1.CR_LF=`\r
|
|
1289
|
+
`);Q=G.pop()??"";for(let J of G){let K=Dm(J).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;Kw({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:K})}}(async()=>{for(;;){let{done:G,value:J}=await Z.read();if(G)break;Q+=X.decode(J,{stream:!0}),Y()}if(Q.trim()){let G=Dm(Q).replace(/^\[\d+\]\s*/,"").trim();if(G)Kw({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:G})}})()}async function Nh6($){let{baseUrl:Z,noTui:X}=$,Q=process.env.HOST==="0.0.0.0"&&Boolean(process.env.PORT),Y=Q?process.env.PORT:$.vitePort,G=Z||`http://localhost:${Y}`,J=Q?await Lm(Number(Y)+1):await Lm(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await k50({port:String(J),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let L of W)bD({name:L.name,status:"ready",port:L.port});Bm();let N=Hh6(import.meta.dir,"..","..","..","..",".."),U=X===!0,F=Bun.spawn(["bun","run","dev:servers"],{cwd:N,env:{...process.env,PORT:String(K.port),VITE_PORT:String(Y),DATABASE_URL:K.databaseUrl,NATS_URL:K.natsUrls.join(","),NODE_ENV:K.nodeEnv,BASE_URL:G,DECOCMS_LOCAL_MODE:String(K.localMode),DECOCMS_HOME:K.dataDir,DATA_DIR:K.dataDir,DECO_CLI:"1",...K.betterAuthSecret?{BETTER_AUTH_SECRET:K.betterAuthSecret}:{},...K.s3Endpoint?{S3_ENDPOINT:K.s3Endpoint,S3_BUCKET:K.s3Bucket??"",S3_ACCESS_KEY_ID:K.s3AccessKeyId??"",S3_SECRET_ACCESS_KEY:K.s3SecretAccessKey??"",S3_FORCE_PATH_STYLE:String(K.s3ForcePathStyle)}:{},...K.natsPublicUrl&&K.natsAccountJwt&&K.natsAccountSigningKey?{NATS_PUBLIC_URL:K.natsPublicUrl,NATS_ACCOUNT_JWT:K.natsAccountJwt,NATS_ACCOUNT_SIGNING_KEY:K.natsAccountSigningKey,NATS_OPERATOR_JWT:K.natsOperatorJwt??"",NATS_TUNNEL_PUBLIC_ENABLED:"true",...K.natsCredsPath?{NATS_CREDS:K.natsCredsPath}:{}}:{}},stdio:["inherit",U?"inherit":"pipe",U?"inherit":"pipe"]});if(!U)bm1(F.stdout),bm1(F.stderr);Om(G),bD({name:"Vite",status:"ready",port:Number(Y)}),bD({name:"API",status:"ready",port:Number(K.port)});let B=async(L)=>{if(F.kill(L),await F.exited,H.length>0){let{stopServices:D}=await Promise.resolve().then(() => (u$0(),h$0));await D(K.dataDir)}};return process.on("SIGINT",()=>B("SIGINT")),process.on("SIGTERM",()=>B("SIGTERM")),{port:Number(Y),process:F}}var Nl0=O(()=>{Yl0();yD();Wl0()});var C50;var Ul0=O(()=>{C50={name:"decocms",version:"4.181.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",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.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"}}});import{Box as Fh6,Text as ym1}from"ink";import{jsx as wh6,jsxs as gm1}from"react/jsx-runtime";function hm1({version:$}){return gm1(Fh6,{flexDirection:"column",marginTop:1,children:[K50.map((Z,X)=>wh6(ym1,{color:W50[X],children:Z},X)),gm1(ym1,{dimColor:!0,children:[" v",$]})]})}var um1=O(()=>{Xm()});import{Box as gD,Text as Ww}from"ink";import{Spinner as Bh6}from"@inkjs/ui";import{jsx as vY,jsxs as df}from"react/jsx-runtime";function cm1({status:$}){if($==="pending")return vY(Bh6,{label:""});return vY(Ww,{color:"green",children:"\u2713"})}function Oh6($){return`${$.name}: ${$.port||"...."}`}function lm1({services:$,migrationsStatus:Z,home:X,serverUrl:Q}){return df(gD,{flexDirection:"column",paddingBottom:1,children:[vY(hm1,{version:C50.version}),vY(gD,{marginBottom:1,children:vY(Ww,{dimColor:!0,children:"\u2500".repeat(80)})}),vY(gD,{children:df(Ww,{dimColor:!0,children:["Home: ",X]})}),df(gD,{gap:2,children:[$.map((Y)=>df(gD,{gap:1,children:[vY(Ww,{children:Oh6(Y)}),vY(cm1,{status:Y.status})]},Y.name)),df(gD,{gap:1,children:[vY(Ww,{children:"Migrations"}),vY(cm1,{status:Z})]})]}),vY(gD,{children:Q?df(Ww,{children:["Open in browser: ",vY(Ww,{color:"cyan",children:Q})]}):vY(Ww,{dimColor:!0,children:"Starting..."})})]})}var dm1=O(()=>{Ul0();um1()});import{Box as Lh6,Text as Em}from"ink";import{jsx as Fl0,jsxs as wl0}from"react/jsx-runtime";function Dh6($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function mm1({logs:$}){return Fl0(Lh6,{flexDirection:"column",children:$.map((Z,X)=>{if(Z.rawLine)return Fl0(Em,{dimColor:!0,children:Z.rawLine},X);let Q=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return wl0(Em,{children:[wl0(Em,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),Fl0(Em,{color:Dh6(Z.status),children:Z.status}),wl0(Em,{dimColor:!0,children:[" ",Q.padStart(8)]})]},X)})})}var im1=()=>{};var Bl0={};O0(Bl0,{App:()=>jh6});import{Box as Eh6}from"ink";import{useSyncExternalStore as zh6}from"react";import{jsx as nm1,jsxs as Ph6}from"react/jsx-runtime";function jh6({home:$}){let Z=zh6(Kl0,Jl0);return Ph6(Eh6,{flexDirection:"column",children:[nm1(lm1,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),nm1(mm1,{logs:Z.logs})]})}var Ol0=O(()=>{dm1();im1();yD()});var GJ="thread-gate",jN="decopilot-hosted-harness",lG="automations",Hw="background-tools";var pm1="7";function tm1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:pm1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var om1=()=>{};function Ah6(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function Ll0($,Z){for(let X=0;X<$.length;X++){let Q=$[X];if(Q===void 0)continue;if(Q===Z)return $[X+1];if(Q.startsWith(`${Z}=`))return Q.slice(Z.length+1)}return}function rm1(){let $=Ah6();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:Ll0($,"--cpu-prof-dir")??process.cwd(),name:Ll0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(Ll0($,"--cpu-prof-interval")??1000),note:"profile is written on process exit"}));return}if(process.env.CPU_PROFILE)console.warn(JSON.stringify({msg:"cpu-profiling-requested-but-inactive",hint:'CPU profiling is a Bun launch flag. Set BUN_OPTIONS="--cpu-prof --cpu-prof-md --cpu-prof-dir=/tmp" before starting the process.'}))}function am1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let X=_D();if(!X)return;let Q={};try{let{heapStats:Y}=await import("bun:jsc"),G=Y(),J=Object.entries(G.objectTypeCounts).sort((K,W)=>W[1]-K[1]).slice(0,20);Q={objectCount:G.objectCount,heapSize:G.heapSize,top:Object.fromEntries(J)}}catch{}console.log(JSON.stringify({msg:"heap-watch",ts:new Date().toISOString(),uptimeS:Math.round(process.uptime()),rss:X.rss,heapUsed:X.heapUsed,heapTotal:X.heapTotal,external:X.external,arrayBuffers:X.arrayBuffers,...Q}))};return Z().catch(()=>{}),_50=setInterval(()=>void Z().catch(()=>{}),$),_50.unref?.(),process.on("SIGUSR2",()=>{try{let X=Bun.generateHeapSnapshot("v8"),Q=typeof X==="string"?X:JSON.stringify(X),Y=`/tmp/heap-${process.pid}-${Date.now()}.heapsnapshot`;Bun.write(Y,Q),console.log(JSON.stringify({msg:"heap-snapshot-written",path:Y}))}catch(X){console.error("[heap-watch] snapshot failed:",X)}}),()=>{if(_50)clearInterval(_50)}}var _50;var sm1=()=>{};import*as Th6 from"bun:jsc";function em1(){if(process.env.STALL_WATCHDOG!=="1")return()=>{};let $=Number(process.env.STALL_WATCHDOG_MS??100),Z=Number(process.env.STALL_WATCHDOG_TICK_MS??50);try{Rh6()}catch(G){return console.error("[stall-watchdog] failed to start sampling profiler:",G),()=>{}}let X,Q=performance.now()+Z,Y=()=>{let G=performance.now(),J=G-Q;Q=G+Z;let K=[];try{K=Ih6()?.traces??[]}catch{}if(J>$&&K.length>0){let W=new Map;for(let N of K){let U=N.frames.find((B)=>B.sourceURL&&!/Unknown Executable/.test(B.category??""))??N.frames[0];if(!U)continue;let F=(U.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),w=`${U.name??"?"} @ ${F}:${U.line??"?"}`;W.set(w,(W.get(w)??0)+1)}let H=[...W.entries()].sort((N,U)=>U[1]-N[1]).slice(0,8).map(([N,U])=>({frame:N,count:U}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(J),samplesInWindow:K.length,top:H}))}X=setTimeout(Y,Z),X.unref?.()};return X=setTimeout(Y,Z),X.unref?.(),()=>{if(X)clearTimeout(X)}}var Rh6,Ih6;var $i1=O(()=>{({startSamplingProfiler:Rh6,samplingProfilerStackTraces:Ih6}=Th6)});function Zi1(){rm1();let $=[am1(),Kc1(),em1()];return()=>{for(let Z of $)Z()}}var Xi1=O(()=>{qg0();sm1();$i1()});var hD=_((Qi1)=>{Object.defineProperty(Qi1,"__esModule",{value:!0});Qi1.RepublishHeaders=Qi1.DirectMsgHeaders=Qi1.JsHeaders=Qi1.AdvisoryKind=void 0;Qi1.isOrderedPushConsumerOptions=qh6;Qi1.isPullConsumer=Mh6;Qi1.isPushConsumer=kh6;Qi1.isBoundPushConsumerOptions=Sh6;function qh6($){if($&&typeof $==="object")return"name_prefix"in $||"deliver_subject_prefix"in $||"filter_subjects"in $||"filter_subject"in $||"deliver_policy"in $||"opt_start_seq"in $||"opt_start_time"in $||"replay_policy"in $||"inactive_threshold"in $||"headers_only"in $||"deliver_prefix"in $;return!1}function Mh6($){return $.isPullConsumer()}function kh6($){return $.isPushConsumer()}function Sh6($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}Qi1.AdvisoryKind={API:"api_audit",StreamAction:"stream_action",ConsumerAction:"consumer_action",SnapshotCreate:"snapshot_create",SnapshotComplete:"snapshot_complete",RestoreCreate:"restore_create",RestoreComplete:"restore_complete",MaxDeliver:"max_deliver",Terminated:"terminated",Ack:"consumer_ack",StreamLeaderElected:"stream_leader_elected",StreamQuorumLost:"stream_quorum_lost",ConsumerLeaderElected:"consumer_leader_elected",ConsumerQuorumLost:"consumer_quorum_lost"};Qi1.JsHeaders={StreamSourceHdr:"Nats-Stream-Source",LastConsumerSeqHdr:"Nats-Last-Consumer",LastStreamSeqHdr:"Nats-Last-Stream",ConsumerStalledHdr:"Nats-Consumer-Stalled",MessageSizeHdr:"Nats-Msg-Size",RollupHdr:"Nats-Rollup",RollupValueSubject:"sub",RollupValueAll:"all",PendingMessagesHdr:"Nats-Pending-Messages",PendingBytesHdr:"Nats-Pending-Bytes",RequiredApiLevel:"Nats-Required-Api-Level"};Qi1.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};Qi1.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var fY=_((Gi1)=>{Object.defineProperty(Gi1,"__esModule",{value:!0});Gi1.TD=Gi1.TE=Gi1.Empty=void 0;Gi1.encode=gh6;Gi1.decode=hh6;Gi1.Empty=new Uint8Array(0);Gi1.TE=new TextEncoder;Gi1.TD=new TextDecoder;function yh6(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}function gh6(...$){let Z=[];for(let X=0;X<$.length;X++)Z.push(Gi1.TE.encode($[X]));if(Z.length===0)return Gi1.Empty;if(Z.length===1)return Z[0];return yh6(...Z)}function hh6($){if(!$||$.length===0)return"";return Gi1.TD.decode($)}});var bY=_((Wi1)=>{Object.defineProperty(Wi1,"__esModule",{value:!0});Wi1.errors=Wi1.PermissionViolationError=Wi1.NoRespondersError=Wi1.TimeoutError=Wi1.RequestError=Wi1.ProtocolError=Wi1.ConnectionError=Wi1.DrainingConnectionError=Wi1.ClosedConnectionError=Wi1.AuthorizationError=Wi1.UserAuthenticationExpiredError=Wi1.InvalidOperationError=Wi1.InvalidArgumentError=Wi1.InvalidSubjectError=void 0;class El0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}Wi1.InvalidSubjectError=El0;class x50 extends Error{constructor($,Z){super($,Z);this.name="InvalidArgumentError"}static format($,Z,X){if(Array.isArray(Z)&&Z.length>1)Z=Z[0];if(Array.isArray($))$=$.map((Q)=>`'${Q}'`),$=$.join(",");else $=`'${$}'`;return new x50(`${$} ${Z}`,X)}}Wi1.InvalidArgumentError=x50;class zl0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}Wi1.InvalidOperationError=zl0;class v50 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new v50($);return null}}Wi1.UserAuthenticationExpiredError=v50;class f50 extends Error{constructor($,Z){super($,Z);this.name="AuthorizationError"}static parse($){let Z=["authorization violation","account authentication expired","authentication timeout"],X=$.toLowerCase();for(let Q=0;Q<Z.length;Q++)if(X.indexOf(Z[Q])!==-1)return new f50($);return null}}Wi1.AuthorizationError=f50;class jl0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}Wi1.ClosedConnectionError=jl0;class Pl0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}Wi1.DrainingConnectionError=Pl0;class Al0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}Wi1.ConnectionError=Al0;class Tl0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}Wi1.ProtocolError=Tl0;class Rl0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof b50}}Wi1.RequestError=Rl0;class Il0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}Wi1.TimeoutError=Il0;class b50 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}Wi1.NoRespondersError=b50;class y50 extends Error{operation;subject;queue;constructor($,Z,X,Q,Y){super($,Y);this.name="PermissionViolationError",this.operation=Z,this.subject=X,this.queue=Q}static parse($){if(($?$.toLowerCase():"").indexOf("permissions violation")===-1)return null;let X="publish",Q="",Y=void 0,G=$.match(/(Publish|Subscription) to "(\S+)"/);if(G){if(X=G[1].toLowerCase(),Q=G[2],X==="subscription"){let J=$.match(/using queue "(\S+)"/);if(J)Y=J[1]}}return new y50($,X,Q,Y)}}Wi1.PermissionViolationError=y50;Wi1.errors={AuthorizationError:f50,ClosedConnectionError:jl0,ConnectionError:Al0,DrainingConnectionError:Pl0,InvalidArgumentError:x50,InvalidOperationError:zl0,InvalidSubjectError:El0,NoRespondersError:b50,PermissionViolationError:y50,ProtocolError:Tl0,RequestError:Rl0,TimeoutError:Il0,UserAuthenticationExpiredError:v50}});var JJ=_((wi1)=>{Object.defineProperty(wi1,"__esModule",{value:!0});wi1.SimpleMutex=wi1.Perf=void 0;wi1.extend=Xu6;wi1.render=Qu6;wi1.timeout=Yu6;wi1.delay=Gu6;wi1.deadline=Ju6;wi1.deferred=Ml0;wi1.debugDeferred=Ku6;wi1.shuffle=Wu6;wi1.collect=Hu6;wi1.jitter=Fi1;wi1.backoff=Nu6;wi1.nanos=Uu6;wi1.millis=Fu6;wi1.randomToken=Ou6;var Zu6=fY(),ql0=bY();function Xu6($,...Z){for(let X=0;X<Z.length;X++){let Q=Z[X];Object.keys(Q).forEach(function(Y){$[Y]=Q[Y]})}return $}function Qu6($){return Zu6.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function Yu6($,Z=!0){let X=Z?new ql0.TimeoutError:null,Q,Y,G=new Promise((J,K)=>{Q={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(X===null)K(new ql0.TimeoutError);else K(X)},$)});return Object.assign(G,Q)}function Gu6($=0){let Z,X=new Promise((Q)=>{let Y=setTimeout(()=>{Q()},$);Z={cancel:()=>{if(Y)clearTimeout(Y),Q()}}});return Object.assign(X,Z)}async function Ju6($,Z=1000){let X=Ml0(),Q=setTimeout(()=>{X.reject(new ql0.TimeoutError)},Z);try{return await Promise.race([$,X])}finally{clearTimeout(Q)}}function Ml0(){let $={},Z=new Promise((X,Q)=>{$={resolve:X,reject:Q}});return Object.assign(Z,$)}function Ku6(){let $={},Z=new Promise((X,Q)=>{$={resolve:(Y)=>{console.trace("resolve",Y),X(Y)},reject:(Y)=>{console.trace("reject"),Q(Y)}}});return Object.assign(Z,$)}function Wu6($){for(let Z=$.length-1;Z>0;Z--){let X=Math.floor(Math.random()*(Z+1));[$[Z],$[X]]=[$[X],$[Z]]}return $}async function Hu6($){let Z=[];for await(let X of $)Z.push(X);return Z}class Ni1{timers;measures;constructor(){this.timers=new Map,this.measures=new Map}mark($){this.timers.set($,performance.now())}measure($,Z,X){let Q=this.timers.get(Z);if(Q===void 0)throw Error(`${Z} is not defined`);let Y=this.timers.get(X);if(Y===void 0)throw Error(`${X} is not defined`);this.measures.set($,Y-Q)}getEntries(){let $=[];return this.measures.forEach((Z,X)=>{$.push({name:X,duration:Z})}),$}}wi1.Perf=Ni1;class Ui1{max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=Ml0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}wi1.SimpleMutex=Ui1;function Fi1($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function Nu6($=[0,250,250,500,500,3000,5000]){if(!Array.isArray($))$=[0,250,250,500,500,3000,5000];let Z=$.length-1;return{backoff(X){return Fi1(X>Z?$[Z]:$[X])}}}function Uu6($){return $*1e6}function Fu6($){return Math.floor($/1e6)}var wu6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",PN=new Uint8Array(62);for(let $=0;$<62;$++)PN[$]=wu6.charCodeAt($);var Bu6=218340105584896;function Ou6(){let $=Math.floor(Math.random()*Bu6),Z=$%62,X=PN[Z];$=($-Z)/62,Z=$%62;let Q=PN[Z];$=($-Z)/62,Z=$%62;let Y=PN[Z];$=($-Z)/62,Z=$%62;let G=PN[Z];$=($-Z)/62,Z=$%62;let J=PN[Z];$=($-Z)/62,Z=$%62;let K=PN[Z];$=($-Z)/62,Z=$%62;let W=PN[Z];$=($-Z)/62;let H=PN[$];return String.fromCharCode(X,Q,Y,G,J,K,W,H)}});var Pi1=_((zi1)=>{Object.defineProperty(zi1,"__esModule",{value:!0});zi1.nuid=zi1.NuidImpl=void 0;var Cu6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",Nw=62,h50=12,Di1=10,Oi1=33,_u6=333,Li1=h50+Di1,Sl0=new Uint8Array(Nw);for(let $=0;$<Nw;$++)Sl0[$]=Cu6.charCodeAt($);var g50=4294967296,Ei1=BigInt(Nw)**BigInt(Di1),zm=Number(Ei1/(1n<<32n)),kl0=Number(Ei1%(1n<<32n));function xu6($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function vu6($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else xu6($)}class Vl0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(Li1),this.cbuf=new Uint8Array(h50),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(zm+1)),this.seqLo=Math.floor(Math.random()*g50);while($++<8&&this.seqHi===zm&&this.seqLo>=kl0);if(this.seqHi===zm&&this.seqLo>=kl0)this.seqLo=0;this.inc=Math.random()*(_u6-Oi1)+Oi1|0}setPre(){vu6(this.cbuf);for(let $=0;$<h50;$++)this.buf[$]=Sl0[this.cbuf[$]%Nw]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let X=Li1-1;X>=h50;X--){let Q=Math.floor($/Nw),G=($-Q*Nw)*g50+Z,J=Math.floor(G/Nw),K=G-J*Nw;this.buf[X]=Sl0[K],$=Q,Z=J}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=g50)this.seqLo-=g50,this.seqHi+=1;if(this.seqHi>zm||this.seqHi===zm&&this.seqLo>=kl0)this.setPre(),this.initSeqAndInc();this.fillSeq();let $=this.buf;return String.fromCharCode($[0],$[1],$[2],$[3],$[4],$[5],$[6],$[7],$[8],$[9],$[10],$[11],$[12],$[13],$[14],$[15],$[16],$[17],$[18],$[19],$[20],$[21])}reset(){this.init()}}zi1.NuidImpl=Vl0;zi1.nuid=new Vl0});var Ii1=_((Ti1)=>{Object.defineProperty(Ti1,"__esModule",{value:!0});Ti1.nuid=Ti1.Nuid=void 0;var Ai1=Pi1();Ti1.Nuid=Ai1.NuidImpl;Ti1.nuid=Ai1.nuid});var c50=_((u50)=>{Object.defineProperty(u50,"__esModule",{value:!0});u50.nuid=u50.Nuid=void 0;var qi1=Ii1();Object.defineProperty(u50,"Nuid",{enumerable:!0,get:function(){return qi1.Nuid}});Object.defineProperty(u50,"nuid",{enumerable:!0,get:function(){return qi1.nuid}})});var Uw=_((Mi1)=>{Object.defineProperty(Mi1,"__esModule",{value:!0});Mi1.DEFAULT_HOST=Mi1.DEFAULT_PORT=Mi1.Match=void 0;Mi1.syncIterator=uu6;Mi1.createInbox=cu6;var gu6=c50(),hu6=bY();Mi1.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function uu6($){let Z=$[Symbol.asyncIterator]();return{async next(){let X=await Z.next();if(X.done)return Promise.resolve(null);return Promise.resolve(X.value)}}}function cu6($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw hu6.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${gu6.nuid.next()}`}Mi1.DEFAULT_PORT=4222;Mi1.DEFAULT_HOST="127.0.0.1"});var jm=_((Ci1)=>{Object.defineProperty(Ci1,"__esModule",{value:!0});Ci1.DataBuffer=void 0;var Si1=fY();class Vi1{buffers;byteLength;constructor(){this.buffers=[],this.byteLength=0}static concat(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}static fromAscii($){if(!$)$="";return Si1.TE.encode($)}static toAscii($){return Si1.TD.decode($)}reset(){this.buffers.length=0,this.byteLength=0}pack(){if(this.buffers.length>1){let $=new Uint8Array(this.byteLength),Z=0;for(let X=0;X<this.buffers.length;X++)$.set(this.buffers[X],Z),Z+=this.buffers[X].length;this.buffers.length=0,this.buffers.push($)}}shift(){if(this.buffers.length){let $=this.buffers.shift();if($)return this.byteLength-=$.length,$}return new Uint8Array(0)}drain($){if(this.buffers.length){this.pack();let Z=this.buffers.pop();if(Z){let X=this.byteLength;if($===void 0||$>X)$=X;let Q=Z.subarray(0,$);if(X>$)this.buffers.push(Z.subarray($));return this.byteLength=X-$,Q}}return new Uint8Array(0)}fill($,...Z){if($)this.buffers.push($),this.byteLength+=$.length;for(let X=0;X<Z.length;X++)if(Z[X]&&Z[X].length)this.buffers.push(Z[X]),this.byteLength+=Z[X].length}peek(){if(this.buffers.length)return this.pack(),this.buffers[0];return new Uint8Array(0)}size(){return this.byteLength}length(){return this.buffers.length}}Ci1.DataBuffer=Vi1});var uD=_((vi1)=>{Object.defineProperty(vi1,"__esModule",{value:!0});vi1.LF=vi1.CR=vi1.CRLF=vi1.CR_LF_LEN=vi1.CR_LF=void 0;vi1.setTransportFactory=ou6;vi1.defaultPort=ru6;vi1.getUrlParseFn=au6;vi1.newTransport=su6;vi1.getResolveFn=eu6;vi1.protoLen=xi1;vi1.extractProtocolMessage=$c6;var nu6=fY(),pu6=Uw(),tu6=jm(),yY;function ou6($){yY=$}function ru6(){return yY!==void 0&&yY.defaultPort!==void 0?yY.defaultPort:pu6.DEFAULT_PORT}function au6(){return yY!==void 0&&yY.urlParseFn?yY.urlParseFn:void 0}function su6(){if(!yY||typeof yY.factory!=="function")throw Error("transport fn is not set");return yY.factory()}function eu6(){return yY!==void 0&&yY.dnsResolveFn?yY.dnsResolveFn:void 0}vi1.CR_LF=`\r
|
|
1290
1290
|
`;vi1.CR_LF_LEN=vi1.CR_LF.length;vi1.CRLF=tu6.DataBuffer.fromAscii(vi1.CR_LF);vi1.CR=new Uint8Array(vi1.CRLF)[0];vi1.LF=new Uint8Array(vi1.CRLF)[1];function xi1($){for(let Z=0;Z<$.length;Z++){let X=Z+1;if($.byteLength>X&&$[Z]===vi1.CR&&$[X]===vi1.LF)return X+1}return 0}function $c6($){let Z=xi1($);if(Z>0){let Q=new Uint8Array($).slice(0,Z);return nu6.TD.decode(Q)}return""}});var fl0=_((li1)=>{Object.defineProperty(li1,"__esModule",{value:!0});li1.ipV4=hi1;li1.isIP=Uc6;li1.parseIP=ui1;var Pm=4,cD=16,l50=48,gi1=57,bi1=65,Hc6=70,yi1=97,Nc6=102,vl0=16777215;function hi1($,Z,X,Q){let Y=new Uint8Array(cD);return[0,0,0,0,0,0,0,0,0,0,255,255].forEach((J,K)=>{Y[K]=J}),Y[12]=$,Y[13]=Z,Y[14]=X,Y[15]=Q,Y}function Uc6($){return ui1($)!==void 0}function ui1($){for(let Z=0;Z<$.length;Z++)switch($[Z]){case".":return ci1($);case":":return Fc6($)}return}function ci1($){let Z=new Uint8Array(Pm);for(let X=0;X<Pm;X++){if($.length===0)return;if(X>0){if($[0]!==".")return;$=$.substring(1)}let{n:Q,c:Y,ok:G}=wc6($);if(!G||Q>255)return;$=$.substring(Y),Z[X]=Q}return hi1(Z[0],Z[1],Z[2],Z[3])}function Fc6($){let Z=new Uint8Array(cD),X=-1;if($.length>=2&&$[0]===":"&&$[1]===":"){if(X=0,$=$.substring(2),$.length===0)return Z}let Q=0;while(Q<cD){let{n:Y,c:G,ok:J}=Bc6($);if(!J||Y>65535)return;if(G<$.length&&$[G]==="."){if(X<0&&Q!=cD-Pm)return;if(Q+Pm>cD)return;let K=ci1($);if(K===void 0)return;Z[Q]=K[12],Z[Q+1]=K[13],Z[Q+2]=K[14],Z[Q+3]=K[15],$="",Q+=Pm;break}if(Z[Q]=Y>>8,Z[Q+1]=Y,Q+=2,$=$.substring(G),$.length===0)break;if($[0]!==":"||$.length==1)return;if($=$.substring(1),$[0]===":"){if(X>=0)return;if(X=Q,$=$.substring(1),$.length===0)break}}if($.length!==0)return;if(Q<cD){if(X<0)return;let Y=cD-Q;for(let G=Q-1;G>=X;G--)Z[G+Y]=Z[G];for(let G=X+Y-1;G>=X;G--)Z[G]=0}else if(X>=0)return;return Z}function wc6($){let Z=0,X=0;for(Z=0;Z<$.length&&l50<=$.charCodeAt(Z)&&$.charCodeAt(Z)<=gi1;Z++)if(X=X*10+($.charCodeAt(Z)-l50),X>=vl0)return{n:vl0,c:Z,ok:!1};if(Z===0)return{n:0,c:0,ok:!1};return{n:X,c:Z,ok:!0}}function Bc6($){let Z=0,X=0;for(X=0;X<$.length;X++){if(l50<=$.charCodeAt(X)&&$.charCodeAt(X)<=gi1)Z*=16,Z+=$.charCodeAt(X)-l50;else if(yi1<=$.charCodeAt(X)&&$.charCodeAt(X)<=Nc6)Z*=16,Z+=$.charCodeAt(X)-yi1+10;else if(bi1<=$.charCodeAt(X)&&$.charCodeAt(X)<=Hc6)Z*=16,Z+=$.charCodeAt(X)-bi1+10;else break;if(Z>=vl0)return{n:0,c:X,ok:!1}}if(X===0)return{n:0,c:X,ok:!1};return{n:Z,c:X,ok:!0}}});var cl0=_((mi1)=>{Object.defineProperty(mi1,"__esModule",{value:!0});mi1.Servers=mi1.ServerImpl=void 0;mi1.isIPV4OrHostname=di1;mi1.hostPort=ul0;var bl0=uD(),yl0=JJ(),gl0=fl0(),Ec6=Uw(),zc6=bY();function di1($){if($.indexOf("[")!==-1||$.indexOf("::")!==-1)return!1;if($.indexOf(".")!==-1)return!0;if($.split(":").length<=2)return!0;return!1}function hl0($){return!di1($)}function jc6($){let X=$.toUpperCase().indexOf("::FFFF:");if(X!==-1&&$.indexOf(".")!==-1){let Q=$.substring(X+7);return Q=Q.replace("[",""),Q.replace("]","")}return $}function ul0($){if($=$.trim(),$.match(/^(.*:\/\/)(.*)/m))$=$.replace(/^(.*:\/\/)(.*)/gm,"$2");if($=jc6($),hl0($)&&$.indexOf("[")===-1)$=`[${$}]`;let Z=hl0($)?$.match(/(]:)(\d+)/):$.match(/(:)(\d+)/),X=Z&&Z.length===3&&Z[1]&&Z[2]?parseInt(Z[2]):Ec6.DEFAULT_PORT,Y=new URL(`${X===80?"https":"http"}://${$}`);Y.port=`${X}`;let G=Y.hostname;if(G.charAt(0)==="[")G=G.substring(1,G.length-1);return{listen:Y.host,hostname:G,port:X}}class mf{src;listen;hostname;port;didConnect;reconnects;lastConnect;gossiped;tlsName;resolves;constructor($,Z=!1){this.src=$,this.tlsName="";let X=ul0($);this.listen=X.listen,this.hostname=X.hostname,this.port=X.port,this.didConnect=!1,this.reconnects=0,this.lastConnect=0,this.gossiped=Z}toString(){return this.listen}async resolve($){if(!$.fn||$.resolve===!1)return[this];let Z=[];if((0,gl0.isIP)(this.hostname))return[this];else{let X=await $.fn(this.hostname);if($.debug)console.log(`resolve ${this.hostname} = ${X.join(",")}`);for(let Q of X){let Y=this.port===80?"https":"http",G=new URL(`${Y}://${hl0(Q)?"["+Q+"]":Q}`);G.port=`${this.port}`;let J=new mf(G.host,!1);J.tlsName=this.hostname,Z.push(J)}}if($.randomize)(0,yl0.shuffle)(Z);return this.resolves=Z,Z}}mi1.ServerImpl=mf;class d50{firstSelect;servers;currentServer;tlsName;randomize;constructor($={}){this.firstSelect=!0,this.servers=[],this.tlsName="",this.randomize=$.randomize||!1}setServers($){if(!Array.isArray($)||$.length===0)throw zc6.InvalidArgumentError.format("servers","cannot be empty");let Z=(0,bl0.getUrlParseFn)(),X=new Map;for(let Y of this.servers)X.set(Y.listen,Y);let Q=[];for(let Y of $){Y=Z?Z(Y):Y;let{listen:G}=ul0(Y),J=X.get(G);if(J)J.gossiped=!1,Q.push(J);else Q.push(new mf(Y))}if(this.randomize)(0,yl0.shuffle)(Q);if(this.servers=Q,this.currentServer===void 0||!Q.includes(this.currentServer))this.currentServer=Q[0],this.firstSelect=!0}clear(){this.servers.length=0}updateTLSName(){let $=this.getCurrentServer();if(!(0,gl0.isIP)($.hostname))this.tlsName=$.hostname,this.servers.forEach((Z)=>{if(Z.gossiped)Z.tlsName=this.tlsName})}getCurrentServer(){return this.currentServer}addServer($,Z=!1){let X=(0,bl0.getUrlParseFn)();$=X?X($):$;let Q=new mf($,Z);if((0,gl0.isIP)(Q.hostname))Q.tlsName=this.tlsName;this.servers.push(Q)}selectServer(){if(this.firstSelect)return this.firstSelect=!1,this.currentServer;let $=this.servers.shift();if($)this.servers.push($),this.currentServer=$;return $}removeCurrentServer(){this.removeServer(this.currentServer)}removeServer($){if($){let Z=this.servers.indexOf($);this.servers.splice(Z,1)}}snapshot(){return d50.freezeAll(this.servers)}snapshotForHandler(){let $=this.currentServer;if(!$)return this.snapshot();let Z=this.servers.indexOf($);if(Z<=0)return this.snapshot();return d50.freezeAll([$,...this.servers.slice(0,Z),...this.servers.slice(Z+1)])}static freezeAll($){return $.map((Z)=>Object.freeze({hostname:Z.hostname,port:Z.port,listen:Z.listen,src:Z.src,tlsName:Z.tlsName,reconnects:Z.reconnects,lastConnect:Z.lastConnect,gossiped:Z.gossiped,didConnect:Z.didConnect}))}find($){return this.servers.find((Z)=>Z.listen===$.listen)}setCurrent($){this.currentServer=$}length(){return this.servers.length}next(){return this.servers.length?this.servers[0]:void 0}getServers(){return this.servers}update($,Z){let X=[],Q=[],Y=(0,bl0.getUrlParseFn)(),G=new Map;if($.connect_urls&&$.connect_urls.length>0)$.connect_urls.forEach((K)=>{K=Y?Y(K,Z):K;let W=new mf(K,!0);G.set(K,W)});let J=[];if(this.servers.forEach((K,W)=>{let H=K.listen;if(K.gossiped&&this.currentServer.listen!==H&&G.get(H)===void 0)J.push(W);G.delete(H)}),J.reverse(),J.forEach((K)=>{let W=this.servers.splice(K,1);Q=Q.concat(W[0].listen)}),G.forEach((K,W)=>{this.servers.push(K),X.push(W)}),this.randomize&&X.length>0){let K=this.currentServer,W=this.servers.filter((H)=>H!==K);(0,yl0.shuffle)(W),this.servers=K?[K,...W]:W}return{added:X,deleted:Q}}}mi1.Servers=d50});var m50=_((ti1)=>{Object.defineProperty(ti1,"__esModule",{value:!0});ti1.QueuedIteratorImpl=void 0;var ll0=JJ(),ni1=bY();class pi1{inflight;processed;received;noIterator;iterClosed;done;signal;yields;filtered;pendingFiltered;ctx;_data;err;time;profile;yielding;didBreak;constructor(){this.inflight=0,this.filtered=0,this.pendingFiltered=0,this.processed=0,this.received=0,this.noIterator=!1,this.done=!1,this.signal=(0,ll0.deferred)(),this.yields=[],this.iterClosed=(0,ll0.deferred)(),this.time=0,this.yielding=!1,this.didBreak=!1,this.profile=!1}[Symbol.asyncIterator](){return this.iterate()}push($){if(this.done)return;if(this.didBreak){if(typeof $==="function"){let Z=$;try{Z()}catch(X){}}return}if(typeof $==="function")this.pendingFiltered++;this.yields.push($),this.signal.resolve()}async*iterate(){if(this.noIterator)throw new ni1.InvalidOperationError("iterator cannot be used when a callback is registered");if(this.yielding)throw new ni1.InvalidOperationError("iterator is already yielding");this.yielding=!0;try{while(!0){if(this.yields.length===0)await this.signal;if(this.err)throw this.err;let $=this.yields;this.inflight=$.length,this.yields=[];for(let Z=0;Z<$.length;Z++){if(typeof $[Z]==="function"){this.pendingFiltered--;let Q=$[Z];try{Q()}catch(Y){throw Y}if(this.err)throw this.err;continue}this.processed++,this.inflight--;let X=this.profile?Date.now():0;yield $[Z],this.time=this.profile?Date.now()-X:0}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,ll0.deferred)()}}finally{this.didBreak=!0,this.stop()}}stop($){if(this.done)return;this.err=$,this.done=!0,this.signal.resolve(),this.iterClosed.resolve($)}getProcessed(){return this.noIterator?this.received:this.processed}getPending(){return this.yields.length+this.inflight-this.pendingFiltered}getReceived(){return this.received-this.filtered}}ti1.QueuedIteratorImpl=pi1});var dl0=_((si1)=>{Object.defineProperty(si1,"__esModule",{value:!0});si1.MuxSubscription=void 0;var Rc6=Uw(),ri1=bY();class ai1{baseInbox;reqs;constructor(){this.reqs=new Map}size(){return this.reqs.size}init($){return this.baseInbox=`${(0,Rc6.createInbox)($)}.`,this.baseInbox}add($){if(!isNaN($.received))$.received=0;this.reqs.set($.token,$)}get($){return this.reqs.get($)}cancel($){this.reqs.delete($.token)}getToken($){let Z=$.subject||"";if(Z.indexOf(this.baseInbox)===0)return Z.substring(this.baseInbox.length);return null}all(){return Array.from(this.reqs.values())}handleError($,Z){if($)return this.all().forEach((X)=>{X.resolver(Z,{})}),!0;if(Z.operation==="publish"){let X=this.all().find((Q)=>{return Q.requestSubject===Z.subject});if(X)return X.resolver(Z,{}),!0}return!1}dispatcher(){return($,Z)=>{let X=this.getToken(Z);if(X){let Q=this.get(X);if(Q){if($===null)$=Z?.data?.length===0&&Z.headers?.code===503?new ri1.NoRespondersError(Q.requestSubject):null;Q.resolver($,Z)}}}}close(){let $=new ri1.RequestError("connection closed");this.reqs.forEach((Z)=>{Z.resolver($,{})})}}si1.MuxSubscription=ai1});var ml0=_((Zn1)=>{Object.defineProperty(Zn1,"__esModule",{value:!0});Zn1.Heartbeat=void 0;var Ic6=JJ();class $n1{ph;interval;maxOut;timer;pendings;constructor($,Z,X){this.ph=$,this.interval=Z,this.maxOut=X,this.pendings=[]}start(){this.cancel(),this._schedule()}cancel($){if(this.timer)clearTimeout(this.timer),this.timer=void 0;if(this._reset(),$)this.ph.disconnect()}_schedule(){this.timer=setTimeout(()=>{if(this.ph.dispatchStatus({type:"ping",pendingPings:this.pendings.length+1}),this.pendings.length===this.maxOut){this.cancel(!0);return}let $=(0,Ic6.deferred)();this.ph.flush($).then(()=>{this._reset()}).catch(()=>{this.cancel()}),this.pendings.push($),this._schedule()},this.interval)}_reset(){this.pendings=this.pendings.filter(($)=>{return $.resolve(),!1})}}Zn1.Heartbeat=$n1});var pl0=_((Jn1)=>{Object.defineProperty(Jn1,"__esModule",{value:!0});Jn1.DenoBuffer=Jn1.MAX_SIZE=Jn1.AssertionError=void 0;Jn1.assert=Yn1;Jn1.concat=Gn1;Jn1.append=Mc6;Jn1.readAll=kc6;Jn1.writeAll=Sc6;var qc6=fY();class il0 extends Error{constructor($){super($);this.name="AssertionError"}}Jn1.AssertionError=il0;function Yn1($,Z="Assertion failed."){if(!$)throw new il0(Z)}var Qn1=32768;Jn1.MAX_SIZE=4294967294;function i50($,Z,X=0){let Q=Z.byteLength-X;if($.byteLength>Q)$=$.subarray(0,Q);return Z.set($,X),$.byteLength}function Gn1($,Z){if($===void 0&&Z===void 0)return new Uint8Array(0);if($===void 0)return Z;if(Z===void 0)return $;let X=new Uint8Array($.length+Z.length);return X.set($,0),X.set(Z,$.length),X}function Mc6($,Z){return Gn1($,Uint8Array.of(Z))}class nl0{_buf;_off;constructor($){if(this._off=0,$==null){this._buf=new Uint8Array(0);return}this._buf=new Uint8Array($)}bytes($={copy:!0}){if($.copy===!1)return this._buf.subarray(this._off);return this._buf.slice(this._off)}empty(){return this._buf.byteLength<=this._off}get length(){return this._buf.byteLength-this._off}get capacity(){return this._buf.buffer.byteLength}truncate($){if($===0){this.reset();return}if($<0||$>this.length)throw Error("bytes.Buffer: truncation out of range");this._reslice(this._off+$)}reset(){this._reslice(0),this._off=0}_tryGrowByReslice($){let Z=this._buf.byteLength;if($<=this.capacity-Z)return this._reslice(Z+$),Z;return-1}_reslice($){Yn1($<=this._buf.buffer.byteLength),this._buf=new Uint8Array(this._buf.buffer,0,$)}readByte(){let $=new Uint8Array(1);if(this.read($))return $[0];return null}read($){if(this.empty()){if(this.reset(),$.byteLength===0)return 0;return null}let Z=i50(this._buf.subarray(this._off),$);return this._off+=Z,Z}writeByte($){return this.write(Uint8Array.of($))}writeString($){return this.write(qc6.TE.encode($))}write($){let Z=this._grow($.byteLength);return i50($,this._buf,Z)}_grow($){let Z=this.length;if(Z===0&&this._off!==0)this.reset();let X=this._tryGrowByReslice($);if(X>=0)return X;let Q=this.capacity;if($<=Math.floor(Q/2)-Z)i50(this._buf.subarray(this._off),this._buf);else if(Q+$>Jn1.MAX_SIZE)throw Error("The buffer cannot be grown beyond the maximum size.");else{let Y=new Uint8Array(Math.min(2*Q+$,Jn1.MAX_SIZE));i50(this._buf.subarray(this._off),Y),this._buf=Y}return this._off=0,this._reslice(Math.min(Z+$,Jn1.MAX_SIZE)),Z}grow($){if($<0)throw Error("Buffer._grow: negative count");let Z=this._grow($);this._reslice(Z)}readFrom($){let Z=0,X=new Uint8Array(Qn1);while(!0){let Q=this.capacity-this.length<Qn1,Y=Q?X:new Uint8Array(this._buf.buffer,this.length),G=$.read(Y);if(G===null)return Z;if(Q)this.write(Y.subarray(0,G));else this._reslice(this.length+G);Z+=G}}}Jn1.DenoBuffer=nl0;function kc6($){let Z=new nl0;return Z.readFrom($),Z.bytes()}function Sc6($,Z){let X=0;while(X<Z.length)X+=$.write(Z.subarray(X))}});var rl0=_((Un1)=>{Object.defineProperty(Un1,"__esModule",{value:!0});Un1.cc=Un1.State=Un1.Parser=Un1.Kind=void 0;Un1.describe=bc6;var tl0=pl0(),ol0=fY();Un1.Kind={OK:0,ERR:1,MSG:2,INFO:3,PING:4,PONG:5};function bc6($){let Z,X="";switch($.kind){case Un1.Kind.MSG:Z="MSG";break;case Un1.Kind.OK:Z="OK";break;case Un1.Kind.ERR:Z="ERR",X=ol0.TD.decode($.data);break;case Un1.Kind.PING:Z="PING";break;case Un1.Kind.PONG:Z="PONG";break;case Un1.Kind.INFO:Z="INFO",X=ol0.TD.decode($.data)}return`${Z}: ${X}`}function Wn1(){let $={};return $.sid=-1,$.hdr=-1,$.size=-1,$}var Hn1=48,yc6=57,nf=67108864;class Nn1{dispatcher;state;as;drop;hdr;ma;argBuf;msgBuf;constructor($){this.dispatcher=$,this.state=Un1.State.OP_START,this.as=0,this.drop=0,this.hdr=0}parse($){let Z;for(Z=0;Z<$.length;Z++){let X=$[Z];switch(this.state){case Un1.State.OP_START:switch(X){case Un1.cc.M:case Un1.cc.m:this.state=Un1.State.OP_M,this.hdr=-1,this.ma=Wn1();break;case Un1.cc.H:case Un1.cc.h:this.state=Un1.State.OP_H,this.hdr=0,this.ma=Wn1();break;case Un1.cc.P:case Un1.cc.p:this.state=Un1.State.OP_P;break;case Un1.cc.PLUS:this.state=Un1.State.OP_PLUS;break;case Un1.cc.MINUS:this.state=Un1.State.OP_MINUS;break;case Un1.cc.I:case Un1.cc.i:this.state=Un1.State.OP_I;break;default:throw this.fail($.subarray(Z))}break;case Un1.State.OP_H:switch(X){case Un1.cc.M:case Un1.cc.m:this.state=Un1.State.OP_M;break;default:throw this.fail($.subarray(Z))}break;case Un1.State.OP_M:switch(X){case Un1.cc.S:case Un1.cc.s:this.state=Un1.State.OP_MS;break;default:throw this.fail($.subarray(Z))}break;case Un1.State.OP_MS:switch(X){case Un1.cc.G:case Un1.cc.g:this.state=Un1.State.OP_MSG;break;default:throw this.fail($.subarray(Z))}break;case Un1.State.OP_MSG:switch(X){case Un1.cc.SPACE:case Un1.cc.TAB:this.state=Un1.State.OP_MSG_SPC;break;default:throw this.fail($.subarray(Z))}break;case Un1.State.OP_MSG_SPC:switch(X){case Un1.cc.SPACE:case Un1.cc.TAB:continue;default:this.state=Un1.State.MSG_ARG,this.as=Z}break;case Un1.State.MSG_ARG:switch(X){case Un1.cc.CR:this.drop=1;break;case Un1.cc.NL:{let Q=this.argBuf?this.argBuf.bytes():$.subarray(this.as,Z-this.drop);this.processMsgArgs(Q),this.drop=0,this.as=Z+1,this.state=Un1.State.MSG_PAYLOAD,Z=this.as+this.ma.size-1;break}default:if(this.argBuf)this.argBuf.writeByte(X)}break;case Un1.State.MSG_PAYLOAD:if(this.msgBuf)if(this.msgBuf.length>=this.ma.size){let Q=this.msgBuf.bytes({copy:!1});this.dispatcher.push({kind:Un1.Kind.MSG,msg:this.ma,data:Q}),this.argBuf=void 0,this.msgBuf=void 0,this.state=Un1.State.MSG_END}else{let Q=this.ma.size-this.msgBuf.length,Y=$.length-Z;if(Y<Q)Q=Y;if(Q>0)this.msgBuf.write($.subarray(Z,Z+Q)),Z=Z+Q-1;else this.msgBuf.writeByte(X)}else if(Z-this.as>=this.ma.size)this.dispatcher.push({kind:Un1.Kind.MSG,msg:this.ma,data:$.subarray(this.as,Z)}),this.argBuf=void 0,this.msgBuf=void 0,this.state=Un1.State.MSG_END;break;case Un1.State.MSG_END:switch(X){case Un1.cc.NL:this.drop=0,this.as=Z+1,this.state=Un1.State.OP_START;break;default:continue}break;case Un1.State.OP_PLUS:switch(X){case Un1.cc.O:case Un1.cc.o:this.state=Un1.State.OP_PLUS_O;break;default:throw this.fail($.subarray(Z))}break;case Un1.State.OP_PLUS_O:switch(X){case Un1.cc.K:case Un1.cc.k:this.state=Un1.State.OP_PLUS_OK;break;default:throw this.fail($.subarray(Z))}break;case Un1.State.OP_PLUS_OK:switch(X){case Un1.cc.NL:this.dispatcher.push({kind:Un1.Kind.OK}),this.drop=0,this.state=Un1.State.OP_START;break}break;case Un1.State.OP_MINUS:switch(X){case Un1.cc.E:case Un1.cc.e:this.state=Un1.State.OP_MINUS_E;break;default:throw this.fail($.subarray(Z))}break;case Un1.State.OP_MINUS_E:switch(X){case Un1.cc.R:case Un1.cc.r:this.state=Un1.State.OP_MINUS_ER;break;default:throw this.fail($.subarray(Z))}break;case Un1.State.OP_MINUS_ER:switch(X){case Un1.cc.R:case Un1.cc.r:this.state=Un1.State.OP_MINUS_ERR;break;default:throw this.fail($.subarray(Z))}break;case Un1.State.OP_MINUS_ERR:switch(X){case Un1.cc.SPACE:case Un1.cc.TAB:this.state=Un1.State.OP_MINUS_ERR_SPC;break;default:throw this.fail($.subarray(Z))}break;case Un1.State.OP_MINUS_ERR_SPC:switch(X){case Un1.cc.SPACE:case Un1.cc.TAB:continue;default:this.state=Un1.State.MINUS_ERR_ARG,this.as=Z}break;case Un1.State.MINUS_ERR_ARG:switch(X){case Un1.cc.CR:this.drop=1;break;case Un1.cc.NL:{let Q;if(this.argBuf)Q=this.argBuf.bytes(),this.argBuf=void 0;else Q=$.subarray(this.as,Z-this.drop);this.dispatcher.push({kind:Un1.Kind.ERR,data:Q}),this.drop=0,this.as=Z+1,this.state=Un1.State.OP_START;break}default:if(this.argBuf)this.argBuf.write(Uint8Array.of(X))}break;case Un1.State.OP_P:switch(X){case Un1.cc.I:case Un1.cc.i:this.state=Un1.State.OP_PI;break;case Un1.cc.O:case Un1.cc.o:this.state=Un1.State.OP_PO;break;default:throw this.fail($.subarray(Z))}break;case Un1.State.OP_PO:switch(X){case Un1.cc.N:case Un1.cc.n:this.state=Un1.State.OP_PON;break;default:throw this.fail($.subarray(Z))}break;case Un1.State.OP_PON:switch(X){case Un1.cc.G:case Un1.cc.g:this.state=Un1.State.OP_PONG;break;default:throw this.fail($.subarray(Z))}break;case Un1.State.OP_PONG:switch(X){case Un1.cc.NL:this.dispatcher.push({kind:Un1.Kind.PONG}),this.drop=0,this.state=Un1.State.OP_START;break}break;case Un1.State.OP_PI:switch(X){case Un1.cc.N:case Un1.cc.n:this.state=Un1.State.OP_PIN;break;default:throw this.fail($.subarray(Z))}break;case Un1.State.OP_PIN:switch(X){case Un1.cc.G:case Un1.cc.g:this.state=Un1.State.OP_PING;break;default:throw this.fail($.subarray(Z))}break;case Un1.State.OP_PING:switch(X){case Un1.cc.NL:this.dispatcher.push({kind:Un1.Kind.PING}),this.drop=0,this.state=Un1.State.OP_START;break}break;case Un1.State.OP_I:switch(X){case Un1.cc.N:case Un1.cc.n:this.state=Un1.State.OP_IN;break;default:throw this.fail($.subarray(Z))}break;case Un1.State.OP_IN:switch(X){case Un1.cc.F:case Un1.cc.f:this.state=Un1.State.OP_INF;break;default:throw this.fail($.subarray(Z))}break;case Un1.State.OP_INF:switch(X){case Un1.cc.O:case Un1.cc.o:this.state=Un1.State.OP_INFO;break;default:throw this.fail($.subarray(Z))}break;case Un1.State.OP_INFO:switch(X){case Un1.cc.SPACE:case Un1.cc.TAB:this.state=Un1.State.OP_INFO_SPC;break;default:throw this.fail($.subarray(Z))}break;case Un1.State.OP_INFO_SPC:switch(X){case Un1.cc.SPACE:case Un1.cc.TAB:continue;default:this.state=Un1.State.INFO_ARG,this.as=Z}break;case Un1.State.INFO_ARG:switch(X){case Un1.cc.CR:this.drop=1;break;case Un1.cc.NL:{let Q;if(this.argBuf)Q=this.argBuf.bytes(),this.argBuf=void 0;else Q=$.subarray(this.as,Z-this.drop);this.dispatcher.push({kind:Un1.Kind.INFO,data:Q}),this.drop=0,this.as=Z+1,this.state=Un1.State.OP_START;break}default:if(this.argBuf)this.argBuf.writeByte(X)}break;default:throw this.fail($.subarray(Z))}}if((this.state===Un1.State.MSG_ARG||this.state===Un1.State.MINUS_ERR_ARG||this.state===Un1.State.INFO_ARG)&&!this.argBuf)this.argBuf=new tl0.DenoBuffer($.subarray(this.as,Z-this.drop));if(this.state===Un1.State.MSG_PAYLOAD&&!this.msgBuf){if(!this.argBuf)this.cloneMsgArg();this.msgBuf=new tl0.DenoBuffer($.subarray(this.as))}}cloneMsgArg(){let $=this.ma.subject.length,Z=this.ma.reply?this.ma.reply.length:0,X=new Uint8Array($+Z);if(X.set(this.ma.subject),this.ma.reply)X.set(this.ma.reply,$);if(this.argBuf=new tl0.DenoBuffer(X),this.ma.subject=X.subarray(0,$),this.ma.reply)this.ma.reply=X.subarray($)}processMsgArgs($){if(this.hdr>=0)return this.processHeaderMsgArgs($);let Z=[],X=-1;for(let Q=0;Q<$.length;Q++)switch($[Q]){case Un1.cc.SPACE:case Un1.cc.TAB:case Un1.cc.CR:case Un1.cc.NL:if(X>=0)Z.push($.subarray(X,Q)),X=-1;break;default:if(X<0)X=Q}if(X>=0)Z.push($.subarray(X));switch(Z.length){case 3:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=void 0,this.ma.size=this.protoParseInt(Z[2],nf);break;case 4:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=Z[2],this.ma.size=this.protoParseInt(Z[3],nf);break;default:throw this.fail($,"processMsgArgs Parse Error")}if(this.ma.sid<0)throw this.fail($,"processMsgArgs Bad or Missing Sid Error");if(this.ma.size<0)throw this.fail($,"processMsgArgs Bad or Missing Size Error")}fail($,Z=""){if(!Z)Z=`parse error [${this.state}]`;else Z=`${Z} [${this.state}]`;return Error(`${Z}: ${ol0.TD.decode($)}`)}processHeaderMsgArgs($){let Z=[],X=-1;for(let Q=0;Q<$.length;Q++)switch($[Q]){case Un1.cc.SPACE:case Un1.cc.TAB:case Un1.cc.CR:case Un1.cc.NL:if(X>=0)Z.push($.subarray(X,Q)),X=-1;break;default:if(X<0)X=Q}if(X>=0)Z.push($.subarray(X));switch(Z.length){case 4:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=void 0,this.ma.hdr=this.protoParseInt(Z[2],nf),this.ma.size=this.protoParseInt(Z[3],nf);break;case 5:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=Z[2],this.ma.hdr=this.protoParseInt(Z[3],nf),this.ma.size=this.protoParseInt(Z[4],nf);break;default:throw this.fail($,"processHeaderMsgArgs Parse Error")}if(this.ma.sid<0)throw this.fail($,"processHeaderMsgArgs Bad or Missing Sid Error");if(this.ma.hdr<0||this.ma.hdr>this.ma.size)throw this.fail($,"processHeaderMsgArgs Bad or Missing Header Size Error");if(this.ma.size<0)throw this.fail($,"processHeaderMsgArgs Bad or Missing Size Error")}protoParseInt($,Z){if($.length===0||$.length>15)return-1;let X=0;for(let Q=0;Q<$.length;Q++){if($[Q]<Hn1||$[Q]>yc6)return-1;X=X*10+($[Q]-Hn1)}return Z!==void 0&&X>Z?-1:X}}Un1.Parser=Nn1;Un1.State={OP_START:0,OP_PLUS:1,OP_PLUS_O:2,OP_PLUS_OK:3,OP_MINUS:4,OP_MINUS_E:5,OP_MINUS_ER:6,OP_MINUS_ERR:7,OP_MINUS_ERR_SPC:8,MINUS_ERR_ARG:9,OP_M:10,OP_MS:11,OP_MSG:12,OP_MSG_SPC:13,MSG_ARG:14,MSG_PAYLOAD:15,MSG_END:16,OP_H:17,OP_P:18,OP_PI:19,OP_PIN:20,OP_PING:21,OP_PO:22,OP_PON:23,OP_PONG:24,OP_I:25,OP_IN:26,OP_INF:27,OP_INFO:28,OP_INFO_SPC:29,INFO_ARG:30};Un1.cc={CR:13,E:69,e:101,F:70,f:102,G:71,g:103,H:72,h:104,I:73,i:105,K:75,k:107,M:77,m:109,MINUS:45,N:78,n:110,NL:10,O:79,o:111,P:80,p:112,PLUS:43,R:82,r:114,S:83,s:115,SPACE:32,TAB:9}});var t50=_((wn1)=>{Object.defineProperty(wn1,"__esModule",{value:!0});wn1.MsgHdrsImpl=void 0;wn1.canonicalMIMEHeaderKey=sl0;wn1.headers=uc6;var Fn1=fY(),KJ=Uw(),p50=bY();function sl0($){let N=!0,U=Array($.length);for(let F=0;F<$.length;F++){let w=$.charCodeAt(F);if(w===58||w<33||w>126)throw p50.InvalidArgumentError.format("header",`'${$[F]}' is not a valid character in a header name`);if(N&&97<=w&&w<=122)w-=32;else if(!N&&65<=w&&w<=90)w+=32;U[F]=w,N=w==45}return String.fromCharCode(...U)}function uc6($=0,Z=""){if($===0&&Z!=="")throw p50.InvalidArgumentError.format("code","is required");else if($>0&&Z==="")throw p50.InvalidArgumentError.format("description","is required");return new pf($,Z)}var al0="NATS/1.0";class pf{_code;headers;_description;constructor($=0,Z=""){this._code=$,this._description=Z,this.headers=new Map}[Symbol.iterator](){return this.headers.entries()}size(){return this.headers.size}equals($){if($&&this.headers.size===$.headers.size&&this._code===$._code){for(let[Z,X]of this.headers){let Q=$.values(Z);if(X.length!==Q.length)return!1;let Y=[...X].sort(),G=[...Q].sort();for(let J=0;J<Y.length;J++)if(Y[J]!==G[J])return!1}return!0}return!1}static decode($){let Z=new pf,Q=Fn1.TD.decode($).split(`\r
|
|
1291
1291
|
`),Y=Q[0];if(Y!==al0){let G=Y.replace(al0,"").trim();if(G.length>0){if(Z._code=parseInt(G,10),isNaN(Z._code))Z._code=0;let J=Z._code.toString();G=G.replace(J,""),Z._description=G.trim()}}if(Q.length>=1)Q.slice(1).map((G)=>{if(G){let J=G.indexOf(":");if(J>-1){let K=G.slice(0,J),W=G.slice(J+1).trim();Z.append(K,W)}}});return Z}toString(){if(this.headers.size===0&&this._code===0)return"";let $=al0;if(this._code>0&&this._description!=="")$+=` ${this._code} ${this._description}`;for(let[Z,X]of this.headers)for(let Q=0;Q<X.length;Q++)$=`${$}\r
|
|
1292
1292
|
${Z}: ${X[Q]}`;return`${$}\r
|
package/dist/server/server.js
CHANGED
|
@@ -2723,7 +2723,7 @@ Do NOT require review (requiresReview = false) when the changes are low-risk, su
|
|
|
2723
2723
|
|
|
2724
2724
|
When unsure between the two, lean toward NOT requiring review for small frontend-only diffs, and toward requiring it for anything backend or large.
|
|
2725
2725
|
|
|
2726
|
-
Respond with the structured verdict and a short reason.`,oV$;var aV$=B(()=>{S4();rw();n$1();x06=p$1.object({requiresReview:p$1.boolean().describe("true if the changes should go through pull-request review"),reason:p$1.string().describe("One short sentence explaining the decision (max ~120 chars)")});oV$={requiresReview:!1,reason:""}});function u06($){if(!$||$.includes(".."))return!1;return h06.test($)}function sV$($){let Z=typeof $.__resolveType==="string"?$.__resolveType:null;if(!Z||!u06(Z))return null;let{__resolveType:X,...G}=$;return{resolveType:Z,payload:G}}function eV$($,Z){return`${$.replace(/\/+$/,"")}/deco/invoke/${Z}`}var h06;var $C$=B(()=>{h06=/^[\w./@-]+$/});function t$1($){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 ZC$($,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 XC$($,Z,X,G){if(!G.connectionId)throw new Vg("Push requires a connected GitHub account. Connect mcp-github for this project and restart the sandbox.");let Y=$.organization?.id;if(!Y)throw new Vg(u7);await Rx({ctx:$,connectionId:G.connectionId,organizationId:Y,forceRefresh:!0,onLegacyMintError:(H)=>{let F=H instanceof Error?H.message:u7;throw new Vg(F)}});let{cloneUrl:Q,gitUserName:J,gitUserEmail:W}=await _w(G.connectionId,G.owner,G.name,$.db,$.vault),K=gE0($),N=await Z.proxyDaemonRequest(X,"/_sandbox/config",{method:"PUT",headers:new Headers({"content-type":"application/json"}),body:JSON.stringify({git:{repository:{cloneUrl:Q},identity:{userName:J,userEmail:W}},...K?{operator:K}:{}})});if(!N.ok){let H=await ow(N,c06).catch(()=>N.statusText);throw Error(`Failed to refresh sandbox git credentials (${N.status}): ${H}`)}}var c06=10485760,Vg;var GC$=B(()=>{Bw();h$1();on();jn();Vg=class Vg extends Error{constructor($){super($);this.name="GitPushAuthError"}}});function d06($){let Z=$.startsWith("thread:")?$.slice(7):$;if(!Z||Z.length>255||Z.includes("..")||Z.startsWith("/")||Z.endsWith("/")||Z.endsWith(".lock")||!l06.test(Z))throw Error(`Invalid branch name: ${$}`)}function kC($){return AbortSignal.any([$.req.raw.signal,AbortSignal.timeout(i06)])}function SC($){let{runner:Z}=$.get("vmClaim");if(!Z)return $.json({error:"No sandbox runner configured"},503);return Z}function o$1($,Z){let G=(hE0.get($)??Promise.resolve()).catch(()=>{}).then(Z),Y=G.catch(()=>{});return hE0.set($,Y),Y.finally(()=>{if(hE0.get($)===Y)hE0.delete($)}),G}async function SZ($,Z,X){let G=SC($);if(G instanceof Response)return G;let{claimName:Y,userId:Q,projectRef:J}=$.get("vmClaim"),W=X?.method??"POST",K=null,N=new Headers;if(X?.jsonBody!==void 0)K=X.jsonBody,N.set("content-type","application/json");else if(X?.forwardJsonBody)K=await $.req.text(),N.set("content-type","application/json");let H=X?.signal,F={method:W,headers:N,body:K,...H?{signal:H}:{}},U=async()=>{let w=await G.proxyDaemonRequest(Y,Z,F);if(X?.map404to410&&w.status===404){try{await w.body?.cancel()}catch{}if(await G.adoptLiveClaim?.({userId:Q,projectRef:J},Y))w=await G.proxyDaemonRequest(Y,Z,F);if(w.status===404){try{await w.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",...fY}})}}let O=await w.text(),D=X?.redactRepoDirUnlessDesktop&&G.kind!=="user-desktop"?p06(O):O,L=w.headers.get("content-type")??"application/json";return new Response(D,{status:w.status,headers:{"content-type":L,...fY}})};try{if(H){let w=U();return w.catch(()=>{}),await Promise.race([w,new Promise((D,L)=>{if(H.aborted)return L(H.reason);H.addEventListener("abort",()=>L(H.reason),{once:!0})})])}return await U()}catch(w){let O=w instanceof Error?w.message:String(w);return $.json({error:`Daemon unreachable: ${O}`},502)}}function p06($){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 uE0($,Z,X,G="GET",Y){let Q=await $.proxyDaemonRequest(Z,X,{method:G,headers:new Headers,body:null});if(Q.status===404&&Y){try{await Q.body?.cancel()}catch{}if(await $.adoptLiveClaim?.(Y,Z))Q=await $.proxyDaemonRequest(Z,X,{method:G,headers:new Headers,body:null})}if(Q.status===404){try{await Q.body?.cancel()}catch{}throw Error("SANDBOX_GONE")}let J=await Q.text();if(!Q.ok)try{let W=JSON.parse(J);throw Error(W.error??`Daemon error (${Q.status})`)}catch(W){if(W instanceof Error&&W.message!==J)throw W;throw Error(`Daemon error (${Q.status})`)}return JSON.parse(J)}function t06($){return JC$.includes($)}var l06,YC$=524288,m06=65536,i06=1e4,QC$=2000,n06,hE0,fY,JC$,WC$=()=>{let $=new D1;return $.use("/:virtualMcpId/:branch/*",n06),$.post("/:virtualMcpId/:branch/write",(Z)=>SZ(Z,"/_sandbox/write",{forwardJsonBody:!0,signal:kC(Z)})),$.post("/:virtualMcpId/:branch/unlink",(Z)=>SZ(Z,"/_sandbox/unlink",{forwardJsonBody:!0,signal:kC(Z)})),$.post("/:virtualMcpId/:branch/mkdir",(Z)=>SZ(Z,"/_sandbox/mkdir",{forwardJsonBody:!0,signal:kC(Z)})),$.post("/:virtualMcpId/:branch/rename",(Z)=>SZ(Z,"/_sandbox/rename",{forwardJsonBody:!0,signal:kC(Z)})),$.post("/:virtualMcpId/:branch/read",(Z)=>SZ(Z,"/_sandbox/read",{forwardJsonBody:!0,signal:kC(Z)})),$.post("/:virtualMcpId/:branch/glob",(Z)=>SZ(Z,"/_sandbox/glob",{forwardJsonBody:!0,signal:kC(Z)})),$.post("/:virtualMcpId/:branch/grep",(Z)=>SZ(Z,"/_sandbox/grep",{forwardJsonBody:!0,signal:kC(Z)})),$.post("/:virtualMcpId/:branch/exec/:script",async(Z)=>{let X=Z.req.param("script");if(!X)return Z.json({error:"missing script name"},400);return SZ(Z,`/_sandbox/exec/${encodeURIComponent(X)}`)}),$.post("/:virtualMcpId/:branch/exec/:script/kill",async(Z)=>{let X=Z.req.param("script");if(!X)return Z.json({error:"missing script name"},400);return SZ(Z,`/_sandbox/exec/${encodeURIComponent(X)}/kill`)}),$.get("/:virtualMcpId/:branch/config",(Z)=>SZ(Z,"/_sandbox/config",{method:"GET",map404to410:!0,redactRepoDirUnlessDesktop:!0})),$.put("/:virtualMcpId/:branch/config",(Z)=>SZ(Z,"/_sandbox/config",{method:"PUT",forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/setup/:step",async(Z)=>{let X=Z.req.param("step");if(!X||!t06(X))return Z.json({error:`step must be one of: ${JC$.join(", ")}`},400);if(X==="start"){let G=Z.get("vmClaim");if(G.runner){let Y=s(Z.var.studioContext),Q=oU0(G.virtualMcpMetadata);try{await rU0({ctx:Z.var.studioContext,runner:G.runner,handle:G.claimName,orgId:Y.id,userId:G.callerUserId,entries:Q})}catch(J){let W=J instanceof Error?J.message:String(J);return Z.json({error:`Failed to push env to daemon: ${W}`},502)}}}return SZ(Z,`/_sandbox/setup/${X}`,{signal:Z.req.raw.signal,map404to410:!0})}),$.get("/:virtualMcpId/:branch/events",(Z)=>{let X=Z.get("vmClaim");if(!X.runner)return mH(Z,async(G)=>{await G.writeSSE({event:"phase",data:JSON.stringify({kind:"failed",reason:"unknown",message:"No sandbox runner configured on this studio instance."})})});return dV$(Z,{ctx:Z.var.studioContext,claimName:X.claimName,runner:X.runner,virtualMcpId:X.virtualMcpId,branch:X.branch,userId:X.userId,projectRef:X.projectRef,virtualMcpMetadata:X.virtualMcpMetadata})}),$.get("/:virtualMcpId/:branch/git/status",(Z)=>SZ(Z,"/_sandbox/git/status",{method:"GET",map404to410:!0,signal:AbortSignal.any([Z.req.raw.signal,AbortSignal.timeout(QC$)])})),$.post("/:virtualMcpId/:branch/git/status",(Z)=>SZ(Z,"/_sandbox/git/status",{map404to410:!0,signal:AbortSignal.any([Z.req.raw.signal,AbortSignal.timeout(QC$)])})),$.post("/:virtualMcpId/:branch/git/diff",(Z)=>SZ(Z,"/_sandbox/git/diff",{forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/git/publish",async(Z)=>{let X=SC(Z);if(X instanceof Response)return X;let{claimName:G,virtualMcpMetadata:Y,connectionIds:Q}=Z.get("vmClaim"),J=Z.var.studioContext;return o$1(G,async()=>{try{await u$1(J,X,G);let W=ZC$(Y,Q);if(W)await XC$(J,X,G,W)}catch(W){if(W instanceof Vg)return Z.json({error:W.message},403,fY);let K=W instanceof Error?W.message:String(W);return Z.json({error:K},502,fY)}return SZ(Z,"/_sandbox/git/publish",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/discard",(Z)=>{let{claimName:X}=Z.get("vmClaim");return o$1(X,()=>SZ(Z,"/_sandbox/git/discard",{forwardJsonBody:!0,map404to410:!0}))}),$.post("/:virtualMcpId/:branch/git/rebase",async(Z)=>{let X=SC(Z);if(X instanceof Response)return X;let{claimName:G}=Z.get("vmClaim"),Y=Z.var.studioContext;return o$1(G,async()=>{try{await u$1(Y,X,G)}catch(Q){let J=Q instanceof Error?Q.message:String(Q);return Z.json({error:J},502,fY)}return SZ(Z,"/_sandbox/git/rebase",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/suggest-commit",F7({maxSize:YC$,onError:(Z)=>Z.json({error:"Payload too large"},413,fY)}),async(Z)=>{let X=SC(Z);if(X instanceof Response)return X;let{claimName:G,userId:Y,projectRef:Q}=Z.get("vmClaim"),J=Z.var.studioContext;try{let W=await Z.req.json().catch(()=>({})),K=W.status,N=W.diff,H=N!=null&&typeof N.diffs==="object"&&N.diffs!==null,[F,U]=d$1(K)&&H?[K,N]:await Promise.all([uE0(X,G,"/_sandbox/git/status","GET",{userId:Y,projectRef:Q}),uE0(X,G,"/_sandbox/git/diff","GET",{userId:Y,projectRef:Q})]),w=await tV$(J,F,U);return Z.json(w,200,fY)}catch(W){let K=W instanceof Error?W.message:String(W);if(K==="SANDBOX_GONE")return Z.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,fY);return Z.json({error:K},502,fY)}}),$.post("/:virtualMcpId/:branch/git/judge-review",F7({maxSize:YC$,onError:(Z)=>Z.json({error:"Payload too large"},413,fY)}),async(Z)=>{let X=SC(Z);if(X instanceof Response)return X;let{claimName:G,userId:Y,projectRef:Q}=Z.get("vmClaim"),J=Z.var.studioContext;try{let W=await Z.req.json().catch(()=>({})),K=W.status,N=W.diff,H=N!=null&&typeof N.diffs==="object"&&N.diffs!==null,[F,U]=d$1(K)&&H?[K,N]:await Promise.all([uE0(X,G,"/_sandbox/git/status","GET",{userId:Y,projectRef:Q}),uE0(X,G,"/_sandbox/git/diff","GET",{userId:Y,projectRef:Q})]),w=await rV$(J,F,U,typeof W.language==="string"?W.language:void 0);return Z.json(w,200,fY)}catch(W){let K=W instanceof Error?W.message:String(W);if(K==="SANDBOX_GONE")return Z.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,fY);return Z.json({error:K},502,fY)}}),$.get("/:virtualMcpId/:branch/preview-fetch",async(Z)=>{let X=SC(Z);if(X instanceof Response)return X;let{claimName:G}=Z.get("vmClaim"),Y=Z.req.query("path");if(!Y||!Y.startsWith("/")||Y.startsWith("//")||Y.includes("..")||Y.includes("\\"))return Z.json({error:"Path not allowed"},403);let Q;try{Q=await X.getPreviewUrl(G)}catch{return Z.json({error:"Preview not available"},502)}if(!Q)return Z.json({error:"Preview not available"},502);let J=Q.replace(/\/+$/,""),W=t$1(`${J}${Y}`),K;try{K=await fetch(W?.url??`${J}${Y}`,{...W?{headers:{host:W.hostHeader}}:{}})}catch{return Z.json({error:"Preview unreachable"},502)}let N;try{N=await K.text()}catch{return Z.json({error:"Preview unreachable"},502)}return new Response(N,{status:K.status,headers:{"content-type":K.headers.get("content-type")??"application/json"}})}),$.post("/:virtualMcpId/:branch/preview-invoke",F7({maxSize:m06,onError:(Z)=>Z.json({error:"Payload too large"},413)}),async(Z)=>{let X=SC(Z);if(X instanceof Response)return X;let{claimName:G}=Z.get("vmClaim"),Y;try{Y=await X.getPreviewUrl(G)}catch{return Z.json({error:"Preview not available"},502)}if(!Y)return Z.json({error:"Preview not available"},502);let Q;try{Q=await Z.req.json()}catch{return Z.json({error:"Invalid JSON body"},400)}if(!Q||typeof Q!=="object"||Array.isArray(Q))return Z.json({error:"Invalid JSON body"},400);let J=sV$(Q);if(!J)return Z.json({error:"Invalid or missing __resolveType"},400);let W=eV$(Y,J.resolveType),K=t$1(W),N;try{N=await fetch(K?.url??W,{method:"POST",headers:{"content-type":"application/json",...K?{host:K.hostHeader}:{}},body:JSON.stringify(J.payload),signal:AbortSignal.timeout(30000)})}catch{return Z.json({error:"Preview unreachable"},502)}let H;try{H=await N.text()}catch{return Z.json({error:"Preview unreachable"},502)}return new Response(H,{status:N.status,headers:{"content-type":N.headers.get("content-type")??"application/json"}})}),$};var KC$=B(()=>{u8();zC();Sg();hV$();YH();cV$();w3();nw();lV$();mV$();Dn0();tn();n$1();aV$();$C$();GC$();l06=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;n06=gV$(async($,Z)=>{let X=$.var.studioContext;try{G0(X)}catch{return $.json({error:"Unauthorized"},401)}let G=N1(X);if(!G)return $.json({error:"Unauthorized"},401);let Y;try{Y=s(X)}catch{return $.json({error:"Organization scope required"},403)}let Q=$.req.param("virtualMcpId"),J=$.req.param("branch");if(!Q||!J)return $.json({error:"virtualMcpId and branch are required"},400);try{d06(J)}catch(w){let O=w instanceof Error?w.message:String(w);return $.json({error:O},400)}let W=await X.storage.virtualMcps.findById(Q);if(!W||W.organization_id!==Y.id)return $.json({error:"Virtual MCP not found"},404);let K=Bn({orgId:Y.id,virtualMcpId:Q,branch:J}),N=await UH(X,J,G),H=uV$({userId:N,projectRef:K}),F=W.metadata??null,U;try{U=(await bX(X,{userId:N,branch:J,virtualMcpMetadata:F})).provider}catch{U=null}if(!U)return $.json({error:"No sandbox runner found"},404);return $.set("vmClaim",{claimName:H,callerUserId:G,runner:U,virtualMcpId:Q,branch:J,userId:N,projectRef:K,virtualMcpMetadata:F,connectionIds:W.connections?.map((w)=>w.connection_id)??[]}),Z()});hE0=new Map;fY={"Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache"};JC$=["clone","install","start"]});var NC$=($)=>{let Z=new D1;if(Z.use("*",EC),Z.route("/",ZE0()),Z.route("/",TM$()),Z.route("/",IV$()),Z.route("/",TV$()),Z.route("/",fE0()),Z.route("/tools",_V$()),Z.route("/",SV$()),Z.route("/",QV$({kvStorage:$.kvStorage})),Z.route("/",GV$()),Z.route("/fs",DV$({getConnection:$.getNatsConnection})),Z.route("/sandbox",WC$()),Z.route("/",jV$()),Z.route("/deco-sites",GE0()),Z.route("/sso",tL0()),Z.route("/",xE0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",BM$()),$.mountDevAssets)Z.route("/dev-assets",YE0({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("/",Qs1()),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",EV$()),Z.route("/mcp",SO0()),Z.route("/mcp/self",bE0()),Z.route("/mcp",_O0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var HC$=B(()=>{u8();J11();DM$();F11();QE0();lt();Y11();YV$();JV$();LV$();Ri();o01();vO0();_$1();zV$();PV$();RV$();qV$();VV$();b$1();vV$();f$1();VO0();KC$()});function r06($){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}}))}async function a06($,Z){let X=await fetch(`${$}/rest/v1/apps?select=name,title,description,logo,category,vendors(alias,url)`,{headers:{apikey:Z,Authorization:`Bearer ${Z}`,Accept:"application/json"},signal:AbortSignal.timeout(o06)});if(!X.ok){let G=await X.text().catch(()=>X.statusText);throw console.error(`[deco-apps] Supabase error (${X.status}): ${G.slice(0,200)}`),Error(`External service error (${X.status})`)}return await X.json()}var o06=1e4,s06=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},FC$=()=>{let $=new D1;return $.use("*",s06),$.get("/",async(Z)=>{let X=d0(),G=X.decoSupabaseUrl,Y=X.decoSupabaseServiceKey;if(!G||!Y)return Z.json({apps:[]});try{let Q=await a06(G,Y);return Z.json({apps:r06(Q)})}catch(Q){return console.error("[deco-apps] GET error:",Q),Z.json({error:"Failed to fetch apps"},502)}}),$};var UC$=B(()=>{u8();V$()});import{z as I1}from"zod";function RK($,Z="invalid_request_error",X=null,G=null){return{error:{message:$,type:Z,param:X,code:G}}}function K16($){if(!$)return null;let Z=$.indexOf(":");if(Z===-1)return{credentialId:null,modelId:$};let X=$.substring(0,Z),G=$.substring(Z+1);if(!X||!G)return null;return{credentialId:X,modelId:G}}function N16($,Z,X){try{return JSON.parse($)}catch{throw new BC$(`Invalid JSON in tool call arguments for function '${X}' (tool_call_id: ${Z}): ${$}`)}}function H16($){let Z={};for(let X of $)if(X.role==="assistant"&&X.tool_calls)for(let G of X.tool_calls)Z[G.id]=G.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:N16(Y.function.arguments,Y.id,Y.function.name)}))};return{role:"assistant",content:X.content??""};case"tool":let G=Z[X.tool_call_id]??"unknown";return{role:"tool",content:[{type:"tool-result",toolCallId:X.tool_call_id,toolName:G,output:{type:"text",value:X.content}}]}}})}function F16($){let Z=$.map((X)=>{let G=X.function.parameters?BY(X.function.parameters):BY({type:"object",properties:{}});return[X.function.name,_$({description:X.function.description,inputSchema:G})]});return Object.fromEntries(Z)}function U16($){if(!$)return;return{openai:{response_format:$}}}function w16(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function wC$($,Z,X,G,Y,Q){let J={model:$,messages:Z,tools:X,temperature:G.temperature,maxTokens:G.max_tokens,topP:G.top_p,frequencyPenalty:G.frequency_penalty,presencePenalty:G.presence_penalty,stopSequences:G.stop?Array.isArray(G.stop)?G.stop:[G.stop]:void 0,abortSignal:Q};return Y?{...J,providerOptions:Y}:J}function OC$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var e06=256,$16,Z16,X16,G16,Y16,Q16,J16,W16,BC$,DC$,LC$;var EC$=B(()=>{S4();u8();Sg();TH();$16=I1.object({type:I1.literal("function"),function:I1.object({name:I1.string(),description:I1.string().optional(),parameters:I1.record(I1.string(),I1.unknown()).optional()})}),Z16=I1.object({id:I1.string(),type:I1.literal("function"),function:I1.object({name:I1.string(),arguments:I1.string()})}),X16=I1.discriminatedUnion("role",[I1.object({role:I1.literal("system"),content:I1.string(),name:I1.string().optional()}),I1.object({role:I1.literal("user"),content:I1.union([I1.string(),I1.array(I1.union([I1.object({type:I1.literal("text"),text:I1.string()}),I1.object({type:I1.literal("image_url"),image_url:I1.object({url:I1.string(),detail:I1.string().optional()})})]))]),name:I1.string().optional()}),I1.object({role:I1.literal("assistant"),content:I1.string().nullable().optional(),name:I1.string().optional(),tool_calls:I1.array(Z16).optional()}),I1.object({role:I1.literal("tool"),content:I1.string(),tool_call_id:I1.string()})]),G16=I1.object({type:I1.literal("text")}),Y16=I1.object({type:I1.literal("json_object")}),Q16=I1.object({type:I1.literal("json_schema"),json_schema:I1.object({name:I1.string(),description:I1.string().optional(),schema:I1.record(I1.string(),I1.unknown()),strict:I1.boolean().optional()})}),J16=I1.union([G16,Y16,Q16]),W16=I1.object({model:I1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:I1.array(X16),stream:I1.boolean().optional().default(!1),temperature:I1.number().min(0).max(2).optional(),max_tokens:I1.number().positive().optional(),top_p:I1.number().min(0).max(1).optional(),frequency_penalty:I1.number().min(-2).max(2).optional(),presence_penalty:I1.number().min(-2).max(2).optional(),stop:I1.union([I1.string(),I1.array(I1.string())]).optional(),tools:I1.array($16).optional(),tool_choice:I1.union([I1.literal("auto"),I1.literal("none"),I1.literal("required"),I1.object({type:I1.literal("function"),function:I1.object({name:I1.string()})})]).optional(),response_format:J16.optional(),user:I1.string().optional()});BC$=class BC$ extends Error{constructor($){super($);this.name="MessageConversionError"}};DC$=new D1;DC$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),X=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(RK("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(RK("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(RK("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let G=await $.req.json(),Y=W16.safeParse(G);if(!Y.success){let L=Y.error.issues[0]??{message:"Invalid request",path:[]};return $.json(RK(`Invalid request: ${L.message}`,"invalid_request_error",L.path.length>0?L.path.join("."):null),400)}let Q=Y.data,J=K16(Q.model);if(!J)return $.json(RK("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((z)=>mB(z.providerId));if(!E)return $.json(RK("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 N;try{N=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json(RK(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let H=N.aiSdk.languageModel(K),F=H16(Q.messages),U=Q.tools?F16(Q.tools):void 0,w=U16(Q.response_format),O=w16(),D=Math.floor(Date.now()/1000);if(Q.stream)return mH($,async(L)=>{let E=wC$(H,F,U,Q,w,$.req.raw.signal);try{let z=Vw(E),j=!1,A=0,P="",M=async()=>{if(P.length===0)return;let S=P;P="",await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:Q.model,choices:[{index:0,delta:{content:S},finish_reason:null}]})})};for await(let S of z.fullStream){if(!j&&(S.type==="text-delta"||S.type==="tool-call"))await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:Q.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),j=!0;if(S.type==="text-delta"){if(P+=S.text,P.length>=e06)await M()}else if(S.type==="tool-call"){await M();let q=A++;await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:Q.model,choices:[{index:0,delta:{tool_calls:[{index:q,id:S.toolCallId,type:"function",function:{name:S.toolName,arguments:JSON.stringify(S.input)}}]},finish_reason:null}]})})}else if(S.type==="finish")await M(),await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:Q.model,choices:[{index:0,delta:{},finish_reason:OC$(S.finishReason)}],usage:S.totalUsage?{prompt_tokens:S.totalUsage.inputTokens??0,completion_tokens:S.totalUsage.outputTokens??0,total_tokens:S.totalUsage.totalTokens??0}:void 0})})}await M(),await L.writeSSE({data:"[DONE]"})}catch(z){let j=z;console.error("[openai-compat:stream] Error:",j.message),await L.writeSSE({data:JSON.stringify({error:{message:j.message,type:"server_error"}})})}});else{let L=wC$(H,F,U,Q,w,$.req.raw.signal),E=await kw(L),z={role:"assistant",content:E.text||null};if(E.toolCalls&&E.toolCalls.length>0)z.tool_calls=E.toolCalls.map((j)=>({id:j.toolCallId,type:"function",function:{name:j.toolName,arguments:JSON.stringify("input"in j?j.input:{})}})),z.content=null;return $.json({id:O,object:"chat.completion",created:D,model:Q.model,choices:[{index:0,message:z,finish_reason:OC$(E.finishReason)}],usage:{prompt_tokens:E.usage?.inputTokens??0,completion_tokens:E.usage?.outputTokens??0,total_tokens:E.usage?.totalTokens??0}})}}catch(G){let Y=G;if(Y.name==="AbortError")return $.json(RK("Request aborted","invalid_request_error"),400);if(Y.name==="MessageConversionError")return $.json(RK(Y.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",Y.message,Y.stack),$.json(RK(Y.message,"server_error"),500)}});LC$=DC$});var jC$;var zC$=B(()=>{jC$={name:"decocms",version:"4.181.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",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.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 D16(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??B16}}var PC$,B16="https://ph.studio.decocms.com",AC$;var TC$=B(()=>{u8();TC0();IV();OZ();V$();m01();zC$();PC$=new D1;PC$.get("/",($)=>{let Z={version:jC$.version,theme:FM1(),...oB().logo&&{logo:oB().logo},...$K()&&{internalUrl:w21()},...d0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!d0().firecrawlApiKey,auth:Vq$(),posthog:D16(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:!$K()&&d0().sandboxProviderKind==="agent-sandbox"}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});AC$=PC$});function Cg($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function r$1($){return(Cg($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((X)=>X.charAt(0).toUpperCase()+X.slice(1)).join(" ")}function IC$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(Cg($))}&sz=${Z}`}function RC$($,Z){let X=$.trim();if(X.length<=Z)return X;let G=X.slice(0,Z-1),Y=G.lastIndexOf(" ");return`${(Y>Z*0.6?G.slice(0,Y):G).trimEnd()}\u2026`}function qC$($){let{brand:Z,domain:X,score:G,verdict:Y}=$,Q=typeof G==="number"?`${Z} commerce report \u2014 ${Math.round(G)}/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()?RC$(`${Y.trim().replace(/\s+/g," ")} \u2014 ${J}`,200):RC$(`How does ${X} really perform? ${J}`,200);return{title:Q,description:W}}import{z as h0}from"zod";var VC,L16,E16,z16,j16,MC$;var kC$=B(()=>{VC=h0.enum(["good","bad","neutral"]),L16=h0.preprocess(($)=>{if(Array.isArray($))return{kind:"text",value:$.find((X)=>X!==null&&typeof X!=="object")??""};return $!==null&&typeof $==="object"?$:{kind:"text",value:$}},h0.object({kind:h0.enum(["text","number","sparkline","badge","score"]).catch("text"),value:h0.coerce.string().optional(),tone:VC.optional(),muted:h0.boolean().optional(),delta:h0.coerce.string().optional(),deltaDir:h0.enum(["up","down","neutral"]).optional(),points:h0.array(h0.coerce.number()).optional(),label:h0.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 $})),E16=h0.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},h0.array(L16)),z16={key:h0.coerce.string(),title:h0.coerce.string(),eyebrow:h0.coerce.string().optional(),headline:h0.coerce.string(),annotation:h0.coerce.string().optional(),methodology:h0.coerce.string().optional(),sources:h0.array(h0.object({name:h0.coerce.string(),logoUrl:h0.coerce.string()})).optional()},j16=h0.discriminatedUnion("template",[h0.object({template:h0.literal("cover"),score:h0.object({value:h0.coerce.number(),max:h0.coerce.number().optional(),grade:h0.coerce.string().optional(),label:h0.coerce.string().optional()}).optional(),brandImage:h0.coerce.string().optional(),screenshot:h0.coerce.string().optional(),mobileScreenshot:h0.coerce.string().optional()}),h0.object({template:h0.literal("cta"),ctaUrl:h0.coerce.string().optional(),ctaLabel:h0.coerce.string().optional(),bullets:h0.array(h0.coerce.string()).optional()}),h0.object({template:h0.literal("series"),points:h0.array(h0.coerce.number()).min(2),xLabels:h0.array(h0.coerce.string()).min(1),unit:h0.coerce.string().optional(),callout:h0.object({index:h0.coerce.number(),value:h0.coerce.string(),tone:VC.optional()})}),h0.object({template:h0.literal("threshold"),value:h0.coerce.string().default(""),metricLabel:h0.coerce.string().optional(),ratio:h0.coerce.number(),thresholdRatio:h0.coerce.number().optional(),thresholdLabel:h0.coerce.string().default(""),tone:VC.optional()}),h0.object({template:h0.literal("stats"),stats:h0.array(h0.object({value:h0.coerce.string(),label:h0.coerce.string(),tone:VC.optional()})).min(1)}),h0.object({template:h0.literal("bars"),items:h0.array(h0.object({value:h0.coerce.string(),label:h0.coerce.string(),ratio:h0.coerce.number(),tone:VC.optional()})).min(1)}),h0.object({template:h0.literal("gauges"),gauges:h0.array(h0.object({label:h0.coerce.string(),value:h0.coerce.string(),status:h0.enum(["good","warn","bad"]).catch("warn"),caption:h0.coerce.string().optional(),ratio:h0.coerce.number().optional()})).min(1)}),h0.object({template:h0.literal("checklist"),checks:h0.array(h0.object({label:h0.coerce.string(),status:h0.enum(["pass","fail","warn"]).catch("fail"),value:h0.coerce.string().optional()})).min(1)}),h0.object({template:h0.literal("table"),columns:h0.array(h0.object({label:h0.coerce.string(),align:h0.enum(["left","right"]).optional()})).min(1),rows:h0.array(E16).min(1),highlightRow:h0.coerce.number().optional()}),h0.object({template:h0.literal("products"),products:h0.array(h0.object({name:h0.coerce.string(),price:h0.coerce.string().optional(),image:h0.coerce.string().optional(),url:h0.coerce.string().optional()})).min(1)}),h0.object({template:h0.literal("list"),entries:h0.array(h0.object({label:h0.coerce.string(),severity:h0.enum(["error","warning","notice"]).catch("notice")})).min(1),moreCount:h0.coerce.number().optional()}),h0.object({template:h0.literal("keywords"),volumeLabel:h0.coerce.string().optional(),keywords:h0.array(h0.object({term:h0.coerce.string(),volume:h0.coerce.string(),position:h0.coerce.number().catch(0)})).min(1)}),h0.object({template:h0.literal("competitor"),metricLabel:h0.coerce.string().optional(),competitors:h0.array(h0.object({name:h0.coerce.string(),value:h0.coerce.string(),tone:VC.optional(),isYou:h0.boolean().optional()})).min(1)}),h0.object({template:h0.literal("scorecard"),rivalLabel:h0.coerce.string().optional(),dimensions:h0.array(h0.object({label:h0.coerce.string(),you:h0.coerce.string(),rival:h0.coerce.string().optional(),rivalName:h0.coerce.string().optional(),tone:VC.optional()})).min(1)})]),MC$=h0.object({...z16,template:j16})});function cE0($){let Z=[],X=[...$.sections].sort((G,Y)=>G.position-Y.position).map((G)=>{let Y=MC$.safeParse(G.props);if(Y.success)return Y.data;let Q=Y.error.issues[0];return Z.push({section_type:G.section_type,position:G.position,reason:Q?`${Q.path.join(".")||"(root)"}: ${Q.message}`:"contract violation"}),null}).filter((G)=>G!==null);return{deck:{meta:{...$.meta,scores:$.summary?.scores},slides:X},drops:Z}}var a$1=B(()=>{kC$()});import{join as SC$}from"path";async function A16($){try{let Z=await fetch(`${HW({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(P16)});if(!Z.ok)return null;let X=await Z.json(),{deck:G}=cE0(X);if(!G.slides.length)return null;let Y=G.slides.find((W)=>W.template.template==="cover"),Q=Y?.template,J=Q&&Q.template==="cover"?Q:void 0;return{brand:G.meta.brand?.trim()||r$1($),score:G.meta.scores?.cover??J?.score?.value,verdict:Y?.annotation?.trim()||Y?.headline?.trim()||void 0}}catch{return null}}function xY($){return $.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""")}function T16($,Z){let X=Cg($),G=Z?.brand?.trim()||r$1(X),Y=IC$(X,128),J=`${(d0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(X)}`,{title:W,description:K}=qC$({brand:G,domain:X,score:Z?.score,verdict:Z?.verdict}),N=`${J}/og.png`,H=`${G} commerce report by decocms`;return[`<title>${xY(W)}</title>`,`<meta name="description" content="${xY(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="${xY(W)}" />`,`<meta property="og:description" content="${xY(K)}" />`,`<meta property="og:url" content="${xY(J)}" />`,`<meta property="og:image" content="${xY(N)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${xY(H)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${xY(W)}" />`,`<meta name="twitter:description" content="${xY(K)}" />`,`<meta name="twitter:image" content="${xY(N)}" />`,`<meta name="twitter:image:alt" content="${xY(H)}" />`,`<link rel="canonical" href="${xY(J)}" />`,`<link rel="icon" href="${xY(Y)}" sizes="any" />`].join(`
|
|
2726
|
+
Respond with the structured verdict and a short reason.`,oV$;var aV$=B(()=>{S4();rw();n$1();x06=p$1.object({requiresReview:p$1.boolean().describe("true if the changes should go through pull-request review"),reason:p$1.string().describe("One short sentence explaining the decision (max ~120 chars)")});oV$={requiresReview:!1,reason:""}});function u06($){if(!$||$.includes(".."))return!1;return h06.test($)}function sV$($){let Z=typeof $.__resolveType==="string"?$.__resolveType:null;if(!Z||!u06(Z))return null;let{__resolveType:X,...G}=$;return{resolveType:Z,payload:G}}function eV$($,Z){return`${$.replace(/\/+$/,"")}/deco/invoke/${Z}`}var h06;var $C$=B(()=>{h06=/^[\w./@-]+$/});function t$1($){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 ZC$($,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 XC$($,Z,X,G){if(!G.connectionId)throw new Vg("Push requires a connected GitHub account. Connect mcp-github for this project and restart the sandbox.");let Y=$.organization?.id;if(!Y)throw new Vg(u7);await Rx({ctx:$,connectionId:G.connectionId,organizationId:Y,forceRefresh:!0,onLegacyMintError:(H)=>{let F=H instanceof Error?H.message:u7;throw new Vg(F)}});let{cloneUrl:Q,gitUserName:J,gitUserEmail:W}=await _w(G.connectionId,G.owner,G.name,$.db,$.vault),K=gE0($),N=await Z.proxyDaemonRequest(X,"/_sandbox/config",{method:"PUT",headers:new Headers({"content-type":"application/json"}),body:JSON.stringify({git:{repository:{cloneUrl:Q},identity:{userName:J,userEmail:W}},...K?{operator:K}:{}})});if(!N.ok){let H=await ow(N,c06).catch(()=>N.statusText);throw Error(`Failed to refresh sandbox git credentials (${N.status}): ${H}`)}}var c06=10485760,Vg;var GC$=B(()=>{Bw();h$1();on();jn();Vg=class Vg extends Error{constructor($){super($);this.name="GitPushAuthError"}}});function d06($){let Z=$.startsWith("thread:")?$.slice(7):$;if(!Z||Z.length>255||Z.includes("..")||Z.startsWith("/")||Z.endsWith("/")||Z.endsWith(".lock")||!l06.test(Z))throw Error(`Invalid branch name: ${$}`)}function kC($){return AbortSignal.any([$.req.raw.signal,AbortSignal.timeout(i06)])}function SC($){let{runner:Z}=$.get("vmClaim");if(!Z)return $.json({error:"No sandbox runner configured"},503);return Z}function o$1($,Z){let G=(hE0.get($)??Promise.resolve()).catch(()=>{}).then(Z),Y=G.catch(()=>{});return hE0.set($,Y),Y.finally(()=>{if(hE0.get($)===Y)hE0.delete($)}),G}async function SZ($,Z,X){let G=SC($);if(G instanceof Response)return G;let{claimName:Y,userId:Q,projectRef:J}=$.get("vmClaim"),W=X?.method??"POST",K=null,N=new Headers;if(X?.jsonBody!==void 0)K=X.jsonBody,N.set("content-type","application/json");else if(X?.forwardJsonBody)K=await $.req.text(),N.set("content-type","application/json");let H=X?.signal,F={method:W,headers:N,body:K,...H?{signal:H}:{}},U=async()=>{let w=await G.proxyDaemonRequest(Y,Z,F);if(X?.map404to410&&w.status===404){try{await w.body?.cancel()}catch{}if(await G.adoptLiveClaim?.({userId:Q,projectRef:J},Y))w=await G.proxyDaemonRequest(Y,Z,F);if(w.status===404){try{await w.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",...fY}})}}let O=await w.text(),D=X?.redactRepoDirUnlessDesktop&&G.kind!=="user-desktop"?p06(O):O,L=w.headers.get("content-type")??"application/json";return new Response(D,{status:w.status,headers:{"content-type":L,...fY}})};try{if(H){let w=U();return w.catch(()=>{}),await Promise.race([w,new Promise((D,L)=>{if(H.aborted)return L(H.reason);H.addEventListener("abort",()=>L(H.reason),{once:!0})})])}return await U()}catch(w){let O=w instanceof Error?w.message:String(w);return $.json({error:`Daemon unreachable: ${O}`},502)}}function p06($){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 uE0($,Z,X,G="GET",Y){let Q=await $.proxyDaemonRequest(Z,X,{method:G,headers:new Headers,body:null});if(Q.status===404&&Y){try{await Q.body?.cancel()}catch{}if(await $.adoptLiveClaim?.(Y,Z))Q=await $.proxyDaemonRequest(Z,X,{method:G,headers:new Headers,body:null})}if(Q.status===404){try{await Q.body?.cancel()}catch{}throw Error("SANDBOX_GONE")}let J=await Q.text();if(!Q.ok)try{let W=JSON.parse(J);throw Error(W.error??`Daemon error (${Q.status})`)}catch(W){if(W instanceof Error&&W.message!==J)throw W;throw Error(`Daemon error (${Q.status})`)}return JSON.parse(J)}function t06($){return JC$.includes($)}var l06,YC$=524288,m06=65536,i06=1e4,QC$=2000,n06,hE0,fY,JC$,WC$=()=>{let $=new D1;return $.use("/:virtualMcpId/:branch/*",n06),$.post("/:virtualMcpId/:branch/write",(Z)=>SZ(Z,"/_sandbox/write",{forwardJsonBody:!0,signal:kC(Z)})),$.post("/:virtualMcpId/:branch/unlink",(Z)=>SZ(Z,"/_sandbox/unlink",{forwardJsonBody:!0,signal:kC(Z)})),$.post("/:virtualMcpId/:branch/mkdir",(Z)=>SZ(Z,"/_sandbox/mkdir",{forwardJsonBody:!0,signal:kC(Z)})),$.post("/:virtualMcpId/:branch/rename",(Z)=>SZ(Z,"/_sandbox/rename",{forwardJsonBody:!0,signal:kC(Z)})),$.post("/:virtualMcpId/:branch/read",(Z)=>SZ(Z,"/_sandbox/read",{forwardJsonBody:!0,signal:kC(Z)})),$.post("/:virtualMcpId/:branch/glob",(Z)=>SZ(Z,"/_sandbox/glob",{forwardJsonBody:!0,signal:kC(Z)})),$.post("/:virtualMcpId/:branch/grep",(Z)=>SZ(Z,"/_sandbox/grep",{forwardJsonBody:!0,signal:kC(Z)})),$.post("/:virtualMcpId/:branch/exec/:script",async(Z)=>{let X=Z.req.param("script");if(!X)return Z.json({error:"missing script name"},400);return SZ(Z,`/_sandbox/exec/${encodeURIComponent(X)}`)}),$.post("/:virtualMcpId/:branch/exec/:script/kill",async(Z)=>{let X=Z.req.param("script");if(!X)return Z.json({error:"missing script name"},400);return SZ(Z,`/_sandbox/exec/${encodeURIComponent(X)}/kill`)}),$.get("/:virtualMcpId/:branch/config",(Z)=>SZ(Z,"/_sandbox/config",{method:"GET",map404to410:!0,redactRepoDirUnlessDesktop:!0})),$.put("/:virtualMcpId/:branch/config",(Z)=>SZ(Z,"/_sandbox/config",{method:"PUT",forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/setup/:step",async(Z)=>{let X=Z.req.param("step");if(!X||!t06(X))return Z.json({error:`step must be one of: ${JC$.join(", ")}`},400);if(X==="start"){let G=Z.get("vmClaim");if(G.runner){let Y=s(Z.var.studioContext),Q=oU0(G.virtualMcpMetadata);try{await rU0({ctx:Z.var.studioContext,runner:G.runner,handle:G.claimName,orgId:Y.id,userId:G.callerUserId,entries:Q})}catch(J){let W=J instanceof Error?J.message:String(J);return Z.json({error:`Failed to push env to daemon: ${W}`},502)}}}return SZ(Z,`/_sandbox/setup/${X}`,{signal:Z.req.raw.signal,map404to410:!0})}),$.get("/:virtualMcpId/:branch/events",(Z)=>{let X=Z.get("vmClaim");if(!X.runner)return mH(Z,async(G)=>{await G.writeSSE({event:"phase",data:JSON.stringify({kind:"failed",reason:"unknown",message:"No sandbox runner configured on this studio instance."})})});return dV$(Z,{ctx:Z.var.studioContext,claimName:X.claimName,runner:X.runner,virtualMcpId:X.virtualMcpId,branch:X.branch,userId:X.userId,projectRef:X.projectRef,virtualMcpMetadata:X.virtualMcpMetadata})}),$.get("/:virtualMcpId/:branch/git/status",(Z)=>SZ(Z,"/_sandbox/git/status",{method:"GET",map404to410:!0,signal:AbortSignal.any([Z.req.raw.signal,AbortSignal.timeout(QC$)])})),$.post("/:virtualMcpId/:branch/git/status",(Z)=>SZ(Z,"/_sandbox/git/status",{map404to410:!0,signal:AbortSignal.any([Z.req.raw.signal,AbortSignal.timeout(QC$)])})),$.post("/:virtualMcpId/:branch/git/diff",(Z)=>SZ(Z,"/_sandbox/git/diff",{forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/git/publish",async(Z)=>{let X=SC(Z);if(X instanceof Response)return X;let{claimName:G,virtualMcpMetadata:Y,connectionIds:Q}=Z.get("vmClaim"),J=Z.var.studioContext;return o$1(G,async()=>{try{await u$1(J,X,G);let W=ZC$(Y,Q);if(W)await XC$(J,X,G,W)}catch(W){if(W instanceof Vg)return Z.json({error:W.message},403,fY);let K=W instanceof Error?W.message:String(W);return Z.json({error:K},502,fY)}return SZ(Z,"/_sandbox/git/publish",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/discard",(Z)=>{let{claimName:X}=Z.get("vmClaim");return o$1(X,()=>SZ(Z,"/_sandbox/git/discard",{forwardJsonBody:!0,map404to410:!0}))}),$.post("/:virtualMcpId/:branch/git/rebase",async(Z)=>{let X=SC(Z);if(X instanceof Response)return X;let{claimName:G}=Z.get("vmClaim"),Y=Z.var.studioContext;return o$1(G,async()=>{try{await u$1(Y,X,G)}catch(Q){let J=Q instanceof Error?Q.message:String(Q);return Z.json({error:J},502,fY)}return SZ(Z,"/_sandbox/git/rebase",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/suggest-commit",F7({maxSize:YC$,onError:(Z)=>Z.json({error:"Payload too large"},413,fY)}),async(Z)=>{let X=SC(Z);if(X instanceof Response)return X;let{claimName:G,userId:Y,projectRef:Q}=Z.get("vmClaim"),J=Z.var.studioContext;try{let W=await Z.req.json().catch(()=>({})),K=W.status,N=W.diff,H=N!=null&&typeof N.diffs==="object"&&N.diffs!==null,[F,U]=d$1(K)&&H?[K,N]:await Promise.all([uE0(X,G,"/_sandbox/git/status","GET",{userId:Y,projectRef:Q}),uE0(X,G,"/_sandbox/git/diff","GET",{userId:Y,projectRef:Q})]),w=await tV$(J,F,U);return Z.json(w,200,fY)}catch(W){let K=W instanceof Error?W.message:String(W);if(K==="SANDBOX_GONE")return Z.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,fY);return Z.json({error:K},502,fY)}}),$.post("/:virtualMcpId/:branch/git/judge-review",F7({maxSize:YC$,onError:(Z)=>Z.json({error:"Payload too large"},413,fY)}),async(Z)=>{let X=SC(Z);if(X instanceof Response)return X;let{claimName:G,userId:Y,projectRef:Q}=Z.get("vmClaim"),J=Z.var.studioContext;try{let W=await Z.req.json().catch(()=>({})),K=W.status,N=W.diff,H=N!=null&&typeof N.diffs==="object"&&N.diffs!==null,[F,U]=d$1(K)&&H?[K,N]:await Promise.all([uE0(X,G,"/_sandbox/git/status","GET",{userId:Y,projectRef:Q}),uE0(X,G,"/_sandbox/git/diff","GET",{userId:Y,projectRef:Q})]),w=await rV$(J,F,U,typeof W.language==="string"?W.language:void 0);return Z.json(w,200,fY)}catch(W){let K=W instanceof Error?W.message:String(W);if(K==="SANDBOX_GONE")return Z.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,fY);return Z.json({error:K},502,fY)}}),$.get("/:virtualMcpId/:branch/preview-fetch",async(Z)=>{let X=SC(Z);if(X instanceof Response)return X;let{claimName:G}=Z.get("vmClaim"),Y=Z.req.query("path");if(!Y||!Y.startsWith("/")||Y.startsWith("//")||Y.includes("..")||Y.includes("\\"))return Z.json({error:"Path not allowed"},403);let Q;try{Q=await X.getPreviewUrl(G)}catch{return Z.json({error:"Preview not available"},502)}if(!Q)return Z.json({error:"Preview not available"},502);let J=Q.replace(/\/+$/,""),W=t$1(`${J}${Y}`),K;try{K=await fetch(W?.url??`${J}${Y}`,{...W?{headers:{host:W.hostHeader}}:{}})}catch{return Z.json({error:"Preview unreachable"},502)}let N;try{N=await K.text()}catch{return Z.json({error:"Preview unreachable"},502)}return new Response(N,{status:K.status,headers:{"content-type":K.headers.get("content-type")??"application/json"}})}),$.post("/:virtualMcpId/:branch/preview-invoke",F7({maxSize:m06,onError:(Z)=>Z.json({error:"Payload too large"},413)}),async(Z)=>{let X=SC(Z);if(X instanceof Response)return X;let{claimName:G}=Z.get("vmClaim"),Y;try{Y=await X.getPreviewUrl(G)}catch{return Z.json({error:"Preview not available"},502)}if(!Y)return Z.json({error:"Preview not available"},502);let Q;try{Q=await Z.req.json()}catch{return Z.json({error:"Invalid JSON body"},400)}if(!Q||typeof Q!=="object"||Array.isArray(Q))return Z.json({error:"Invalid JSON body"},400);let J=sV$(Q);if(!J)return Z.json({error:"Invalid or missing __resolveType"},400);let W=eV$(Y,J.resolveType),K=t$1(W),N;try{N=await fetch(K?.url??W,{method:"POST",headers:{"content-type":"application/json",...K?{host:K.hostHeader}:{}},body:JSON.stringify(J.payload),signal:AbortSignal.timeout(30000)})}catch{return Z.json({error:"Preview unreachable"},502)}let H;try{H=await N.text()}catch{return Z.json({error:"Preview unreachable"},502)}return new Response(H,{status:N.status,headers:{"content-type":N.headers.get("content-type")??"application/json"}})}),$};var KC$=B(()=>{u8();zC();Sg();hV$();YH();cV$();w3();nw();lV$();mV$();Dn0();tn();n$1();aV$();$C$();GC$();l06=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;n06=gV$(async($,Z)=>{let X=$.var.studioContext;try{G0(X)}catch{return $.json({error:"Unauthorized"},401)}let G=N1(X);if(!G)return $.json({error:"Unauthorized"},401);let Y;try{Y=s(X)}catch{return $.json({error:"Organization scope required"},403)}let Q=$.req.param("virtualMcpId"),J=$.req.param("branch");if(!Q||!J)return $.json({error:"virtualMcpId and branch are required"},400);try{d06(J)}catch(w){let O=w instanceof Error?w.message:String(w);return $.json({error:O},400)}let W=await X.storage.virtualMcps.findById(Q);if(!W||W.organization_id!==Y.id)return $.json({error:"Virtual MCP not found"},404);let K=Bn({orgId:Y.id,virtualMcpId:Q,branch:J}),N=await UH(X,J,G),H=uV$({userId:N,projectRef:K}),F=W.metadata??null,U;try{U=(await bX(X,{userId:N,branch:J,virtualMcpMetadata:F})).provider}catch{U=null}if(!U)return $.json({error:"No sandbox runner found"},404);return $.set("vmClaim",{claimName:H,callerUserId:G,runner:U,virtualMcpId:Q,branch:J,userId:N,projectRef:K,virtualMcpMetadata:F,connectionIds:W.connections?.map((w)=>w.connection_id)??[]}),Z()});hE0=new Map;fY={"Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache"};JC$=["clone","install","start"]});var NC$=($)=>{let Z=new D1;if(Z.use("*",EC),Z.route("/",ZE0()),Z.route("/",TM$()),Z.route("/",IV$()),Z.route("/",TV$()),Z.route("/",fE0()),Z.route("/tools",_V$()),Z.route("/",SV$()),Z.route("/",QV$({kvStorage:$.kvStorage})),Z.route("/",GV$()),Z.route("/fs",DV$({getConnection:$.getNatsConnection})),Z.route("/sandbox",WC$()),Z.route("/",jV$()),Z.route("/deco-sites",GE0()),Z.route("/sso",tL0()),Z.route("/",xE0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",BM$()),$.mountDevAssets)Z.route("/dev-assets",YE0({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("/",Qs1()),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",EV$()),Z.route("/mcp",SO0()),Z.route("/mcp/self",bE0()),Z.route("/mcp",_O0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var HC$=B(()=>{u8();J11();DM$();F11();QE0();lt();Y11();YV$();JV$();LV$();Ri();o01();vO0();_$1();zV$();PV$();RV$();qV$();VV$();b$1();vV$();f$1();VO0();KC$()});function r06($){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}}))}async function a06($,Z){let X=await fetch(`${$}/rest/v1/apps?select=name,title,description,logo,category,vendors(alias,url)`,{headers:{apikey:Z,Authorization:`Bearer ${Z}`,Accept:"application/json"},signal:AbortSignal.timeout(o06)});if(!X.ok){let G=await X.text().catch(()=>X.statusText);throw console.error(`[deco-apps] Supabase error (${X.status}): ${G.slice(0,200)}`),Error(`External service error (${X.status})`)}return await X.json()}var o06=1e4,s06=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},FC$=()=>{let $=new D1;return $.use("*",s06),$.get("/",async(Z)=>{let X=d0(),G=X.decoSupabaseUrl,Y=X.decoSupabaseServiceKey;if(!G||!Y)return Z.json({apps:[]});try{let Q=await a06(G,Y);return Z.json({apps:r06(Q)})}catch(Q){return console.error("[deco-apps] GET error:",Q),Z.json({error:"Failed to fetch apps"},502)}}),$};var UC$=B(()=>{u8();V$()});import{z as I1}from"zod";function RK($,Z="invalid_request_error",X=null,G=null){return{error:{message:$,type:Z,param:X,code:G}}}function K16($){if(!$)return null;let Z=$.indexOf(":");if(Z===-1)return{credentialId:null,modelId:$};let X=$.substring(0,Z),G=$.substring(Z+1);if(!X||!G)return null;return{credentialId:X,modelId:G}}function N16($,Z,X){try{return JSON.parse($)}catch{throw new BC$(`Invalid JSON in tool call arguments for function '${X}' (tool_call_id: ${Z}): ${$}`)}}function H16($){let Z={};for(let X of $)if(X.role==="assistant"&&X.tool_calls)for(let G of X.tool_calls)Z[G.id]=G.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:N16(Y.function.arguments,Y.id,Y.function.name)}))};return{role:"assistant",content:X.content??""};case"tool":let G=Z[X.tool_call_id]??"unknown";return{role:"tool",content:[{type:"tool-result",toolCallId:X.tool_call_id,toolName:G,output:{type:"text",value:X.content}}]}}})}function F16($){let Z=$.map((X)=>{let G=X.function.parameters?BY(X.function.parameters):BY({type:"object",properties:{}});return[X.function.name,_$({description:X.function.description,inputSchema:G})]});return Object.fromEntries(Z)}function U16($){if(!$)return;return{openai:{response_format:$}}}function w16(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function wC$($,Z,X,G,Y,Q){let J={model:$,messages:Z,tools:X,temperature:G.temperature,maxTokens:G.max_tokens,topP:G.top_p,frequencyPenalty:G.frequency_penalty,presencePenalty:G.presence_penalty,stopSequences:G.stop?Array.isArray(G.stop)?G.stop:[G.stop]:void 0,abortSignal:Q};return Y?{...J,providerOptions:Y}:J}function OC$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var e06=256,$16,Z16,X16,G16,Y16,Q16,J16,W16,BC$,DC$,LC$;var EC$=B(()=>{S4();u8();Sg();TH();$16=I1.object({type:I1.literal("function"),function:I1.object({name:I1.string(),description:I1.string().optional(),parameters:I1.record(I1.string(),I1.unknown()).optional()})}),Z16=I1.object({id:I1.string(),type:I1.literal("function"),function:I1.object({name:I1.string(),arguments:I1.string()})}),X16=I1.discriminatedUnion("role",[I1.object({role:I1.literal("system"),content:I1.string(),name:I1.string().optional()}),I1.object({role:I1.literal("user"),content:I1.union([I1.string(),I1.array(I1.union([I1.object({type:I1.literal("text"),text:I1.string()}),I1.object({type:I1.literal("image_url"),image_url:I1.object({url:I1.string(),detail:I1.string().optional()})})]))]),name:I1.string().optional()}),I1.object({role:I1.literal("assistant"),content:I1.string().nullable().optional(),name:I1.string().optional(),tool_calls:I1.array(Z16).optional()}),I1.object({role:I1.literal("tool"),content:I1.string(),tool_call_id:I1.string()})]),G16=I1.object({type:I1.literal("text")}),Y16=I1.object({type:I1.literal("json_object")}),Q16=I1.object({type:I1.literal("json_schema"),json_schema:I1.object({name:I1.string(),description:I1.string().optional(),schema:I1.record(I1.string(),I1.unknown()),strict:I1.boolean().optional()})}),J16=I1.union([G16,Y16,Q16]),W16=I1.object({model:I1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:I1.array(X16),stream:I1.boolean().optional().default(!1),temperature:I1.number().min(0).max(2).optional(),max_tokens:I1.number().positive().optional(),top_p:I1.number().min(0).max(1).optional(),frequency_penalty:I1.number().min(-2).max(2).optional(),presence_penalty:I1.number().min(-2).max(2).optional(),stop:I1.union([I1.string(),I1.array(I1.string())]).optional(),tools:I1.array($16).optional(),tool_choice:I1.union([I1.literal("auto"),I1.literal("none"),I1.literal("required"),I1.object({type:I1.literal("function"),function:I1.object({name:I1.string()})})]).optional(),response_format:J16.optional(),user:I1.string().optional()});BC$=class BC$ extends Error{constructor($){super($);this.name="MessageConversionError"}};DC$=new D1;DC$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),X=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(RK("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(RK("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(RK("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let G=await $.req.json(),Y=W16.safeParse(G);if(!Y.success){let L=Y.error.issues[0]??{message:"Invalid request",path:[]};return $.json(RK(`Invalid request: ${L.message}`,"invalid_request_error",L.path.length>0?L.path.join("."):null),400)}let Q=Y.data,J=K16(Q.model);if(!J)return $.json(RK("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((z)=>mB(z.providerId));if(!E)return $.json(RK("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 N;try{N=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json(RK(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let H=N.aiSdk.languageModel(K),F=H16(Q.messages),U=Q.tools?F16(Q.tools):void 0,w=U16(Q.response_format),O=w16(),D=Math.floor(Date.now()/1000);if(Q.stream)return mH($,async(L)=>{let E=wC$(H,F,U,Q,w,$.req.raw.signal);try{let z=Vw(E),j=!1,A=0,P="",M=async()=>{if(P.length===0)return;let S=P;P="",await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:Q.model,choices:[{index:0,delta:{content:S},finish_reason:null}]})})};for await(let S of z.fullStream){if(!j&&(S.type==="text-delta"||S.type==="tool-call"))await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:Q.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),j=!0;if(S.type==="text-delta"){if(P+=S.text,P.length>=e06)await M()}else if(S.type==="tool-call"){await M();let q=A++;await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:Q.model,choices:[{index:0,delta:{tool_calls:[{index:q,id:S.toolCallId,type:"function",function:{name:S.toolName,arguments:JSON.stringify(S.input)}}]},finish_reason:null}]})})}else if(S.type==="finish")await M(),await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:Q.model,choices:[{index:0,delta:{},finish_reason:OC$(S.finishReason)}],usage:S.totalUsage?{prompt_tokens:S.totalUsage.inputTokens??0,completion_tokens:S.totalUsage.outputTokens??0,total_tokens:S.totalUsage.totalTokens??0}:void 0})})}await M(),await L.writeSSE({data:"[DONE]"})}catch(z){let j=z;console.error("[openai-compat:stream] Error:",j.message),await L.writeSSE({data:JSON.stringify({error:{message:j.message,type:"server_error"}})})}});else{let L=wC$(H,F,U,Q,w,$.req.raw.signal),E=await kw(L),z={role:"assistant",content:E.text||null};if(E.toolCalls&&E.toolCalls.length>0)z.tool_calls=E.toolCalls.map((j)=>({id:j.toolCallId,type:"function",function:{name:j.toolName,arguments:JSON.stringify("input"in j?j.input:{})}})),z.content=null;return $.json({id:O,object:"chat.completion",created:D,model:Q.model,choices:[{index:0,message:z,finish_reason:OC$(E.finishReason)}],usage:{prompt_tokens:E.usage?.inputTokens??0,completion_tokens:E.usage?.outputTokens??0,total_tokens:E.usage?.totalTokens??0}})}}catch(G){let Y=G;if(Y.name==="AbortError")return $.json(RK("Request aborted","invalid_request_error"),400);if(Y.name==="MessageConversionError")return $.json(RK(Y.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",Y.message,Y.stack),$.json(RK(Y.message,"server_error"),500)}});LC$=DC$});var jC$;var zC$=B(()=>{jC$={name:"decocms",version:"4.181.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",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.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 D16(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??B16}}var PC$,B16="https://ph.studio.decocms.com",AC$;var TC$=B(()=>{u8();TC0();IV();OZ();V$();m01();zC$();PC$=new D1;PC$.get("/",($)=>{let Z={version:jC$.version,theme:FM1(),...oB().logo&&{logo:oB().logo},...$K()&&{internalUrl:w21()},...d0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!d0().firecrawlApiKey,auth:Vq$(),posthog:D16(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:!$K()&&d0().sandboxProviderKind==="agent-sandbox"}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});AC$=PC$});function Cg($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function r$1($){return(Cg($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((X)=>X.charAt(0).toUpperCase()+X.slice(1)).join(" ")}function IC$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(Cg($))}&sz=${Z}`}function RC$($,Z){let X=$.trim();if(X.length<=Z)return X;let G=X.slice(0,Z-1),Y=G.lastIndexOf(" ");return`${(Y>Z*0.6?G.slice(0,Y):G).trimEnd()}\u2026`}function qC$($){let{brand:Z,domain:X,score:G,verdict:Y}=$,Q=typeof G==="number"?`${Z} commerce report \u2014 ${Math.round(G)}/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()?RC$(`${Y.trim().replace(/\s+/g," ")} \u2014 ${J}`,200):RC$(`How does ${X} really perform? ${J}`,200);return{title:Q,description:W}}import{z as h0}from"zod";var VC,L16,E16,z16,j16,MC$;var kC$=B(()=>{VC=h0.enum(["good","bad","neutral"]),L16=h0.preprocess(($)=>{if(Array.isArray($))return{kind:"text",value:$.find((X)=>X!==null&&typeof X!=="object")??""};return $!==null&&typeof $==="object"?$:{kind:"text",value:$}},h0.object({kind:h0.enum(["text","number","sparkline","badge","score"]).catch("text"),value:h0.coerce.string().optional(),tone:VC.optional(),muted:h0.boolean().optional(),delta:h0.coerce.string().optional(),deltaDir:h0.enum(["up","down","neutral"]).optional(),points:h0.array(h0.coerce.number()).optional(),label:h0.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 $})),E16=h0.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},h0.array(L16)),z16={key:h0.coerce.string(),title:h0.coerce.string(),eyebrow:h0.coerce.string().optional(),headline:h0.coerce.string(),annotation:h0.coerce.string().optional(),methodology:h0.coerce.string().optional(),sources:h0.array(h0.object({name:h0.coerce.string(),logoUrl:h0.coerce.string()})).optional()},j16=h0.discriminatedUnion("template",[h0.object({template:h0.literal("cover"),score:h0.object({value:h0.coerce.number(),max:h0.coerce.number().optional(),grade:h0.coerce.string().optional(),label:h0.coerce.string().optional()}).optional(),brandImage:h0.coerce.string().optional(),screenshot:h0.coerce.string().optional(),mobileScreenshot:h0.coerce.string().optional()}),h0.object({template:h0.literal("cta"),ctaUrl:h0.coerce.string().optional(),ctaLabel:h0.coerce.string().optional(),bullets:h0.array(h0.coerce.string()).optional()}),h0.object({template:h0.literal("series"),points:h0.array(h0.coerce.number()).min(2),xLabels:h0.array(h0.coerce.string()).min(1),unit:h0.coerce.string().optional(),callout:h0.object({index:h0.coerce.number(),value:h0.coerce.string(),tone:VC.optional()})}),h0.object({template:h0.literal("threshold"),value:h0.coerce.string().default(""),metricLabel:h0.coerce.string().optional(),ratio:h0.coerce.number(),thresholdRatio:h0.coerce.number().optional(),thresholdLabel:h0.coerce.string().default(""),tone:VC.optional()}),h0.object({template:h0.literal("stats"),stats:h0.array(h0.object({value:h0.coerce.string(),label:h0.coerce.string(),tone:VC.optional()})).min(1)}),h0.object({template:h0.literal("bars"),items:h0.array(h0.object({value:h0.coerce.string(),label:h0.coerce.string(),ratio:h0.coerce.number(),tone:VC.optional()})).min(1)}),h0.object({template:h0.literal("gauges"),gauges:h0.array(h0.object({label:h0.coerce.string(),value:h0.coerce.string(),status:h0.enum(["good","warn","bad"]).catch("warn"),caption:h0.coerce.string().optional(),ratio:h0.coerce.number().optional()})).min(1)}),h0.object({template:h0.literal("checklist"),checks:h0.array(h0.object({label:h0.coerce.string(),status:h0.enum(["pass","fail","warn"]).catch("fail"),value:h0.coerce.string().optional()})).min(1)}),h0.object({template:h0.literal("table"),columns:h0.array(h0.object({label:h0.coerce.string(),align:h0.enum(["left","right"]).optional()})).min(1),rows:h0.array(E16).min(1),highlightRow:h0.coerce.number().optional()}),h0.object({template:h0.literal("products"),products:h0.array(h0.object({name:h0.coerce.string(),price:h0.coerce.string().optional(),image:h0.coerce.string().optional(),url:h0.coerce.string().optional()})).min(1)}),h0.object({template:h0.literal("list"),entries:h0.array(h0.object({label:h0.coerce.string(),severity:h0.enum(["error","warning","notice"]).catch("notice")})).min(1),moreCount:h0.coerce.number().optional()}),h0.object({template:h0.literal("keywords"),volumeLabel:h0.coerce.string().optional(),keywords:h0.array(h0.object({term:h0.coerce.string(),volume:h0.coerce.string(),position:h0.coerce.number().catch(0)})).min(1)}),h0.object({template:h0.literal("competitor"),metricLabel:h0.coerce.string().optional(),competitors:h0.array(h0.object({name:h0.coerce.string(),value:h0.coerce.string(),tone:VC.optional(),isYou:h0.boolean().optional()})).min(1)}),h0.object({template:h0.literal("scorecard"),rivalLabel:h0.coerce.string().optional(),dimensions:h0.array(h0.object({label:h0.coerce.string(),you:h0.coerce.string(),rival:h0.coerce.string().optional(),rivalName:h0.coerce.string().optional(),tone:VC.optional()})).min(1)})]),MC$=h0.object({...z16,template:j16})});function cE0($){let Z=[],X=[...$.sections].sort((G,Y)=>G.position-Y.position).map((G)=>{let Y=MC$.safeParse(G.props);if(Y.success)return Y.data;let Q=Y.error.issues[0];return Z.push({section_type:G.section_type,position:G.position,reason:Q?`${Q.path.join(".")||"(root)"}: ${Q.message}`:"contract violation"}),null}).filter((G)=>G!==null);return{deck:{meta:{...$.meta,scores:$.summary?.scores},slides:X},drops:Z}}var a$1=B(()=>{kC$()});import{join as SC$}from"path";async function A16($){try{let Z=await fetch(`${HW({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(P16)});if(!Z.ok)return null;let X=await Z.json(),{deck:G}=cE0(X);if(!G.slides.length)return null;let Y=G.slides.find((W)=>W.template.template==="cover"),Q=Y?.template,J=Q&&Q.template==="cover"?Q:void 0;return{brand:G.meta.brand?.trim()||r$1($),score:G.meta.scores?.cover??J?.score?.value,verdict:Y?.annotation?.trim()||Y?.headline?.trim()||void 0}}catch{return null}}function xY($){return $.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""")}function T16($,Z){let X=Cg($),G=Z?.brand?.trim()||r$1(X),Y=IC$(X,128),J=`${(d0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(X)}`,{title:W,description:K}=qC$({brand:G,domain:X,score:Z?.score,verdict:Z?.verdict}),N=`${J}/og.png`,H=`${G} commerce report by decocms`;return[`<title>${xY(W)}</title>`,`<meta name="description" content="${xY(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="${xY(W)}" />`,`<meta property="og:description" content="${xY(K)}" />`,`<meta property="og:url" content="${xY(J)}" />`,`<meta property="og:image" content="${xY(N)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${xY(H)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${xY(W)}" />`,`<meta name="twitter:description" content="${xY(K)}" />`,`<meta name="twitter:image" content="${xY(N)}" />`,`<meta name="twitter:image:alt" content="${xY(H)}" />`,`<link rel="canonical" href="${xY(J)}" />`,`<link rel="icon" href="${xY(Y)}" sizes="any" />`].join(`
|
|
2727
2727
|
`)}function R16($,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}
|
|
2728
2728
|
</head>`)}function VC$($){let Z=new D1;return Z.get("/:domain/og.png",async(X)=>{let G=Cg(X.req.param("domain")),Y=async()=>{let Q=$?Bun.file(SC$($,"report-og-fallback.png")):null;if(!Q||!await Q.exists())return X.notFound();return X.body(new Uint8Array(await Q.arrayBuffer()),200,{"Content-Type":"image/png","Cache-Control":"public, max-age=0, s-maxage=3600"})};try{let Q=await fetch(`${HW({})}/api/v2/public/diagnostics/${encodeURIComponent(G)}/og.png`,{signal:AbortSignal.timeout(I16)}),J=Q.headers.get("content-type")??"";if(!Q.ok||!J.startsWith("image/")||!Q.body)return Y();return X.body(Q.body,200,{"Content-Type":J,"Cache-Control":"public, max-age=0, s-maxage=604800"})}catch{return Y()}}),Z.get("/:domain",async(X)=>{let G=X.req.param("domain"),Y=$?SC$($,"index.html"):null,Q=Y?Bun.file(Y):null;if(!Q||!await Q.exists())return X.notFound();let J=await Q.text();try{let W=await A16(Cg(G)),K=T16(G,W);return X.html(R16(J,K),200,{"Cache-Control":"public, max-age=0, s-maxage=300"})}catch{return X.html(J)}}),Z}var P16=2500,I16=1e4;var CC$=B(()=>{u8();a$1();AD();V$()});function Bo($,Z){return fetch(`${HW({})}${$}`,Z)}async function q16($,Z,X){let G=new URLSearchParams;if(Z)G.set("pw",Z);if(X)G.set("lang",X);let Y=G.toString()?`?${G.toString()}`:"",Q=await Bo(`/api/v2/public/diagnostics/${encodeURIComponent($)}${Y}`,{headers:{Accept:"application/json"}});if(Q.status===404)return{status:"not_found",deck:null,scanned_at:null,drops:[]};if(!Q.ok)throw Error(`report read HTTP ${Q.status}`);let J=await Q.json(),{deck:W,drops:K}=cE0(J);return{status:W.slides.length?"ready":"empty",deck:W,scanned_at:J.scanned_at,drops:K}}var M16,V3,lE0=async($,Z)=>{if(!$.get("reportUser"))return $.json({error:"Authentication required"},401);await Z();return},_C$;var vC$=B(()=>{u8();IQ();AD();a$1();M16=new Set(["complete","errored","terminated","unknown"]),V3=new D1;V3.use("*",async($,Z)=>{let X=await L8.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});V3.use("/run",lE0);V3.use("/status",lE0);V3.use("/link-token/*",lE0);V3.use("/suggest",lE0);V3.get("/site/:domain",async($)=>{let Z=$.req.param("domain").trim();if(!Z)return $.json({error:"domain is required"},400);let X=$.get("reportUser"),G=$.req.query("key")?.trim()||void 0,Y=$.req.query("lang")?.trim()||void 0;try{let Q=await q16(Z,G,Y);if($.header("Cache-Control","private, no-store"),X||!Q.deck)return $.json(Q);return $.json({...Q,deck:{...Q.deck,slides:Q.deck.slides.slice(0,1)},truncated:Q.status==="ready"})}catch{return $.json({error:"report read failed"},502)}});V3.post("/run",async($)=>{let Z=$.get("reportUser"),X;try{X=await $.req.json()}catch{return $.json({error:"invalid JSON"},400)}let G=typeof X.domain==="string"?X.domain.trim():"";if(!G)return $.json({error:"domain is required"},400);let Y=Z.email,Q=typeof X.distinctId==="string"&&X.distinctId.trim()&&X.distinctId.length<=200?X.distinctId.trim():void 0;try{let J=await Bo("/api/v2/diagnostics/run",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${PD({})}`},body:JSON.stringify({url:G,email:Y,distinct_id:Q})});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)}});V3.get("/status",async($)=>{let Z=$.req.query("id");if(!Z)return $.json({error:"id is required"},400);try{let X=await Bo(`/api/v2/diagnostics/status?id=${encodeURIComponent(Z)}`,{headers:{Authorization:`Bearer ${PD({})}`}});if(!X.ok)return $.json({error:`status HTTP ${X.status}`},502);let Y=(await X.json()).status??"unknown",Q={done:M16.has(Y),status:Y};return $.json(Q)}catch{return $.json({error:"status failed"},502)}});V3.get("/link-token/:id",async($)=>{let Z=$.req.param("id");try{let X=await Bo(`/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)}});V3.get("/suggest",async($)=>{let Z=($.req.query("q")??"").trim().slice(0,64);if(Z.length<2)return $.json({suggestions:[]});try{let X=await Bo(`/api/v2/public/suggest?q=${encodeURIComponent(Z)}`,{headers:{Accept:"application/json"}});if(!X.ok)return $.json({suggestions:[]});let G=await X.json();return $.json({suggestions:Array.isArray(G.suggestions)?G.suggestions:[]})}catch{return $.json({suggestions:[]})}});_C$=V3});import{createHmac as k16,timingSafeEqual as S16}from"crypto";function bC$($,Z,X,G=Date.now()){if(!Z||!X)return!1;let Y,Q=[];for(let N of Z.split(",")){let H=N.indexOf("=");if(H<=0)continue;let F=N.slice(0,H).trim(),U=N.slice(H+1).trim();if(F==="t")Y=U;else if(F==="v1")Q.push(U)}if(!Y||Q.length===0)return!1;let J=Number(Y);if(!Number.isFinite(J)||Math.abs(G/1000-J)>V16)return!1;let W=k16("sha256",X).update(`${Y}.${$}`).digest("hex"),K=Buffer.from(W,"hex");return Q.some((N)=>{let H=Buffer.from(N,"hex");return K.length===H.length&&S16(K,H)})}function fC$($){let Z;try{Z=JSON.parse($)}catch{return null}let X=tQ(Z),G=tQ(tQ(X?.data)?.object);if(!X||typeof X.type!=="string"||!G)return null;return{id:IK(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:G}}}function C16($){switch($){case"active":case"trialing":return"active";case"past_due":return"past_due";default:return"canceled"}}function IK($){return typeof $==="string"?$:void 0}function tQ($){return typeof $==="object"&&$!==null?$:void 0}function dE0($){return typeof $==="number"?new Date($*1000):null}function $81($){return IK($)??IK(tQ($)?.id)}function _16($){return $81($.subscription)??IK(tQ(tQ($.parent)?.subscription_details)?.subscription)}function v16($){let Z=dE0($.current_period_end);if(Z)return Z;let X=tQ($.items)?.data;if(!Array.isArray(X))return null;let G=0;for(let Y of X){let Q=tQ(Y)?.current_period_end;if(typeof Q==="number"&&Q>G)G=Q}return G>0?new Date(G*1000):null}function s$1($,Z){let X=dE0($.created);return!!X&&!!Z.lastStripeEventAt&&X<Z.lastStripeEventAt}function e$1($,Z){let X=dE0($.created);if(!X)return;return Z.lastStripeEventAt&&Z.lastStripeEventAt>X?void 0:X}async function b16($,Z){let X=Z.data.object;switch(Z.type){case"checkout.session.completed":case"checkout.session.async_payment_succeeded":{let G=IK(tQ(X.metadata)?.orgId);if(!G)return{handled:!1,reason:"no orgId"};if(IK(tQ(X.metadata)?.kind)==="topup"){if(X.mode!=="payment")return{handled:!1,reason:"topup with wrong mode"};if(IK(X.payment_status)!=="paid")return{handled:!1,reason:"payment not confirmed"};let J=IK(X.id);if(!J)return console.error("stripe webhook: topup session without id",{eventId:Z.id,organizationId:G}),{handled:!1,reason:"topup session without id"};let W=Number(tQ(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:G,creditCents:tQ(X.metadata)?.creditCents}),{handled:!1,reason:"bad topup metadata"};return{handled:!0,organizationId:G,topUp:{creditCents:W,referenceId:`stripe-topup:${J}`}}}if(X.mode!=="subscription")return{handled:!1,reason:"not a subscription checkout"};if(IK(X.payment_status)!=="paid")return{handled:!1,reason:"payment not confirmed"};let Y=await $.getBilling(G);if(!Y)return{handled:!1,reason:"unknown org"};let Q=$81(X.subscription);if(Y.stripeSubscriptionId&&Q&&Y.stripeSubscriptionId!==Q)return console.error("stripe webhook: refused checkout rebind",{organizationId:G,eventId:Z.id}),{handled:!1,reason:"org already bound to another subscription",orphanSubscriptionId:Q};if(s$1(Z,Y))return{handled:!1,reason:"stale event"};return await $.updateStripeState(G,{stripeCustomerId:$81(X.customer),stripeSubscriptionId:Q,status:"active",lastStripeEventAt:e$1(Z,Y)}),{handled:!0,organizationId:G}}case"customer.subscription.updated":case"customer.subscription.deleted":{let G=IK(X.id);if(!G)return{handled:!1,reason:"no sub id"};let Y=await $.getBillingByStripeSubscriptionId(G);if(!Y)return{handled:!1,reason:"unknown subscription"};let Q=Z.type==="customer.subscription.deleted";if(!Q&&s$1(Z,Y))return{handled:!1,reason:"stale event"};let J=Q?"canceled":C16(X.status);return await $.updateStripeState(Y.organizationId,{status:J,currentPeriodEnd:v16(X),...Q&&{stripeSubscriptionId:null},lastStripeEventAt:e$1(Z,Y)}),{handled:!0,organizationId:Y.organizationId}}case"invoice.paid":{let G=_16(X);if(!G)return{handled:!1,reason:"no sub id"};let Y=await $.getBillingByStripeSubscriptionId(G);if(!Y)return{handled:!1,reason:"unknown subscription"};if(s$1(Z,Y))return{handled:!1,reason:"stale event"};return await $.updateStripeState(Y.organizationId,{status:"active",currentPeriodEnd:dE0(X.period_end),lastStripeEventAt:e$1(Z,Y)}),{handled:!0,organizationId:Y.organizationId}}default:return{handled:!1,reason:`unhandled event ${Z.type}`}}}async function xC$($){let Z=new _N(c8().db),X=await b16(Z,$);if(X.handled&&X.topUp)await uH$({organizationId:X.organizationId,amountCents:X.topUp.creditCents,referenceId:X.topUp.referenceId});if(!X.handled&&X.orphanSubscriptionId)try{await n0$(X.orphanSubscriptionId),console.error("stripe webhook: canceled orphan subscription",{subscriptionId:X.orphanSubscriptionId,eventId:$.id})}catch(G){if(!(G instanceof Y3&&(G.status===400||G.status===404)))throw G}return X}var V16=300;var yC$=B(()=>{YQ();ri();Vo0()});var f16=1048576,Z81;var gC$=B(()=>{u8();zC();V$();yC$();Z81=new D1;Z81.post("/webhook",F7({maxSize:f16,onError:($)=>$.json({error:"payload too large"},413)}),async($)=>{let Z=d0().stripeWebhookSecret;if(!Z)return $.json({error:"stripe billing not configured"},503);let X=await $.req.text();if(!bC$(X,$.req.header("stripe-signature"),Z))return $.json({error:"invalid signature"},400);let Y=fC$(X);if(!Y)return $.json({error:"invalid payload"},400);let Q=await xC$(Y);return console.log("stripe webhook",{eventId:Y.id,type:Y.type,livemode:Y.livemode,...Q}),$.json({received:!0})})});function hC$($,Z){if(Z.startsWith("text/html")||Z.startsWith("image/svg"))$.set("Content-Security-Policy","sandbox allow-scripts allow-modals allow-same-origin")}var uC$,x16,y16,cC$;var lC$=B(()=>{u8();PJ();rx();Bv();uC$=new D1,x16=["range","if-none-match","if-modified-since"],y16=["content-type","content-length","content-range","accept-ranges","etag","last-modified"];uC$.get("/:org/files/*",async($)=>{let Z=$.get("studioContext"),X=Z.organization?.id;if(!Z.auth?.user?.id){if(Hg($))return $.redirect(`/login?next=${encodeURIComponent($.req.path)}`,302);throw new G$(401,{message:"Authentication required"})}if(!X)throw new G$(401,{message:"Organization context required"});let G=$.req.path.replace(/^.*\/files\//,"");if(!G)throw new G$(400,{message:"Missing file key"});let Y=await Yp(G,Z);if(!Y)throw new G$(503,{message:"Object storage not configured"});if(Y.startsWith("data:")&&jJ()){let K=Y.match(/^data:([^;]+);base64,(.+)$/s);if(!K)throw new G$(500,{message:"Invalid data URL from storage"});let[,N,H]=K,F=Buffer.from(H,"base64"),U=new Headers({"Content-Type":N,"Cache-Control":"private, max-age=86400"});return hC$(U,N),new Response(F,{status:200,headers:U})}let Q=new Headers;for(let K of x16){let N=$.req.header(K);if(N)Q.set(K,N)}let J=await fetch(Y,{headers:Q});if(J.status===403||J.status===404)throw new G$(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:`,G),new G$(502,{message:"Upstream storage error"});let W=new Headers;for(let K of y16){let N=J.headers.get(K);if(N)W.set(K,N)}return W.set("Cache-Control","private, max-age=86400"),hC$(W,W.get("content-type")??""),new Response(J.body,{status:J.status,headers:W})});cC$=uC$});var Do=_((CC)=>{var g16=CC&&CC.__createBinding||(Object.create?function($,Z,X,G){if(G===void 0)G=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($,G,Y)}:function($,Z,X,G){if(G===void 0)G=X;$[G]=Z[X]}),h16=CC&&CC.__exportStar||function($,Z){for(var X in $)if(X!=="default"&&!Object.prototype.hasOwnProperty.call(Z,X))g16(Z,$,X)};Object.defineProperty(CC,"__esModule",{value:!0});h16(pG(),CC)});var iC$=_((dC$)=>{Object.defineProperty(dC$,"__esModule",{value:!0});dC$.version=void 0;dC$.version="3.4.0"});var tC$=_((qK)=>{var u16=qK&&qK.__importDefault||function($){return $&&$.__esModule?$:{default:$}};Object.defineProperty(qK,"__esModule",{value:!0});qK.NodeTransport=qK.VERSION=void 0;qK.nodeResolveHost=n16;var g6=Do(),c16=j0("net"),X81=j0("tls"),l16=j0("path"),nC$=j0("fs"),d16=u16(j0("dns")),m16=iC$();qK.VERSION=m16.version;var i16="nats.js";class pC${socket;version;lang;yields=[];signal=(0,g6.deferred)();closedNotification=(0,g6.deferred)();options;connected=!1;tlsName="";done=!1;closeError;constructor(){this.lang=i16,this.version=qK.VERSION}async connect($,Z){this.tlsName=$.tlsName,this.options=Z;let{tls:X}=this.options,{handshakeFirst:G}=X||{};try{if(G===!0)this.socket=await this.tlsFirst($);else this.socket=await this.dial($);if(this.done)this.socket?.destroy();let Y=await this.peekInfo();(0,g6.checkOptions)(Y,Z);let{tls_required:Q,tls_available:J}=Y,W=J===!0&&Z.tls!==null;if(!G&&(Q||W))this.socket=await this.startTLS();if(this.done)this.socket?.destroy();if(Q&&this.socket.encrypted!==!0)throw g6.errors.InvalidArgumentError.format("tls","is not available on this server");return this.connected=!0,this.setupHandlers(),this.signal.resolve(),Promise.resolve()}catch(Y){let Q=Y;if(!Q)Q=new g6.errors.ConnectionError("error connecting - node provided an undefined error");let{code:J}=Q,W=J==="ECONNREFUSED"?new g6.errors.ConnectionError("connection refused",{cause:Q}):Q;throw this.socket?.destroy(),W}}dial($){let Z=(0,g6.deferred)(),X,G=(0,c16.createConnection)($.port,$.hostname,()=>{Z.resolve(G),G.removeAllListeners()});return G.on("error",(Y)=>{X=Y}),G.on("close",()=>{G.removeAllListeners(),Z.reject(X)}),G.setNoDelay(!0),Z}get isClosed(){return this.done}close($){return this._closed($,!1)}peekInfo(){let $=(0,g6.deferred)(),Z;return this.socket.on("data",(X)=>{this.yields.push(X);let G=g6.DataBuffer.concat(...this.yields),Y=(0,g6.extractProtocolMessage)(G);if(Y!=="")try{let Q=g6.INFO.exec(Y);if(!Q)throw Error("unexpected response from server");let J=JSON.parse(Q[1]);$.resolve(J)}catch(Q){$.reject(Q)}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,g6.deferred)();try{if($=(0,l16.resolve)($),!(0,nC$.existsSync)($))Z.reject(Error(`${$} doesn't exist`));(0,nC$.readFile)($,(X,G)=>{if(X)return Z.reject(X);Z.resolve(G)})}catch(X){Z.reject(X)}return Z}async loadClientCerts(){let $={},{certFile:Z,cert:X,caFile:G,ca:Y,keyFile:Q,key:J}=this.options.tls;try{if(Z){let W=await this.loadFile(Z);if(W)$.cert=W}else if(X)$.cert=X;if(Q){let W=await this.loadFile(Q);if(W)$.key=W}else if(J)$.key=J;if(G){let W=await this.loadFile(G);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,g6.extend)(X,this.options.tls,Y)}catch(Y){return Promise.reject(new g6.errors.ConnectionError(Y.message,{cause:Y}))}let G=(0,g6.deferred)();try{let Y=(0,X81.connect)($.port,$.hostname,X,()=>{Y.removeAllListeners(),G.resolve(Y)});Y.on("error",(Q)=>{Z=Q}),Y.on("secureConnect",()=>{if(X.rejectUnauthorized===!1)return;if(!Y.authorized)throw Y.authorizationError}),Y.on("close",()=>{G.reject(Z),Y.removeAllListeners()}),Y.setNoDelay(!0)}catch(Y){G.reject(new g6.errors.ConnectionError(Y.message,{cause:Y}))}return G}async startTLS(){let $,Z={socket:this.socket,servername:this.tlsName,rejectUnauthorized:!0};if(typeof this.options.tls==="object")try{let G=await this.loadClientCerts()||{};Z=(0,g6.extend)(Z,this.options.tls,G)}catch(G){return Promise.reject(new g6.errors.ConnectionError(G.message,{cause:G}))}let X=(0,g6.deferred)();try{let G=(0,X81.connect)(Z,()=>{G.removeAllListeners(),X.resolve(G)});G.on("error",(Y)=>{$=Y}),G.on("secureConnect",()=>{if(Z.rejectUnauthorized===!1)return;if(!G.authorized)throw G.authorizationError}),G.on("close",()=>{X.reject($),G.removeAllListeners()})}catch(G){X.reject(new g6.errors.ConnectionError(G.message,{cause:G}))}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,g6.render)($[Z])}`);yield $[Z]}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,g6.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 X81.TLSSocket}_send($){if(this.isClosed||this.socket===void 0)return Promise.resolve();if(this.options.debug)console.info(`< ${(0,g6.render)($)}`);let Z=(0,g6.deferred)();try{this.socket.write($,(X)=>{if(X){if(this.options.debug)console.error(`!!! ${(0,g6.render)($)}: ${X}`);return Z.reject(X)}return Z.resolve()})}catch(X){if(this.options.debug)console.error(`!!! ${(0,g6.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}}qK.NodeTransport=pC$;function n16($){let Z=(0,g6.deferred)();return d16.default.lookup($,{all:!0},(X,G)=>{if(X){Z.reject(X);return}let Y=[];for(let Q of G)Y.push(Q.address);if(Y.length===0)Y.push($);Z.resolve(Y)}),Z}});var eC$=_((sC$)=>{Object.defineProperty(sC$,"__esModule",{value:!0});sC$.connect=p16;var oC$=tC$(),rC$=Do(),aC$=Do();function p16($={}){if((0,aC$.hasWsProtocol)($))return Promise.reject(aC$.errors.InvalidArgumentError.format("servers","node client doesn't support websockets, use the 'wsconnect' function instead"));return(0,rC$.setTransportFactory)({factory:()=>{return new oC$.NodeTransport},dnsResolveFn:oC$.nodeResolveHost}),rC$.NatsConnectionImpl.connect($)}});var $_$=_((iH)=>{var o16=iH&&iH.__createBinding||(Object.create?function($,Z,X,G){if(G===void 0)G=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($,G,Y)}:function($,Z,X,G){if(G===void 0)G=X;$[G]=Z[X]}),r16=iH&&iH.__exportStar||function($,Z){for(var X in $)if(X!=="default"&&!Object.prototype.hasOwnProperty.call(Z,X))o16(Z,$,X)};Object.defineProperty(iH,"__esModule",{value:!0});iH.connect=void 0;var a16=eC$();Object.defineProperty(iH,"connect",{enumerable:!0,get:function(){return a16.connect}});r16(Do(),iH)});function Y_$($){let Z=$?.connectFn??Z$6,X=null,G=null,Y=!1,Q=!1,J=!1,W=[];function K(){return X!==null&&!X.isClosed()&&!X.isDraining()&&!J}function N(){console.log(`[NatsProvider] fireReady: ${W.length} callbacks`);for(let U of W)try{U()}catch{}}function H(U){(async()=>{for await(let w of U.status())if(w.type==="disconnect")console.log("[NatsProvider] Disconnected"),J=!0;else if(w.type==="reconnect")console.log("[NatsProvider] Reconnected, re-firing ready callbacks"),J=!1,G=null,N()})().catch(()=>{})}async function F(U,w){let O=0;while(!Q)try{X=await Z({servers:U,timeout:$$6,reconnect:!0,maxReconnectAttempts:-1,...w?{authenticator:w}:{}}),console.log(`[NatsProvider] Connected to ${X.getServer()} after ${O} attempt(s)`),G=null,J=!1,H(X),N();return}catch{O++;let D=cG(e16,s16,O-1,2,0.5);await a$(D)}}return{init(U,w){if(Y)return;Y=!0,Q=!1;let O=w?.creds?Z_$.credsAuthenticator(new TextEncoder().encode(w.creds)):void 0;F(U,O).catch(()=>{})},isConnected(){return K()},getConnection(){return K()?X:null},getJetStream(){if(!K())return null;if(!G)G=G_$.jetstream(X);return G},onReady(U){if(W.push(U),K())try{U()}catch{}},async drain(){if(Q=!0,Y=!1,G=null,J=!1,X){let U=X;X=null,await U.drain().catch(()=>{})}}}}function Z$6($){return X_$.connect($)}var Z_$,X_$,G_$,s16=100,e16=3000,$$6=3000;var Q_$=B(()=>{W5();Z_$=k(Yh(),1),X_$=k($_$(),1),G_$=k(sO(),1)});function G81($,Z){return`${$}.${Z}`}class Y81{cache;constructor($){this.cache=Jg({ttlMs:$?.ttlMs??X$6,maxSize:$?.maxSize??G$6})}async get($,Z){return this.cache.get(G81($,Z))??null}async set($,Z,X){this.cache.set(G81($,Z),X)}async invalidate($,Z){this.cache.delete(G81($,Z))}teardown(){this.cache.clear()}}var X$6=600000,G$6=5000;var J_$=()=>{};function mE0($,Z){return`${$}:${Z}`}function Q81($){let Z=Jg({ttlMs:$?.ttlMs??Y$6,maxSize:$?.maxSize??Q$6}),X=$?.getConnection,G=crypto.randomUUID(),Y=new TextEncoder,Q=new TextDecoder,J=null;function W(K,N){let H=X?.();if(!H)return;try{H.publish(W_$,Y.encode(JSON.stringify({organizationId:K,keyId:N,originId:G})))}catch(F){console.warn("[ProviderKeyCache] Publish failed (non-critical):",F)}}return{get(K,N){return Z.get(mE0(K,N))},set(K,N,H){Z.set(mE0(K,N),H)},invalidate(K,N){Z.delete(mE0(K,N)),W(K,N)},start(){if(J)return;let K=X?.();if(!K)return;J=K.subscribe(W_$),(async()=>{for await(let N of J)try{let H=JSON.parse(Q.decode(N.data));if(H.originId===G)continue;Z.delete(mE0(H.organizationId,H.keyId))}catch{}})().catch(console.error)},teardown(){J?.unsubscribe(),J=null,Z.clear()}}}var W_$="studio.ai-provider-keys.invalidate",Y$6=30000,Q$6=5000;var K_$=()=>{};class J81{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=N_$.map((G)=>Z.subscribe(G));for(let G of this.subscriptions)(async()=>{for await(let Y of G)try{let Q=JSON.parse(X.decode(Y.data));if(Q.originId===this.originId)continue;if(Q.messageId&&this.hasSeen(Q.messageId))continue;this.onCancel?.(Q.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 G of N_$)Z.publish(G,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 N_$;var H_$=B(()=>{N_$=["studio.decopilot.cancel","mesh.decopilot.cancel"]});var F_$=($)=>{let Z;return()=>Z??=$()},W81,K81;var U_$=B(()=>{K5();W81=F_$(()=>J8.createHistogram("decopilot.stream.encode_ms",{description:"Per-chunk JSON.stringify+encode time for decopilot stream",unit:"ms"})),K81=F_$(()=>J8.createCounter("decopilot.stream.published_chunks",{description:"Logical decopilot stream chunks published to JetStream",unit:"{chunks}"}))});function U$6(){return{name:LH,subjects:[`${$O0}.>`],storage:C3.StorageType.File,max_age:K$6,max_bytes:H$6,max_msgs_per_subject:F$6,discard:C3.DiscardPolicy.Old,retention:C3.RetentionPolicy.Limits,duplicate_window:N$6,num_replicas:1}}class B_${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 w_$($){let Z=O_$.headers();for(let[X,G]of Object.entries($))Z.set(X,G);return Z}function D$6($,Z){let X=0;return{publish(G,Y,Q,J){G.publish(Y,Q,J?{headers:J}:void 0).catch((W)=>{if(X++,W$6().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 L$6($){if(!($ instanceof Error))return!1;if($.name==="TimeoutError")return!0;return/timeout|no responders|503/i.test($.message)}class N81{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=U$6(),X=await lG(async()=>{let G=this.options.getJetStreamManager?await this.options.getJetStreamManager():await C3.jetstreamManager($);try{await G.streams.info(LH),await G.streams.update(LH,Z)}catch(Y){if(Y instanceof Error&&Y.message.includes("stream not found"))await G.streams.add(Z);else if(Y instanceof Error&&/can ?not change.*storage|storage type/i.test(Y.message))await G.streams.delete(LH),await G.streams.add(Z);else throw Y}return G},{maxAttempts:5,minTimeout:250,maxTimeout:4000,jitter:0.5,isRetriable:L$6});this.js=this.options.getJetStream(),this.jsm=X,console.log(`[Decopilot] StreamBuffer.init ${this.js?"ready":"degraded (js=null)"}`)}pump($,Z,X,G){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 Q=D$6(Z,G),J=!1,W=()=>{if(J)return;J=!0;let N=PK$(Z);Y.publish(N.subject,N.data).catch(()=>{})};X.addEventListener("abort",W,{once:!0});let K=(N)=>{let H=performance.now(),F=lp0(N,{runId:Z}),U=performance.now()-H;if(W81().record(U),K81().add(1,{"org.id":G??"unknown"}),B$6?.record(U,F.reduce((w,O)=>w+O.data.length,0)),F.length===0){console.warn(`[Decopilot] dropping oversized stream chunk for thread ${Z}`);return}for(let w of F)Q.publish(Y,w.subject,w.data,w.headers?w_$(w.headers):void 0)};return(async()=>{let N=$.getReader(),H=0,F=0,U;try{while(!0){let{done:w,value:O}=await N.read();if(w)break;if(K(O),F++,++H>=64)H=0,await new Promise((D)=>setImmediate(D))}}catch(w){U=w,console.warn(`[Decopilot] stream pump error for thread ${Z}:`,w?.message??w)}finally{if(N.releaseLock(),W(),O$6)console.warn(JSON.stringify({msg:"decopilot-stream-diag",event:"pump-done",taskId:Z,publishedChunks:F,publishErrors:Q.errorCount}))}if(U!==void 0)throw U})()}async publishRawChunk($,Z,X){let G=this.js;if(!G)return!1;let Y=performance.now(),Q=lp0(Z,{runId:$,dedup:X});if(W81().record(performance.now()-Y),K81().add(1),Q.length===0)return console.warn(`[Decopilot] dropping oversized raw chunk for thread ${$} (> MAX_CHUNKED_BYTES)`),!0;for(let J of Q)await G.publish(J.subject,J.data,{...J.headers?{headers:w_$(J.headers)}:{},...J.msgId?{msgID:J.msgId}:{}});return!0}async publishDone($,Z,X){let G=this.js;if(!G)return!1;let Y=jK$({runId:$,fenceToken:Z,finalSeq:X});return await G.publish(Y.subject,Y.data,{msgID:Y.msgId}),!0}async createTailStream($,Z,X){let G=this.js;if(!G)return console.warn(`[Decopilot] createTailStream: JetStream client unavailable for thread ${$}; no live tail`),null;let Y=X?.deliverPolicy==="new"?C3.DeliverPolicy.New:C3.DeliverPolicy.All,Q=X?.closeOnDone??!1,J=YO($),W;try{W=await(await G.consumers.get(LH,{filter_subjects:J,deliver_policy:Y})).consume()}catch(D){return console.warn("[Decopilot] JetStream tail unavailable (non-critical):",D?.message??D),null}let H=QO0({messages:async function*(){try{for await(let D of W)yield{subject:D.subject,data:D.data,headers:D.headers}}finally{W.stop()}}(),onCancel:()=>W.stop()}).pipeThrough(ZO0()).pipeThrough(XO0()).getReader(),F=!1,U=()=>{if(F)return;F=!0;try{H.releaseLock()}catch{}},w=!1,O=()=>{if(w)return;w=!0,W.stop(),H.cancel().catch(()=>{}),U()};return Z?.addEventListener("abort",O,{once:!0}),new ReadableStream({async pull(D){for(;;){let{done:L,value:E}=await H.read();if(L){O(),D.close();return}let z=E;if(z.kind==="done"){if(Q){O(),D.close();return}continue}D.enqueue(z.chunk);return}},cancel(){O()}})}purge($){if(!this.jsm)return;this.jsm.streams.purge(LH,{filter:YO($)}).catch(()=>{})}teardown(){this.js=null,this.jsm=null}}var C3,O_$,J$6=($)=>{let Z;return()=>Z??=$()},W$6,K$6=86400000000000,N$6=120000000000,H$6=4294967296,F$6=500000,w$6,O$6,B$6;var D_$=B(()=>{W5();dp0();JO0();GO0();K5();U_$();C3=k(sO(),1),O_$=k(Yh(),1),W$6=J$6(()=>J8.createCounter("decopilot.stream.publish_errors",{description:"Number of JetStream publish failures for decopilot stream chunks",unit:"{errors}"}));w$6=process.env.STREAM_ENCODE_TRACE==="1",O$6=process.env.DECOPILOT_STREAM_TRACE==="1";B$6=w$6?new B_$:null});function iE0($,Z,X,G){if(!G)return!1;return $.emit(Z,a3(X,G.status,{title:G.title??void 0,virtualMcpId:G.virtual_mcp_id??void 0,createdBy:G.created_by??void 0,triggerId:G.trigger_id??null,branch:G.branch??null,harnessId:G.harness_id??void 0,createdAt:G.created_at,updatedAt:G.updated_at})),!0}var L_$=B(()=>{O8()});class H81{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}}import{readdir as E$6,rm as nE0}from"fs/promises";import{join as pE0}from"path";async function tE0($){let Z=new Date;Z.setUTCDate(Z.getUTCDate()-z$6),Z.setUTCHours(0,0,0,0);let X=0;try{let G=await _C($);for(let Y of G)if(/^\d{4}$/.test(Y))X+=await E_$($,Y,Z);else if(!Y.startsWith(".")){let Q=pE0($,Y),J=await _C(Q);for(let K of J){if(!/^\d{4}$/.test(K))continue;X+=await E_$(Q,K,Z)}if((await _C(Q)).length===0)await nE0(Q,{recursive:!0,force:!0})}}catch(G){console.warn("monitoring retention cleanup failed:",G)}return X}async function E_$($,Z,X){let G=0,Y=pE0($,Z),Q=await _C(Y);for(let W of Q){if(!/^\d{2}$/.test(W))continue;let K=pE0(Y,W),N=await _C(K);for(let F of N){if(!/^\d{2}$/.test(F))continue;let U=new Date(`${Z}-${W}-${F}T00:00:00Z`);if(isNaN(U.getTime()))continue;if(U<X){let w=pE0(K,F);await nE0(w,{recursive:!0,force:!0}),G++}}if((await _C(K)).length===0)await nE0(K,{recursive:!0,force:!0})}if((await _C(Y)).length===0)await nE0(Y,{recursive:!0,force:!0});return G}async function _C($){try{return(await E$6($)).filter((X)=>!X.startsWith("."))}catch{return[]}}var z$6=30;var F81=()=>{};import{DBOS as U81,SchedulerMode as j$6}from"@dbos-inc/dbos-sdk";async function A$6(){let $=[aQ(),vC(),VK()],Z=0;for(let X of $)try{Z+=await tE0(X)}catch(G){console.error("[monitoring-retention] cleanup failed:",G)}return console.log(`[monitoring-retention] deleted ${Z} day-dir(s) across ${$.length} signal dir(s)`),{deleted:Z,dirs:$.length}}async function T$6($,Z){await U81.runStep(()=>A$6(),{name:"monitoringRetention"})}function j_$(){if(z_$)return;z_$=!0;let $=U81.registerWorkflow(T$6,{name:"monitoringRetentionWorkflow"});U81.registerScheduled($,{name:"monitoringRetentionWorkflow",crontab:P$6,mode:j$6.ExactlyOncePerIntervalWhenActive})}var P$6="23 4 * * *",z_$=!1;var P_$=B(()=>{dG();F81()});function A_$($){return async(Z,X)=>{let G=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(!G)return console.warn(`[automationContextFactory] User ${X} not found in org ${Z} \u2014 returning null`),null;let Y=await Ow.create();Y.auth.user={id:X,role:G.role},Y.organization={id:G.orgId,slug:G.orgSlug,name:G.orgName};let Q=await Oc0($.db,Z,G.role);return Y.boundAuth=wc0({auth:Y.authInstance,headers:new Headers,role:G.role,permissions:Q,userId:X}),Y.access=new tD(X,void 0,Y.boundAuth,G.role,"self"),J50(Y,{id:G.orgId,slug:G.orgSlug}),Y}}var T_$=B(()=>{oD();Pi()});function R$6(){return{services:[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}],migrationsStatus:"pending",serverUrl:null,logs:[]}}function q$6(){for(let $ of I$6)$()}function R_$($){let Z=[...w81.logs,$];w81={...w81,logs:Z.length>500?Z.slice(-500):Z},q$6()}function O81(){return M$6}var w81,I$6,M$6=!1;var B81=B(()=>{w81=R$6(),I$6=new Set});import{EventEmitter as k$6}from"events";var D81;var I_$=B(()=>{B81();D81=new k$6;D81.on("request",($)=>{R_$($)})});function q_$(){return async($,Z)=>{let X=Date.now(),G=$.req.method,Y=$.req.path;if(Y==="/api/auth/get-session"||Y.includes("favicon")){await Z();return}let Q="",J=!1;if(Y.startsWith("/mcp")&&G==="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 w=_g(U.params.name),O=U.params.arguments||{},D=Object.keys(O).map((E)=>_g(E)),L=D.length>0?D.slice(0,3).join(",")+(D.length>3?"\u2026":""):"";Q=`${t6.tool}${w}${t6.dim}(${L})${t6.reset}`}else if(U.method)Q=`${t6.dim}${_g(U.method)}${t6.reset}`}}catch{}}let W=_g(Y);if(Y.startsWith("/mcp/conn_")){let H=Y.split("/")[2]??"";W=`/mcp/${t6.mcp}${_g(H.slice(0,12))}\u2026${t6.reset}`}else if(Y==="/mcp")W=`${t6.mcp}/mcp${t6.reset}`;else if(Y==="/mcp/registry")W=`${t6.mcp}/mcp/registry${t6.reset}`;let K=V$6(G),N=J?"\u25C0":"\u2190";if(!O81())console.log(`${t6.dim}${N}${t6.reset} ${K}${G}${t6.reset} ${W}${Q?` ${Q}`:""}`);try{await Z()}finally{let H=Date.now()-X,F=$.res.status,U=S$6(F),w=H<1000?`${H}ms`:`${(H/1000).toFixed(1)}s`,O=J?"\u25B6":"\u2192";if(!O81())console.log(`${t6.dim}${O}${t6.reset} ${K}${G}${t6.reset} ${W}${Q?` ${Q}`:""} ${U}${F}${t6.reset} ${t6.duration}${w}${t6.reset}`);D81.emit("request",{method:G,path:_g(Y),status:F,duration:H,timestamp:new Date})}}}var t6,S$6=($)=>{if($>=500)return t6.serverError;if($>=400)return t6.clientError;if($>=300)return t6.redirect;return t6.ok},V$6=($)=>{return t6[$]||t6.reset},_g=($)=>{return $.replace(/\r/g,"").replace(/\n/g,"").replace(/\x1b\[[0-9;]*m/g,"").replace(/[\x00-\x1f\x7f-\x9f]/g,"")};var M_$=B(()=>{B81();I_$();t6={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 C_$}from"crypto";import{mkdir as C$6,readdir as _$6,rm as k_$,stat as __$}from"fs/promises";import{join as E81,relative as v$6}from"path";import{z as L$}from"zod";function b_$($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return E81(b$6,Z)}function f_$($){return $.replace(/^\/+/,"").replace(/\.\./g,"")}function L81($,Z){let X=b_$($),G=f_$(Z);return E81(X,G)}function f$6($,Z,X,G){let Y=d0().encryptionKey||"dev-secret",Q=`${$}:${Z}:${X}:${G}`;return C_$("sha256",Y).update(Q).digest("hex")}function V_$($,Z,X,G,Y){let Q=Math.floor(Date.now()/1000)+G,J=f$6(Z,X,Q,Y),W=new URL(`/api/dev-assets/${Z}/${f_$(X)}`,$);return W.searchParams.set("expires",Q.toString()),W.searchParams.set("signature",J),W.searchParams.set("method",Y),W.toString()}function x_$($,Z,X){let G=`${$}:${Z.getTime()}:${X}`;return`"${C_$("md5","etag").update(G).digest("hex")}"`}async function y_$($,Z,X,G,Y){try{let Q=await _$6($,{withFileTypes:!0});for(let J of Q){let W=E81($,J.name),N=v$6(Z,W).replace(/\\/g,"/");if(X&&!N.startsWith(X))continue;if(J.isDirectory())if(G){let H=N+"/";if(!X||H.startsWith(X)){if(!(X?N.slice(X.length):N).includes("/"))Y.commonPrefixes.add(H)}}else await y_$(W,Z,X,G,Y);else if(J.isFile()){if(G&&X){let H=N.slice(X.length);if(H.includes(G)){let F=H.indexOf(G),U=X+H.slice(0,F+1);Y.commonPrefixes.add(U);continue}}try{let H=await __$(W);Y.objects.push({key:N,size:H.size,lastModified:H.mtime.toISOString(),etag:x_$(W,H.mtime,H.size)})}catch{}}}}catch{}}function g_$($,Z){let G=s($).id;return[{name:"LIST_OBJECTS",description:"List objects in the local assets directory with pagination support",inputSchema:L$.object({prefix:L$.string().optional(),maxKeys:L$.number().optional().default(1000),continuationToken:L$.string().optional(),delimiter:L$.string().optional()}),outputSchema:L$.object({objects:L$.array(L$.object({key:L$.string(),size:L$.number(),lastModified:L$.string(),etag:L$.string()})),nextContinuationToken:L$.string().optional(),isTruncated:L$.boolean(),commonPrefixes:L$.array(L$.string()).optional()}),handler:async(Y)=>{let Q=Y,J=Q.prefix||"",W=Q.maxKeys??1000,K=Q.delimiter,N=Q.continuationToken,H=b_$(G);await C$6(H,{recursive:!0});let F={objects:[],commonPrefixes:new Set};await y_$(H,H,J,K,F),F.objects.sort((L,E)=>L.key.localeCompare(E.key));let U=0;if(N){if(U=F.objects.findIndex((L)=>L.key>N),U===-1)U=F.objects.length}let w=F.objects.slice(U,U+W),O=U+W<F.objects.length,D=O?w[w.length-1]?.key:void 0;return{objects:w,isTruncated:O,nextContinuationToken:D,commonPrefixes:Array.from(F.commonPrefixes).sort()}}},{name:"GET_OBJECT_METADATA",description:"Get metadata for a file in the local assets directory",inputSchema:L$.object({key:L$.string()}),outputSchema:L$.object({contentType:L$.string().optional(),contentLength:L$.number(),lastModified:L$.string(),etag:L$.string(),metadata:L$.record(L$.string(),L$.string()).optional()}),handler:async(Y)=>{let Q=Y,J=L81(G,Q.key),W=await __$(J);return{contentType:w11(Q.key),contentLength:W.size,lastModified:W.mtime.toISOString(),etag:x_$(J,W.mtime,W.size)}}},{name:"GET_PRESIGNED_URL",description:"Generate a presigned URL for downloading a file from local storage",inputSchema:L$.object({key:L$.string(),expiresIn:L$.number().optional()}),outputSchema:L$.object({url:L$.string(),expiresIn:L$.number()}),handler:async(Y)=>{let Q=Y,J=Q.expiresIn??S_$;return{url:V_$(Z,G,Q.key,J,"GET"),expiresIn:J}}},{name:"PUT_PRESIGNED_URL",description:"Generate a presigned URL for uploading a file to local storage",inputSchema:L$.object({key:L$.string(),expiresIn:L$.number().optional(),contentType:L$.string().optional()}),outputSchema:L$.object({url:L$.string(),expiresIn:L$.number()}),handler:async(Y)=>{let Q=Y,J=Q.expiresIn??S_$;return{url:V_$(Z,G,Q.key,J,"PUT"),expiresIn:J}}},{name:"DELETE_OBJECT",description:"Delete a single file from local storage",inputSchema:L$.object({key:L$.string()}),outputSchema:L$.object({success:L$.boolean(),key:L$.string()}),handler:async(Y)=>{let Q=Y,J=L81(G,Q.key);try{return await k_$(J),{success:!0,key:Q.key}}catch{return{success:!1,key:Q.key}}}},{name:"DELETE_OBJECTS",description:"Delete multiple files from local storage",inputSchema:L$.object({keys:L$.array(L$.string()).max(1000)}),outputSchema:L$.object({deleted:L$.array(L$.string()),errors:L$.array(L$.object({key:L$.string(),message:L$.string()}))}),handler:async(Y)=>{let Q=Y,J=[],W=[];return await Promise.all(Q.keys.map(async(K)=>{let N=L81(G,K);try{await k_$(N),J.push(K)}catch(H){W.push({key:K,message:H instanceof Error?H.message:"Unknown error"})}})),{deleted:J,errors:W}}}]}async function z81($,Z,X){let G=g_$(Z,X),Y=new WW({name:"dev-assets-mcp",version:"1.0.0"},{capabilities:{tools:{}},jsonSchemaValidator:e6});for(let J of G){let W="shape"in J.inputSchema?J.inputSchema.shape:L$.object({}).shape,K=J.outputSchema&&"shape"in J.outputSchema?J.outputSchema.shape:L$.object({}).shape;Y.registerTool(J.name,{description:J.description??"",inputSchema:W,outputSchema:K,annotations:J.annotations,_meta:J._meta},async(N)=>{try{let H=await J.handler(N);return{content:[{type:"text",text:JSON.stringify(H)}],structuredContent:H}}catch(H){return{content:[{type:"text",text:`Error: ${H.message}`}],isError:!0}}})}let Q=new yX({enableJsonResponse:$.headers.get("Accept")?.includes("application/json")??!1});return await Y.connect(Q),hQ(Y,Q,$,"mcp:dev-assets")}async function h_$($,Z,X,G){let Q=g_$(X,G).find((J)=>J.name===$);if(!Q)return{content:[{type:"text",text:`Tool not found: ${$}`}],isError:!0};try{let J=await Q.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 b$6="./data/assets",S_$=3600,v_$,u_$;var c_$=B(()=>{V$();Fy();u8();Gl();yV();PX();QE0();v_$=new D1;v_$.all("/",async($)=>{let Z=$.get("studioContext"),X=new URL($.req.url),G=`${X.protocol}//${X.host}`;return z81($.req.raw,Z,G)});u_$=v_$});var l_$={};N4(l_$,{mountDevRoutes:()=>x$6});function x$6($,Z){$.all("/mcp/:connectionId{.*_dev-assets$}",Z,async(G)=>{let Y=G.get("studioContext"),Q=new URL(G.req.url),J=`${Q.protocol}//${Q.host}`;return z81(G.req.raw,Y,J)}),$.all("/mcp/:connectionId{.*_dev-assets$}/call-tool/:toolName",Z,async(G)=>{let Y=G.get("studioContext"),Q=new URL(G.req.url),J=`${Q.protocol}//${Q.host}`,W=G.req.param("toolName");if(!W)return G.json({error:"Missing tool name"},400);let K=await G.req.json(),N=await h_$(W,K,Y,J);if(N.isError)return G.json(N.content,500);return G.json(N.content)}),$.use("/mcp/dev-assets",Z),$.route("/mcp/dev-assets",u_$);let X=new D1;X.use("*",k3({mountPath:"/api/dev-assets"})),X.route("/",YE0({orgFromPath:!1})),$.route("/api/dev-assets",X)}var d_$=B(()=>{u8();Q11();QE0();c_$()});import{sql as y$6}from"kysely";import{randomUUID as m_$}from"crypto";import{z as g$6}from"zod";async function u$6($){let Z=new Date().toISOString(),X=m_$(),G=x4.SELF($.organizationId),Y="registry.publish_request.created",Q={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:G,specversion:"1.0",subject:$.request.id,time:Z,datacontenttype:"application/json",dataschema:null,data:JSON.stringify(Q),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","=",G)])).execute();if(J.length>0)await $.db.insertInto("event_deliveries").values(J.map((W)=>({id:m_$(),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 y$6`SELECT
|
|
2729
2729
|
pg_notify('studio_events', ${X}),
|