decocms 4.329.4 → 4.329.5
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-BBYR4GFH.js → AlertCircle-mN_-o_mQ.js} +1 -1
- package/dist/client/assets/{AreaChart-CT6vM2-d.js → AreaChart-Bvt1hsm0.js} +1 -1
- package/dist/client/assets/{ArrowLeft-D9stSdZU.js → ArrowLeft-TOd2y5eQ.js} +1 -1
- package/dist/client/assets/{ArrowUp-QJEwDJA1.js → ArrowUp-D9BmQW3y.js} +1 -1
- package/dist/client/assets/{Check-CABufYLR.js → Check-DHPj8hLS.js} +1 -1
- package/dist/client/assets/{CheckCircle-DK2Y0uD8.js → CheckCircle-Bape6EQJ.js} +1 -1
- package/dist/client/assets/{ChevronRight-DTibj1Ui.js → ChevronRight-CNf6Y7s8.js} +1 -1
- package/dist/client/assets/{ChevronSelectorVertical-C-_DXKCi.js → ChevronSelectorVertical-BGG06THN.js} +1 -1
- package/dist/client/assets/{ChevronUp-9jtCu5DD.js → ChevronUp-DhEp0EVP.js} +1 -1
- package/dist/client/assets/{Copy01-DL41aqqZ.js → Copy01-BM0WPlp9.js} +1 -1
- package/dist/client/assets/{CreditCard01-PsqzvnWg.js → CreditCard01-BcxIFS9C.js} +1 -1
- package/dist/client/assets/{DotsVertical-BOoi0c7j.js → DotsVertical-Bbr6RMTH.js} +1 -1
- package/dist/client/assets/{Download01-BE83rIoq.js → Download01-BP8_5nMI.js} +1 -1
- package/dist/client/assets/{ErrorBarContext-JM3mNTIq.js → ErrorBarContext-D1mkTlU7.js} +1 -1
- package/dist/client/assets/{Eye-DR68Dt82.js → Eye-B0Pd_ezn.js} +1 -1
- package/dist/client/assets/{GitBranch01-ttMYz_bX.js → GitBranch01-ITA5wAsb.js} +1 -1
- package/dist/client/assets/{Globe01-D0KqKl2w.js → Globe01-CxD9oJyC.js} +1 -1
- package/dist/client/assets/{HardDrive-frKQqTEA.js → HardDrive-Bx3SgLl5.js} +1 -1
- package/dist/client/assets/{Image01-Crqq5x1o.js → Image01-DkeWoTxv.js} +1 -1
- package/dist/client/assets/{Key01-CeNXYOZ0.js → Key01-3XmA_FLZ.js} +1 -1
- package/dist/client/assets/{Link01-DVMHQQa6.js → Link01-DBqTW3qG.js} +1 -1
- package/dist/client/assets/{LinkExternal01-DVYbdx38.js → LinkExternal01-CDbttyHT.js} +1 -1
- package/dist/client/assets/{Monitor01-DQ7392nj.js → Monitor01-DxoPQwl_.js} +1 -1
- package/dist/client/assets/{Package-6DUiBV1f.js → Package-BmmKpgLP.js} +1 -1
- package/dist/client/assets/{Palette-CDpV0MZz.js → Palette-PDnTmDZk.js} +1 -1
- package/dist/client/assets/{Play-CHGdbeFD.js → Play-67XUCyKd.js} +1 -1
- package/dist/client/assets/{Plus-DDX8SATP.js → Plus-BiE4uFsT.js} +1 -1
- package/dist/client/assets/{SearchMd-DYxH4YXa.js → SearchMd-D9B5PGY2.js} +1 -1
- package/dist/client/assets/{Sector-0h2Ybtgt.js → Sector-Bx8Rm7Bx.js} +1 -1
- package/dist/client/assets/{Settings02-ZMpUQ0_a.js → Settings02-D20k8vab.js} +1 -1
- package/dist/client/assets/{Share07-NdsiGLTd.js → Share07-mTYGTjnX.js} +1 -1
- package/dist/client/assets/{Shield01-CWE6wNBM.js → Shield01-Dh1KVvty.js} +1 -1
- package/dist/client/assets/{Stars01-DdTMtjEL.js → Stars01-PXW__m1z.js} +1 -1
- package/dist/client/assets/{Sun-DvIBG1pa.js → Sun-CPXNGo67.js} +1 -1
- package/dist/client/assets/{Tool01-CSK4qMY9.js → Tool01-DO3tFwrT.js} +1 -1
- package/dist/client/assets/{Tool02-DlCeYFZc.js → Tool02-BsbxtGm_.js} +1 -1
- package/dist/client/assets/{Trash01-CtC4E2Sa.js → Trash01-Dp51yqnn.js} +1 -1
- package/dist/client/assets/{TrendUp01-DXKzNK5Z.js → TrendUp01-B5AMHutg.js} +1 -1
- package/dist/client/assets/{Upload01-C2j94wR0.js → Upload01-BNUtlGr4.js} +1 -1
- package/dist/client/assets/{User01-CNL_fPgy.js → User01-Ct3vu-8e.js} +1 -1
- package/dist/client/assets/{UserSquare-CFSxfDp_.js → UserSquare-BMU7ptkw.js} +1 -1
- package/dist/client/assets/{Users01-6Bgsc1i5.js → Users01-BiGPt9OV.js} +1 -1
- package/dist/client/assets/{Users03-Da4x8ARK.js → Users03-CtT9PMQy.js} +1 -1
- package/dist/client/assets/{XCircle-DdAk9WVh.js → XCircle-CPujy2uw.js} +1 -1
- package/dist/client/assets/{XClose-CbZk3cnK.js → XClose-ydonzdQx.js} +1 -1
- package/dist/client/assets/{Zap-CT8WBC0h.js → Zap-Cff3TLsZ.js} +1 -1
- package/dist/client/assets/{ZoomOut-JnnG8new.js → ZoomOut-Cyr7GMp8.js} +1 -1
- package/dist/client/assets/{access-gate-BcWIHWhj.js → access-gate-CxbXElgc.js} +1 -1
- package/dist/client/assets/{agent-icon-mk-XQZni.js → agent-icon-D0nFNhxK.js} +1 -1
- package/dist/client/assets/{agents-list-B_Aj4oIg.js → agents-list-CWgCuNdA.js} +1 -1
- package/dist/client/assets/{ai-providers-BwuN2crh.js → ai-providers-B_1c2MUZ.js} +1 -1
- package/dist/client/assets/{alert-C2tvHG0g.js → alert-DXRS4LlD.js} +1 -1
- package/dist/client/assets/{alert-dialog-BliafGGJ.js → alert-dialog-P0CuRl4b.js} +1 -1
- package/dist/client/assets/{analytics-tab-SGP6M5cd.js → analytics-tab-C8Ml9hnf.js} +1 -1
- package/dist/client/assets/{api-keys-b4JYfEu6.js → api-keys-BlbK2ztb.js} +1 -1
- package/dist/client/assets/api-keys-CwBd9UBU.js +1 -0
- package/dist/client/assets/{app-editor-CxcnrFWe.js → app-editor-DNnqs-BT.js} +1 -1
- package/dist/client/assets/{auth-D5m4cqRg.js → auth-BVp2xy53.js} +1 -1
- package/dist/client/assets/{auth-catchall-Dr_aZvcN.js → auth-catchall-DNlKODhS.js} +1 -1
- package/dist/client/assets/{auth-entry-CQQS9Qxf.js → auth-entry-DBaEHAB5.js} +1 -1
- package/dist/client/assets/{auth-split-layout-D2vXHB7F.js → auth-split-layout-BhgIfBec.js} +1 -1
- package/dist/client/assets/{authenticate-and-persist-oauth-CWZyg-0e.js → authenticate-and-persist-oauth-BAd7rGHc.js} +1 -1
- package/dist/client/assets/{automation-list-row-DYXQGSLm.js → automation-list-row-DlvHKPyj.js} +1 -1
- package/dist/client/assets/{automation-runs-DG8JNxIq.js → automation-runs-CCVcrtR2.js} +1 -1
- package/dist/client/assets/automations-D0z1_feX.js +1 -0
- package/dist/client/assets/{avatar-DXeLoFzx.js → avatar-b8hndRPx.js} +1 -1
- package/dist/client/assets/{badge-HOAmJICW.js → badge-BStsm_lg.js} +1 -1
- package/dist/client/assets/{block-document-C2ZuK_vE.js → block-document-CgPj5a7q.js} +1 -1
- package/dist/client/assets/{breadcrumb-tzF-K1vw.js → breadcrumb-Bcg6Ab2L.js} +1 -1
- package/dist/client/assets/{buckets-c_2KjkW-.js → buckets-C0rDB5Al.js} +1 -1
- package/dist/client/assets/{bulk-category-panel-gCAB9Xeo.js → bulk-category-panel-DN63hkby.js} +1 -1
- package/dist/client/assets/{capability-load-error-YFCDLWxK.js → capability-load-error-DJ7cUT9Z.js} +1 -1
- package/dist/client/assets/{cards-DBngTnGi.js → cards-DaQEzixK.js} +1 -1
- package/dist/client/assets/{category-editor-BPYPglsD.js → category-editor-vpz2dWAT.js} +1 -1
- package/dist/client/assets/{cdn-tab-DsITt3Yf.js → cdn-tab-BbmlviYg.js} +1 -1
- package/dist/client/assets/{chart-Ci89yfUX.js → chart-DHv_Afvm.js} +1 -1
- package/dist/client/assets/{chat-context-DubBxTgM.js → chat-context-CsVVImtr.js} +1 -1
- package/dist/client/assets/{checkbox-D-7gRc3h.js → checkbox-BSJHTjoV.js} +1 -1
- package/dist/client/assets/{choose-editor-BOMTJy-y.js → choose-editor-CJmqYzFT.js} +1 -1
- package/dist/client/assets/{cli-auth-success-BcP_lo5X.js → cli-auth-success-BsTXHwdh.js} +1 -1
- package/dist/client/assets/{client-icons-DhzSTDr-.js → client-icons-Dbh16KTh.js} +1 -1
- package/dist/client/assets/{collection-detail-DQyGO8wm.js → collection-detail-YcEc9PSs.js} +1 -1
- package/dist/client/assets/{collection-display-button-BY49Kjqu.js → collection-display-button-Dlv2uRSO.js} +1 -1
- package/dist/client/assets/{collection-search-CAolxug-.js → collection-search-Nx8I1VWD.js} +1 -1
- package/dist/client/assets/{collection-table-wrapper-wJ-ft5uG.js → collection-table-wrapper-DEUvwrm7.js} +1 -1
- package/dist/client/assets/{collection-tabs-O5QiDhPj.js → collection-tabs-DkuVrlwj.js} +1 -1
- package/dist/client/assets/{command-TpoWvelJ.js → command-BQZNWnLl.js} +1 -1
- package/dist/client/assets/{commerce-onboarding-DTuu0eia.js → commerce-onboarding-D2RPtK_d.js} +1 -1
- package/dist/client/assets/{connect-DNhe8V1d.js → connect-CqMi0Kj6.js} +1 -1
- package/dist/client/assets/{connect-layout-BzSPP-pF.js → connect-layout-LGbISPTt.js} +1 -1
- package/dist/client/assets/{connection-CeHqTfVG.js → connection-BKjGbuRp.js} +1 -1
- package/dist/client/assets/{connection-card-O1CeIFNG.js → connection-card-CUDq88xM.js} +1 -1
- package/dist/client/assets/{connection-detail-CP7BkPoq.js → connection-detail-PQGXGzTQ.js} +1 -1
- package/dist/client/assets/{connection-form-helpers-QOvwQJQ0.js → connection-form-helpers-j54kv39E.js} +1 -1
- package/dist/client/assets/{connections-Dg7siFgY.js → connections-BIa_J0_x.js} +1 -1
- package/dist/client/assets/{create-organization-dialog-yCh2LrTE.js → create-organization-dialog-C0dAeHRr.js} +1 -1
- package/dist/client/assets/{decopilot-sse-pool-D5dycX_-.js → decopilot-sse-pool-BJt1WWih.js} +1 -1
- package/dist/client/assets/{dialog-BPFt4lFr.js → dialog-CwR2ZkB1.js} +1 -1
- package/dist/client/assets/{domain-settings-BzoquBJ6.js → domain-settings-Ck9aohMU.js} +1 -1
- package/dist/client/assets/{download-app-dialog-Co9yGker.js → download-app-dialog-BSTfXNDN.js} +1 -1
- package/dist/client/assets/{drawer-OUYKjLkA.js → drawer-C4eE6wVo.js} +1 -1
- package/dist/client/assets/{dropdown-menu-CB-q_iiO.js → dropdown-menu-D1Dyu0Ie.js} +1 -1
- package/dist/client/assets/{e2e-tab-DS-Mognb.js → e2e-tab-BKa3vgG1.js} +1 -1
- package/dist/client/assets/{editor-BzqhwZoG.js → editor-X_GwLxUe.js} +1 -1
- package/dist/client/assets/{empty-state-DvlwkIKU.js → empty-state-BObNah86.js} +1 -1
- package/dist/client/assets/{empty-state-DYvD0gRR.js → empty-state-DweMZJTW.js} +1 -1
- package/dist/client/assets/{extract-connection-data-gm0yVN7C.js → extract-connection-data-TVNJHOmc.js} +1 -1
- package/dist/client/assets/{file-explorer-DC6dcwOw.js → file-explorer-BVlXTJHP.js} +1 -1
- package/dist/client/assets/{file-type-icon-C9lYwnF1.js → file-type-icon-DFeVbUcK.js} +1 -1
- package/dist/client/assets/{folder-icon-EcaObwkD.js → folder-icon-fliliFSE.js} +1 -1
- package/dist/client/assets/{form-2rgSk3zV.js → form-R-ND42yQ.js} +1 -1
- package/dist/client/assets/{general-Js48lg6p.js → general-CbsMwCUF.js} +1 -1
- package/dist/client/assets/{github-repo-picker-CuSQNB2y.js → github-repo-picker-VVXQm56m.js} +1 -1
- package/dist/client/assets/{hooks-0YBotF11.js → hooks-Chtya12g.js} +1 -1
- package/dist/client/assets/{hosting-tab-DdN7E8HH.js → hosting-tab-yCo5MFnA.js} +1 -1
- package/dist/client/assets/{index-CfHuWg7A.js → index-94aQRAaT.js} +1 -1
- package/dist/client/assets/{index-ChH465h_.js → index-B4S5w1-x.js} +1 -1
- package/dist/client/assets/{index-BUxfvzOI.js → index-BPoFiAxf.js} +2 -2
- package/dist/client/assets/{index-bpF-3xgs.js → index-C-iRRri3.js} +1 -1
- package/dist/client/assets/{index-DI5bBePB.js → index-C9r1r2iD.js} +1 -1
- package/dist/client/assets/{index-COBdMowL.js → index-CZG_2YcM.js} +1 -1
- package/dist/client/assets/{index-Tm7GNy18.js → index-DFO8Hy2x.js} +6 -6
- package/dist/client/assets/{index-CusEBsHj.js → index-EMRlgytw.js} +1 -1
- package/dist/client/assets/{index-u9SUrbIb.js → index-F3C6ps0B.js} +1 -1
- package/dist/client/assets/{index-DGgFMNlX.js → index-T5aBTzrV.js} +1 -1
- package/dist/client/assets/{index-redirect-DRItDEtv.js → index-redirect-wsAas5g2.js} +1 -1
- package/dist/client/assets/{infra-billing-DraJwmBy.js → infra-billing-DmphYAUU.js} +1 -1
- package/dist/client/assets/{input-CFRxvyvd.js → input-LsHd3z5Z.js} +1 -1
- package/dist/client/assets/{integration-icon-B8NmeIJd.js → integration-icon-BukX17Ja.js} +1 -1
- package/dist/client/assets/{invite-member-dialog-CV9q86mF.js → invite-member-dialog-CnDi6qyS.js} +1 -1
- package/dist/client/assets/{label-BT_zUtSE.js → label-fGGyQxp5.js} +1 -1
- package/dist/client/assets/{layout-BOUmEzEk.js → layout-CHbCwmYb.js} +1 -1
- package/dist/client/assets/{login-CSCRkCP5.js → login-C8TvcwaD.js} +1 -1
- package/dist/client/assets/{markdown-CzVE3jNC.js → markdown-BKbOmMip.js} +1 -1
- package/dist/client/assets/{mcp-oauth-CMWryU4F.js → mcp-oauth-DTP_bedh.js} +1 -1
- package/dist/client/assets/{members-8zGIBSfC.js → members-m278wo7-.js} +1 -1
- package/dist/client/assets/{monaco-editor-EqADFqFR.js → monaco-editor-BpbvUJwi.js} +1 -1
- package/dist/client/assets/{monitoring-stats-row-DHok_j0o.js → monitoring-stats-row-BIfVwwYm.js} +1 -1
- package/dist/client/assets/{multi-select-DIGw5fjs.js → multi-select-BGEhYv6Q.js} +1 -1
- package/dist/client/assets/{oauth-callback-BNFdbhKs.js → oauth-callback-DNm5e3t4.js} +1 -1
- package/dist/client/assets/{oauth-callback-ai-provider-vJId6tJ4.js → oauth-callback-ai-provider-C6wR7YHk.js} +1 -1
- package/dist/client/assets/{onboarding-DESUN15Y.js → onboarding-D7MAN9sh.js} +1 -1
- package/dist/client/assets/org-layout-D5JilW3M.js +1 -0
- package/dist/client/assets/{organization-choice-CT3AHSpH.js → organization-choice-yFaS2KYn.js} +1 -1
- package/dist/client/assets/{orgs-DhPKLwdc.js → orgs-GzeWzw6o.js} +1 -1
- package/dist/client/assets/{page-seo-form-orlgcMNN.js → page-seo-form-BlVNkW7I.js} +1 -1
- package/dist/client/assets/{popover-Sc_O_WR4.js → popover-Q1deFKgp.js} +1 -1
- package/dist/client/assets/{post-calendar-DEPfypFg.js → post-calendar-B09pnMW9.js} +1 -1
- package/dist/client/assets/{post-editor-CCoI8sFe.js → post-editor-DH3cc2rR.js} +1 -1
- package/dist/client/assets/{primitives-BTt-Z2NI.js → primitives-0K9NGeUu.js} +1 -1
- package/dist/client/assets/{profile-zTbLwxOc.js → profile-BpvIbEub.js} +1 -1
- package/dist/client/assets/{project-app-view-CCynHxDP.js → project-app-view-BW8nEgoK.js} +1 -1
- package/dist/client/assets/{project-icon-9nkZPU3d.js → project-icon-CW7lG0f-.js} +1 -1
- package/dist/client/assets/{prompts-D0o0cePQ.js → prompts-BJn-p95i.js} +1 -1
- package/dist/client/assets/record-editor-DNyePUjb.js +1 -0
- package/dist/client/assets/{redirect-editor-D7uQ_17P.js → redirect-editor-BI-Kllix.js} +1 -1
- package/dist/client/assets/registry-Ft8pANng.js +2 -0
- package/dist/client/assets/{registry-layout-Bo7Hwl7v.js → registry-layout-BP7gmPI-.js} +1 -1
- package/dist/client/assets/{reports-o86eUYDt.js → reports-CAV2Cslk.js} +1 -1
- package/dist/client/assets/{require-capability-BJC8KLTE.js → require-capability-C5rDfjFm.js} +1 -1
- package/dist/client/assets/{required-auth-layout-CcVLthX6.js → required-auth-layout-Geu1OAEe.js} +1 -1
- package/dist/client/assets/{reset-password-ChLorcXd.js → reset-password-DUIDurfe.js} +1 -1
- package/dist/client/assets/{review-settings-Do-cGxRn.js → review-settings-CsiIDmFA.js} +1 -1
- package/dist/client/assets/{roles-C9wzv7Ke.js → roles-BAD7kH_t.js} +1 -1
- package/dist/client/assets/{schema-3NiDFCyj.js → schema-D2aEo9_j.js} +1 -1
- package/dist/client/assets/{scroll-area-BWzJ3Fkr.js → scroll-area-D_zmdKz7.js} +1 -1
- package/dist/client/assets/{search-input-B-0ya7r_.js → search-input-BizsLhvX.js} +1 -1
- package/dist/client/assets/{secrets-DbB2z2-L.js → secrets-G0v2X3oa.js} +1 -1
- package/dist/client/assets/{sections-editor-mMk-TJ5q.js → sections-editor-CWq03Vnp.js} +1 -1
- package/dist/client/assets/{select-CfXoB8aD.js → select-BPlqzUpB.js} +1 -1
- package/dist/client/assets/{select-model-B7PCBhBx.js → select-model-D5-IXAsH.js} +1 -1
- package/dist/client/assets/{self-tool-result-BA-nfuIP.js → self-tool-result-CTIc9xGS.js} +1 -1
- package/dist/client/assets/{seo-editor-xvFpWkKv.js → seo-editor-O_gPOD8y.js} +1 -1
- package/dist/client/assets/settings-layout-CB8wJ9KB.js +1 -0
- package/dist/client/assets/{settings-sidebar-DrnSvH1E.js → settings-sidebar-B8AwNjia.js} +1 -1
- package/dist/client/assets/{shell-controls-Ro0Roouz.js → shell-controls-DnZgBbdN.js} +1 -1
- package/dist/client/assets/{shell-layout-n5QL1laG.js → shell-layout-OBmJcmOt.js} +1 -1
- package/dist/client/assets/{skill-preview-CxhIMaDo.js → skill-preview-mwAW0EFc.js} +1 -1
- package/dist/client/assets/{skills-D43oEXGz.js → skills-B4jG1i-v.js} +1 -1
- package/dist/client/assets/{sso-BkXM3YMQ.js → sso-DEIlxpGO.js} +1 -1
- package/dist/client/assets/{store-DVQsdQMq.js → store-dJDoMR5j.js} +1 -1
- package/dist/client/assets/store-registry-oLwveuwU.js +2 -0
- package/dist/client/assets/{switch-BFFq3kEc.js → switch-DbWQok_U.js} +1 -1
- package/dist/client/assets/{synced-repos-FiB-Ie0z.js → synced-repos-BN345C03.js} +1 -1
- package/dist/client/assets/{table-DoXmGweu.js → table-DOif7xTO.js} +1 -1
- package/dist/client/assets/{tabs-Bx_-j5XU.js → tabs-B_MhFzq8.js} +1 -1
- package/dist/client/assets/{task-board-BLlkbzQc.js → task-board-CcPCmS8T.js} +1 -1
- package/dist/client/assets/{task-route-BzutwceJ.js → task-route-C4sr5u2Y.js} +1 -1
- package/dist/client/assets/{tasks-1DjclDIB.js → tasks-DUn9MzS1.js} +1 -1
- package/dist/client/assets/{textarea-Bex1-FCK.js → textarea-Cg093qVK.js} +1 -1
- package/dist/client/assets/{toggle-group-BsZFreyd.js → toggle-group-DR2FN9bK.js} +1 -1
- package/dist/client/assets/{toolbar-BnS4trfz.js → toolbar-BMJtXOZ8.js} +1 -1
- package/dist/client/assets/{toolbar-icon-button-Br5e6K4O.js → toolbar-icon-button-j89gz31d.js} +1 -1
- package/dist/client/assets/{track-CAyq4OYo.js → track-CEYIUg92.js} +1 -1
- package/dist/client/assets/{types-DskYYMR0.js → types-CvaupNP5.js} +1 -1
- package/dist/client/assets/{use-ai-providers-BlpB44TE.js → use-ai-providers-qSmDdlV5.js} +1 -1
- package/dist/client/assets/{use-automations-Baz3C92q.js → use-automations-BHUwCHCu.js} +1 -1
- package/dist/client/assets/{use-autosave-jU5TWyWA.js → use-autosave-B6xJm16y.js} +1 -1
- package/dist/client/assets/{use-connection-dGTLN2Jw.js → use-connection-DssDxszT.js} +1 -1
- package/dist/client/assets/{use-copy-BgYzQZf3.js → use-copy-DElZsO5o.js} +1 -1
- package/dist/client/assets/{use-create-virtual-mcp-DZmFPtUn.js → use-create-virtual-mcp-fX5KRaaa.js} +1 -1
- package/dist/client/assets/{use-debounced-autosave-DVbep3-c.js → use-debounced-autosave-MHpLopBx.js} +1 -1
- package/dist/client/assets/{use-debounced-value-BMDd-RDt.js → use-debounced-value-CfUze3fk.js} +1 -1
- package/dist/client/assets/{use-decopilot-events-DH3HeMHQ.js → use-decopilot-events-BCTeDl9d.js} +1 -1
- package/dist/client/assets/{use-delete-connection-TAhPSHY3.js → use-delete-connection-CjblC6Ap.js} +1 -1
- package/dist/client/assets/{use-deployment-admin-COWfLdTh.js → use-deployment-admin-i2vFl9gf.js} +1 -1
- package/dist/client/assets/{use-destination-route-BiBwRnwH.js → use-destination-route-BnzyxZK-.js} +1 -1
- package/dist/client/assets/{use-file-configs-CpRzuiys.js → use-file-configs-DbhqGRsz.js} +1 -1
- package/dist/client/assets/{use-infinite-scroll-RNOfAEIw.js → use-infinite-scroll--JAy1jrF.js} +1 -1
- package/dist/client/assets/{use-join-requests-CMpZs-ZY.js → use-join-requests-BmM24zP-.js} +1 -1
- package/dist/client/assets/{use-mcp-auth-status-BqPz0cuB.js → use-mcp-auth-status-BWBUcCX_.js} +1 -1
- package/dist/client/assets/{use-mcp-client-BdWyVRdu.js → use-mcp-client-r4Xv9xDe.js} +1 -1
- package/dist/client/assets/{use-mcp-prompts-rfguU7hK.js → use-mcp-prompts-BDT2dqpH.js} +1 -1
- package/dist/client/assets/{use-members-BT8QeDlP.js → use-members-BB0dVjBb.js} +1 -1
- package/dist/client/assets/{use-navigate-to-agent-jTAd3sn7.js → use-navigate-to-agent-BAFEWvwz.js} +1 -1
- package/dist/client/assets/{use-org-auth-client-U_Ntv5P2.js → use-org-auth-client-BhrDbDSV.js} +1 -1
- package/dist/client/assets/{use-org-sso-Cy3RFg9C.js → use-org-sso-CxgCZrTk.js} +1 -1
- package/dist/client/assets/{use-organization-roles-BLqgaL_R.js → use-organization-roles-CDQDzA2S.js} +1 -1
- package/dist/client/assets/{use-organization-settings-BAWyw-2y.js → use-organization-settings-BZpxVSP5.js} +1 -1
- package/dist/client/assets/{use-panel-navigate-hBYy-oqI.js → use-panel-navigate-Bqzu-m4-.js} +1 -1
- package/dist/client/assets/{use-registry-connections-CX8yVSFA.js → use-registry-connections-BZ-aHAcc.js} +1 -1
- package/dist/client/assets/{use-secrets-CZuyciVH.js → use-secrets-Bh_QiR6h.js} +1 -1
- package/dist/client/assets/{use-section-preview-base-DU93Q5nU.js → use-section-preview-base-D_r7iT64.js} +1 -1
- package/dist/client/assets/{use-status-sounds-Cybd1KmZ.js → use-status-sounds-CNPhXYst.js} +1 -1
- package/dist/client/assets/{use-tags-D5F3CTs7.js → use-tags-CQrzK6kW.js} +1 -1
- package/dist/client/assets/{use-view-mode-BINhPQgF.js → use-view-mode-PLD7Z8Gt.js} +1 -1
- package/dist/client/assets/{use-virtual-mcp-CZJghpqp.js → use-virtual-mcp-zpAtwz7v.js} +1 -1
- package/dist/client/assets/useInfiniteQuery-BkZl1y7Z.js +1 -0
- package/dist/client/assets/useSuspenseInfiniteQuery-w4-apbuy.js +1 -0
- package/dist/client/assets/{users-JacMISW9.js → users-BZQPvMd3.js} +1 -1
- package/dist/client/assets/{variant-calendar-S-sJv5bo.js → variant-calendar-BGv44m4Q.js} +1 -1
- package/dist/client/assets/{view-mode-toggle-DAiAU_RV.js → view-mode-toggle-CC6x-V9J.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/api-keys-C-cjh6Tr.js +0 -1
- package/dist/client/assets/automations-CPm5uMhk.js +0 -1
- package/dist/client/assets/org-layout-BIo8ZRBz.js +0 -1
- package/dist/client/assets/record-editor-DRII3yea.js +0 -1
- package/dist/client/assets/registry-pISmdXod.js +0 -2
- package/dist/client/assets/settings-layout-EMgsSB8G.js +0 -1
- package/dist/client/assets/store-registry-BLW9UFF9.js +0 -2
- package/dist/client/assets/useInfiniteQuery-D13XgnaZ.js +0 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-Dk4wGkXL.js +0 -1
package/dist/server/cli.js
CHANGED
|
@@ -1545,7 +1545,7 @@ Usage: deco services <up|down|status>`),process.exit(1)}}var mn1=L(()=>{Eb()});f
|
|
|
1545
1545
|
`.execute($);if(Number(W.rows[0]?.cnt)===0){console.warn(`Failed to migrate ${J}/${K}, keeping in old table`);continue}}await dy`
|
|
1546
1546
|
DELETE FROM kysely_migration WHERE name = ${Q}
|
|
1547
1547
|
`.execute($)}}async function ts1($){await I04($),await q04($);let Z=new ps1({db:$,provider:{getMigrations:()=>Promise.resolve(vn0)}}),{error:Q,results:X}=await Z.migrateToLatest(),Y=0;if(X?.forEach((G)=>{if(G.status==="Success")Y++;else if(G.status==="Error")console.error(`Failed to execute migration "${G.migrationName}"`)}),Q)throw console.error("Failed to migrate"),console.error(Q),Q;return Y}async function M04($){let{keepOpen:Z=!1,database:Q,skipBetterAuth:X=!1}=$??{},Y="skipped";if(!X&&!Q)Y=await zm0();let G=Q??c$(),J=async()=>{if(!Z&&!Q)await NO(G).catch((K)=>{console.warn("Warning: Error closing database:",K)})};try{let K=await ts1(G.db);return await J(),{betterAuth:Y,kysely:K}}catch(K){throw await J(),K}}async function V04(){let $=c$(),Z=new ps1({db:$.db,provider:{getMigrations:()=>Promise.resolve(vn0)}}),{error:Q,results:X}=await Z.migrateDown();if(X?.forEach((Y)=>{if(Y.status==="Success")console.log(`\u2705 Migration "${Y.migrationName}" rolled back successfully`);else if(Y.status==="Error")console.error(`\u274C Failed to rollback migration "${Y.migrationName}"`)}),Q)throw console.error("Failed to rollback migration"),console.error(Q),Q}var rs1=L(()=>{is1();Pm0();WQ()});async function h70($){let Z={...process.env},Q=C80($,Z);console.log(iE1(Q.settings.encryptionKey));let X=Q.settings.betterAuthSecret||(Q.settings.localMode?Po1(Q.settings.dataDir):""),{ensureServices:Y}=await Promise.resolve().then(() => (mZ0(),lZ0)),{outputs:G,services:J}=await Y({home:Q.settings.dataDir,externalDatabaseUrl:Q.externalDatabaseUrl,externalNatsUrl:Q.externalNatsUrl});if(!Q.skipMigrations){let{migrateBetterAuth:W}=await Promise.resolve().then(() => (Pm0(),To1));await W(G.databaseUrl);let{createDatabase:H}=await Promise.resolve().then(() => (WQ(),ht1)),{migrateToLatest:F}=await Promise.resolve().then(() => (rs1(),os1)),U=H(G.databaseUrl);await F({keepOpen:!0,database:U,skipBetterAuth:!0})}let K={...Q.settings,betterAuthSecret:X,databaseUrl:G.databaseUrl,natsUrls:G.natsUrls,...G.s3?{s3Endpoint:G.s3.endpoint,s3Bucket:G.s3.bucket,s3AccessKeyId:G.s3.accessKeyId,s3SecretAccessKey:G.s3.secretAccessKey,s3ForcePathStyle:G.s3.forcePathStyle}:{}};return dn1(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 xn0=L(()=>{Eb();Ao1();j$()});var $e1={};s($e1,{updateService:()=>Yj,subscribeCliState:()=>yn0,setTuiConsoleIntercepted:()=>u70,setServerUrl:()=>yp,setMigrationsDone:()=>bp,setDevMode:()=>S04,resetCliStateForTests:()=>k04,isTuiConsoleIntercepted:()=>c70,getCliState:()=>bn0,addLogEntry:()=>jO});function as1(){return[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}]}function ss1(){return{services:as1(),migrationsStatus:"pending",serverUrl:null,logs:[]}}function k04(){oX=ss1()}function fp(){for(let $ of fn0)$()}function bn0(){return oX}function yn0($){return fn0.add($),()=>fn0.delete($)}function Yj($){oX={...oX,services:oX.services.map((Z)=>Z.name===$.name?$:Z)},fp()}function bp(){oX={...oX,migrationsStatus:"done"},fp()}function yp($){oX={...oX,serverUrl:$},fp()}function jO($){let Z=[...oX.logs,$];oX={...oX,logs:Z.length>500?Z.slice(-500):Z},fp()}function S04(){oX={...oX,services:[...as1(),{name:"API",status:"pending",port:0},{name:"Vite",status:"pending",port:0}]},fp()}function u70($){es1=$}function c70(){return es1}var oX,fn0,es1=!1;var Gj=L(()=>{oX=ss1();fn0=new Set});import{createServer as Ze1}from"net";function C04($){return new Promise((Z)=>{let Q=Ze1();Q.once("error",()=>Z(!1)),Q.listen($,"0.0.0.0",()=>{Q.close(()=>Z(!0))})})}async function gp($){if(await C04($))return $;let Z=await new Promise((Q,X)=>{let Y=Ze1();Y.once("error",X),Y.listen(0,"0.0.0.0",()=>{let G=Y.address(),J=typeof G==="object"&&G?G.port:0;Y.close(()=>Q(J))})});return console.warn(`Port ${$} is in use, using port ${Z} instead.`),Z}var gn0=()=>{};var un0={};s(un0,{startDevServer:()=>v04,pipeToLogStore:()=>hn0});import{join as _04}from"path";function hn0($){let Z=$.getReader(),Q=new TextDecoder,X="";function Y(){let G=X.split(`
|
|
1548
|
-
`);X=G.pop()??"";for(let J of G){let K=Bun.stripANSI(J).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;jO({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:K})}}(async()=>{try{for(;;){let{done:G,value:J}=await Z.read();if(G)break;X+=Q.decode(J,{stream:!0}),Y()}}catch{}if(X.trim()){let G=Bun.stripANSI(X).replace(/^\[\d+\]\s*/,"").trim();if(G)jO({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:G})}})()}async function v04($){let{baseUrl:Z,noTui:Q}=$,X=process.env.HOST==="0.0.0.0"&&Boolean(process.env.PORT),Y=X?process.env.PORT:$.vitePort,G=Z||`http://localhost:${Y}`,J=X?await gp(Number(Y)+1):await gp(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await h70({port:String(J),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let D of W)Yj({name:D.name,status:"ready",port:D.port});bp();let F=_04(import.meta.dir,"..","..","..","..",".."),U=Q===!0,N=Bun.spawn(["bun","run","dev:servers"],{cwd:F,env:{...process.env,PORT:String(K.port),VITE_PORT:String(Y),DATABASE_URL:K.databaseUrl,NATS_URL:K.natsUrls.join(","),NODE_ENV:K.nodeEnv,BASE_URL:G,DECOCMS_LOCAL_MODE:String(K.localMode),DECOCMS_HOME:K.dataDir,DATA_DIR:K.dataDir,DECO_CLI:"1",...K.betterAuthSecret?{BETTER_AUTH_SECRET:K.betterAuthSecret}:{},...K.s3Endpoint?{S3_ENDPOINT:K.s3Endpoint,S3_BUCKET:K.s3Bucket??"",S3_ACCESS_KEY_ID:K.s3AccessKeyId??"",S3_SECRET_ACCESS_KEY:K.s3SecretAccessKey??"",S3_FORCE_PATH_STYLE:String(K.s3ForcePathStyle)}:{},...K.natsCredsPath?{NATS_CREDS:K.natsCredsPath}:{}},stdio:["inherit",U?"inherit":"pipe",U?"inherit":"pipe"]});if(!U)hn0(N.stdout),hn0(N.stderr);yp(G),Yj({name:"Vite",status:"ready",port:Number(Y)}),Yj({name:"API",status:"ready",port:Number(K.port)});let O=async(D)=>{if(N.kill(D),await N.exited,H.length>0){let{stopServices:w}=await Promise.resolve().then(() => (mZ0(),lZ0));await w(K.dataDir)}};return process.on("SIGINT",()=>O("SIGINT")),process.on("SIGTERM",()=>O("SIGTERM")),{port:Number(Y),process:N}}var cn0=L(()=>{xn0();Gj();gn0()});var l70;var ln0=L(()=>{l70={name:"decocms",version:"4.329.4",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@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 f04,Text as Qe1}from"ink";import{jsx as b04,jsxs as Xe1}from"react/jsx-runtime";function Ye1({version:$}){return Xe1(f04,{flexDirection:"column",marginTop:1,children:[N70.map((Z,Q)=>b04(Qe1,{color:B70[Q],children:Z},Q)),Xe1(Qe1,{dimColor:!0,children:[" v",$]})]})}var Ge1=L(()=>{Tp()});import{Box as Jj,Text as zO}from"ink";import{Spinner as y04}from"@inkjs/ui";import{jsx as UG,jsxs as iy}from"react/jsx-runtime";function Je1({status:$}){if($==="pending")return UG(y04,{label:""});return UG(zO,{color:"green",children:"\u2713"})}function g04($){return`${$.name}: ${$.port||"...."}`}function Ke1({services:$,migrationsStatus:Z,home:Q,serverUrl:X}){return iy(Jj,{flexDirection:"column",paddingBottom:1,children:[UG(Ye1,{version:l70.version}),UG(Jj,{marginBottom:1,children:UG(zO,{dimColor:!0,children:"\u2500".repeat(80)})}),UG(Jj,{children:iy(zO,{dimColor:!0,children:["Home: ",Q]})}),iy(Jj,{gap:2,children:[$.map((Y)=>iy(Jj,{gap:1,children:[UG(zO,{children:g04(Y)}),UG(Je1,{status:Y.status})]},Y.name)),iy(Jj,{gap:1,children:[UG(zO,{children:"Migrations"}),UG(Je1,{status:Z})]})]}),UG(Jj,{children:X?iy(zO,{children:["Open in browser: ",UG(zO,{color:"cyan",children:X})]}):UG(zO,{dimColor:!0,children:"Starting..."})})]})}var We1=L(()=>{ln0();Ge1()});import{Box as h04,Text as hp}from"ink";import{jsx as mn0,jsxs as dn0}from"react/jsx-runtime";function u04($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function He1({logs:$}){return mn0(h04,{flexDirection:"column",children:$.map((Z,Q)=>{if(Z.rawLine)return mn0(hp,{dimColor:!0,children:Z.rawLine},Q);let X=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return dn0(hp,{children:[dn0(hp,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),mn0(hp,{color:u04(Z.status),children:Z.status}),dn0(hp,{dimColor:!0,children:[" ",X.padStart(8)]})]},Q)})})}var Fe1=()=>{};var in0={};s(in0,{App:()=>m04});import{Box as c04}from"ink";import{useSyncExternalStore as l04}from"react";import{jsx as Ue1,jsxs as d04}from"react/jsx-runtime";function m04({home:$}){let Z=l04(yn0,bn0);return d04(c04,{flexDirection:"column",children:[Ue1(Ke1,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),Ue1(He1,{logs:Z.logs})]})}var pn0=L(()=>{We1();Fe1();Gj()});var a3="thread-gate",RU="decopilot-hosted-harness",IU="decopilot-hosted-harness-sandboxed",MJ="automations",PO="background-tools",Kj="task-board-github-reads";var Ne1="11";function Be1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:Ne1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var Oe1=()=>{};import i04 from"pg";async function De1($,Z){let{databaseUrl:Q,lockTimeoutMs:X=p04}=$,Y=$.log??((W)=>console.log(W)),G=new i04.Client({connectionString:Q});await G.connect();let J=Date.now(),K=!1;try{while(!K){if(K=(await G.query("SELECT pg_try_advisory_lock($1) AS locked",[Le1.toString()])).rows[0]?.locked===!0,K)break;if(Date.now()-J>=X)throw Error(`Timed out after ${X}ms waiting for the DBOS migration lock. Another process is still migrating the dbos schema; this pod will restart and retry.`);await F$(n04)}let W=Date.now()-J;if(W>1000)Y(`[dbos] waited ${W}ms for the migration lock; another process migrated first`);return await Z()}finally{if(K)try{await G.query("SELECT pg_advisory_unlock($1)",[Le1.toString()])}catch{}await G.end().catch(()=>{})}}var Le1=8314027461559302n,p04=600000,n04=500;var we1=L(()=>{t8()});function t04(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function nn0($,Z){for(let Q=0;Q<$.length;Q++){let X=$[Q];if(X===void 0)continue;if(X===Z)return $[Q+1];if(X.startsWith(`${Z}=`))return X.slice(Z.length+1)}return}function Ee1(){let $=t04();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:nn0($,"--cpu-prof-dir")??process.cwd(),name:nn0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(nn0($,"--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 je1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let Q=$j();if(!Q)return;let X={};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);X={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:Q.rss,heapUsed:Q.heapUsed,heapTotal:Q.heapTotal,external:Q.external,arrayBuffers:Q.arrayBuffers,...X}))};return Z().catch(()=>{}),m70=setInterval(()=>void Z().catch(()=>{}),$),m70.unref?.(),process.on("SIGUSR2",()=>{try{let Q=Bun.generateHeapSnapshot("v8"),X=typeof Q==="string"?Q:JSON.stringify(Q),Y=`/tmp/heap-${process.pid}-${Date.now()}.heapsnapshot`;Bun.write(Y,X),console.log(JSON.stringify({msg:"heap-snapshot-written",path:Y}))}catch(Q){console.error("[heap-watch] snapshot failed:",Q)}}),()=>{if(m70)clearInterval(m70)}}var m70;var ze1=()=>{};import*as o04 from"bun:jsc";function Pe1(){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{r04()}catch(G){return console.error("[stall-watchdog] failed to start sampling profiler:",G),()=>{}}let Q,X=performance.now()+Z,Y=()=>{let G=performance.now(),J=G-X;X=G+Z;let K=[];try{K=a04()?.traces??[]}catch{}if(J>$&&K.length>0){let W=new Map;for(let F of K){let U=F.frames.find((O)=>O.sourceURL&&!/Unknown Executable/.test(O.category??""))??F.frames[0];if(!U)continue;let N=(U.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),B=`${U.name??"?"} @ ${N}:${U.line??"?"}`;W.set(B,(W.get(B)??0)+1)}let H=[...W.entries()].sort((F,U)=>U[1]-F[1]).slice(0,8).map(([F,U])=>({frame:F,count:U}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(J),samplesInWindow:K.length,top:H}))}Q=setTimeout(Y,Z),Q.unref?.()};return Q=setTimeout(Y,Z),Q.unref?.(),()=>{if(Q)clearTimeout(Q)}}var r04,a04;var Ae1=L(()=>{({startSamplingProfiler:r04,samplingProfilerStackTraces:a04}=o04)});function Te1(){Ee1();let $=[je1(),Ct1(),Pe1()];return()=>{for(let Z of $)Z()}}var Re1=L(()=>{Um0();ze1();Ae1()});var Wj=v((Ie1)=>{Object.defineProperty(Ie1,"__esModule",{value:!0});Ie1.RepublishHeaders=Ie1.DirectMsgHeaders=Ie1.JsHeaders=Ie1.AdvisoryKind=void 0;Ie1.isOrderedPushConsumerOptions=s04;Ie1.isPullConsumer=e04;Ie1.isPushConsumer=$14;Ie1.isBoundPushConsumerOptions=Z14;function s04($){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 e04($){return $.isPullConsumer()}function $14($){return $.isPushConsumer()}function Z14($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}Ie1.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"};Ie1.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"};Ie1.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};Ie1.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var NG=v((Me1)=>{Object.defineProperty(Me1,"__esModule",{value:!0});Me1.TD=Me1.TE=Me1.Empty=void 0;Me1.encode=F14;Me1.decode=U14;Me1.Empty=new Uint8Array(0);Me1.TE=new TextEncoder;Me1.TD=new TextDecoder;function H14(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let Q=new Uint8Array(Z),X=0;for(let Y=0;Y<$.length;Y++)Q.set($[Y],X),X+=$[Y].length;return Q}function F14(...$){let Z=[];for(let Q=0;Q<$.length;Q++)Z.push(Me1.TE.encode($[Q]));if(Z.length===0)return Me1.Empty;if(Z.length===1)return Z[0];return H14(...Z)}function U14($){if(!$||$.length===0)return"";return Me1.TD.decode($)}});var BG=v((Se1)=>{Object.defineProperty(Se1,"__esModule",{value:!0});Se1.errors=Se1.PermissionViolationError=Se1.NoRespondersError=Se1.TimeoutError=Se1.RequestError=Se1.ProtocolError=Se1.ConnectionError=Se1.DrainingConnectionError=Se1.ClosedConnectionError=Se1.AuthorizationError=Se1.UserAuthenticationExpiredError=Se1.InvalidOperationError=Se1.InvalidArgumentError=Se1.InvalidSubjectError=void 0;class on0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}Se1.InvalidSubjectError=on0;class d70 extends Error{constructor($,Z){super($,Z);this.name="InvalidArgumentError"}static format($,Z,Q){if(Array.isArray(Z)&&Z.length>1)Z=Z[0];if(Array.isArray($))$=$.map((X)=>`'${X}'`),$=$.join(",");else $=`'${$}'`;return new d70(`${$} ${Z}`,Q)}}Se1.InvalidArgumentError=d70;class rn0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}Se1.InvalidOperationError=rn0;class i70 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new i70($);return null}}Se1.UserAuthenticationExpiredError=i70;class p70 extends Error{constructor($,Z){super($,Z);this.name="AuthorizationError"}static parse($){let Z=["authorization violation","account authentication expired","authentication timeout"],Q=$.toLowerCase();for(let X=0;X<Z.length;X++)if(Q.indexOf(Z[X])!==-1)return new p70($);return null}}Se1.AuthorizationError=p70;class an0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}Se1.ClosedConnectionError=an0;class sn0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}Se1.DrainingConnectionError=sn0;class en0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}Se1.ConnectionError=en0;class $t0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}Se1.ProtocolError=$t0;class Zt0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof n70}}Se1.RequestError=Zt0;class Qt0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}Se1.TimeoutError=Qt0;class n70 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}Se1.NoRespondersError=n70;class t70 extends Error{operation;subject;queue;constructor($,Z,Q,X,Y){super($,Y);this.name="PermissionViolationError",this.operation=Z,this.subject=Q,this.queue=X}static parse($){if(($?$.toLowerCase():"").indexOf("permissions violation")===-1)return null;let Q="publish",X="",Y=void 0,G=$.match(/(Publish|Subscription) to "(\S+)"/);if(G){if(Q=G[1].toLowerCase(),X=G[2],Q==="subscription"){let J=$.match(/using queue "(\S+)"/);if(J)Y=J[1]}}return new t70($,Q,X,Y)}}Se1.PermissionViolationError=t70;Se1.errors={AuthorizationError:p70,ClosedConnectionError:an0,ConnectionError:en0,DrainingConnectionError:sn0,InvalidArgumentError:d70,InvalidOperationError:rn0,InvalidSubjectError:on0,NoRespondersError:n70,PermissionViolationError:t70,ProtocolError:$t0,RequestError:Zt0,TimeoutError:Qt0,UserAuthenticationExpiredError:i70}});var s3=v((fe1)=>{Object.defineProperty(fe1,"__esModule",{value:!0});fe1.SimpleMutex=fe1.Perf=void 0;fe1.extend=V14;fe1.render=k14;fe1.timeout=S14;fe1.delay=C14;fe1.deadline=_14;fe1.deferred=Yt0;fe1.debugDeferred=v14;fe1.shuffle=x14;fe1.collect=f14;fe1.jitter=xe1;fe1.backoff=b14;fe1.nanos=y14;fe1.millis=g14;fe1.randomToken=c14;var M14=NG(),Xt0=BG();function V14($,...Z){for(let Q=0;Q<Z.length;Q++){let X=Z[Q];Object.keys(X).forEach(function(Y){$[Y]=X[Y]})}return $}function k14($){return M14.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function S14($,Z=!0){let Q=Z?new Xt0.TimeoutError:null,X,Y,G=new Promise((J,K)=>{X={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(Q===null)K(new Xt0.TimeoutError);else K(Q)},$)});return Object.assign(G,X)}function C14($=0){let Z,Q=new Promise((X)=>{let Y=setTimeout(()=>{X()},$);Z={cancel:()=>{if(Y)clearTimeout(Y),X()}}});return Object.assign(Q,Z)}async function _14($,Z=1000){let Q=Yt0(),X=setTimeout(()=>{Q.reject(new Xt0.TimeoutError)},Z);try{return await Promise.race([$,Q])}finally{clearTimeout(X)}}function Yt0(){let $={},Z=new Promise((Q,X)=>{$={resolve:Q,reject:X}});return Object.assign(Z,$)}function v14(){let $={},Z=new Promise((Q,X)=>{$={resolve:(Y)=>{console.trace("resolve",Y),Q(Y)},reject:(Y)=>{console.trace("reject"),X(Y)}}});return Object.assign(Z,$)}function x14($){for(let Z=$.length-1;Z>0;Z--){let Q=Math.floor(Math.random()*(Z+1));[$[Z],$[Q]]=[$[Q],$[Z]]}return $}async function f14($){let Z=[];for await(let Q of $)Z.push(Q);return Z}class _e1{timers;measures;constructor(){this.timers=new Map,this.measures=new Map}mark($){this.timers.set($,performance.now())}measure($,Z,Q){let X=this.timers.get(Z);if(X===void 0)throw Error(`${Z} is not defined`);let Y=this.timers.get(Q);if(Y===void 0)throw Error(`${Q} is not defined`);this.measures.set($,Y-X)}getEntries(){let $=[];return this.measures.forEach((Z,Q)=>{$.push({name:Q,duration:Z})}),$}}fe1.Perf=_e1;class ve1{max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=Yt0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}fe1.SimpleMutex=ve1;function xe1($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function b14($=[0,250,250,500,500,3000,5000]){if(!Array.isArray($))$=[0,250,250,500,500,3000,5000];let Z=$.length-1;return{backoff(Q){return xe1(Q>Z?$[Z]:$[Q])}}}function y14($){return $*1e6}function g14($){return Math.floor($/1e6)}var h14="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",qU=new Uint8Array(62);for(let $=0;$<62;$++)qU[$]=h14.charCodeAt($);var u14=218340105584896;function c14(){let $=Math.floor(Math.random()*u14),Z=$%62,Q=qU[Z];$=($-Z)/62,Z=$%62;let X=qU[Z];$=($-Z)/62,Z=$%62;let Y=qU[Z];$=($-Z)/62,Z=$%62;let G=qU[Z];$=($-Z)/62,Z=$%62;let J=qU[Z];$=($-Z)/62,Z=$%62;let K=qU[Z];$=($-Z)/62,Z=$%62;let W=qU[Z];$=($-Z)/62;let H=qU[$];return String.fromCharCode(Q,X,Y,G,J,K,W,H)}});var me1=v((ce1)=>{Object.defineProperty(ce1,"__esModule",{value:!0});ce1.nuid=ce1.NuidImpl=void 0;var X$4="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",AO=62,r70=12,he1=10,ye1=33,Y$4=333,ge1=r70+he1,Jt0=new Uint8Array(AO);for(let $=0;$<AO;$++)Jt0[$]=X$4.charCodeAt($);var o70=4294967296,ue1=BigInt(AO)**BigInt(he1),up=Number(ue1/(1n<<32n)),Gt0=Number(ue1%(1n<<32n));function G$4($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function J$4($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else G$4($)}class Kt0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(ge1),this.cbuf=new Uint8Array(r70),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(up+1)),this.seqLo=Math.floor(Math.random()*o70);while($++<8&&this.seqHi===up&&this.seqLo>=Gt0);if(this.seqHi===up&&this.seqLo>=Gt0)this.seqLo=0;this.inc=Math.random()*(Y$4-ye1)+ye1|0}setPre(){J$4(this.cbuf);for(let $=0;$<r70;$++)this.buf[$]=Jt0[this.cbuf[$]%AO]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let Q=ge1-1;Q>=r70;Q--){let X=Math.floor($/AO),G=($-X*AO)*o70+Z,J=Math.floor(G/AO),K=G-J*AO;this.buf[Q]=Jt0[K],$=X,Z=J}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=o70)this.seqLo-=o70,this.seqHi+=1;if(this.seqHi>up||this.seqHi===up&&this.seqLo>=Gt0)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()}}ce1.NuidImpl=Kt0;ce1.nuid=new Kt0});var ne1=v((ie1)=>{Object.defineProperty(ie1,"__esModule",{value:!0});ie1.nuid=ie1.Nuid=void 0;var de1=me1();ie1.Nuid=de1.NuidImpl;ie1.nuid=de1.nuid});var s70=v((a70)=>{Object.defineProperty(a70,"__esModule",{value:!0});a70.nuid=a70.Nuid=void 0;var te1=ne1();Object.defineProperty(a70,"Nuid",{enumerable:!0,get:function(){return te1.Nuid}});Object.defineProperty(a70,"nuid",{enumerable:!0,get:function(){return te1.nuid}})});var TO=v((oe1)=>{Object.defineProperty(oe1,"__esModule",{value:!0});oe1.DEFAULT_HOST=oe1.DEFAULT_PORT=oe1.Match=void 0;oe1.syncIterator=N$4;oe1.createInbox=B$4;var F$4=s70(),U$4=BG();oe1.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function N$4($){let Z=$[Symbol.asyncIterator]();return{async next(){let Q=await Z.next();if(Q.done)return Promise.resolve(null);return Promise.resolve(Q.value)}}}function B$4($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw U$4.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${F$4.nuid.next()}`}oe1.DEFAULT_PORT=4222;oe1.DEFAULT_HOST="127.0.0.1"});var cp=v((ee1)=>{Object.defineProperty(ee1,"__esModule",{value:!0});ee1.DataBuffer=void 0;var ae1=NG();class se1{buffers;byteLength;constructor(){this.buffers=[],this.byteLength=0}static concat(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let Q=new Uint8Array(Z),X=0;for(let Y=0;Y<$.length;Y++)Q.set($[Y],X),X+=$[Y].length;return Q}static fromAscii($){if(!$)$="";return ae1.TE.encode($)}static toAscii($){return ae1.TD.decode($)}reset(){this.buffers.length=0,this.byteLength=0}pack(){if(this.buffers.length>1){let $=new Uint8Array(this.byteLength),Z=0;for(let Q=0;Q<this.buffers.length;Q++)$.set(this.buffers[Q],Z),Z+=this.buffers[Q].length;this.buffers.length=0,this.buffers.push($)}}shift(){if(this.buffers.length){let $=this.buffers.shift();if($)return this.byteLength-=$.length,$}return new Uint8Array(0)}drain($){if(this.buffers.length){this.pack();let Z=this.buffers.pop();if(Z){let Q=this.byteLength;if($===void 0||$>Q)$=Q;let X=Z.subarray(0,$);if(Q>$)this.buffers.push(Z.subarray($));return this.byteLength=Q-$,X}}return new Uint8Array(0)}fill($,...Z){if($)this.buffers.push($),this.byteLength+=$.length;for(let Q=0;Q<Z.length;Q++)if(Z[Q]&&Z[Q].length)this.buffers.push(Z[Q]),this.byteLength+=Z[Q].length}peek(){if(this.buffers.length)return this.pack(),this.buffers[0];return new Uint8Array(0)}size(){return this.byteLength}length(){return this.buffers.length}}ee1.DataBuffer=se1});var Hj=v((Q0$)=>{Object.defineProperty(Q0$,"__esModule",{value:!0});Q0$.LF=Q0$.CR=Q0$.CRLF=Q0$.CR_LF_LEN=Q0$.CR_LF=void 0;Q0$.setTransportFactory=P$4;Q0$.defaultPort=A$4;Q0$.getUrlParseFn=T$4;Q0$.newTransport=R$4;Q0$.getResolveFn=I$4;Q0$.protoLen=Z0$;Q0$.extractProtocolMessage=q$4;var E$4=NG(),j$4=TO(),z$4=cp(),OG;function P$4($){OG=$}function A$4(){return OG!==void 0&&OG.defaultPort!==void 0?OG.defaultPort:j$4.DEFAULT_PORT}function T$4(){return OG!==void 0&&OG.urlParseFn?OG.urlParseFn:void 0}function R$4(){if(!OG||typeof OG.factory!=="function")throw Error("transport fn is not set");return OG.factory()}function I$4(){return OG!==void 0&&OG.dnsResolveFn?OG.dnsResolveFn:void 0}Q0$.CR_LF=`\r
|
|
1548
|
+
`);X=G.pop()??"";for(let J of G){let K=Bun.stripANSI(J).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;jO({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:K})}}(async()=>{try{for(;;){let{done:G,value:J}=await Z.read();if(G)break;X+=Q.decode(J,{stream:!0}),Y()}}catch{}if(X.trim()){let G=Bun.stripANSI(X).replace(/^\[\d+\]\s*/,"").trim();if(G)jO({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:G})}})()}async function v04($){let{baseUrl:Z,noTui:Q}=$,X=process.env.HOST==="0.0.0.0"&&Boolean(process.env.PORT),Y=X?process.env.PORT:$.vitePort,G=Z||`http://localhost:${Y}`,J=X?await gp(Number(Y)+1):await gp(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await h70({port:String(J),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let D of W)Yj({name:D.name,status:"ready",port:D.port});bp();let F=_04(import.meta.dir,"..","..","..","..",".."),U=Q===!0,N=Bun.spawn(["bun","run","dev:servers"],{cwd:F,env:{...process.env,PORT:String(K.port),VITE_PORT:String(Y),DATABASE_URL:K.databaseUrl,NATS_URL:K.natsUrls.join(","),NODE_ENV:K.nodeEnv,BASE_URL:G,DECOCMS_LOCAL_MODE:String(K.localMode),DECOCMS_HOME:K.dataDir,DATA_DIR:K.dataDir,DECO_CLI:"1",...K.betterAuthSecret?{BETTER_AUTH_SECRET:K.betterAuthSecret}:{},...K.s3Endpoint?{S3_ENDPOINT:K.s3Endpoint,S3_BUCKET:K.s3Bucket??"",S3_ACCESS_KEY_ID:K.s3AccessKeyId??"",S3_SECRET_ACCESS_KEY:K.s3SecretAccessKey??"",S3_FORCE_PATH_STYLE:String(K.s3ForcePathStyle)}:{},...K.natsCredsPath?{NATS_CREDS:K.natsCredsPath}:{}},stdio:["inherit",U?"inherit":"pipe",U?"inherit":"pipe"]});if(!U)hn0(N.stdout),hn0(N.stderr);yp(G),Yj({name:"Vite",status:"ready",port:Number(Y)}),Yj({name:"API",status:"ready",port:Number(K.port)});let O=async(D)=>{if(N.kill(D),await N.exited,H.length>0){let{stopServices:w}=await Promise.resolve().then(() => (mZ0(),lZ0));await w(K.dataDir)}};return process.on("SIGINT",()=>O("SIGINT")),process.on("SIGTERM",()=>O("SIGTERM")),{port:Number(Y),process:N}}var cn0=L(()=>{xn0();Gj();gn0()});var l70;var ln0=L(()=>{l70={name:"decocms",version:"4.329.5",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});import{Box as f04,Text as Qe1}from"ink";import{jsx as b04,jsxs as Xe1}from"react/jsx-runtime";function Ye1({version:$}){return Xe1(f04,{flexDirection:"column",marginTop:1,children:[N70.map((Z,Q)=>b04(Qe1,{color:B70[Q],children:Z},Q)),Xe1(Qe1,{dimColor:!0,children:[" v",$]})]})}var Ge1=L(()=>{Tp()});import{Box as Jj,Text as zO}from"ink";import{Spinner as y04}from"@inkjs/ui";import{jsx as UG,jsxs as iy}from"react/jsx-runtime";function Je1({status:$}){if($==="pending")return UG(y04,{label:""});return UG(zO,{color:"green",children:"\u2713"})}function g04($){return`${$.name}: ${$.port||"...."}`}function Ke1({services:$,migrationsStatus:Z,home:Q,serverUrl:X}){return iy(Jj,{flexDirection:"column",paddingBottom:1,children:[UG(Ye1,{version:l70.version}),UG(Jj,{marginBottom:1,children:UG(zO,{dimColor:!0,children:"\u2500".repeat(80)})}),UG(Jj,{children:iy(zO,{dimColor:!0,children:["Home: ",Q]})}),iy(Jj,{gap:2,children:[$.map((Y)=>iy(Jj,{gap:1,children:[UG(zO,{children:g04(Y)}),UG(Je1,{status:Y.status})]},Y.name)),iy(Jj,{gap:1,children:[UG(zO,{children:"Migrations"}),UG(Je1,{status:Z})]})]}),UG(Jj,{children:X?iy(zO,{children:["Open in browser: ",UG(zO,{color:"cyan",children:X})]}):UG(zO,{dimColor:!0,children:"Starting..."})})]})}var We1=L(()=>{ln0();Ge1()});import{Box as h04,Text as hp}from"ink";import{jsx as mn0,jsxs as dn0}from"react/jsx-runtime";function u04($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function He1({logs:$}){return mn0(h04,{flexDirection:"column",children:$.map((Z,Q)=>{if(Z.rawLine)return mn0(hp,{dimColor:!0,children:Z.rawLine},Q);let X=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return dn0(hp,{children:[dn0(hp,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),mn0(hp,{color:u04(Z.status),children:Z.status}),dn0(hp,{dimColor:!0,children:[" ",X.padStart(8)]})]},Q)})})}var Fe1=()=>{};var in0={};s(in0,{App:()=>m04});import{Box as c04}from"ink";import{useSyncExternalStore as l04}from"react";import{jsx as Ue1,jsxs as d04}from"react/jsx-runtime";function m04({home:$}){let Z=l04(yn0,bn0);return d04(c04,{flexDirection:"column",children:[Ue1(Ke1,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),Ue1(He1,{logs:Z.logs})]})}var pn0=L(()=>{We1();Fe1();Gj()});var a3="thread-gate",RU="decopilot-hosted-harness",IU="decopilot-hosted-harness-sandboxed",MJ="automations",PO="background-tools",Kj="task-board-github-reads";var Ne1="11";function Be1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:Ne1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var Oe1=()=>{};import i04 from"pg";async function De1($,Z){let{databaseUrl:Q,lockTimeoutMs:X=p04}=$,Y=$.log??((W)=>console.log(W)),G=new i04.Client({connectionString:Q});await G.connect();let J=Date.now(),K=!1;try{while(!K){if(K=(await G.query("SELECT pg_try_advisory_lock($1) AS locked",[Le1.toString()])).rows[0]?.locked===!0,K)break;if(Date.now()-J>=X)throw Error(`Timed out after ${X}ms waiting for the DBOS migration lock. Another process is still migrating the dbos schema; this pod will restart and retry.`);await F$(n04)}let W=Date.now()-J;if(W>1000)Y(`[dbos] waited ${W}ms for the migration lock; another process migrated first`);return await Z()}finally{if(K)try{await G.query("SELECT pg_advisory_unlock($1)",[Le1.toString()])}catch{}await G.end().catch(()=>{})}}var Le1=8314027461559302n,p04=600000,n04=500;var we1=L(()=>{t8()});function t04(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function nn0($,Z){for(let Q=0;Q<$.length;Q++){let X=$[Q];if(X===void 0)continue;if(X===Z)return $[Q+1];if(X.startsWith(`${Z}=`))return X.slice(Z.length+1)}return}function Ee1(){let $=t04();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:nn0($,"--cpu-prof-dir")??process.cwd(),name:nn0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(nn0($,"--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 je1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let Q=$j();if(!Q)return;let X={};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);X={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:Q.rss,heapUsed:Q.heapUsed,heapTotal:Q.heapTotal,external:Q.external,arrayBuffers:Q.arrayBuffers,...X}))};return Z().catch(()=>{}),m70=setInterval(()=>void Z().catch(()=>{}),$),m70.unref?.(),process.on("SIGUSR2",()=>{try{let Q=Bun.generateHeapSnapshot("v8"),X=typeof Q==="string"?Q:JSON.stringify(Q),Y=`/tmp/heap-${process.pid}-${Date.now()}.heapsnapshot`;Bun.write(Y,X),console.log(JSON.stringify({msg:"heap-snapshot-written",path:Y}))}catch(Q){console.error("[heap-watch] snapshot failed:",Q)}}),()=>{if(m70)clearInterval(m70)}}var m70;var ze1=()=>{};import*as o04 from"bun:jsc";function Pe1(){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{r04()}catch(G){return console.error("[stall-watchdog] failed to start sampling profiler:",G),()=>{}}let Q,X=performance.now()+Z,Y=()=>{let G=performance.now(),J=G-X;X=G+Z;let K=[];try{K=a04()?.traces??[]}catch{}if(J>$&&K.length>0){let W=new Map;for(let F of K){let U=F.frames.find((O)=>O.sourceURL&&!/Unknown Executable/.test(O.category??""))??F.frames[0];if(!U)continue;let N=(U.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),B=`${U.name??"?"} @ ${N}:${U.line??"?"}`;W.set(B,(W.get(B)??0)+1)}let H=[...W.entries()].sort((F,U)=>U[1]-F[1]).slice(0,8).map(([F,U])=>({frame:F,count:U}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(J),samplesInWindow:K.length,top:H}))}Q=setTimeout(Y,Z),Q.unref?.()};return Q=setTimeout(Y,Z),Q.unref?.(),()=>{if(Q)clearTimeout(Q)}}var r04,a04;var Ae1=L(()=>{({startSamplingProfiler:r04,samplingProfilerStackTraces:a04}=o04)});function Te1(){Ee1();let $=[je1(),Ct1(),Pe1()];return()=>{for(let Z of $)Z()}}var Re1=L(()=>{Um0();ze1();Ae1()});var Wj=v((Ie1)=>{Object.defineProperty(Ie1,"__esModule",{value:!0});Ie1.RepublishHeaders=Ie1.DirectMsgHeaders=Ie1.JsHeaders=Ie1.AdvisoryKind=void 0;Ie1.isOrderedPushConsumerOptions=s04;Ie1.isPullConsumer=e04;Ie1.isPushConsumer=$14;Ie1.isBoundPushConsumerOptions=Z14;function s04($){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 e04($){return $.isPullConsumer()}function $14($){return $.isPushConsumer()}function Z14($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}Ie1.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"};Ie1.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"};Ie1.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};Ie1.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var NG=v((Me1)=>{Object.defineProperty(Me1,"__esModule",{value:!0});Me1.TD=Me1.TE=Me1.Empty=void 0;Me1.encode=F14;Me1.decode=U14;Me1.Empty=new Uint8Array(0);Me1.TE=new TextEncoder;Me1.TD=new TextDecoder;function H14(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let Q=new Uint8Array(Z),X=0;for(let Y=0;Y<$.length;Y++)Q.set($[Y],X),X+=$[Y].length;return Q}function F14(...$){let Z=[];for(let Q=0;Q<$.length;Q++)Z.push(Me1.TE.encode($[Q]));if(Z.length===0)return Me1.Empty;if(Z.length===1)return Z[0];return H14(...Z)}function U14($){if(!$||$.length===0)return"";return Me1.TD.decode($)}});var BG=v((Se1)=>{Object.defineProperty(Se1,"__esModule",{value:!0});Se1.errors=Se1.PermissionViolationError=Se1.NoRespondersError=Se1.TimeoutError=Se1.RequestError=Se1.ProtocolError=Se1.ConnectionError=Se1.DrainingConnectionError=Se1.ClosedConnectionError=Se1.AuthorizationError=Se1.UserAuthenticationExpiredError=Se1.InvalidOperationError=Se1.InvalidArgumentError=Se1.InvalidSubjectError=void 0;class on0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}Se1.InvalidSubjectError=on0;class d70 extends Error{constructor($,Z){super($,Z);this.name="InvalidArgumentError"}static format($,Z,Q){if(Array.isArray(Z)&&Z.length>1)Z=Z[0];if(Array.isArray($))$=$.map((X)=>`'${X}'`),$=$.join(",");else $=`'${$}'`;return new d70(`${$} ${Z}`,Q)}}Se1.InvalidArgumentError=d70;class rn0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}Se1.InvalidOperationError=rn0;class i70 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new i70($);return null}}Se1.UserAuthenticationExpiredError=i70;class p70 extends Error{constructor($,Z){super($,Z);this.name="AuthorizationError"}static parse($){let Z=["authorization violation","account authentication expired","authentication timeout"],Q=$.toLowerCase();for(let X=0;X<Z.length;X++)if(Q.indexOf(Z[X])!==-1)return new p70($);return null}}Se1.AuthorizationError=p70;class an0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}Se1.ClosedConnectionError=an0;class sn0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}Se1.DrainingConnectionError=sn0;class en0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}Se1.ConnectionError=en0;class $t0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}Se1.ProtocolError=$t0;class Zt0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof n70}}Se1.RequestError=Zt0;class Qt0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}Se1.TimeoutError=Qt0;class n70 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}Se1.NoRespondersError=n70;class t70 extends Error{operation;subject;queue;constructor($,Z,Q,X,Y){super($,Y);this.name="PermissionViolationError",this.operation=Z,this.subject=Q,this.queue=X}static parse($){if(($?$.toLowerCase():"").indexOf("permissions violation")===-1)return null;let Q="publish",X="",Y=void 0,G=$.match(/(Publish|Subscription) to "(\S+)"/);if(G){if(Q=G[1].toLowerCase(),X=G[2],Q==="subscription"){let J=$.match(/using queue "(\S+)"/);if(J)Y=J[1]}}return new t70($,Q,X,Y)}}Se1.PermissionViolationError=t70;Se1.errors={AuthorizationError:p70,ClosedConnectionError:an0,ConnectionError:en0,DrainingConnectionError:sn0,InvalidArgumentError:d70,InvalidOperationError:rn0,InvalidSubjectError:on0,NoRespondersError:n70,PermissionViolationError:t70,ProtocolError:$t0,RequestError:Zt0,TimeoutError:Qt0,UserAuthenticationExpiredError:i70}});var s3=v((fe1)=>{Object.defineProperty(fe1,"__esModule",{value:!0});fe1.SimpleMutex=fe1.Perf=void 0;fe1.extend=V14;fe1.render=k14;fe1.timeout=S14;fe1.delay=C14;fe1.deadline=_14;fe1.deferred=Yt0;fe1.debugDeferred=v14;fe1.shuffle=x14;fe1.collect=f14;fe1.jitter=xe1;fe1.backoff=b14;fe1.nanos=y14;fe1.millis=g14;fe1.randomToken=c14;var M14=NG(),Xt0=BG();function V14($,...Z){for(let Q=0;Q<Z.length;Q++){let X=Z[Q];Object.keys(X).forEach(function(Y){$[Y]=X[Y]})}return $}function k14($){return M14.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function S14($,Z=!0){let Q=Z?new Xt0.TimeoutError:null,X,Y,G=new Promise((J,K)=>{X={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(Q===null)K(new Xt0.TimeoutError);else K(Q)},$)});return Object.assign(G,X)}function C14($=0){let Z,Q=new Promise((X)=>{let Y=setTimeout(()=>{X()},$);Z={cancel:()=>{if(Y)clearTimeout(Y),X()}}});return Object.assign(Q,Z)}async function _14($,Z=1000){let Q=Yt0(),X=setTimeout(()=>{Q.reject(new Xt0.TimeoutError)},Z);try{return await Promise.race([$,Q])}finally{clearTimeout(X)}}function Yt0(){let $={},Z=new Promise((Q,X)=>{$={resolve:Q,reject:X}});return Object.assign(Z,$)}function v14(){let $={},Z=new Promise((Q,X)=>{$={resolve:(Y)=>{console.trace("resolve",Y),Q(Y)},reject:(Y)=>{console.trace("reject"),X(Y)}}});return Object.assign(Z,$)}function x14($){for(let Z=$.length-1;Z>0;Z--){let Q=Math.floor(Math.random()*(Z+1));[$[Z],$[Q]]=[$[Q],$[Z]]}return $}async function f14($){let Z=[];for await(let Q of $)Z.push(Q);return Z}class _e1{timers;measures;constructor(){this.timers=new Map,this.measures=new Map}mark($){this.timers.set($,performance.now())}measure($,Z,Q){let X=this.timers.get(Z);if(X===void 0)throw Error(`${Z} is not defined`);let Y=this.timers.get(Q);if(Y===void 0)throw Error(`${Q} is not defined`);this.measures.set($,Y-X)}getEntries(){let $=[];return this.measures.forEach((Z,Q)=>{$.push({name:Q,duration:Z})}),$}}fe1.Perf=_e1;class ve1{max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=Yt0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}fe1.SimpleMutex=ve1;function xe1($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function b14($=[0,250,250,500,500,3000,5000]){if(!Array.isArray($))$=[0,250,250,500,500,3000,5000];let Z=$.length-1;return{backoff(Q){return xe1(Q>Z?$[Z]:$[Q])}}}function y14($){return $*1e6}function g14($){return Math.floor($/1e6)}var h14="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",qU=new Uint8Array(62);for(let $=0;$<62;$++)qU[$]=h14.charCodeAt($);var u14=218340105584896;function c14(){let $=Math.floor(Math.random()*u14),Z=$%62,Q=qU[Z];$=($-Z)/62,Z=$%62;let X=qU[Z];$=($-Z)/62,Z=$%62;let Y=qU[Z];$=($-Z)/62,Z=$%62;let G=qU[Z];$=($-Z)/62,Z=$%62;let J=qU[Z];$=($-Z)/62,Z=$%62;let K=qU[Z];$=($-Z)/62,Z=$%62;let W=qU[Z];$=($-Z)/62;let H=qU[$];return String.fromCharCode(Q,X,Y,G,J,K,W,H)}});var me1=v((ce1)=>{Object.defineProperty(ce1,"__esModule",{value:!0});ce1.nuid=ce1.NuidImpl=void 0;var X$4="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",AO=62,r70=12,he1=10,ye1=33,Y$4=333,ge1=r70+he1,Jt0=new Uint8Array(AO);for(let $=0;$<AO;$++)Jt0[$]=X$4.charCodeAt($);var o70=4294967296,ue1=BigInt(AO)**BigInt(he1),up=Number(ue1/(1n<<32n)),Gt0=Number(ue1%(1n<<32n));function G$4($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function J$4($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else G$4($)}class Kt0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(ge1),this.cbuf=new Uint8Array(r70),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(up+1)),this.seqLo=Math.floor(Math.random()*o70);while($++<8&&this.seqHi===up&&this.seqLo>=Gt0);if(this.seqHi===up&&this.seqLo>=Gt0)this.seqLo=0;this.inc=Math.random()*(Y$4-ye1)+ye1|0}setPre(){J$4(this.cbuf);for(let $=0;$<r70;$++)this.buf[$]=Jt0[this.cbuf[$]%AO]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let Q=ge1-1;Q>=r70;Q--){let X=Math.floor($/AO),G=($-X*AO)*o70+Z,J=Math.floor(G/AO),K=G-J*AO;this.buf[Q]=Jt0[K],$=X,Z=J}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=o70)this.seqLo-=o70,this.seqHi+=1;if(this.seqHi>up||this.seqHi===up&&this.seqLo>=Gt0)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()}}ce1.NuidImpl=Kt0;ce1.nuid=new Kt0});var ne1=v((ie1)=>{Object.defineProperty(ie1,"__esModule",{value:!0});ie1.nuid=ie1.Nuid=void 0;var de1=me1();ie1.Nuid=de1.NuidImpl;ie1.nuid=de1.nuid});var s70=v((a70)=>{Object.defineProperty(a70,"__esModule",{value:!0});a70.nuid=a70.Nuid=void 0;var te1=ne1();Object.defineProperty(a70,"Nuid",{enumerable:!0,get:function(){return te1.Nuid}});Object.defineProperty(a70,"nuid",{enumerable:!0,get:function(){return te1.nuid}})});var TO=v((oe1)=>{Object.defineProperty(oe1,"__esModule",{value:!0});oe1.DEFAULT_HOST=oe1.DEFAULT_PORT=oe1.Match=void 0;oe1.syncIterator=N$4;oe1.createInbox=B$4;var F$4=s70(),U$4=BG();oe1.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function N$4($){let Z=$[Symbol.asyncIterator]();return{async next(){let Q=await Z.next();if(Q.done)return Promise.resolve(null);return Promise.resolve(Q.value)}}}function B$4($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw U$4.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${F$4.nuid.next()}`}oe1.DEFAULT_PORT=4222;oe1.DEFAULT_HOST="127.0.0.1"});var cp=v((ee1)=>{Object.defineProperty(ee1,"__esModule",{value:!0});ee1.DataBuffer=void 0;var ae1=NG();class se1{buffers;byteLength;constructor(){this.buffers=[],this.byteLength=0}static concat(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let Q=new Uint8Array(Z),X=0;for(let Y=0;Y<$.length;Y++)Q.set($[Y],X),X+=$[Y].length;return Q}static fromAscii($){if(!$)$="";return ae1.TE.encode($)}static toAscii($){return ae1.TD.decode($)}reset(){this.buffers.length=0,this.byteLength=0}pack(){if(this.buffers.length>1){let $=new Uint8Array(this.byteLength),Z=0;for(let Q=0;Q<this.buffers.length;Q++)$.set(this.buffers[Q],Z),Z+=this.buffers[Q].length;this.buffers.length=0,this.buffers.push($)}}shift(){if(this.buffers.length){let $=this.buffers.shift();if($)return this.byteLength-=$.length,$}return new Uint8Array(0)}drain($){if(this.buffers.length){this.pack();let Z=this.buffers.pop();if(Z){let Q=this.byteLength;if($===void 0||$>Q)$=Q;let X=Z.subarray(0,$);if(Q>$)this.buffers.push(Z.subarray($));return this.byteLength=Q-$,X}}return new Uint8Array(0)}fill($,...Z){if($)this.buffers.push($),this.byteLength+=$.length;for(let Q=0;Q<Z.length;Q++)if(Z[Q]&&Z[Q].length)this.buffers.push(Z[Q]),this.byteLength+=Z[Q].length}peek(){if(this.buffers.length)return this.pack(),this.buffers[0];return new Uint8Array(0)}size(){return this.byteLength}length(){return this.buffers.length}}ee1.DataBuffer=se1});var Hj=v((Q0$)=>{Object.defineProperty(Q0$,"__esModule",{value:!0});Q0$.LF=Q0$.CR=Q0$.CRLF=Q0$.CR_LF_LEN=Q0$.CR_LF=void 0;Q0$.setTransportFactory=P$4;Q0$.defaultPort=A$4;Q0$.getUrlParseFn=T$4;Q0$.newTransport=R$4;Q0$.getResolveFn=I$4;Q0$.protoLen=Z0$;Q0$.extractProtocolMessage=q$4;var E$4=NG(),j$4=TO(),z$4=cp(),OG;function P$4($){OG=$}function A$4(){return OG!==void 0&&OG.defaultPort!==void 0?OG.defaultPort:j$4.DEFAULT_PORT}function T$4(){return OG!==void 0&&OG.urlParseFn?OG.urlParseFn:void 0}function R$4(){if(!OG||typeof OG.factory!=="function")throw Error("transport fn is not set");return OG.factory()}function I$4(){return OG!==void 0&&OG.dnsResolveFn?OG.dnsResolveFn:void 0}Q0$.CR_LF=`\r
|
|
1549
1549
|
`;Q0$.CR_LF_LEN=Q0$.CR_LF.length;Q0$.CRLF=z$4.DataBuffer.fromAscii(Q0$.CR_LF);Q0$.CR=new Uint8Array(Q0$.CRLF)[0];Q0$.LF=new Uint8Array(Q0$.CRLF)[1];function Z0$($){for(let Z=0;Z<$.length;Z++){let Q=Z+1;if($.byteLength>Q&&$[Z]===Q0$.CR&&$[Q]===Q0$.LF)return Q+1}return 0}function q$4($){let Z=Z0$($);if(Z>0){let X=new Uint8Array($).slice(0,Z);return E$4.TD.decode(X)}return""}});var Nt0=v((F0$)=>{Object.defineProperty(F0$,"__esModule",{value:!0});F0$.ipV4=K0$;F0$.isIP=y$4;F0$.parseIP=W0$;var lp=4,Fj=16,e70=48,J0$=57,Y0$=65,f$4=70,G0$=97,b$4=102,Ut0=16777215;function K0$($,Z,Q,X){let Y=new Uint8Array(Fj);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]=Q,Y[15]=X,Y}function y$4($){return W0$($)!==void 0}function W0$($){for(let Z=0;Z<$.length;Z++)switch($[Z]){case".":return H0$($);case":":return g$4($)}return}function H0$($){let Z=new Uint8Array(lp);for(let Q=0;Q<lp;Q++){if($.length===0)return;if(Q>0){if($[0]!==".")return;$=$.substring(1)}let{n:X,c:Y,ok:G}=h$4($);if(!G||X>255)return;$=$.substring(Y),Z[Q]=X}return K0$(Z[0],Z[1],Z[2],Z[3])}function g$4($){let Z=new Uint8Array(Fj),Q=-1;if($.length>=2&&$[0]===":"&&$[1]===":"){if(Q=0,$=$.substring(2),$.length===0)return Z}let X=0;while(X<Fj){let{n:Y,c:G,ok:J}=u$4($);if(!J||Y>65535)return;if(G<$.length&&$[G]==="."){if(Q<0&&X!=Fj-lp)return;if(X+lp>Fj)return;let K=H0$($);if(K===void 0)return;Z[X]=K[12],Z[X+1]=K[13],Z[X+2]=K[14],Z[X+3]=K[15],$="",X+=lp;break}if(Z[X]=Y>>8,Z[X+1]=Y,X+=2,$=$.substring(G),$.length===0)break;if($[0]!==":"||$.length==1)return;if($=$.substring(1),$[0]===":"){if(Q>=0)return;if(Q=X,$=$.substring(1),$.length===0)break}}if($.length!==0)return;if(X<Fj){if(Q<0)return;let Y=Fj-X;for(let G=X-1;G>=Q;G--)Z[G+Y]=Z[G];for(let G=Q+Y-1;G>=Q;G--)Z[G]=0}else if(Q>=0)return;return Z}function h$4($){let Z=0,Q=0;for(Z=0;Z<$.length&&e70<=$.charCodeAt(Z)&&$.charCodeAt(Z)<=J0$;Z++)if(Q=Q*10+($.charCodeAt(Z)-e70),Q>=Ut0)return{n:Ut0,c:Z,ok:!1};if(Z===0)return{n:0,c:0,ok:!1};return{n:Q,c:Z,ok:!0}}function u$4($){let Z=0,Q=0;for(Q=0;Q<$.length;Q++){if(e70<=$.charCodeAt(Q)&&$.charCodeAt(Q)<=J0$)Z*=16,Z+=$.charCodeAt(Q)-e70;else if(G0$<=$.charCodeAt(Q)&&$.charCodeAt(Q)<=b$4)Z*=16,Z+=$.charCodeAt(Q)-G0$+10;else if(Y0$<=$.charCodeAt(Q)&&$.charCodeAt(Q)<=f$4)Z*=16,Z+=$.charCodeAt(Q)-Y0$+10;else break;if(Z>=Ut0)return{n:0,c:Q,ok:!1}}if(Q===0)return{n:0,c:Q,ok:!1};return{n:Z,c:Q,ok:!0}}});var Et0=v((N0$)=>{Object.defineProperty(N0$,"__esModule",{value:!0});N0$.Servers=N0$.ServerImpl=void 0;N0$.isIPV4OrHostname=U0$;N0$.hostPort=wt0;var Bt0=Hj(),Ot0=s3(),Lt0=Nt0(),d$4=TO(),i$4=BG();function U0$($){if($.indexOf("[")!==-1||$.indexOf("::")!==-1)return!1;if($.indexOf(".")!==-1)return!0;if($.split(":").length<=2)return!0;return!1}function Dt0($){return!U0$($)}function p$4($){let Q=$.toUpperCase().indexOf("::FFFF:");if(Q!==-1&&$.indexOf(".")!==-1){let X=$.substring(Q+7);return X=X.replace("[",""),X.replace("]","")}return $}function wt0($){if($=$.trim(),$.match(/^(.*:\/\/)(.*)/m))$=$.replace(/^(.*:\/\/)(.*)/gm,"$2");if($=p$4($),Dt0($)&&$.indexOf("[")===-1)$=`[${$}]`;let Z=Dt0($)?$.match(/(]:)(\d+)/):$.match(/(:)(\d+)/),Q=Z&&Z.length===3&&Z[1]&&Z[2]?parseInt(Z[2]):d$4.DEFAULT_PORT,Y=new URL(`${Q===80?"https":"http"}://${$}`);Y.port=`${Q}`;let G=Y.hostname;if(G.charAt(0)==="[")G=G.substring(1,G.length-1);return{listen:Y.host,hostname:G,port:Q}}class py{src;listen;hostname;port;didConnect;reconnects;lastConnect;gossiped;tlsName;resolves;constructor($,Z=!1){this.src=$,this.tlsName="";let Q=wt0($);this.listen=Q.listen,this.hostname=Q.hostname,this.port=Q.port,this.didConnect=!1,this.reconnects=0,this.lastConnect=0,this.gossiped=Z}toString(){return this.listen}async resolve($){if(!$.fn||$.resolve===!1)return[this];let Z=[];if((0,Lt0.isIP)(this.hostname))return[this];else{let Q=await $.fn(this.hostname);if($.debug)console.log(`resolve ${this.hostname} = ${Q.join(",")}`);for(let X of Q){let Y=this.port===80?"https":"http",G=new URL(`${Y}://${Dt0(X)?"["+X+"]":X}`);G.port=`${this.port}`;let J=new py(G.host,!1);J.tlsName=this.hostname,Z.push(J)}}if($.randomize)(0,Ot0.shuffle)(Z);return this.resolves=Z,Z}}N0$.ServerImpl=py;class $Q0{firstSelect;servers;currentServer;tlsName;randomize;constructor($={}){this.firstSelect=!0,this.servers=[],this.tlsName="",this.randomize=$.randomize||!1}setServers($){if(!Array.isArray($)||$.length===0)throw i$4.InvalidArgumentError.format("servers","cannot be empty");let Z=(0,Bt0.getUrlParseFn)(),Q=new Map;for(let Y of this.servers)Q.set(Y.listen,Y);let X=[];for(let Y of $){Y=Z?Z(Y):Y;let{listen:G}=wt0(Y),J=Q.get(G);if(J)J.gossiped=!1,X.push(J);else X.push(new py(Y))}if(this.randomize)(0,Ot0.shuffle)(X);if(this.servers=X,this.currentServer===void 0||!X.includes(this.currentServer))this.currentServer=X[0],this.firstSelect=!0}clear(){this.servers.length=0}updateTLSName(){let $=this.getCurrentServer();if(!(0,Lt0.isIP)($.hostname))this.tlsName=$.hostname,this.servers.forEach((Z)=>{if(Z.gossiped)Z.tlsName=this.tlsName})}getCurrentServer(){return this.currentServer}addServer($,Z=!1){let Q=(0,Bt0.getUrlParseFn)();$=Q?Q($):$;let X=new py($,Z);if((0,Lt0.isIP)(X.hostname))X.tlsName=this.tlsName;this.servers.push(X)}selectServer(){if(this.firstSelect)return this.firstSelect=!1,this.currentServer;let $=this.servers.shift();if($)this.servers.push($),this.currentServer=$;return $}removeCurrentServer(){this.removeServer(this.currentServer)}removeServer($){if($){let Z=this.servers.indexOf($);this.servers.splice(Z,1)}}snapshot(){return $Q0.freezeAll(this.servers)}snapshotForHandler(){let $=this.currentServer;if(!$)return this.snapshot();let Z=this.servers.indexOf($);if(Z<=0)return this.snapshot();return $Q0.freezeAll([$,...this.servers.slice(0,Z),...this.servers.slice(Z+1)])}static freezeAll($){return $.map((Z)=>Object.freeze({hostname:Z.hostname,port:Z.port,listen:Z.listen,src:Z.src,tlsName:Z.tlsName,reconnects:Z.reconnects,lastConnect:Z.lastConnect,gossiped:Z.gossiped,didConnect:Z.didConnect}))}find($){return this.servers.find((Z)=>Z.listen===$.listen)}setCurrent($){this.currentServer=$}length(){return this.servers.length}next(){return this.servers.length?this.servers[0]:void 0}getServers(){return this.servers}update($,Z){let Q=[],X=[],Y=(0,Bt0.getUrlParseFn)(),G=new Map;if($.connect_urls&&$.connect_urls.length>0)$.connect_urls.forEach((K)=>{K=Y?Y(K,Z):K;let W=new py(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);X=X.concat(W[0].listen)}),G.forEach((K,W)=>{this.servers.push(K),Q.push(W)}),this.randomize&&Q.length>0){let K=this.currentServer,W=this.servers.filter((H)=>H!==K);(0,Ot0.shuffle)(W),this.servers=K?[K,...W]:W}return{added:Q,deleted:X}}}N0$.Servers=$Q0});var ZQ0=v((D0$)=>{Object.defineProperty(D0$,"__esModule",{value:!0});D0$.QueuedIteratorImpl=void 0;var jt0=s3(),O0$=BG();class L0${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,jt0.deferred)(),this.yields=[],this.iterClosed=(0,jt0.deferred)(),this.time=0,this.yielding=!1,this.didBreak=!1,this.profile=!1}[Symbol.asyncIterator](){return this.iterate()}push($){if(this.done)return;if(this.didBreak){if(typeof $==="function"){let Z=$;try{Z()}catch(Q){}}return}if(typeof $==="function")this.pendingFiltered++;this.yields.push($),this.signal.resolve()}async*iterate(){if(this.noIterator)throw new O0$.InvalidOperationError("iterator cannot be used when a callback is registered");if(this.yielding)throw new O0$.InvalidOperationError("iterator is already yielding");this.yielding=!0;try{while(!0){if(this.yields.length===0)await this.signal;if(this.err)throw this.err;let $=this.yields;this.inflight=$.length,this.yields=[];for(let Z=0;Z<$.length;Z++){if(typeof $[Z]==="function"){this.pendingFiltered--;let X=$[Z];try{X()}catch(Y){throw Y}if(this.err)throw this.err;continue}this.processed++,this.inflight--;let Q=this.profile?Date.now():0;yield $[Z],this.time=this.profile?Date.now()-Q:0}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,jt0.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}}D0$.QueuedIteratorImpl=L0$});var zt0=v((z0$)=>{Object.defineProperty(z0$,"__esModule",{value:!0});z0$.MuxSubscription=void 0;var r$4=TO(),E0$=BG();class j0${baseInbox;reqs;constructor(){this.reqs=new Map}size(){return this.reqs.size}init($){return this.baseInbox=`${(0,r$4.createInbox)($)}.`,this.baseInbox}add($){if(!isNaN($.received))$.received=0;this.reqs.set($.token,$)}get($){return this.reqs.get($)}cancel($){this.reqs.delete($.token)}getToken($){let Z=$.subject||"";if(Z.indexOf(this.baseInbox)===0)return Z.substring(this.baseInbox.length);return null}all(){return Array.from(this.reqs.values())}handleError($,Z){if($)return this.all().forEach((Q)=>{Q.resolver(Z,{})}),!0;if(Z.operation==="publish"){let Q=this.all().find((X)=>{return X.requestSubject===Z.subject});if(Q)return Q.resolver(Z,{}),!0}return!1}dispatcher(){return($,Z)=>{let Q=this.getToken(Z);if(Q){let X=this.get(Q);if(X){if($===null)$=Z?.data?.length===0&&Z.headers?.code===503?new E0$.NoRespondersError(X.requestSubject):null;X.resolver($,Z)}}}}close(){let $=new E0$.RequestError("connection closed");this.reqs.forEach((Z)=>{Z.resolver($,{})})}}z0$.MuxSubscription=j0$});var Pt0=v((T0$)=>{Object.defineProperty(T0$,"__esModule",{value:!0});T0$.Heartbeat=void 0;var a$4=s3();class A0${ph;interval;maxOut;timer;pendings;constructor($,Z,Q){this.ph=$,this.interval=Z,this.maxOut=Q,this.pendings=[]}start(){this.cancel(),this._schedule()}cancel($){if(this.timer)clearTimeout(this.timer),this.timer=void 0;if(this._reset(),$)this.ph.disconnect()}_schedule(){this.timer=setTimeout(()=>{if(this.ph.dispatchStatus({type:"ping",pendingPings:this.pendings.length+1}),this.pendings.length===this.maxOut){this.cancel(!0);return}let $=(0,a$4.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})}}T0$.Heartbeat=A0$});var Rt0=v((V0$)=>{Object.defineProperty(V0$,"__esModule",{value:!0});V0$.DenoBuffer=V0$.MAX_SIZE=V0$.AssertionError=void 0;V0$.assert=q0$;V0$.concat=M0$;V0$.append=e$4;V0$.readAll=$84;V0$.writeAll=Z84;var s$4=NG();class At0 extends Error{constructor($){super($);this.name="AssertionError"}}V0$.AssertionError=At0;function q0$($,Z="Assertion failed."){if(!$)throw new At0(Z)}var I0$=32768;V0$.MAX_SIZE=4294967294;function QQ0($,Z,Q=0){let X=Z.byteLength-Q;if($.byteLength>X)$=$.subarray(0,X);return Z.set($,Q),$.byteLength}function M0$($,Z){if($===void 0&&Z===void 0)return new Uint8Array(0);if($===void 0)return Z;if(Z===void 0)return $;let Q=new Uint8Array($.length+Z.length);return Q.set($,0),Q.set(Z,$.length),Q}function e$4($,Z){return M0$($,Uint8Array.of(Z))}class Tt0{_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($){q0$($<=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=QQ0(this._buf.subarray(this._off),$);return this._off+=Z,Z}writeByte($){return this.write(Uint8Array.of($))}writeString($){return this.write(s$4.TE.encode($))}write($){let Z=this._grow($.byteLength);return QQ0($,this._buf,Z)}_grow($){let Z=this.length;if(Z===0&&this._off!==0)this.reset();let Q=this._tryGrowByReslice($);if(Q>=0)return Q;let X=this.capacity;if($<=Math.floor(X/2)-Z)QQ0(this._buf.subarray(this._off),this._buf);else if(X+$>V0$.MAX_SIZE)throw Error("The buffer cannot be grown beyond the maximum size.");else{let Y=new Uint8Array(Math.min(2*X+$,V0$.MAX_SIZE));QQ0(this._buf.subarray(this._off),Y),this._buf=Y}return this._off=0,this._reslice(Math.min(Z+$,V0$.MAX_SIZE)),Z}grow($){if($<0)throw Error("Buffer._grow: negative count");let Z=this._grow($);this._reslice(Z)}readFrom($){let Z=0,Q=new Uint8Array(I0$);while(!0){let X=this.capacity-this.length<I0$,Y=X?Q:new Uint8Array(this._buf.buffer,this.length),G=$.read(Y);if(G===null)return Z;if(X)this.write(Y.subarray(0,G));else this._reslice(this.length+G);Z+=G}}}V0$.DenoBuffer=Tt0;function $84($){let Z=new Tt0;return Z.readFrom($),Z.bytes()}function Z84($,Z){let Q=0;while(Q<Z.length)Q+=$.write(Z.subarray(Q))}});var Mt0=v((v0$)=>{Object.defineProperty(v0$,"__esModule",{value:!0});v0$.cc=v0$.State=v0$.Parser=v0$.Kind=void 0;v0$.describe=W84;var It0=Rt0(),qt0=NG();v0$.Kind={OK:0,ERR:1,MSG:2,INFO:3,PING:4,PONG:5};function W84($){let Z,Q="";switch($.kind){case v0$.Kind.MSG:Z="MSG";break;case v0$.Kind.OK:Z="OK";break;case v0$.Kind.ERR:Z="ERR",Q=qt0.TD.decode($.data);break;case v0$.Kind.PING:Z="PING";break;case v0$.Kind.PONG:Z="PONG";break;case v0$.Kind.INFO:Z="INFO",Q=qt0.TD.decode($.data)}return`${Z}: ${Q}`}function S0$(){let $={};return $.sid=-1,$.hdr=-1,$.size=-1,$}var C0$=48,H84=57,ny=67108864;class _0${dispatcher;state;as;drop;hdr;ma;argBuf;msgBuf;constructor($){this.dispatcher=$,this.state=v0$.State.OP_START,this.as=0,this.drop=0,this.hdr=0}parse($){let Z;for(Z=0;Z<$.length;Z++){let Q=$[Z];switch(this.state){case v0$.State.OP_START:switch(Q){case v0$.cc.M:case v0$.cc.m:this.state=v0$.State.OP_M,this.hdr=-1,this.ma=S0$();break;case v0$.cc.H:case v0$.cc.h:this.state=v0$.State.OP_H,this.hdr=0,this.ma=S0$();break;case v0$.cc.P:case v0$.cc.p:this.state=v0$.State.OP_P;break;case v0$.cc.PLUS:this.state=v0$.State.OP_PLUS;break;case v0$.cc.MINUS:this.state=v0$.State.OP_MINUS;break;case v0$.cc.I:case v0$.cc.i:this.state=v0$.State.OP_I;break;default:throw this.fail($.subarray(Z))}break;case v0$.State.OP_H:switch(Q){case v0$.cc.M:case v0$.cc.m:this.state=v0$.State.OP_M;break;default:throw this.fail($.subarray(Z))}break;case v0$.State.OP_M:switch(Q){case v0$.cc.S:case v0$.cc.s:this.state=v0$.State.OP_MS;break;default:throw this.fail($.subarray(Z))}break;case v0$.State.OP_MS:switch(Q){case v0$.cc.G:case v0$.cc.g:this.state=v0$.State.OP_MSG;break;default:throw this.fail($.subarray(Z))}break;case v0$.State.OP_MSG:switch(Q){case v0$.cc.SPACE:case v0$.cc.TAB:this.state=v0$.State.OP_MSG_SPC;break;default:throw this.fail($.subarray(Z))}break;case v0$.State.OP_MSG_SPC:switch(Q){case v0$.cc.SPACE:case v0$.cc.TAB:continue;default:this.state=v0$.State.MSG_ARG,this.as=Z}break;case v0$.State.MSG_ARG:switch(Q){case v0$.cc.CR:this.drop=1;break;case v0$.cc.NL:{let X=this.argBuf?this.argBuf.bytes():$.subarray(this.as,Z-this.drop);this.processMsgArgs(X),this.drop=0,this.as=Z+1,this.state=v0$.State.MSG_PAYLOAD,Z=this.as+this.ma.size-1;break}default:if(this.argBuf)this.argBuf.writeByte(Q)}break;case v0$.State.MSG_PAYLOAD:if(this.msgBuf)if(this.msgBuf.length>=this.ma.size){let X=this.msgBuf.bytes({copy:!1});this.dispatcher.push({kind:v0$.Kind.MSG,msg:this.ma,data:X}),this.argBuf=void 0,this.msgBuf=void 0,this.state=v0$.State.MSG_END}else{let X=this.ma.size-this.msgBuf.length,Y=$.length-Z;if(Y<X)X=Y;if(X>0)this.msgBuf.write($.subarray(Z,Z+X)),Z=Z+X-1;else this.msgBuf.writeByte(Q)}else if(Z-this.as>=this.ma.size)this.dispatcher.push({kind:v0$.Kind.MSG,msg:this.ma,data:$.subarray(this.as,Z)}),this.argBuf=void 0,this.msgBuf=void 0,this.state=v0$.State.MSG_END;break;case v0$.State.MSG_END:switch(Q){case v0$.cc.NL:this.drop=0,this.as=Z+1,this.state=v0$.State.OP_START;break;default:continue}break;case v0$.State.OP_PLUS:switch(Q){case v0$.cc.O:case v0$.cc.o:this.state=v0$.State.OP_PLUS_O;break;default:throw this.fail($.subarray(Z))}break;case v0$.State.OP_PLUS_O:switch(Q){case v0$.cc.K:case v0$.cc.k:this.state=v0$.State.OP_PLUS_OK;break;default:throw this.fail($.subarray(Z))}break;case v0$.State.OP_PLUS_OK:switch(Q){case v0$.cc.NL:this.dispatcher.push({kind:v0$.Kind.OK}),this.drop=0,this.state=v0$.State.OP_START;break}break;case v0$.State.OP_MINUS:switch(Q){case v0$.cc.E:case v0$.cc.e:this.state=v0$.State.OP_MINUS_E;break;default:throw this.fail($.subarray(Z))}break;case v0$.State.OP_MINUS_E:switch(Q){case v0$.cc.R:case v0$.cc.r:this.state=v0$.State.OP_MINUS_ER;break;default:throw this.fail($.subarray(Z))}break;case v0$.State.OP_MINUS_ER:switch(Q){case v0$.cc.R:case v0$.cc.r:this.state=v0$.State.OP_MINUS_ERR;break;default:throw this.fail($.subarray(Z))}break;case v0$.State.OP_MINUS_ERR:switch(Q){case v0$.cc.SPACE:case v0$.cc.TAB:this.state=v0$.State.OP_MINUS_ERR_SPC;break;default:throw this.fail($.subarray(Z))}break;case v0$.State.OP_MINUS_ERR_SPC:switch(Q){case v0$.cc.SPACE:case v0$.cc.TAB:continue;default:this.state=v0$.State.MINUS_ERR_ARG,this.as=Z}break;case v0$.State.MINUS_ERR_ARG:switch(Q){case v0$.cc.CR:this.drop=1;break;case v0$.cc.NL:{let X;if(this.argBuf)X=this.argBuf.bytes(),this.argBuf=void 0;else X=$.subarray(this.as,Z-this.drop);this.dispatcher.push({kind:v0$.Kind.ERR,data:X}),this.drop=0,this.as=Z+1,this.state=v0$.State.OP_START;break}default:if(this.argBuf)this.argBuf.write(Uint8Array.of(Q))}break;case v0$.State.OP_P:switch(Q){case v0$.cc.I:case v0$.cc.i:this.state=v0$.State.OP_PI;break;case v0$.cc.O:case v0$.cc.o:this.state=v0$.State.OP_PO;break;default:throw this.fail($.subarray(Z))}break;case v0$.State.OP_PO:switch(Q){case v0$.cc.N:case v0$.cc.n:this.state=v0$.State.OP_PON;break;default:throw this.fail($.subarray(Z))}break;case v0$.State.OP_PON:switch(Q){case v0$.cc.G:case v0$.cc.g:this.state=v0$.State.OP_PONG;break;default:throw this.fail($.subarray(Z))}break;case v0$.State.OP_PONG:switch(Q){case v0$.cc.NL:this.dispatcher.push({kind:v0$.Kind.PONG}),this.drop=0,this.state=v0$.State.OP_START;break}break;case v0$.State.OP_PI:switch(Q){case v0$.cc.N:case v0$.cc.n:this.state=v0$.State.OP_PIN;break;default:throw this.fail($.subarray(Z))}break;case v0$.State.OP_PIN:switch(Q){case v0$.cc.G:case v0$.cc.g:this.state=v0$.State.OP_PING;break;default:throw this.fail($.subarray(Z))}break;case v0$.State.OP_PING:switch(Q){case v0$.cc.NL:this.dispatcher.push({kind:v0$.Kind.PING}),this.drop=0,this.state=v0$.State.OP_START;break}break;case v0$.State.OP_I:switch(Q){case v0$.cc.N:case v0$.cc.n:this.state=v0$.State.OP_IN;break;default:throw this.fail($.subarray(Z))}break;case v0$.State.OP_IN:switch(Q){case v0$.cc.F:case v0$.cc.f:this.state=v0$.State.OP_INF;break;default:throw this.fail($.subarray(Z))}break;case v0$.State.OP_INF:switch(Q){case v0$.cc.O:case v0$.cc.o:this.state=v0$.State.OP_INFO;break;default:throw this.fail($.subarray(Z))}break;case v0$.State.OP_INFO:switch(Q){case v0$.cc.SPACE:case v0$.cc.TAB:this.state=v0$.State.OP_INFO_SPC;break;default:throw this.fail($.subarray(Z))}break;case v0$.State.OP_INFO_SPC:switch(Q){case v0$.cc.SPACE:case v0$.cc.TAB:continue;default:this.state=v0$.State.INFO_ARG,this.as=Z}break;case v0$.State.INFO_ARG:switch(Q){case v0$.cc.CR:this.drop=1;break;case v0$.cc.NL:{let X;if(this.argBuf)X=this.argBuf.bytes(),this.argBuf=void 0;else X=$.subarray(this.as,Z-this.drop);this.dispatcher.push({kind:v0$.Kind.INFO,data:X}),this.drop=0,this.as=Z+1,this.state=v0$.State.OP_START;break}default:if(this.argBuf)this.argBuf.writeByte(Q)}break;default:throw this.fail($.subarray(Z))}}if((this.state===v0$.State.MSG_ARG||this.state===v0$.State.MINUS_ERR_ARG||this.state===v0$.State.INFO_ARG)&&!this.argBuf)this.argBuf=new It0.DenoBuffer($.subarray(this.as,Z-this.drop));if(this.state===v0$.State.MSG_PAYLOAD&&!this.msgBuf){if(!this.argBuf)this.cloneMsgArg();this.msgBuf=new It0.DenoBuffer($.subarray(this.as))}}cloneMsgArg(){let $=this.ma.subject.length,Z=this.ma.reply?this.ma.reply.length:0,Q=new Uint8Array($+Z);if(Q.set(this.ma.subject),this.ma.reply)Q.set(this.ma.reply,$);if(this.argBuf=new It0.DenoBuffer(Q),this.ma.subject=Q.subarray(0,$),this.ma.reply)this.ma.reply=Q.subarray($)}processMsgArgs($){if(this.hdr>=0)return this.processHeaderMsgArgs($);let Z=[],Q=-1;for(let X=0;X<$.length;X++)switch($[X]){case v0$.cc.SPACE:case v0$.cc.TAB:case v0$.cc.CR:case v0$.cc.NL:if(Q>=0)Z.push($.subarray(Q,X)),Q=-1;break;default:if(Q<0)Q=X}if(Q>=0)Z.push($.subarray(Q));switch(Z.length){case 3:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=void 0,this.ma.size=this.protoParseInt(Z[2],ny);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],ny);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}: ${qt0.TD.decode($)}`)}processHeaderMsgArgs($){let Z=[],Q=-1;for(let X=0;X<$.length;X++)switch($[X]){case v0$.cc.SPACE:case v0$.cc.TAB:case v0$.cc.CR:case v0$.cc.NL:if(Q>=0)Z.push($.subarray(Q,X)),Q=-1;break;default:if(Q<0)Q=X}if(Q>=0)Z.push($.subarray(Q));switch(Z.length){case 4:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=void 0,this.ma.hdr=this.protoParseInt(Z[2],ny),this.ma.size=this.protoParseInt(Z[3],ny);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],ny),this.ma.size=this.protoParseInt(Z[4],ny);break;default:throw this.fail($,"processHeaderMsgArgs Parse Error")}if(this.ma.sid<0)throw this.fail($,"processHeaderMsgArgs Bad or Missing Sid Error");if(this.ma.hdr<0||this.ma.hdr>this.ma.size)throw this.fail($,"processHeaderMsgArgs Bad or Missing Header Size Error");if(this.ma.size<0)throw this.fail($,"processHeaderMsgArgs Bad or Missing Size Error")}protoParseInt($,Z){if($.length===0||$.length>15)return-1;let Q=0;for(let X=0;X<$.length;X++){if($[X]<C0$||$[X]>H84)return-1;Q=Q*10+($[X]-C0$)}return Z!==void 0&&Q>Z?-1:Q}}v0$.Parser=_0$;v0$.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};v0$.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 GQ0=v((f0$)=>{Object.defineProperty(f0$,"__esModule",{value:!0});f0$.MsgHdrsImpl=void 0;f0$.canonicalMIMEHeaderKey=kt0;f0$.headers=N84;var x0$=NG(),e3=TO(),YQ0=BG();function kt0($){let F=!0,U=Array($.length);for(let N=0;N<$.length;N++){let B=$.charCodeAt(N);if(B===58||B<33||B>126)throw YQ0.InvalidArgumentError.format("header",`'${$[N]}' is not a valid character in a header name`);if(F&&97<=B&&B<=122)B-=32;else if(!F&&65<=B&&B<=90)B+=32;U[N]=B,F=B==45}return String.fromCharCode(...U)}function N84($=0,Z=""){if($===0&&Z!=="")throw YQ0.InvalidArgumentError.format("code","is required");else if($>0&&Z==="")throw YQ0.InvalidArgumentError.format("description","is required");return new ty($,Z)}var Vt0="NATS/1.0";class ty{_code;headers;_description;constructor($=0,Z=""){this._code=$,this._description=Z,this.headers=new Map}[Symbol.iterator](){return this.headers.entries()}size(){return this.headers.size}equals($){if($&&this.headers.size===$.headers.size&&this._code===$._code){for(let[Z,Q]of this.headers){let X=$.values(Z);if(Q.length!==X.length)return!1;let Y=[...Q].sort(),G=[...X].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 ty,X=x0$.TD.decode($).split(`\r
|
|
1550
1550
|
`),Y=X[0];if(Y!==Vt0){let G=Y.replace(Vt0,"").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(X.length>=1)X.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 $=Vt0;if(this._code>0&&this._description!=="")$+=` ${this._code} ${this._description}`;for(let[Z,Q]of this.headers)for(let X=0;X<Q.length;X++)$=`${$}\r
|
|
1551
1551
|
${Z}: ${Q[X]}`;return`${$}\r
|
package/dist/server/server.js
CHANGED
|
@@ -2980,7 +2980,7 @@ Respond with ONLY a JSON object of this shape, and nothing else:
|
|
|
2980
2980
|
${G.join(`
|
|
2981
2981
|
`)}`:Y}function zB6($){let Z=new Set;for(let Q of $)for(let X of Q.split(`
|
|
2982
2982
|
`)){let Y=X.trim();if(/^Co-authored-by:\s/i.test(Y))Z.add(Y)}return[...Z]}var Md$=200,HB6=12,NB6,OB6=300,XQ1=3;var YQ1=D(()=>{Zw();gT0();NB6={aheadBy:0,behindBy:0,files:[]}});function AB6($){if(!$||$.includes(".."))return!1;return PB6.test($)}function Vd$($){let Z=typeof $.__resolveType==="string"?$.__resolveType:null;if(!Z||!AB6(Z))return null;let{__resolveType:Q,...X}=$;return{resolveType:Z,payload:X}}function Sd$($,Z){return`${$.replace(/\/+$/,"")}/deco/invoke/${Z}`}var PB6;var Cd$=D(()=>{PB6=/^[\w./@-]+$/});function Cs($,Z){let Q=$?.githubRepo;if(!Q?.owner||!Q?.name)return null;if(!Q.connectionId)return Q;if(!Z.includes(Q.connectionId))return null;return Q}async function _d$($,Z,Q,X){if(!X.connectionId)throw new bv("Push requires a connected GitHub account. Connect mcp-github for this project and restart the sandbox.");let Y=$.organization?.id;if(!Y)throw new bv(H9);await uO({ctx:$,connectionId:X.connectionId,organizationId:Y,forceRefresh:!0,onLegacyMintError:(H)=>{let U=H instanceof Error?H.message:H9;throw new bv(U)}});let{cloneUrl:G,gitUserName:J,gitUserEmail:W}=await xK(X.connectionId,X.owner,X.name,$.db,$.vault).catch((H)=>{let{code:U,message:N}=S9$(H instanceof Error?H.message:String(H));throw U?new bv(N):H}),K=Gl($),F=await Z.proxyDaemonRequest(Q,"/_sandbox/config",{method:"PUT",headers:new Headers({"content-type":"application/json"}),body:JSON.stringify({git:{repository:{cloneUrl:G},identity:{userName:J,userEmail:W}},...K?{operator:K}:{}})});if(!F.ok){let H=await hO(F,TB6).catch(()=>F.statusText);throw Error(`Failed to refresh sandbox git credentials (${F.status}): ${H}`)}}var TB6=10485760,bv;var GQ1=D(()=>{FJ();MT0();Pn();pi0();oy();bv=class bv extends Error{constructor($){super($);this.name="GitPushAuthError"}}});function IB6($){let Z=$.startsWith("thread:")?$.slice(7):$;if(!Z||Z.length>255||Z.includes("..")||Z.startsWith("/")||Z.endsWith("/")||Z.endsWith(".lock")||!RB6.test(Z))throw Error(`Invalid branch name: ${$}`)}function xv($){return AbortSignal.any([$.req.raw.signal,AbortSignal.timeout(MB6)])}async function VB6($,Z){let Q=$.var.studioContext,X=WJ(Z.branch),Y=$.req.query("thread")??X,G=Y&&Y===X?Z.branchThread:Y?await Q.storage.threads.get(Y).catch(()=>null):null,J=G?.virtual_mcp_id===Z.virtualMcpId?G:null,W=_C(J?.metadata?.runtime);if(W)return W;let K=OD0(Z.virtualMcpMetadata),F=K==="cms"?await h71(Q,{claimName:Z.claimName}):"alive",H=K==="cms"&&F!=="alive"?"cms":"sandbox",U=!!J&&(F==="gone"||F==="alive"&&K==="cms");if(U&&J)rn(Q,J.id,H);if(K==="cms")console.log("sandbox proxy: no runtime stamp",{route:$.req.path,method:$.req.method,reason:J?"unstamped":"threadless",liveness:F,resolved:H,stamped:U});return H}async function SB6($){let Z=$.get("vmClaim");if(Z.runner)return Z.runner;try{return await FX($.var.studioContext)}catch{return null}}function yv($){let{runner:Z}=$.get("vmClaim");if(!Z)return $.json({error:"No sandbox runner configured"},503);return Z}async function Hl($){let{virtualMcpMetadata:Z,connectionIds:Q}=$.get("vmClaim"),X=$.var.studioContext,Y=Cs(Z,Q);if(!Y)throw new d4(404,"AUTH","repo","Project has no GitHub repository");let G=n(X);return kT0(X,G.id,Y)}function JQ1($,Z){if(Z instanceof SA0)return $.json({error:Z.message},429,{...R5,...Z.retryAfterMs===null?{}:{"Retry-After":String(Math.ceil(Z.retryAfterMs/1000))}});if(Z instanceof d4){let X=Z.status===404?404:Z.status===409||Z.status===422?409:502;return $.json({error:Z.message},X,R5)}let Q=Z instanceof Error?Z.message:String(Z);return $.json({error:Q},502,R5)}async function bd$($,Z,Q){let X;try{X=await fetch(Z,Q)}catch{return $.json({error:"Preview unreachable"},502)}let Y;try{Y=await X.text()}catch{return $.json({error:"Preview unreachable"},502)}return new Response(Y,{status:X.status,headers:{"content-type":X.headers.get("content-type")??"application/json"}})}async function xd$($){try{let Z=await Hl($),Q=await hT0(Z,$.get("vmClaim").branch);return $.json(Q,200,R5)}catch(Z){return JQ1($,Z)}}function _s($,Z){let X=(cT0.get($)??Promise.resolve()).catch(()=>{}).then(Z),Y=X.catch(()=>{});return cT0.set($,Y),Y.finally(()=>{if(cT0.get($)===Y)cT0.delete($)}),X}async function eZ($,Z,Q){if(!Q?.runner&&$.get("vmClaim").runtime==="cms")return $.json({error:"sandbox not found: this session is sandbox-less"},404,R5);let X=Q?.runner??yv($);if(X instanceof Response)return X;let{claimName:Y,userId:G,projectRef:J}=$.get("vmClaim"),W=Q?.method??"POST",K=null,F=new Headers;if(Q?.jsonBody!==void 0)K=Q.jsonBody,F.set("content-type","application/json");else if(Q?.forwardJsonBody)K=await $.req.text(),F.set("content-type","application/json");let H=Q?.signal,U={method:W,headers:F,body:K,...H?{signal:H}:{}},N=async()=>{let B=await X.proxyDaemonRequest(Y,Z,U);if(Q?.map404to410&&B.status===404){try{await B.body?.cancel()}catch{}if(await X.adoptLiveClaim({userId:G,projectRef:J},Y))B=await X.proxyDaemonRequest(Y,Z,U);if(B.status===404){try{await B.body?.cancel()}catch{}return new Response(JSON.stringify({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."}),{status:410,headers:{"content-type":"application/json",...R5}})}}let O=await B.text(),w=Q?.redactRepoDir?CB6(O):O,L=B.headers.get("content-type")??"application/json";return new Response(w,{status:B.status,headers:{"content-type":L,...R5}})};try{if(H){let B=N();return B.catch(()=>{}),await Promise.race([B,new Promise((w,L)=>{if(H.aborted)return L(H.reason);H.addEventListener("abort",()=>L(H.reason),{once:!0})})])}return await N()}catch(B){let O=B instanceof Error?B.message:String(B);return $.json({error:`Daemon unreachable: ${O}`},502)}}function CB6($){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 dT0($,Z,Q,X="GET",Y){let G=await $.proxyDaemonRequest(Z,Q,{method:X,headers:new Headers,body:null});if(G.status===404&&Y){try{await G.body?.cancel()}catch{}if(await $.adoptLiveClaim(Y,Z))G=await $.proxyDaemonRequest(Z,Q,{method:X,headers:new Headers,body:null})}if(G.status===404){try{await G.body?.cancel()}catch{}throw Error("SANDBOX_GONE")}let J=await G.text();if(!G.ok){let W=`Daemon error (${G.status})`;try{W=JSON.parse(J).error??W}catch{}throw Error(W)}return JSON.parse(J)}function _B6($){return yd$.includes($)}var RB6,vd$=524288,qB6=65536,MB6=1e4,fd$=2000,kB6,cT0,R5,yd$,gd$=()=>{let $=new J1;$.use("/:virtualMcpId/:branch/*",kB6),$.post("/:virtualMcpId/:branch/write",(Q)=>eZ(Q,"/_sandbox/write",{forwardJsonBody:!0,signal:xv(Q)})),$.post("/:virtualMcpId/:branch/unlink",(Q)=>eZ(Q,"/_sandbox/unlink",{forwardJsonBody:!0,signal:xv(Q)})),$.post("/:virtualMcpId/:branch/mkdir",(Q)=>eZ(Q,"/_sandbox/mkdir",{forwardJsonBody:!0,signal:xv(Q)})),$.post("/:virtualMcpId/:branch/rename",(Q)=>eZ(Q,"/_sandbox/rename",{forwardJsonBody:!0,signal:xv(Q)})),$.post("/:virtualMcpId/:branch/read",(Q)=>eZ(Q,"/_sandbox/read",{forwardJsonBody:!0,signal:xv(Q)})),$.post("/:virtualMcpId/:branch/glob",(Q)=>eZ(Q,"/_sandbox/glob",{forwardJsonBody:!0,signal:xv(Q)})),$.post("/:virtualMcpId/:branch/grep",(Q)=>eZ(Q,"/_sandbox/grep",{forwardJsonBody:!0,signal:xv(Q)})),$.post("/:virtualMcpId/:branch/exec/:script",async(Q)=>{let X=Q.req.param("script");if(!X)return Q.json({error:"missing script name"},400);return eZ(Q,`/_sandbox/exec/${encodeURIComponent(X)}`)}),$.post("/:virtualMcpId/:branch/exec/:script/kill",async(Q)=>{let X=Q.req.param("script");if(!X)return Q.json({error:"missing script name"},400);return eZ(Q,`/_sandbox/exec/${encodeURIComponent(X)}/kill`)}),$.get("/:virtualMcpId/:branch/config",(Q)=>eZ(Q,"/_sandbox/config",{method:"GET",map404to410:!0,redactRepoDir:!0})),$.put("/:virtualMcpId/:branch/config",(Q)=>eZ(Q,"/_sandbox/config",{method:"PUT",forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/setup/:step",async(Q)=>{let X=Q.req.param("step");if(!X||!_B6(X))return Q.json({error:`step must be one of: ${yd$.join(", ")}`},400);let Y=Q.get("vmClaim"),G=await h71(Q.var.studioContext,{claimName:Y.claimName})==="gone"?null:await SB6(Q);if(!G)return Q.json({error:"sandbox not found: nothing is running at this ref"},404,R5);if(X==="start"){let J=n(Q.var.studioContext),W=ny(Y.virtualMcpMetadata);try{await v70({ctx:Q.var.studioContext,runner:G,handle:Y.claimName,orgId:J.id,userId:Y.callerUserId,entries:W})}catch(K){let F=K instanceof Error?K.message:String(K);return Q.json({error:`Failed to push env to daemon: ${F}`},502)}}return eZ(Q,`/_sandbox/setup/${X}`,{signal:Q.req.raw.signal,map404to410:!0,runner:G})}),$.get("/:virtualMcpId/:branch/events",(Q)=>{let X=Q.get("vmClaim");if(!X.runner)return QN(Q,async(Y)=>{await Y.writeSSE({event:"phase",data:JSON.stringify({kind:"failed",reason:"unknown",message:"No sandbox runner configured on this studio instance."})})});return gc$(Q,{ctx:Q.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",(Q)=>{if(Q.get("vmClaim").runtime==="cms")return xd$(Q);return Z(Q)});let Z=(Q)=>eZ(Q,"/_sandbox/git/status",{method:"GET",map404to410:!0,signal:AbortSignal.any([Q.req.raw.signal,AbortSignal.timeout(fd$)])});return $.post("/:virtualMcpId/:branch/git/status",(Q)=>{if(Q.get("vmClaim").runtime==="cms")return xd$(Q);return eZ(Q,"/_sandbox/git/status",{map404to410:!0,signal:AbortSignal.any([Q.req.raw.signal,AbortSignal.timeout(fd$)])})}),$.post("/:virtualMcpId/:branch/git/diff",async(Q)=>{let X=Q.get("vmClaim");if(X.runtime==="cms")try{let Y=await Q.req.json().catch(()=>({})),G=await Hl(Q),J=await uT0(G,X.branch,Y.base);return Q.json(J,200,R5)}catch(Y){return JQ1(Q,Y)}return eZ(Q,"/_sandbox/git/diff",{forwardJsonBody:!0,map404to410:!0})}),$.post("/:virtualMcpId/:branch/git/publish",async(Q)=>{if(Q.get("vmClaim").runtime==="cms")return Q.json({ok:!0},200,R5);let X=yv(Q);if(X instanceof Response)return X;let{claimName:Y,virtualMcpMetadata:G,connectionIds:J}=Q.get("vmClaim"),W=Q.var.studioContext;return _s(Y,async()=>{try{await u71(W,X,Y);let K=Cs(G,J);if(K)await _d$(W,X,Y,K)}catch(K){if(K instanceof bv)return Q.json({error:K.message},403,R5);let F=K instanceof Error?K.message:String(K);return Q.json({error:F},502,R5)}return eZ(Q,"/_sandbox/git/publish",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/discard",async(Q)=>{let X=Q.get("vmClaim");if(X.runtime==="cms")return _s(X.claimName,async()=>{let Y=await Q.req.json().catch(()=>({})),G=Array.isArray(Y.filepaths)?Y.filepaths.filter((J)=>typeof J==="string"):[];if(G.length===0)return Q.json({error:"filepaths is required"},400,R5);try{let J=await Hl(Q);return await kd$(J,X.branch,G),Q.json({ok:!0},200,R5)}catch(J){let W=J instanceof d4&&J.status===409?409:502,K=J instanceof Error?J.message:String(J);return Q.json({error:K},W,R5)}});return _s(X.claimName,()=>eZ(Q,"/_sandbox/git/discard",{forwardJsonBody:!0,map404to410:!0}))}),$.post("/:virtualMcpId/:branch/git/rebase",async(Q)=>{let X=Q.get("vmClaim");if(X.runtime==="cms")return _s(X.claimName,async()=>{try{let W=await Q.req.json().catch(()=>({})),K=await Hl(Q),F=W.base??await K.getDefaultBranch();return await lT0(K,X.branch,F),Q.json({ok:!0},200,R5)}catch(W){return JQ1(Q,W)}});let Y=yv(Q);if(Y instanceof Response)return Y;let{claimName:G}=Q.get("vmClaim"),J=Q.var.studioContext;return _s(G,async()=>{try{await u71(J,Y,G)}catch(W){let K=W instanceof Error?W.message:String(W);return Q.json({error:K},502,R5)}return eZ(Q,"/_sandbox/git/rebase",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/suggest-commit",a5({maxSize:vd$,onError:(Q)=>Q.json({error:"Payload too large"},413,R5)}),async(Q)=>{let X=Q.get("vmClaim"),Y=null;if(X.runtime!=="cms"){let F=yv(Q);if(F instanceof Response)return F;Y=F}let{claimName:G,userId:J,projectRef:W}=X,K=Q.var.studioContext;try{let F=await Q.req.json().catch(()=>({})),H=F.status,U=F.diff,N=U!=null&&typeof U.diffs==="object"&&U.diffs!==null,[B,O]=d71(H)&&N?[H,U]:Y?await Promise.all([dT0(Y,G,"/_sandbox/git/status","GET",{userId:J,projectRef:W}),dT0(Y,G,"/_sandbox/git/diff","GET",{userId:J,projectRef:W})]):await(async()=>{let L=await Hl(Q);return Promise.all([hT0(L,X.branch),uT0(L,X.branch)])})(),w=await dc$(K,B,O);return Q.json(w,200,R5)}catch(F){let H=F instanceof Error?F.message:String(F);if(H==="SANDBOX_GONE")return Q.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,R5);return Q.json({error:H},502,R5)}}),$.post("/:virtualMcpId/:branch/git/judge-review",a5({maxSize:vd$,onError:(Q)=>Q.json({error:"Payload too large"},413,R5)}),async(Q)=>{let X=Q.get("vmClaim"),Y=null;if(X.runtime!=="cms"){let F=yv(Q);if(F instanceof Response)return F;Y=F}let{claimName:G,userId:J,projectRef:W}=X,K=Q.var.studioContext;try{let F=await Q.req.json().catch(()=>({})),H=F.status,U=F.diff,N=U!=null&&typeof U.diffs==="object"&&U.diffs!==null,[B,O]=d71(H)&&N?[H,U]:Y?await Promise.all([dT0(Y,G,"/_sandbox/git/status","GET",{userId:J,projectRef:W}),dT0(Y,G,"/_sandbox/git/diff","GET",{userId:J,projectRef:W})]):await(async()=>{let L=await Hl(Q);return Promise.all([hT0(L,X.branch),uT0(L,X.branch)])})(),w=await ic$(K,B,O,typeof F.language==="string"?F.language:void 0);return Q.json(w,200,R5)}catch(F){let H=F instanceof Error?F.message:String(F);if(H==="SANDBOX_GONE")return Q.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,R5);return Q.json({error:H},502,R5)}}),$.get("/:virtualMcpId/:branch/preview-fetch",async(Q)=>{let X=yv(Q);if(X instanceof Response)return X;let{claimName:Y}=Q.get("vmClaim"),G=Q.req.query("path");if(!G||!G.startsWith("/")||G.startsWith("//")||G.includes("..")||G.includes("\\"))return Q.json({error:"Path not allowed"},403);let J;try{J=await X.getPreviewUrl(Y)}catch{return Q.json({error:"Preview not available"},502)}if(!J)return Q.json({error:"Preview not available"},502);let W=J.replace(/\/+$/,"");return bd$(Q,`${W}${G}`)}),$.post("/:virtualMcpId/:branch/preview-invoke",a5({maxSize:qB6,onError:(Q)=>Q.json({error:"Payload too large"},413)}),async(Q)=>{let X=yv(Q);if(X instanceof Response)return X;let{claimName:Y}=Q.get("vmClaim"),G;try{G=await X.getPreviewUrl(Y)}catch{return Q.json({error:"Preview not available"},502)}if(!G)return Q.json({error:"Preview not available"},502);let J;try{J=await Q.req.json()}catch{return Q.json({error:"Invalid JSON body"},400)}if(!J||typeof J!=="object"||Array.isArray(J))return Q.json({error:"Invalid JSON body"},400);let W=Vd$(J);if(!W)return Q.json({error:"Invalid or missing __resolveType"},400);let K=Sd$(G,W.resolveType);return bd$(Q,K,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(W.payload),signal:AbortSignal.timeout(30000)})}),$};var hd$=D(()=>{d$();VF();Yl();g71();Dn();bc$();n3();Ng();xc$();s3();yc$();hc$();di0();jn();p71();pc$();t71();Zw();YQ1();Cd$();GQ1();RB6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;kB6=qT0(async($,Z)=>{let Q=$.var.studioContext;try{t(Q)}catch{return $.json({error:"Unauthorized"},401)}let X=t0(Q);if(!X)return $.json({error:"Unauthorized"},401);let Y;try{Y=n(Q)}catch{return $.json({error:"Organization scope required"},403)}let G=$.req.param("virtualMcpId"),J=$.req.param("branch");if(!G||!J)return $.json({error:"virtualMcpId and branch are required"},400);try{IB6(J)}catch(w){let L=w instanceof Error?w.message:String(w);return $.json({error:L},400)}let W=await Q.storage.virtualMcps.findById(G);if(!W||W.organization_id!==Y.id)return $.json({error:"Virtual MCP not found"},404);let K=Bn({orgId:Y.id,virtualMcpId:G,branch:J}),F=await yi0(Q,J),H=gi0(F,X),U=fc$({userId:H,projectRef:K}),N=W.metadata??null,B=await VB6($,{claimName:U,branch:J,virtualMcpId:G,sandboxUserId:H,virtualMcpMetadata:N,branchThread:F});if(B==="cms")return $.set("vmClaim",{claimName:U,callerUserId:X,runner:null,virtualMcpId:G,branch:J,userId:H,projectRef:K,virtualMcpMetadata:N,connectionIds:W.connections?.map((w)=>w.connection_id)??[],runtime:B}),Z();let O;try{O=await FX(Q)}catch{O=null}if(!O)return $.json({error:"No sandbox runner found"},404);return $.set("vmClaim",{claimName:U,callerUserId:X,runner:O,virtualMcpId:G,branch:J,userId:H,projectRef:K,virtualMcpMetadata:N,connectionIds:W.connections?.map((w)=>w.connection_id)??[],runtime:B}),Z()});cT0=new Map;R5={"Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache"};yd$=["clone","install","start"]});function ud$($,Z,Q){let X=WQ1.get($);if(!X)X={pending:null,running:!1},WQ1.set($,X);if(!X.pending)X.pending={set:new Map,del:new Set,deps:Z,resolvers:[],rejecters:[]};let Y=X.pending;Y.deps=Z;for(let[J,W]of Object.entries(Q.set??{}))Y.set.set(J,W),Y.del.delete(J);for(let J of Q.delete??[])Y.del.add(J),Y.set.delete(J);let G=new Promise((J,W)=>{Y.resolvers.push(J),Y.rejecters.push(W)});if(!X.running)fB6($,X);return G}async function fB6($,Z){Z.running=!0;try{while(Z.pending){let Q=Z.pending;Z.pending=null;try{let X=await bB6(Q);for(let Y of Q.resolvers)Y(X)}catch(X){for(let Y of Q.rejecters)Y(X)}}}finally{if(Z.running=!1,!Z.pending)WQ1.delete($)}}async function bB6($){let{client:Z,branch:Q,packagePath:X}=$.deps;for(let Y=0;;Y++){let G=await Fl(Z,Q),J=await Z.getCommitTreeSha(G),W=await Z.getDecofileTree(J,X),K=ZQ1(W,X),F=[],H=new Map(K.map((O)=>[O.path,{stem:O.stem,sha:O.sha}]));for(let[O,w]of $.set){let L=QQ1(K,O),E=`${JSON.stringify(w,null,2)}
|
|
2983
|
-
`,j=await Z.createBlob(E);await Rd$(Z.owner,Z.repo,j,E);let z=L[0]??`${yT0(X)}/${r71(O)}.json`;F.push({path:z,mode:"100644",type:"blob",sha:j});let P=z.slice(z.lastIndexOf("/")+1,-5);H.set(z,{stem:P,sha:j,content:E});for(let A of L.slice(1))F.push({path:A,mode:"100644",type:"blob",sha:null}),H.delete(A)}for(let O of $.del)for(let w of QQ1(K,O))F.push({path:w,mode:"100644",type:"blob",sha:null}),H.delete(w);if(F.length===0)return G;let U=X?`${X}/.deco/blocks.gen.json`:".deco/blocks.gen.json";if(W.some((O)=>O.type==="blob"&&O.path===U)){let O=await Promise.all([...H.values()].map(async(j)=>({stem:j.stem,content:j.content??await Z.getBlobText(j.sha)}))),{decofile:w,skipped:L}=Ms(O);if(L.length>0)console.warn("decofile gen: dropped blocks that were not valid JSON",{repo:`${Z.owner}/${Z.repo}`,branch:Q,packagePath:X,blocks:L.map((j)=>j.key)});let E=await Z.createBlob(w);F.push({path:U,mode:"100644",type:"blob",sha:E})}let N=await Z.createTree(J,F),B=await Z.createCommit({message:xB6($),treeSha:N,parentShas:[G]});try{return await Z.updateRef(Q,B),B}catch(O){if(!(O instanceof d4&&O.status===422)||Y>=vB6-1)throw O;await L$(Q7(2000,200,Y,2,0.5))}}}function xB6($){let Z=(Y)=>{let G=Y.slice(0,3).join(", ");return Y.length>3?`${G} (+${Y.length-3} more)`:G},Q=[];if($.set.size>0)Q.push(`update ${Z([...$.set.keys()])}`);if($.del.size>0)Q.push(`delete ${Z([...$.del])}`);let X=`chore(decofile): ${Q.join("; ")}`;return Mi0(X,$.deps.coAuthor)}var vB6=3,WQ1;var ld$=D(()=>{k70();ST0();a8();Zw();gT0();WQ1=new Map});import{createHmac as cd$,randomBytes as yB6,timingSafeEqual as gB6}from"crypto";function dd$(){if(mT0)return mT0;let $;try{let Z=V0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return mT0=$?Buffer.from($):yB6(32),mT0}function KQ1($){let Z=$.nowMs??Date.now(),Q={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+hB6)/1000)},X=Buffer.from(JSON.stringify(Q)).toString("base64url"),Y=cd$("sha256",dd$()).update(X).digest("base64url");return`${X}.${Y}`}function md$($,Z){let Q=$.indexOf(".");if(Q<0)return!1;let X=$.slice(0,Q),Y=Buffer.from($.slice(Q+1)),G=Buffer.from(cd$("sha256",dd$()).update(X).digest("base64url"));if(Y.length!==G.length||!gB6(Y,G))return!1;let J;try{J=JSON.parse(Buffer.from(X,"base64url").toString())}catch{return!1}let W=Math.floor((Z.nowMs??Date.now())/1000);return J.o===Z.organizationId&&J.m===Z.virtualMcpId&&J.b===Z.branch&&typeof J.e==="number"&&J.e>=W}var hB6=21600000,mT0=null;var id$=D(()=>{D$()});import{z as Ul}from"zod";function lB6($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&uB6.test($)}function rd$($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function vs($){let Z=$.get("decofileScope");return kT0($.var.studioContext,Z.organizationId,Z.githubRepo)}function fs($,Z){if(Z instanceof d4){let X=Z.status===404?404:Z.status===409?409:Z.status===422?409:502;return $.json({error:Z.message},X)}let Q=Z instanceof Error?Z.message:String(Z);return $.json({error:Q},500)}function ad$(){let $=new J1;return $.use("/:virtualMcpId/:branch",od$),$.use("/:virtualMcpId/:branch/*",od$),$.get("/:virtualMcpId/:branch",async(Z)=>{let Q=Z.get("decofileScope");try{let X=await vs(Z),Y=await Id$(X,Q.branch,Q.packagePath,{createBranchIfMissing:!!Q.userId}),G={ETag:`"${Y.sha}"`,"Cache-Control":"no-store","Access-Control-Allow-Origin":"*"};if(Z.req.header("if-none-match")===`"${Y.sha}"`)return Z.body(null,304,G);if(!Q.userId)return Z.body(Y.decofile,200,{...G,"content-type":"application/json"});let J=KQ1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.body(`{"version":${JSON.stringify(Y.sha)},"token":${JSON.stringify(J)},"apiHost":${JSON.stringify(rd$(Z))},"decofile":${Y.decofile}}`,200,{...G,"content-type":"application/json"})}catch(X){return fs(Z,X)}}),$.get("/:virtualMcpId/:branch/meta",async(Z)=>{let Q=Z.get("decofileScope"),X=Q.packagePath?`${Q.packagePath}/.deco/meta.gen.json`:".deco/meta.gen.json";try{let Y=await vs(Z),G=await Y.getFileTextAtRef(Q.branch,X);if(G===null){let J=await Y.getDefaultBranch();if(J!==Q.branch)G=await Y.getFileTextAtRef(J,X)}if(G===null)return Z.json({error:"meta.gen.json not committed"},404);return Z.body(G,200,{"content-type":"application/json","Cache-Control":"no-store","Access-Control-Allow-Origin":"*"})}catch(Y){return fs(Z,Y)}}),$.patch("/:virtualMcpId/:branch",dB6,async(Z)=>{let Q=Z.get("decofileScope"),X=Z.var.studioContext,Y=mB6.safeParse(await Z.req.json().catch(()=>null));if(!Y.success)return Z.json({error:"Invalid body",details:Y.error.issues},400);let G=Y.data;for(let J of[...Object.keys(G.set??{}),...G.delete??[]])try{VT0(J)}catch(W){let K=W instanceof Error?W.message:String(W);return Z.json({error:K},400)}for(let[J,W]of Object.entries(G.set??{})){if(typeof W!=="object"||W===null||Array.isArray(W))return Z.json({error:`Block "${J}" must be a JSON object`},400);if(o71(J))return Z.json({error:`Block key "${J}" collides with a framework resolver module and cannot be written`},400)}try{let J=await vs(Z),W=await ud$(`${Q.organizationId}/${Q.virtualMcpId}/${Q.branch}`,{client:J,branch:Q.branch,packagePath:Q.packagePath,coAuthor:Gl(X)},G),K=KQ1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.json({version:W,token:K,apiHost:rd$(Z)})}catch(J){return fs(Z,J)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let Q=Z.get("decofileScope");try{let X=await vs(Z),Y=await X.getDefaultBranch();if(Y===Q.branch)return Z.json({error:"Branch is already the default branch"},400);let G=`chore(decofile): publish ${Q.branch}`;try{let J;try{J=await X.mergeBranch(Y,Q.branch,G)}catch(W){if(!(W instanceof d4&&W.status===409))throw W;await lT0(X,Q.branch,Y),J=await X.mergeBranch(Y,Q.branch,G)}return J?Z.json({result:"merged",sha:J}):Z.json({result:"up-to-date"})}catch(J){if(J instanceof d4&&J.status===409)return Z.json({error:"merge-conflict"},409);if(J instanceof d4&&J.status===405){let K=await X.findOpenPullRequest(Y,Q.branch)??await X.createPullRequest({base:Y,head:Q.branch,title:`Publish ${Q.branch}`});return Z.json({result:"pull-request",number:K.number,url:K.html_url})}throw J}}catch(X){return fs(Z,X)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let Q=Z.get("decofileScope");try{let X=await vs(Z),Y=await X.getDefaultBranch();if(Y===Q.branch)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0,lastCommitAt:null});try{let[{aheadBy:G,behindBy:J},W]=await Promise.all([X.compare(Y,Q.branch),X.getBranchHead(Q.branch)]);return Z.json({baseBranch:Y,aheadBy:G,behindBy:J,lastCommitAt:W.committedAt})}catch(G){if(G instanceof d4&&G.status===404)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0,lastCommitAt:null});throw G}}catch(X){return fs(Z,X)}}),$}var uB6,pd$=500,nd$=1048576,td$=1024,cB6=8388608,dB6,mB6,od$;var sd$=D(()=>{Ut0();ST0();d$();VF();g71();MT0();GQ1();t71();ld$();id$();YQ1();Zw();gT0();uB6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;dB6=a5({maxSize:cB6,onError:($)=>$.json({error:"Payload too large"},413)}),mB6=Ul.object({set:Ul.record(Ul.string(),Ul.unknown()).optional(),delete:Ul.array(Ul.string()).optional()}).refine(($)=>Object.keys($.set??{}).length>0||($.delete?.length??0)>0,{message:"Patch must set or delete at least one block"}).refine(($)=>Object.keys($.set??{}).length+($.delete?.length??0)<=pd$,{message:`Patch cannot touch more than ${pd$} blocks`}).refine(($)=>Object.values($.set??{}).every((Z)=>JSON.stringify(Z).length<=nd$),{message:`Each block must be at most ${nd$} bytes`}).refine(($)=>[...Object.keys($.set??{}),...$.delete??[]].every((Z)=>Z.length<=td$),{message:`Each block key must be at most ${td$} characters`}),od$=qT0(async($,Z)=>{let Q=$.var.studioContext,X=Q.organization;if(!X)return $.json({error:"Organization scope required"},500);let Y=$.req.param("virtualMcpId"),G=$.req.param("branch");if(!Y||!G)return $.json({error:"virtualMcpId and branch are required"},400);if(!lB6(G))return $.json({error:`Invalid branch name: ${G}`},400);let J=Q.auth?.user?.id??null;if(!J){let B=$.req.query("token");if(!($.req.method==="GET"&&!$.req.path.match(/\/(publish|status)$/)))return $.json({error:"Unauthorized"},401);if(!B||!md$(B,{organizationId:X.id,virtualMcpId:Y,branch:G}))return $.json({error:"Unauthorized"},401)}let W=await Q.storage.virtualMcps.findById(Y);if(!W||W.organization_id!==X.id)return $.json({error:"Virtual MCP not found"},404);let K=W.metadata??null;if(!BD0(K))return $.json({error:"Project has no preview server configured"},404);let H=W.connections?.map((B)=>B.connection_id)??[],U=Cs(K,H);if(!U)return $.json({error:"Project has no GitHub repository"},404);let N=K?.runtime;return $.set("decofileScope",{organizationId:X.id,virtualMcpId:Y,branch:G,packagePath:N?.path?.replace(/^\/+|\/+$/g,"")||null,githubRepo:U,userId:J}),Z()})});var ed$=($)=>{let Z=new J1;if(Z.use("*",Tv),Z.route("/",uA0()),Z.route("/",Dh$()),Z.route("/",Pc$()),Z.route("/",Ec$()),Z.route("/",TT0()),Z.route("/tools",kc$()),Z.route("/",Ic$()),Z.route("/",al$({kvStorage:$.kvStorage})),Z.route("/",ol$()),Z.route("/fs",Uc$({getConnection:$.getNatsConnection})),Z.route("/sandbox",gd$()),Z.route("/decofile",ad$()),Z.route("/",Dc$()),Z.route("/deco-sites",cA0()),Z.route("/hosting",Yh$()),Z.route("/monitor",Uh$()),Z.route("/sso",fA0()),Z.route("/",RT0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",eg$()),$.mountDevAssets)Z.route("/dev-assets",pA0({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("/",Ax$()),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",Bc$()),Z.route("/mcp",dL0()),Z.route("/mcp/self",AT0()),Z.route("/mcp",pL0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var $m$=D(()=>{d$();kA0();$h$();KZ1();Gh$();Nh$();nA0();ea();XZ1();rl$();sl$();Nc$();$o();a91();nL0();C71();Oc$();wc$();jc$();Ac$();qc$();v71();Vc$();f71();mL0();hd$();sd$()});function iB6($){return $.filter((Z)=>Z.vendors?.alias).map((Z)=>({name:Z.name,title:Z.title,description:Z.description,logo:Z.logo,category:Z.category,vendor:{alias:Z.vendors.alias,url:Z.vendors.url}}))}var pB6=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},Zm$=()=>{let $=new J1;return $.use("*",pB6),$.get("/",async(Z)=>{let Q=V0(),X=Q.decoSupabaseUrl,Y=Q.decoSupabaseServiceKey;if(!X||!Y)return Z.json({apps:[]});try{let G=await PY(X,Y,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:iB6(G)})}catch(G){return console.error("[deco-apps] GET error:",G),Z.json({error:"Failed to fetch apps"},502)}}),$};var Qm$=D(()=>{d$();D$();yP0()});import{z as q1}from"zod";function bF($,Z="invalid_request_error",Q=null,X=null){return{error:{message:$,type:Z,param:Q,code:X}}}function QO6($){if(!$)return null;let Z=$.indexOf(":");if(Z===-1)return{credentialId:null,modelId:$};let Q=$.substring(0,Z),X=$.substring(Z+1);if(!Q||!X)return null;return{credentialId:Q,modelId:X}}function XO6($,Z,Q){try{return JSON.parse($)}catch{throw new Gm$(`Invalid JSON in tool call arguments for function '${Q}' (tool_call_id: ${Z}): ${$}`)}}function YO6($){let Z={};for(let Q of $)if(Q.role==="assistant"&&Q.tool_calls)for(let X of Q.tool_calls)Z[X.id]=X.function.name;return $.map((Q)=>{switch(Q.role){case"system":return{role:"system",content:Q.content};case"user":if(typeof Q.content==="string")return{role:"user",content:Q.content};return{role:"user",content:Q.content.map((Y)=>{if(Y.type==="text")return{type:"text",text:Y.text};return{type:"image",image:Y.image_url.url}})};case"assistant":if(Q.tool_calls&&Q.tool_calls.length>0)return{role:"assistant",content:Q.tool_calls.map((Y)=>({type:"tool-call",toolCallId:Y.id,toolName:Y.function.name,input:XO6(Y.function.arguments,Y.id,Y.function.name)}))};return{role:"assistant",content:Q.content??""};case"tool":let X=Z[Q.tool_call_id]??"unknown";return{role:"tool",content:[{type:"tool-result",toolCallId:Q.tool_call_id,toolName:X,output:{type:"text",value:Q.content}}]}}})}function GO6($){let Z=$.map((Q)=>{let X=Q.function.parameters?sY(Q.function.parameters):sY({type:"object",properties:{}});return[Q.function.name,V$({description:Q.function.description,inputSchema:X})]});return Object.fromEntries(Z)}function JO6($){if(!$)return;return{openai:{response_format:$}}}function WO6(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function Xm$($,Z,Q,X,Y,G){let J={model:$,messages:Z,tools:Q,temperature:X.temperature,maxTokens:X.max_tokens,topP:X.top_p,frequencyPenalty:X.frequency_penalty,presencePenalty:X.presence_penalty,stopSequences:X.stop?Array.isArray(X.stop)?X.stop:[X.stop]:void 0,abortSignal:G};return Y?{...J,providerOptions:Y}:J}function Ym$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var nB6=256,tB6,oB6,rB6,aB6,sB6,eB6,$O6,ZO6,Gm$,Jm$,Wm$;var Km$=D(()=>{g4();d$();Yl();fU();tB6=q1.object({type:q1.literal("function"),function:q1.object({name:q1.string(),description:q1.string().optional(),parameters:q1.record(q1.string(),q1.unknown()).optional()})}),oB6=q1.object({id:q1.string(),type:q1.literal("function"),function:q1.object({name:q1.string(),arguments:q1.string()})}),rB6=q1.discriminatedUnion("role",[q1.object({role:q1.literal("system"),content:q1.string(),name:q1.string().optional()}),q1.object({role:q1.literal("user"),content:q1.union([q1.string(),q1.array(q1.union([q1.object({type:q1.literal("text"),text:q1.string()}),q1.object({type:q1.literal("image_url"),image_url:q1.object({url:q1.string(),detail:q1.string().optional()})})]))]),name:q1.string().optional()}),q1.object({role:q1.literal("assistant"),content:q1.string().nullable().optional(),name:q1.string().optional(),tool_calls:q1.array(oB6).optional()}),q1.object({role:q1.literal("tool"),content:q1.string(),tool_call_id:q1.string()})]),aB6=q1.object({type:q1.literal("text")}),sB6=q1.object({type:q1.literal("json_object")}),eB6=q1.object({type:q1.literal("json_schema"),json_schema:q1.object({name:q1.string(),description:q1.string().optional(),schema:q1.record(q1.string(),q1.unknown()),strict:q1.boolean().optional()})}),$O6=q1.union([aB6,sB6,eB6]),ZO6=q1.object({model:q1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:q1.array(rB6),stream:q1.boolean().optional().default(!1),temperature:q1.number().min(0).max(2).optional(),max_tokens:q1.number().positive().optional(),top_p:q1.number().min(0).max(1).optional(),frequency_penalty:q1.number().min(-2).max(2).optional(),presence_penalty:q1.number().min(-2).max(2).optional(),stop:q1.union([q1.string(),q1.array(q1.string())]).optional(),tools:q1.array(tB6).optional(),tool_choice:q1.union([q1.literal("auto"),q1.literal("none"),q1.literal("required"),q1.object({type:q1.literal("function"),function:q1.object({name:q1.string()})})]).optional(),response_format:$O6.optional(),user:q1.string().optional()});Gm$=class Gm$ extends Error{constructor($){super($);this.name="MessageConversionError"}};Jm$=new J1;Jm$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),Q=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(bF("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(bF("Organization context is required. Ensure your API key has organization metadata.","invalid_request_error","organization"),400);if((Z.organization.slug??Z.organization.id)!==Q)return $.json(bF("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let X=await $.req.json(),Y=ZO6.safeParse(X);if(!Y.success){let L=Y.error.issues[0]??{message:"Invalid request",path:[]};return $.json(bF(`Invalid request: ${L.message}`,"invalid_request_error",L.path.length>0?L.path.join("."):null),400)}let G=Y.data,J=QO6(G.model);if(!J)return $.json(bF("Invalid model format. Expected 'model_id' or 'credential_id:model_id' (e.g., 'claude-sonnet-4-6' or 'key_abc123:claude-sonnet-4-6')","invalid_request_error","model"),400);let{credentialId:W}=J,{modelId:K}=J;if(!W){let E=(await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id})).find((j)=>EL(j.providerId));if(!E)return $.json(bF("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 F;try{F=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json(bF(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let H=F.aiSdk.languageModel(K),U=YO6(G.messages),N=G.tools?GO6(G.tools):void 0,B=JO6(G.response_format),O=WO6(),w=Math.floor(Date.now()/1000);if(G.stream)return QN($,async(L)=>{let E=Xm$(H,U,N,G,B,$.req.raw.signal);try{let j=fO(E),z=!1,P=0,A="",I=async()=>{if(A.length===0)return;let k=A;A="",await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:w,model:G.model,choices:[{index:0,delta:{content:k},finish_reason:null}]})})};for await(let k of j.fullStream){if(!z&&(k.type==="text-delta"||k.type==="tool-call"))await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:w,model:G.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),z=!0;if(k.type==="text-delta"){if(A+=k.text,A.length>=nB6)await I()}else if(k.type==="tool-call"){await I();let M=P++;await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:w,model:G.model,choices:[{index:0,delta:{tool_calls:[{index:M,id:k.toolCallId,type:"function",function:{name:k.toolName,arguments:JSON.stringify(k.input)}}]},finish_reason:null}]})})}else if(k.type==="finish")await I(),await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:w,model:G.model,choices:[{index:0,delta:{},finish_reason:Ym$(k.finishReason)}],usage:k.totalUsage?{prompt_tokens:k.totalUsage.inputTokens??0,completion_tokens:k.totalUsage.outputTokens??0,total_tokens:k.totalUsage.totalTokens??0}:void 0})})}await I(),await L.writeSSE({data:"[DONE]"})}catch(j){let z=j;console.error("[openai-compat:stream] Error:",z.message),await L.writeSSE({data:JSON.stringify({error:{message:z.message,type:"server_error"}})})}});else{let L=Xm$(H,U,N,G,B,$.req.raw.signal),E=await _O(L),j={role:"assistant",content:E.text||null};if(E.toolCalls&&E.toolCalls.length>0)j.tool_calls=E.toolCalls.map((z)=>({id:z.toolCallId,type:"function",function:{name:z.toolName,arguments:JSON.stringify("input"in z?z.input:{})}})),j.content=null;return $.json({id:O,object:"chat.completion",created:w,model:G.model,choices:[{index:0,message:j,finish_reason:Ym$(E.finishReason)}],usage:{prompt_tokens:E.usage?.inputTokens??0,completion_tokens:E.usage?.outputTokens??0,total_tokens:E.usage?.totalTokens??0}})}}catch(X){let Y=X;if(Y.name==="AbortError")return $.json(bF("Request aborted","invalid_request_error"),400);if(Y.name==="MessageConversionError")return $.json(bF(Y.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",Y.message,Y.stack),$.json(bF(Y.message,"server_error"),500)}});Wm$=Jm$});function KO6($){if(typeof $!=="object"||$===null)return!1;let Q=$.githubRepo?.url;return typeof Q==="string"&&Q.length>0}function Fm$(){let $=new J1;return $.use("*",async(Z,Q)=>{await Q(),Z.header("Cache-Control","private, no-store"),Z.header("Vary","Cookie")}),$.get("/",async(Z)=>{let Q=Z.get("studioContext"),X=t0(Q);if(!X)return Z.json({error:"Authentication required"},401);let G=(Z.req.query("site")??"").trim().toLowerCase();if(!sQ(G))return Z.json({error:"Invalid site slug"},400);let J=await Q.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["organization.id as id","organization.slug as slug","organization.name as name","organization.metadata as metadata"]).where("member.userId","=",X).execute(),W=[];for(let F of J){if(!F.slug||m9(F))continue;let H=await Q.storage.virtualMcps.list(F.id);for(let U of H){if(ee1(U)!==G)continue;if(!KO6(U.metadata))continue;W.push({orgSlug:F.slug,orgName:F.name??F.slug,project:{id:U.id,title:U.title,icon:U.icon??null}})}}let K={matches:W};return Z.json(K)}),$}var Hm$=D(()=>{d$();cH()});var Nm$;var Um$=D(()=>{Nm$={name:"decocms",version:"4.329.4",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@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 UO6(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??HO6}}var Bm$,HO6="https://ph.studio.decocms.com",Om$;var Dm$=D(()=>{d$();J90();J_();u5();D$();h91();Um$();Bm$=new J1;Bm$.get("/",($)=>{let Z={version:Nm$.version,theme:Dp1(),...bH().logo&&{logo:bH().logo},...PU()&&{internalUrl:l_1()},...V0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!V0().firecrawlApiKey,hostingEnabled:!!V0().controlplaneRestUrl&&!!V0().controlplaneServiceToken,hostingControlPlaneGa:V0().hostingControlPlaneGa,monitorEnabled:!!V0().clickhouseAnalyticsUrl&&!!V0().clickhouseAnalyticsPassword,monitorGa:V0().monitorGa,auth:Yg$(),posthog:UO6(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:cs()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});Om$=Bm$});function Nl($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function FQ1($){return(Nl($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((Q)=>Q.charAt(0).toUpperCase()+Q.slice(1)).join(" ")}function Lm$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(Nl($))}&sz=${Z}`}function wm$($,Z){let Q=$.trim();if(Q.length<=Z)return Q;let X=Q.slice(0,Z-1),Y=X.lastIndexOf(" ");return`${(Y>Z*0.6?X.slice(0,Y):X).trimEnd()}\u2026`}function Em$($){let{brand:Z,domain:Q,score:X,verdict:Y}=$,G=typeof X==="number"?`${Z} commerce report \u2014 ${Math.round(X)}/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()?wm$(`${Y.trim().replace(/\s+/g," ")} \u2014 ${J}`,200):wm$(`How does ${Q} really perform? ${J}`,200);return{title:G,description:W}}import{z as l0}from"zod";var gv,NO6,BO6,OO6,DO6,jm$;var zm$=D(()=>{gv=l0.enum(["good","bad","neutral"]),NO6=l0.preprocess(($)=>{if(Array.isArray($))return{kind:"text",value:$.find((Q)=>Q!==null&&typeof Q!=="object")??""};return $!==null&&typeof $==="object"?$:{kind:"text",value:$}},l0.object({kind:l0.enum(["text","number","sparkline","badge","score"]).catch("text"),value:l0.coerce.string().optional(),tone:gv.optional(),muted:l0.boolean().optional(),delta:l0.coerce.string().optional(),deltaDir:l0.enum(["up","down","neutral"]).optional(),points:l0.array(l0.coerce.number()).optional(),label:l0.coerce.string().optional()}).transform(($)=>{if($.kind==="badge"&&$.label==null)$.label=$.value??"";if($.kind==="score"){let Z=Number($.value);if(Number.isNaN(Z))return{...$,kind:"text"}}return $})),BO6=l0.preprocess(($)=>{let Z=$;if(Z&&typeof Z==="object"&&!Array.isArray(Z)&&Array.isArray(Z.cells))Z=Z.cells;if(Array.isArray(Z)&&Z.length===1&&Array.isArray(Z[0]))Z=Z[0];if(Array.isArray(Z))return Z;if(Z&&typeof Z==="object")return Object.values(Z);return Z},l0.array(NO6)),OO6={key:l0.coerce.string(),title:l0.coerce.string(),eyebrow:l0.coerce.string().optional(),headline:l0.coerce.string(),annotation:l0.coerce.string().optional(),methodology:l0.coerce.string().optional(),sources:l0.array(l0.object({name:l0.coerce.string(),logoUrl:l0.coerce.string()})).optional()},DO6=l0.discriminatedUnion("template",[l0.object({template:l0.literal("cover"),score:l0.object({value:l0.coerce.number(),max:l0.coerce.number().optional(),grade:l0.coerce.string().optional(),label:l0.coerce.string().optional()}).optional(),brandImage:l0.coerce.string().optional(),screenshot:l0.coerce.string().optional(),mobileScreenshot:l0.coerce.string().optional()}),l0.object({template:l0.literal("cta"),ctaUrl:l0.coerce.string().optional(),ctaLabel:l0.coerce.string().optional(),bullets:l0.array(l0.coerce.string()).optional()}),l0.object({template:l0.literal("series"),points:l0.array(l0.coerce.number()).min(2),xLabels:l0.array(l0.coerce.string()).min(1),unit:l0.coerce.string().optional(),callout:l0.object({index:l0.coerce.number(),value:l0.coerce.string(),tone:gv.optional()})}),l0.object({template:l0.literal("threshold"),value:l0.coerce.string().default(""),metricLabel:l0.coerce.string().optional(),ratio:l0.coerce.number(),thresholdRatio:l0.coerce.number().optional(),thresholdLabel:l0.coerce.string().default(""),tone:gv.optional()}),l0.object({template:l0.literal("stats"),stats:l0.array(l0.object({value:l0.coerce.string(),label:l0.coerce.string(),tone:gv.optional()})).min(1)}),l0.object({template:l0.literal("bars"),items:l0.array(l0.object({value:l0.coerce.string(),label:l0.coerce.string(),ratio:l0.coerce.number(),tone:gv.optional()})).min(1)}),l0.object({template:l0.literal("gauges"),gauges:l0.array(l0.object({label:l0.coerce.string(),value:l0.coerce.string(),status:l0.enum(["good","warn","bad"]).catch("warn"),caption:l0.coerce.string().optional(),ratio:l0.coerce.number().optional()})).min(1)}),l0.object({template:l0.literal("checklist"),checks:l0.array(l0.object({label:l0.coerce.string(),status:l0.enum(["pass","fail","warn"]).catch("fail"),value:l0.coerce.string().optional()})).min(1)}),l0.object({template:l0.literal("table"),columns:l0.array(l0.object({label:l0.coerce.string(),align:l0.enum(["left","right"]).optional()})).min(1),rows:l0.array(BO6).min(1),highlightRow:l0.coerce.number().optional()}),l0.object({template:l0.literal("products"),products:l0.array(l0.object({name:l0.coerce.string(),price:l0.coerce.string().optional(),image:l0.coerce.string().optional(),url:l0.coerce.string().optional()})).min(1)}),l0.object({template:l0.literal("list"),entries:l0.array(l0.object({label:l0.coerce.string(),severity:l0.enum(["error","warning","notice"]).catch("notice")})).min(1),moreCount:l0.coerce.number().optional()}),l0.object({template:l0.literal("keywords"),volumeLabel:l0.coerce.string().optional(),keywords:l0.array(l0.object({term:l0.coerce.string(),volume:l0.coerce.string(),position:l0.coerce.number().catch(0)})).min(1)}),l0.object({template:l0.literal("competitor"),metricLabel:l0.coerce.string().optional(),competitors:l0.array(l0.object({name:l0.coerce.string(),value:l0.coerce.string(),tone:gv.optional(),isYou:l0.boolean().optional()})).min(1)}),l0.object({template:l0.literal("scorecard"),rivalLabel:l0.coerce.string().optional(),dimensions:l0.array(l0.object({label:l0.coerce.string(),you:l0.coerce.string(),rival:l0.coerce.string().optional(),rivalName:l0.coerce.string().optional(),tone:gv.optional()})).min(1)})]),jm$=l0.object({...OO6,template:DO6})});function iT0($){let Z=[],Q=[...$.sections].sort((Y,G)=>Y.position-G.position).map((Y)=>{let G=jm$.safeParse(Y.props);if(G.success)return G.data;let J=G.error.issues[0];return Z.push({section_type:Y.section_type,position:Y.position,reason:J?`${J.path.join(".")||"(root)"}: ${J.message}`:"contract violation"}),null}).filter((Y)=>Y!==null),X=Q.filter((Y)=>Y.template.template!=="cover"&&Y.template.template!=="cta").map((Y)=>({key:Y.key,title:Y.title}));return{deck:{meta:{...$.meta,scores:$.summary?.scores,scannedAt:$.scanned_at,toc:X},slides:Q},drops:Z}}var HQ1=D(()=>{zm$()});import{join as Pm$}from"path";async function LO6($){try{let Z=await fetch(`${LK({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(wO6)});if(!Z.ok)return null;let Q=await Z.json(),{deck:X}=iT0(Q);if(!X.slides.length)return null;let Y=X.slides.find((W)=>W.template.template==="cover"),G=Y?.template,J=G&&G.template==="cover"?G:void 0;return{brand:X.meta.brand?.trim()||FQ1($),score:X.meta.scores?.cover??J?.score?.value,verdict:Y?.annotation?.trim()||Y?.headline?.trim()||void 0}}catch{return null}}function TG($){return $.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""")}function EO6($,Z){let Q=Nl($),X=Z?.brand?.trim()||FQ1(Q),Y=Lm$(Q,128),J=`${(V0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(Q)}`,{title:W,description:K}=Em$({brand:X,domain:Q,score:Z?.score,verdict:Z?.verdict}),F=`${J}/og.png`,H=`${X} commerce report by decocms`;return[`<title>${TG(W)}</title>`,`<meta name="description" content="${TG(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="${TG(W)}" />`,`<meta property="og:description" content="${TG(K)}" />`,`<meta property="og:url" content="${TG(J)}" />`,`<meta property="og:image" content="${TG(F)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${TG(H)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${TG(W)}" />`,`<meta name="twitter:description" content="${TG(K)}" />`,`<meta name="twitter:image" content="${TG(F)}" />`,`<meta name="twitter:image:alt" content="${TG(H)}" />`,`<link rel="canonical" href="${TG(J)}" />`,`<link rel="icon" href="${TG(Y)}" sizes="any" />`].join(`
|
|
2983
|
+
`,j=await Z.createBlob(E);await Rd$(Z.owner,Z.repo,j,E);let z=L[0]??`${yT0(X)}/${r71(O)}.json`;F.push({path:z,mode:"100644",type:"blob",sha:j});let P=z.slice(z.lastIndexOf("/")+1,-5);H.set(z,{stem:P,sha:j,content:E});for(let A of L.slice(1))F.push({path:A,mode:"100644",type:"blob",sha:null}),H.delete(A)}for(let O of $.del)for(let w of QQ1(K,O))F.push({path:w,mode:"100644",type:"blob",sha:null}),H.delete(w);if(F.length===0)return G;let U=X?`${X}/.deco/blocks.gen.json`:".deco/blocks.gen.json";if(W.some((O)=>O.type==="blob"&&O.path===U)){let O=await Promise.all([...H.values()].map(async(j)=>({stem:j.stem,content:j.content??await Z.getBlobText(j.sha)}))),{decofile:w,skipped:L}=Ms(O);if(L.length>0)console.warn("decofile gen: dropped blocks that were not valid JSON",{repo:`${Z.owner}/${Z.repo}`,branch:Q,packagePath:X,blocks:L.map((j)=>j.key)});let E=await Z.createBlob(w);F.push({path:U,mode:"100644",type:"blob",sha:E})}let N=await Z.createTree(J,F),B=await Z.createCommit({message:xB6($),treeSha:N,parentShas:[G]});try{return await Z.updateRef(Q,B),B}catch(O){if(!(O instanceof d4&&O.status===422)||Y>=vB6-1)throw O;await L$(Q7(2000,200,Y,2,0.5))}}}function xB6($){let Z=(Y)=>{let G=Y.slice(0,3).join(", ");return Y.length>3?`${G} (+${Y.length-3} more)`:G},Q=[];if($.set.size>0)Q.push(`update ${Z([...$.set.keys()])}`);if($.del.size>0)Q.push(`delete ${Z([...$.del])}`);let X=`chore(decofile): ${Q.join("; ")}`;return Mi0(X,$.deps.coAuthor)}var vB6=3,WQ1;var ld$=D(()=>{k70();ST0();a8();Zw();gT0();WQ1=new Map});import{createHmac as cd$,randomBytes as yB6,timingSafeEqual as gB6}from"crypto";function dd$(){if(mT0)return mT0;let $;try{let Z=V0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return mT0=$?Buffer.from($):yB6(32),mT0}function KQ1($){let Z=$.nowMs??Date.now(),Q={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+hB6)/1000)},X=Buffer.from(JSON.stringify(Q)).toString("base64url"),Y=cd$("sha256",dd$()).update(X).digest("base64url");return`${X}.${Y}`}function md$($,Z){let Q=$.indexOf(".");if(Q<0)return!1;let X=$.slice(0,Q),Y=Buffer.from($.slice(Q+1)),G=Buffer.from(cd$("sha256",dd$()).update(X).digest("base64url"));if(Y.length!==G.length||!gB6(Y,G))return!1;let J;try{J=JSON.parse(Buffer.from(X,"base64url").toString())}catch{return!1}let W=Math.floor((Z.nowMs??Date.now())/1000);return J.o===Z.organizationId&&J.m===Z.virtualMcpId&&J.b===Z.branch&&typeof J.e==="number"&&J.e>=W}var hB6=21600000,mT0=null;var id$=D(()=>{D$()});import{z as Ul}from"zod";function lB6($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&uB6.test($)}function rd$($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function vs($){let Z=$.get("decofileScope");return kT0($.var.studioContext,Z.organizationId,Z.githubRepo)}function fs($,Z){if(Z instanceof d4){let X=Z.status===404?404:Z.status===409?409:Z.status===422?409:502;return $.json({error:Z.message},X)}let Q=Z instanceof Error?Z.message:String(Z);return $.json({error:Q},500)}function ad$(){let $=new J1;return $.use("/:virtualMcpId/:branch",od$),$.use("/:virtualMcpId/:branch/*",od$),$.get("/:virtualMcpId/:branch",async(Z)=>{let Q=Z.get("decofileScope");try{let X=await vs(Z),Y=await Id$(X,Q.branch,Q.packagePath,{createBranchIfMissing:!!Q.userId}),G={ETag:`"${Y.sha}"`,"Cache-Control":"no-store","Access-Control-Allow-Origin":"*"};if(Z.req.header("if-none-match")===`"${Y.sha}"`)return Z.body(null,304,G);if(!Q.userId)return Z.body(Y.decofile,200,{...G,"content-type":"application/json"});let J=KQ1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.body(`{"version":${JSON.stringify(Y.sha)},"token":${JSON.stringify(J)},"apiHost":${JSON.stringify(rd$(Z))},"decofile":${Y.decofile}}`,200,{...G,"content-type":"application/json"})}catch(X){return fs(Z,X)}}),$.get("/:virtualMcpId/:branch/meta",async(Z)=>{let Q=Z.get("decofileScope"),X=Q.packagePath?`${Q.packagePath}/.deco/meta.gen.json`:".deco/meta.gen.json";try{let Y=await vs(Z),G=await Y.getFileTextAtRef(Q.branch,X);if(G===null){let J=await Y.getDefaultBranch();if(J!==Q.branch)G=await Y.getFileTextAtRef(J,X)}if(G===null)return Z.json({error:"meta.gen.json not committed"},404);return Z.body(G,200,{"content-type":"application/json","Cache-Control":"no-store","Access-Control-Allow-Origin":"*"})}catch(Y){return fs(Z,Y)}}),$.patch("/:virtualMcpId/:branch",dB6,async(Z)=>{let Q=Z.get("decofileScope"),X=Z.var.studioContext,Y=mB6.safeParse(await Z.req.json().catch(()=>null));if(!Y.success)return Z.json({error:"Invalid body",details:Y.error.issues},400);let G=Y.data;for(let J of[...Object.keys(G.set??{}),...G.delete??[]])try{VT0(J)}catch(W){let K=W instanceof Error?W.message:String(W);return Z.json({error:K},400)}for(let[J,W]of Object.entries(G.set??{})){if(typeof W!=="object"||W===null||Array.isArray(W))return Z.json({error:`Block "${J}" must be a JSON object`},400);if(o71(J))return Z.json({error:`Block key "${J}" collides with a framework resolver module and cannot be written`},400)}try{let J=await vs(Z),W=await ud$(`${Q.organizationId}/${Q.virtualMcpId}/${Q.branch}`,{client:J,branch:Q.branch,packagePath:Q.packagePath,coAuthor:Gl(X)},G),K=KQ1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.json({version:W,token:K,apiHost:rd$(Z)})}catch(J){return fs(Z,J)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let Q=Z.get("decofileScope");try{let X=await vs(Z),Y=await X.getDefaultBranch();if(Y===Q.branch)return Z.json({error:"Branch is already the default branch"},400);let G=`chore(decofile): publish ${Q.branch}`;try{let J;try{J=await X.mergeBranch(Y,Q.branch,G)}catch(W){if(!(W instanceof d4&&W.status===409))throw W;await lT0(X,Q.branch,Y),J=await X.mergeBranch(Y,Q.branch,G)}return J?Z.json({result:"merged",sha:J}):Z.json({result:"up-to-date"})}catch(J){if(J instanceof d4&&J.status===409)return Z.json({error:"merge-conflict"},409);if(J instanceof d4&&J.status===405){let K=await X.findOpenPullRequest(Y,Q.branch)??await X.createPullRequest({base:Y,head:Q.branch,title:`Publish ${Q.branch}`});return Z.json({result:"pull-request",number:K.number,url:K.html_url})}throw J}}catch(X){return fs(Z,X)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let Q=Z.get("decofileScope");try{let X=await vs(Z),Y=await X.getDefaultBranch();if(Y===Q.branch)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0,lastCommitAt:null});try{let[{aheadBy:G,behindBy:J},W]=await Promise.all([X.compare(Y,Q.branch),X.getBranchHead(Q.branch)]);return Z.json({baseBranch:Y,aheadBy:G,behindBy:J,lastCommitAt:W.committedAt})}catch(G){if(G instanceof d4&&G.status===404)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0,lastCommitAt:null});throw G}}catch(X){return fs(Z,X)}}),$}var uB6,pd$=500,nd$=1048576,td$=1024,cB6=8388608,dB6,mB6,od$;var sd$=D(()=>{Ut0();ST0();d$();VF();g71();MT0();GQ1();t71();ld$();id$();YQ1();Zw();gT0();uB6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;dB6=a5({maxSize:cB6,onError:($)=>$.json({error:"Payload too large"},413)}),mB6=Ul.object({set:Ul.record(Ul.string(),Ul.unknown()).optional(),delete:Ul.array(Ul.string()).optional()}).refine(($)=>Object.keys($.set??{}).length>0||($.delete?.length??0)>0,{message:"Patch must set or delete at least one block"}).refine(($)=>Object.keys($.set??{}).length+($.delete?.length??0)<=pd$,{message:`Patch cannot touch more than ${pd$} blocks`}).refine(($)=>Object.values($.set??{}).every((Z)=>JSON.stringify(Z).length<=nd$),{message:`Each block must be at most ${nd$} bytes`}).refine(($)=>[...Object.keys($.set??{}),...$.delete??[]].every((Z)=>Z.length<=td$),{message:`Each block key must be at most ${td$} characters`}),od$=qT0(async($,Z)=>{let Q=$.var.studioContext,X=Q.organization;if(!X)return $.json({error:"Organization scope required"},500);let Y=$.req.param("virtualMcpId"),G=$.req.param("branch");if(!Y||!G)return $.json({error:"virtualMcpId and branch are required"},400);if(!lB6(G))return $.json({error:`Invalid branch name: ${G}`},400);let J=Q.auth?.user?.id??null;if(!J){let B=$.req.query("token");if(!($.req.method==="GET"&&!$.req.path.match(/\/(publish|status)$/)))return $.json({error:"Unauthorized"},401);if(!B||!md$(B,{organizationId:X.id,virtualMcpId:Y,branch:G}))return $.json({error:"Unauthorized"},401)}let W=await Q.storage.virtualMcps.findById(Y);if(!W||W.organization_id!==X.id)return $.json({error:"Virtual MCP not found"},404);let K=W.metadata??null;if(!BD0(K))return $.json({error:"Project has no preview server configured"},404);let H=W.connections?.map((B)=>B.connection_id)??[],U=Cs(K,H);if(!U)return $.json({error:"Project has no GitHub repository"},404);let N=K?.runtime;return $.set("decofileScope",{organizationId:X.id,virtualMcpId:Y,branch:G,packagePath:N?.path?.replace(/^\/+|\/+$/g,"")||null,githubRepo:U,userId:J}),Z()})});var ed$=($)=>{let Z=new J1;if(Z.use("*",Tv),Z.route("/",uA0()),Z.route("/",Dh$()),Z.route("/",Pc$()),Z.route("/",Ec$()),Z.route("/",TT0()),Z.route("/tools",kc$()),Z.route("/",Ic$()),Z.route("/",al$({kvStorage:$.kvStorage})),Z.route("/",ol$()),Z.route("/fs",Uc$({getConnection:$.getNatsConnection})),Z.route("/sandbox",gd$()),Z.route("/decofile",ad$()),Z.route("/",Dc$()),Z.route("/deco-sites",cA0()),Z.route("/hosting",Yh$()),Z.route("/monitor",Uh$()),Z.route("/sso",fA0()),Z.route("/",RT0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",eg$()),$.mountDevAssets)Z.route("/dev-assets",pA0({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("/",Ax$()),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",Bc$()),Z.route("/mcp",dL0()),Z.route("/mcp/self",AT0()),Z.route("/mcp",pL0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var $m$=D(()=>{d$();kA0();$h$();KZ1();Gh$();Nh$();nA0();ea();XZ1();rl$();sl$();Nc$();$o();a91();nL0();C71();Oc$();wc$();jc$();Ac$();qc$();v71();Vc$();f71();mL0();hd$();sd$()});function iB6($){return $.filter((Z)=>Z.vendors?.alias).map((Z)=>({name:Z.name,title:Z.title,description:Z.description,logo:Z.logo,category:Z.category,vendor:{alias:Z.vendors.alias,url:Z.vendors.url}}))}var pB6=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},Zm$=()=>{let $=new J1;return $.use("*",pB6),$.get("/",async(Z)=>{let Q=V0(),X=Q.decoSupabaseUrl,Y=Q.decoSupabaseServiceKey;if(!X||!Y)return Z.json({apps:[]});try{let G=await PY(X,Y,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:iB6(G)})}catch(G){return console.error("[deco-apps] GET error:",G),Z.json({error:"Failed to fetch apps"},502)}}),$};var Qm$=D(()=>{d$();D$();yP0()});import{z as q1}from"zod";function bF($,Z="invalid_request_error",Q=null,X=null){return{error:{message:$,type:Z,param:Q,code:X}}}function QO6($){if(!$)return null;let Z=$.indexOf(":");if(Z===-1)return{credentialId:null,modelId:$};let Q=$.substring(0,Z),X=$.substring(Z+1);if(!Q||!X)return null;return{credentialId:Q,modelId:X}}function XO6($,Z,Q){try{return JSON.parse($)}catch{throw new Gm$(`Invalid JSON in tool call arguments for function '${Q}' (tool_call_id: ${Z}): ${$}`)}}function YO6($){let Z={};for(let Q of $)if(Q.role==="assistant"&&Q.tool_calls)for(let X of Q.tool_calls)Z[X.id]=X.function.name;return $.map((Q)=>{switch(Q.role){case"system":return{role:"system",content:Q.content};case"user":if(typeof Q.content==="string")return{role:"user",content:Q.content};return{role:"user",content:Q.content.map((Y)=>{if(Y.type==="text")return{type:"text",text:Y.text};return{type:"image",image:Y.image_url.url}})};case"assistant":if(Q.tool_calls&&Q.tool_calls.length>0)return{role:"assistant",content:Q.tool_calls.map((Y)=>({type:"tool-call",toolCallId:Y.id,toolName:Y.function.name,input:XO6(Y.function.arguments,Y.id,Y.function.name)}))};return{role:"assistant",content:Q.content??""};case"tool":let X=Z[Q.tool_call_id]??"unknown";return{role:"tool",content:[{type:"tool-result",toolCallId:Q.tool_call_id,toolName:X,output:{type:"text",value:Q.content}}]}}})}function GO6($){let Z=$.map((Q)=>{let X=Q.function.parameters?sY(Q.function.parameters):sY({type:"object",properties:{}});return[Q.function.name,V$({description:Q.function.description,inputSchema:X})]});return Object.fromEntries(Z)}function JO6($){if(!$)return;return{openai:{response_format:$}}}function WO6(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function Xm$($,Z,Q,X,Y,G){let J={model:$,messages:Z,tools:Q,temperature:X.temperature,maxTokens:X.max_tokens,topP:X.top_p,frequencyPenalty:X.frequency_penalty,presencePenalty:X.presence_penalty,stopSequences:X.stop?Array.isArray(X.stop)?X.stop:[X.stop]:void 0,abortSignal:G};return Y?{...J,providerOptions:Y}:J}function Ym$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var nB6=256,tB6,oB6,rB6,aB6,sB6,eB6,$O6,ZO6,Gm$,Jm$,Wm$;var Km$=D(()=>{g4();d$();Yl();fU();tB6=q1.object({type:q1.literal("function"),function:q1.object({name:q1.string(),description:q1.string().optional(),parameters:q1.record(q1.string(),q1.unknown()).optional()})}),oB6=q1.object({id:q1.string(),type:q1.literal("function"),function:q1.object({name:q1.string(),arguments:q1.string()})}),rB6=q1.discriminatedUnion("role",[q1.object({role:q1.literal("system"),content:q1.string(),name:q1.string().optional()}),q1.object({role:q1.literal("user"),content:q1.union([q1.string(),q1.array(q1.union([q1.object({type:q1.literal("text"),text:q1.string()}),q1.object({type:q1.literal("image_url"),image_url:q1.object({url:q1.string(),detail:q1.string().optional()})})]))]),name:q1.string().optional()}),q1.object({role:q1.literal("assistant"),content:q1.string().nullable().optional(),name:q1.string().optional(),tool_calls:q1.array(oB6).optional()}),q1.object({role:q1.literal("tool"),content:q1.string(),tool_call_id:q1.string()})]),aB6=q1.object({type:q1.literal("text")}),sB6=q1.object({type:q1.literal("json_object")}),eB6=q1.object({type:q1.literal("json_schema"),json_schema:q1.object({name:q1.string(),description:q1.string().optional(),schema:q1.record(q1.string(),q1.unknown()),strict:q1.boolean().optional()})}),$O6=q1.union([aB6,sB6,eB6]),ZO6=q1.object({model:q1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:q1.array(rB6),stream:q1.boolean().optional().default(!1),temperature:q1.number().min(0).max(2).optional(),max_tokens:q1.number().positive().optional(),top_p:q1.number().min(0).max(1).optional(),frequency_penalty:q1.number().min(-2).max(2).optional(),presence_penalty:q1.number().min(-2).max(2).optional(),stop:q1.union([q1.string(),q1.array(q1.string())]).optional(),tools:q1.array(tB6).optional(),tool_choice:q1.union([q1.literal("auto"),q1.literal("none"),q1.literal("required"),q1.object({type:q1.literal("function"),function:q1.object({name:q1.string()})})]).optional(),response_format:$O6.optional(),user:q1.string().optional()});Gm$=class Gm$ extends Error{constructor($){super($);this.name="MessageConversionError"}};Jm$=new J1;Jm$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),Q=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(bF("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(bF("Organization context is required. Ensure your API key has organization metadata.","invalid_request_error","organization"),400);if((Z.organization.slug??Z.organization.id)!==Q)return $.json(bF("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let X=await $.req.json(),Y=ZO6.safeParse(X);if(!Y.success){let L=Y.error.issues[0]??{message:"Invalid request",path:[]};return $.json(bF(`Invalid request: ${L.message}`,"invalid_request_error",L.path.length>0?L.path.join("."):null),400)}let G=Y.data,J=QO6(G.model);if(!J)return $.json(bF("Invalid model format. Expected 'model_id' or 'credential_id:model_id' (e.g., 'claude-sonnet-4-6' or 'key_abc123:claude-sonnet-4-6')","invalid_request_error","model"),400);let{credentialId:W}=J,{modelId:K}=J;if(!W){let E=(await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id})).find((j)=>EL(j.providerId));if(!E)return $.json(bF("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 F;try{F=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json(bF(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let H=F.aiSdk.languageModel(K),U=YO6(G.messages),N=G.tools?GO6(G.tools):void 0,B=JO6(G.response_format),O=WO6(),w=Math.floor(Date.now()/1000);if(G.stream)return QN($,async(L)=>{let E=Xm$(H,U,N,G,B,$.req.raw.signal);try{let j=fO(E),z=!1,P=0,A="",I=async()=>{if(A.length===0)return;let k=A;A="",await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:w,model:G.model,choices:[{index:0,delta:{content:k},finish_reason:null}]})})};for await(let k of j.fullStream){if(!z&&(k.type==="text-delta"||k.type==="tool-call"))await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:w,model:G.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),z=!0;if(k.type==="text-delta"){if(A+=k.text,A.length>=nB6)await I()}else if(k.type==="tool-call"){await I();let M=P++;await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:w,model:G.model,choices:[{index:0,delta:{tool_calls:[{index:M,id:k.toolCallId,type:"function",function:{name:k.toolName,arguments:JSON.stringify(k.input)}}]},finish_reason:null}]})})}else if(k.type==="finish")await I(),await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:w,model:G.model,choices:[{index:0,delta:{},finish_reason:Ym$(k.finishReason)}],usage:k.totalUsage?{prompt_tokens:k.totalUsage.inputTokens??0,completion_tokens:k.totalUsage.outputTokens??0,total_tokens:k.totalUsage.totalTokens??0}:void 0})})}await I(),await L.writeSSE({data:"[DONE]"})}catch(j){let z=j;console.error("[openai-compat:stream] Error:",z.message),await L.writeSSE({data:JSON.stringify({error:{message:z.message,type:"server_error"}})})}});else{let L=Xm$(H,U,N,G,B,$.req.raw.signal),E=await _O(L),j={role:"assistant",content:E.text||null};if(E.toolCalls&&E.toolCalls.length>0)j.tool_calls=E.toolCalls.map((z)=>({id:z.toolCallId,type:"function",function:{name:z.toolName,arguments:JSON.stringify("input"in z?z.input:{})}})),j.content=null;return $.json({id:O,object:"chat.completion",created:w,model:G.model,choices:[{index:0,message:j,finish_reason:Ym$(E.finishReason)}],usage:{prompt_tokens:E.usage?.inputTokens??0,completion_tokens:E.usage?.outputTokens??0,total_tokens:E.usage?.totalTokens??0}})}}catch(X){let Y=X;if(Y.name==="AbortError")return $.json(bF("Request aborted","invalid_request_error"),400);if(Y.name==="MessageConversionError")return $.json(bF(Y.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",Y.message,Y.stack),$.json(bF(Y.message,"server_error"),500)}});Wm$=Jm$});function KO6($){if(typeof $!=="object"||$===null)return!1;let Q=$.githubRepo?.url;return typeof Q==="string"&&Q.length>0}function Fm$(){let $=new J1;return $.use("*",async(Z,Q)=>{await Q(),Z.header("Cache-Control","private, no-store"),Z.header("Vary","Cookie")}),$.get("/",async(Z)=>{let Q=Z.get("studioContext"),X=t0(Q);if(!X)return Z.json({error:"Authentication required"},401);let G=(Z.req.query("site")??"").trim().toLowerCase();if(!sQ(G))return Z.json({error:"Invalid site slug"},400);let J=await Q.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["organization.id as id","organization.slug as slug","organization.name as name","organization.metadata as metadata"]).where("member.userId","=",X).execute(),W=[];for(let F of J){if(!F.slug||m9(F))continue;let H=await Q.storage.virtualMcps.list(F.id);for(let U of H){if(ee1(U)!==G)continue;if(!KO6(U.metadata))continue;W.push({orgSlug:F.slug,orgName:F.name??F.slug,project:{id:U.id,title:U.title,icon:U.icon??null}})}}let K={matches:W};return Z.json(K)}),$}var Hm$=D(()=>{d$();cH()});var Nm$;var Um$=D(()=>{Nm$={name:"decocms",version:"4.329.5",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});function UO6(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??HO6}}var Bm$,HO6="https://ph.studio.decocms.com",Om$;var Dm$=D(()=>{d$();J90();J_();u5();D$();h91();Um$();Bm$=new J1;Bm$.get("/",($)=>{let Z={version:Nm$.version,theme:Dp1(),...bH().logo&&{logo:bH().logo},...PU()&&{internalUrl:l_1()},...V0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!V0().firecrawlApiKey,hostingEnabled:!!V0().controlplaneRestUrl&&!!V0().controlplaneServiceToken,hostingControlPlaneGa:V0().hostingControlPlaneGa,monitorEnabled:!!V0().clickhouseAnalyticsUrl&&!!V0().clickhouseAnalyticsPassword,monitorGa:V0().monitorGa,auth:Yg$(),posthog:UO6(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:cs()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});Om$=Bm$});function Nl($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function FQ1($){return(Nl($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((Q)=>Q.charAt(0).toUpperCase()+Q.slice(1)).join(" ")}function Lm$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(Nl($))}&sz=${Z}`}function wm$($,Z){let Q=$.trim();if(Q.length<=Z)return Q;let X=Q.slice(0,Z-1),Y=X.lastIndexOf(" ");return`${(Y>Z*0.6?X.slice(0,Y):X).trimEnd()}\u2026`}function Em$($){let{brand:Z,domain:Q,score:X,verdict:Y}=$,G=typeof X==="number"?`${Z} commerce report \u2014 ${Math.round(X)}/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()?wm$(`${Y.trim().replace(/\s+/g," ")} \u2014 ${J}`,200):wm$(`How does ${Q} really perform? ${J}`,200);return{title:G,description:W}}import{z as l0}from"zod";var gv,NO6,BO6,OO6,DO6,jm$;var zm$=D(()=>{gv=l0.enum(["good","bad","neutral"]),NO6=l0.preprocess(($)=>{if(Array.isArray($))return{kind:"text",value:$.find((Q)=>Q!==null&&typeof Q!=="object")??""};return $!==null&&typeof $==="object"?$:{kind:"text",value:$}},l0.object({kind:l0.enum(["text","number","sparkline","badge","score"]).catch("text"),value:l0.coerce.string().optional(),tone:gv.optional(),muted:l0.boolean().optional(),delta:l0.coerce.string().optional(),deltaDir:l0.enum(["up","down","neutral"]).optional(),points:l0.array(l0.coerce.number()).optional(),label:l0.coerce.string().optional()}).transform(($)=>{if($.kind==="badge"&&$.label==null)$.label=$.value??"";if($.kind==="score"){let Z=Number($.value);if(Number.isNaN(Z))return{...$,kind:"text"}}return $})),BO6=l0.preprocess(($)=>{let Z=$;if(Z&&typeof Z==="object"&&!Array.isArray(Z)&&Array.isArray(Z.cells))Z=Z.cells;if(Array.isArray(Z)&&Z.length===1&&Array.isArray(Z[0]))Z=Z[0];if(Array.isArray(Z))return Z;if(Z&&typeof Z==="object")return Object.values(Z);return Z},l0.array(NO6)),OO6={key:l0.coerce.string(),title:l0.coerce.string(),eyebrow:l0.coerce.string().optional(),headline:l0.coerce.string(),annotation:l0.coerce.string().optional(),methodology:l0.coerce.string().optional(),sources:l0.array(l0.object({name:l0.coerce.string(),logoUrl:l0.coerce.string()})).optional()},DO6=l0.discriminatedUnion("template",[l0.object({template:l0.literal("cover"),score:l0.object({value:l0.coerce.number(),max:l0.coerce.number().optional(),grade:l0.coerce.string().optional(),label:l0.coerce.string().optional()}).optional(),brandImage:l0.coerce.string().optional(),screenshot:l0.coerce.string().optional(),mobileScreenshot:l0.coerce.string().optional()}),l0.object({template:l0.literal("cta"),ctaUrl:l0.coerce.string().optional(),ctaLabel:l0.coerce.string().optional(),bullets:l0.array(l0.coerce.string()).optional()}),l0.object({template:l0.literal("series"),points:l0.array(l0.coerce.number()).min(2),xLabels:l0.array(l0.coerce.string()).min(1),unit:l0.coerce.string().optional(),callout:l0.object({index:l0.coerce.number(),value:l0.coerce.string(),tone:gv.optional()})}),l0.object({template:l0.literal("threshold"),value:l0.coerce.string().default(""),metricLabel:l0.coerce.string().optional(),ratio:l0.coerce.number(),thresholdRatio:l0.coerce.number().optional(),thresholdLabel:l0.coerce.string().default(""),tone:gv.optional()}),l0.object({template:l0.literal("stats"),stats:l0.array(l0.object({value:l0.coerce.string(),label:l0.coerce.string(),tone:gv.optional()})).min(1)}),l0.object({template:l0.literal("bars"),items:l0.array(l0.object({value:l0.coerce.string(),label:l0.coerce.string(),ratio:l0.coerce.number(),tone:gv.optional()})).min(1)}),l0.object({template:l0.literal("gauges"),gauges:l0.array(l0.object({label:l0.coerce.string(),value:l0.coerce.string(),status:l0.enum(["good","warn","bad"]).catch("warn"),caption:l0.coerce.string().optional(),ratio:l0.coerce.number().optional()})).min(1)}),l0.object({template:l0.literal("checklist"),checks:l0.array(l0.object({label:l0.coerce.string(),status:l0.enum(["pass","fail","warn"]).catch("fail"),value:l0.coerce.string().optional()})).min(1)}),l0.object({template:l0.literal("table"),columns:l0.array(l0.object({label:l0.coerce.string(),align:l0.enum(["left","right"]).optional()})).min(1),rows:l0.array(BO6).min(1),highlightRow:l0.coerce.number().optional()}),l0.object({template:l0.literal("products"),products:l0.array(l0.object({name:l0.coerce.string(),price:l0.coerce.string().optional(),image:l0.coerce.string().optional(),url:l0.coerce.string().optional()})).min(1)}),l0.object({template:l0.literal("list"),entries:l0.array(l0.object({label:l0.coerce.string(),severity:l0.enum(["error","warning","notice"]).catch("notice")})).min(1),moreCount:l0.coerce.number().optional()}),l0.object({template:l0.literal("keywords"),volumeLabel:l0.coerce.string().optional(),keywords:l0.array(l0.object({term:l0.coerce.string(),volume:l0.coerce.string(),position:l0.coerce.number().catch(0)})).min(1)}),l0.object({template:l0.literal("competitor"),metricLabel:l0.coerce.string().optional(),competitors:l0.array(l0.object({name:l0.coerce.string(),value:l0.coerce.string(),tone:gv.optional(),isYou:l0.boolean().optional()})).min(1)}),l0.object({template:l0.literal("scorecard"),rivalLabel:l0.coerce.string().optional(),dimensions:l0.array(l0.object({label:l0.coerce.string(),you:l0.coerce.string(),rival:l0.coerce.string().optional(),rivalName:l0.coerce.string().optional(),tone:gv.optional()})).min(1)})]),jm$=l0.object({...OO6,template:DO6})});function iT0($){let Z=[],Q=[...$.sections].sort((Y,G)=>Y.position-G.position).map((Y)=>{let G=jm$.safeParse(Y.props);if(G.success)return G.data;let J=G.error.issues[0];return Z.push({section_type:Y.section_type,position:Y.position,reason:J?`${J.path.join(".")||"(root)"}: ${J.message}`:"contract violation"}),null}).filter((Y)=>Y!==null),X=Q.filter((Y)=>Y.template.template!=="cover"&&Y.template.template!=="cta").map((Y)=>({key:Y.key,title:Y.title}));return{deck:{meta:{...$.meta,scores:$.summary?.scores,scannedAt:$.scanned_at,toc:X},slides:Q},drops:Z}}var HQ1=D(()=>{zm$()});import{join as Pm$}from"path";async function LO6($){try{let Z=await fetch(`${LK({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(wO6)});if(!Z.ok)return null;let Q=await Z.json(),{deck:X}=iT0(Q);if(!X.slides.length)return null;let Y=X.slides.find((W)=>W.template.template==="cover"),G=Y?.template,J=G&&G.template==="cover"?G:void 0;return{brand:X.meta.brand?.trim()||FQ1($),score:X.meta.scores?.cover??J?.score?.value,verdict:Y?.annotation?.trim()||Y?.headline?.trim()||void 0}}catch{return null}}function TG($){return $.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""")}function EO6($,Z){let Q=Nl($),X=Z?.brand?.trim()||FQ1(Q),Y=Lm$(Q,128),J=`${(V0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(Q)}`,{title:W,description:K}=Em$({brand:X,domain:Q,score:Z?.score,verdict:Z?.verdict}),F=`${J}/og.png`,H=`${X} commerce report by decocms`;return[`<title>${TG(W)}</title>`,`<meta name="description" content="${TG(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="${TG(W)}" />`,`<meta property="og:description" content="${TG(K)}" />`,`<meta property="og:url" content="${TG(J)}" />`,`<meta property="og:image" content="${TG(F)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${TG(H)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${TG(W)}" />`,`<meta name="twitter:description" content="${TG(K)}" />`,`<meta name="twitter:image" content="${TG(F)}" />`,`<meta name="twitter:image:alt" content="${TG(H)}" />`,`<link rel="canonical" href="${TG(J)}" />`,`<link rel="icon" href="${TG(Y)}" sizes="any" />`].join(`
|
|
2984
2984
|
`)}function jO6($,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}
|
|
2985
2985
|
</head>`)}function Am$($){let Z=new J1;return Z.get("/:domain/og.png",async(Q)=>{let X=Nl(Q.req.param("domain")),Y=async()=>{let G=$?Bun.file(Pm$($,"report-og-fallback.png")):null;if(!G||!await G.exists())return Q.notFound();return Q.body(new Uint8Array(await G.arrayBuffer()),200,{"Content-Type":"image/png","Cache-Control":"public, max-age=0, s-maxage=3600"})};try{let G=await fetch(`${LK({})}/api/v2/public/diagnostics/${encodeURIComponent(X)}/og.png`,{signal:AbortSignal.timeout(zO6)}),J=G.headers.get("content-type")??"";if(!G.ok||!J.startsWith("image/")||!G.body)return Y();return Q.body(G.body,200,{"Content-Type":J,"Cache-Control":"public, max-age=0, s-maxage=604800"})}catch{return Y()}}),Z.get("/:domain",async(Q)=>{let X=Q.req.param("domain"),Y=$?Pm$($,"index.html"):null,G=Y?Bun.file(Y):null;if(!G||!await G.exists())return Q.notFound();let J=await G.text();try{let W=await LO6(Nl(X)),K=EO6(X,W);return Q.html(jO6(J,K),200,{"Cache-Control":"public, max-age=0, s-maxage=300"})}catch{return Q.html(J)}}),Z}var wO6=2500,zO6=1e4;var Tm$=D(()=>{d$();HQ1();TE();D$()});function bs($,Z){return fetch(`${LK({})}${$}`,Z)}async function PO6($,Z,Q){let X=new URLSearchParams;if(Z)X.set("pw",Z);if(Q)X.set("lang",Q);let Y=X.toString()?`?${X.toString()}`:"",G=await bs(`/api/v2/public/diagnostics/${encodeURIComponent($)}${Y}`,{headers:{Accept:"application/json"}});if(G.status===404)return{status:"not_found",deck:null,scanned_at:null,drops:[]};if(!G.ok)throw Error(`report read HTTP ${G.status}`);let J=await G.json(),{deck:W,drops:K}=iT0(J);return{status:W.slides.length?"ready":"empty",deck:W,scanned_at:J.scanned_at,drops:K}}var AO6,YN,Rm$=async($,Z)=>{if(!$.get("reportUser"))return $.json({error:"Authentication required"},401);await Z();return},Im$;var qm$=D(()=>{d$();tY();TE();HQ1();AO6=new Set(["complete","errored","terminated","unknown"]),YN=new J1;YN.use("*",async($,Z)=>{let Q=await $8.api.getSession({headers:$.req.raw.headers});$.set("reportUser",Q?.user?.id?{email:Q.user.email}:void 0),await Z(),$.header("Cache-Control","private, no-store"),$.header("Vary","Cookie");return});YN.use("/link-token/*",Rm$);YN.use("/suggest",Rm$);YN.get("/site/:domain",async($)=>{let Z=$.req.param("domain").trim();if(!Z)return $.json({error:"domain is required"},400);let Q=$.get("reportUser"),X=$.req.query("key")?.trim()||void 0,Y=$.req.query("lang")?.trim()||void 0;try{let G=await PO6(Z,X,Y);if($.header("Cache-Control","private, no-store"),Q||!G.deck)return $.json(G);return $.json({...G,deck:{...G.deck,slides:G.deck.slides.slice(0,1)},truncated:G.status==="ready"})}catch{return $.json({error:"report read failed"},502)}});YN.post("/run",async($)=>{let Z=$.get("reportUser"),Q;try{Q=await $.req.json()}catch{return $.json({error:"invalid JSON"},400)}let X=typeof Q.domain==="string"?Q.domain.trim():"";if(!X)return $.json({error:"domain is required"},400);let Y=Z?.email,G=typeof Q.distinctId==="string"&&Q.distinctId.trim()&&Q.distinctId.length<=200?Q.distinctId.trim():void 0;try{let J=await bs("/api/v2/diagnostics/run",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${AE({})}`},body:JSON.stringify({url:X,...Y?{email:Y}:{},distinct_id:G})});if(!J.ok)return $.json({error:`run HTTP ${J.status}`},502);let W=await J.json(),K=W.blocked?{state:"blocked"}:W.status==="fresh"?{state:"fresh"}:W.mode==="sync"?{state:"sync"}:{state:"running",id:W.id??null};return $.json(K)}catch{return $.json({error:"run failed"},502)}});YN.get("/status",async($)=>{let Z=$.req.query("id");if(!Z)return $.json({error:"id is required"},400);try{let Q=await bs(`/api/v2/diagnostics/status?id=${encodeURIComponent(Z)}`,{headers:{Authorization:`Bearer ${AE({})}`}});if(!Q.ok)return $.json({error:`status HTTP ${Q.status}`},502);let Y=(await Q.json()).status??"unknown",G={done:AO6.has(Y),status:Y};return $.json(G)}catch{return $.json({error:"status failed"},502)}});YN.get("/link-token/:id",async($)=>{let Z=$.req.param("id");try{let Q=await bs(`/api/v2/public/link-tokens/${encodeURIComponent(Z)}`,{headers:{Accept:"application/json"}});if(Q.status===404)return $.json(null);if(!Q.ok)return $.json({error:`link token HTTP ${Q.status}`},502);return $.json(await Q.json())}catch{return $.json({error:"link token resolve failed"},502)}});YN.get("/suggest",async($)=>{let Z=($.req.query("q")??"").trim().slice(0,64);if(Z.length<2)return $.json({suggestions:[]});try{let Q=await bs(`/api/v2/public/suggest?q=${encodeURIComponent(Z)}`,{headers:{Accept:"application/json"}});if(!Q.ok)return $.json({suggestions:[]});let X=await Q.json();return $.json({suggestions:Array.isArray(X.suggestions)?X.suggestions:[]})}catch{return $.json({suggestions:[]})}});Im$=YN});import{createHmac as TO6,timingSafeEqual as RO6}from"crypto";function km$($,Z,Q,X=Date.now()){if(!Z||!Q)return!1;let Y,G=[];for(let F of Z.split(",")){let H=F.indexOf("=");if(H<=0)continue;let U=F.slice(0,H).trim(),N=F.slice(H+1).trim();if(U==="t")Y=N;else if(U==="v1")G.push(N)}if(!Y||G.length===0)return!1;let J=Number(Y);if(!Number.isFinite(J)||Math.abs(X/1000-J)>IO6)return!1;let W=TO6("sha256",Q).update(`${Y}.${$}`).digest("hex"),K=Buffer.from(W,"hex");return G.some((F)=>{let H=Buffer.from(F,"hex");return K.length===H.length&&RO6(K,H)})}function Vm$($){let Z;try{Z=JSON.parse($)}catch{return null}let Q=mJ(Z),X=mJ(mJ(Q?.data)?.object);if(!Q||typeof Q.type!=="string"||!X)return null;return{id:xF(Q.id),type:Q.type,created:typeof Q.created==="number"?Q.created:void 0,livemode:typeof Q.livemode==="boolean"?Q.livemode:void 0,data:{object:X}}}function Sm$($){switch($){case"active":case"trialing":return"active";case"past_due":return"past_due";default:return"canceled"}}function xF($){return typeof $==="string"?$:void 0}function mJ($){return typeof $==="object"&&$!==null?$:void 0}function pT0($){return typeof $==="number"?new Date($*1000):null}function BQ1($){return xF($)??xF(mJ($)?.id)}function qO6($){return BQ1($.subscription)??xF(mJ(mJ($.parent)?.subscription_details)?.subscription)}function MO6($){let Z=pT0($.current_period_end);if(Z)return Z;let Q=mJ($.items)?.data;if(!Array.isArray(Q))return null;let X=0;for(let Y of Q){let G=mJ(Y)?.current_period_end;if(typeof G==="number"&&G>X)X=G}return X>0?new Date(X*1000):null}function UQ1($,Z){let Q=pT0($.created);return!!Q&&!!Z.lastStripeEventAt&&Q<Z.lastStripeEventAt}function NQ1($,Z){let Q=pT0($.created);if(!Q)return;return Z.lastStripeEventAt&&Z.lastStripeEventAt>Q?void 0:Q}async function kO6($,Z){let Q=Z.data.object;switch(Z.type){case"checkout.session.completed":case"checkout.session.async_payment_succeeded":{let X=xF(mJ(Q.metadata)?.orgId);if(!X)return{handled:!1,reason:"no orgId"};if(xF(mJ(Q.metadata)?.kind)==="topup"){if(Q.mode!=="payment")return{handled:!1,reason:"topup with wrong mode"};if(xF(Q.payment_status)!=="paid")return{handled:!1,reason:"payment not confirmed"};let J=xF(Q.id);if(!J)return console.error("stripe webhook: topup session without id",{eventId:Z.id,organizationId:X}),{handled:!1,reason:"topup session without id"};let W=Number(mJ(Q.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:X,creditCents:mJ(Q.metadata)?.creditCents}),{handled:!1,reason:"bad topup metadata"};return{handled:!0,organizationId:X,topUp:{creditCents:W,referenceId:`stripe-topup:${J}`}}}if(Q.mode!=="subscription")return{handled:!1,reason:"not a subscription checkout"};if(xF(Q.payment_status)!=="paid")return{handled:!1,reason:"payment not confirmed"};let Y=await $.getBilling(X);if(!Y)return{handled:!1,reason:"unknown org"};let G=BQ1(Q.subscription);if(Y.stripeSubscriptionId&&G&&Y.stripeSubscriptionId!==G)return console.error("stripe webhook: refused checkout rebind",{organizationId:X,eventId:Z.id}),{handled:!1,reason:"org already bound to another subscription",orphanSubscriptionId:G};if(UQ1(Z,Y))return{handled:!1,reason:"stale event"};return await $.updateStripeState(X,{stripeCustomerId:BQ1(Q.customer),stripeSubscriptionId:G,status:"active",lastStripeEventAt:NQ1(Z,Y)}),{handled:!0,organizationId:X}}case"customer.subscription.updated":case"customer.subscription.deleted":{let X=xF(Q.id);if(!X)return{handled:!1,reason:"no sub id"};let Y=await $.getBillingByStripeSubscriptionId(X);if(!Y)return{handled:!1,reason:"unknown subscription"};let G=Z.type==="customer.subscription.deleted";if(!G&&UQ1(Z,Y))return{handled:!1,reason:"stale event"};let J=G?"canceled":Sm$(Q.status);return await $.updateStripeState(Y.organizationId,{status:J,currentPeriodEnd:MO6(Q),...G&&{stripeSubscriptionId:null},lastStripeEventAt:NQ1(Z,Y)}),{handled:!0,organizationId:Y.organizationId}}case"invoice.paid":{let X=qO6(Q);if(!X)return{handled:!1,reason:"no sub id"};let Y=await $.getBillingByStripeSubscriptionId(X);if(!Y)return{handled:!1,reason:"unknown subscription"};if(UQ1(Z,Y))return{handled:!1,reason:"stale event"};return await $.updateStripeState(Y.organizationId,{status:"active",currentPeriodEnd:pT0(Q.period_end),lastStripeEventAt:NQ1(Z,Y)}),{handled:!0,organizationId:Y.organizationId}}default:return{handled:!1,reason:`unhandled event ${Z.type}`}}}function VO6($,Z){if(!Z.handled||$.livemode===!1)return null;let Q=$.data.object;if(Z.topUp)return{name:"credits_topup_succeeded",organizationId:Z.organizationId,properties:{credit_cents:Z.topUp.creditCents}};switch($.type){case"checkout.session.completed":case"checkout.session.async_payment_succeeded":return{name:"subscription_started",organizationId:Z.organizationId,properties:{}};case"customer.subscription.deleted":return{name:"subscription_canceled",organizationId:Z.organizationId,properties:{}};case"customer.subscription.updated":return{name:"subscription_updated",organizationId:Z.organizationId,properties:{status:Sm$(Q.status),...typeof Q.cancel_at_period_end==="boolean"?{cancel_at_period_end:Q.cancel_at_period_end}:{}}};case"invoice.paid":if(Q.billing_reason==="subscription_create")return null;return{name:"subscription_renewed",organizationId:Z.organizationId,properties:{}};default:return null}}function Mm$($,Z){let Q=VO6($,Z);if(!Q)return;dY({event:Q.name,organizationId:Q.organizationId,...$.id?{uuid:Tt1(`stripe:${$.id}:${Q.name}`)}:{},...$.created?{timestamp:new Date($.created*1000)}:{},properties:Q.properties})}async function Cm$($){let Z=new BK(B8().db),Q=await kO6(Z,$);if(!(Q.handled&&Q.topUp))Mm$($,Q);if(Q.handled&&Q.topUp)await tj$({organizationId:Q.organizationId,amountCents:Q.topUp.creditCents,referenceId:Q.topUp.referenceId}),Mm$($,Q);if(!Q.handled&&Q.orphanSubscriptionId)try{await e0$(Q.orphanSubscriptionId),console.error("stripe webhook: canceled orphan subscription",{subscriptionId:Q.orphanSubscriptionId,eventId:$.id})}catch(X){if(!(X instanceof oY&&(X.status===400||X.status===404)))throw X}return Q}var IO6=300;var _m$=D(()=>{aG();v4();h50();bE();P11()});var SO6=1048576,OQ1;var vm$=D(()=>{d$();VF();D$();_m$();OQ1=new J1;OQ1.post("/webhook",a5({maxSize:SO6,onError:($)=>$.json({error:"payload too large"},413)}),async($)=>{let Z=V0().stripeWebhookSecret;if(!Z)return $.json({error:"stripe billing not configured"},503);let Q=await $.req.text();if(!km$(Q,$.req.header("stripe-signature"),Z))return $.json({error:"invalid signature"},400);let Y=Vm$(Q);if(!Y)return $.json({error:"invalid payload"},400);let G=await Cm$(Y);return console.log("stripe webhook",{eventId:Y.id,type:Y.type,livemode:Y.livemode,...G}),$.json({received:!0})})});import{timingSafeEqual as CO6}from"crypto";function vO6($,Z,Q){if(!Z?.startsWith("sha256="))return!1;let X=new Bun.CryptoHasher("sha256",Q).update($).digest("hex"),Y=Z.slice(7);if(Y.length!==X.length)return!1;return CO6(Buffer.from(Y),Buffer.from(X))}var _O6=5242880,DQ1;var fm$=D(()=>{d$();VF();s3();DQ1=new J1;DQ1.post("/webhook",a5({maxSize:_O6,onError:($)=>$.json({error:"payload too large"},413)}),async($)=>{let Z=process.env.GITHUB_WEBHOOK_SECRET;if(!Z)return $.json({error:"github webhook not configured"},503);let Q=await $.req.text();if(!vO6(Q,$.req.header("x-hub-signature-256"),Z))return $.json({error:"invalid signature"},400);if($.req.header("x-github-event")!=="push")return $.json({ok:!0,ignored:"event"});let X;try{X=JSON.parse(Q)}catch{return $.json({error:"invalid payload"},400)}let Y=X.ref,G=X.repository?.full_name;if(!Y||!G)return $.json({ok:!0,ignored:"shape"});let W=(await Ft0())?.markTenantPoolsDirty(G,Y)??[];return $.json({ok:!0,pools:W})})});function bm$($){let Z=new pU($.db,new hQ($.encryptionKey)),Q=new J1;return Q.get("/attachments/:token",async(X)=>{let Y=pK$(X.req.param("token"));if(!Y)return X.json({error:"Invalid or expired link"},404);let G=await Z.getByOrg(Y.organizationId);if(!G)return X.json({error:"Jira is not connected"},404);let W=await new JG(G.siteUrl,G.email,G.apiToken).downloadAttachment(Y.attachmentId);if(!W.ok||!W.body)return X.json({error:"Jira refused the download"},502);let K=new Headers;for(let F of["content-type","content-length","content-disposition"]){let H=W.headers.get(F);if(H)K.set(F,H)}return K.set("cache-control","no-store"),new Response(W.body,{status:200,headers:K})}),Q}var xm$=D(()=>{d$();tN();Jo0();dC()});function ym$($){if(typeof $!=="object"||$===null)return null;let Z=$;if(Z.webhookEvent!=="jira:issue_updated")return null;let Q=Z.issue?.id,X=Z.issue?.key,Y=Z.changelog?.id;if(typeof Q!=="string"&&typeof Q!=="number"||typeof X!=="string"||typeof Y!=="string"&&typeof Y!=="number")return null;let G=Z.changelog?.items?.find((J)=>J.field==="status");if(!G||typeof G.toString!=="string")return null;return{issueId:String(Q),issueKey:X,toStatus:G.toString,changelogId:String(Y)}}function gm$($,Z,Q){let X=[];for(let Y of Z){if(new Date(Y.created).getTime()<Q.getTime())continue;let G=Y.items.find((J)=>J.field==="status");if(!G||typeof G.toString!=="string")continue;X.push({issueId:$.id,issueKey:$.key,toStatus:G.toString,changelogId:Y.id})}return X.sort((Y,G)=>Number(Y.changelogId)-Number(G.changelogId))}function xO6($){return`Jira ${$.key}: ${$.summary}`}async function nT0($,Z,Q){if(!Z.enabled)return"disabled";let X=Z.organizationId,Y=await $.storage.jiraIntegrations.getAutomation(X,Q.toStatus);if(!Y)return"no_rule";let G=new JG(Z.siteUrl,Z.email,Z.apiToken),J=await Jw0(G,Z.siteUrl,Q.issueId),W=await yO6($,Z,Q,J);if(!await $.storage.jiraIntegrations.claimTrigger(X,Q.issueId,Q.changelogId))return"duplicate";let F=await $.storage.taskBoard.update(W.id,X,{assigneeId:m$,assignedBy:Z.createdBy},Z.createdBy);try{await XW($,F,{instruction:Y.prompt??fO6,source:{kind:"jira",issueKey:J.key,title:xO6(J),body:`${Ww0(J)}
|
|
2986
2986
|
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as o,j as r}from"./index-BUxfvzOI.js";import{O as m}from"./api-keys-b4JYfEu6.js";import{R as p}from"./require-capability-BJC8KLTE.js";import"./AlertCircle-BBYR4GFH.js";import"./Copy01-DL41aqqZ.js";import"./Key01-CeNXYOZ0.js";import"./Plus-DDX8SATP.js";import"./Trash01-CtC4E2Sa.js";import"./alert-dialog-BliafGGJ.js";import"./dialog-BPFt4lFr.js";import"./input-CFRxvyvd.js";import"./label-BT_zUtSE.js";import"./use-mcp-client-BdWyVRdu.js";import"./constants-DNuUCxmW.js";import"./auth-D5m4cqRg.js";import"./access-gate-BcWIHWhj.js";import"./capability-load-error-YFCDLWxK.js";function A(){const t=o.c(1);let i;return t[0]===Symbol.for("react.memo_cache_sentinel")?(i=r.jsx(p,{capability:"api-keys:manage",area:"api-keys",children:r.jsx(m,{})}),t[0]=i):i=t[0],i}export{A as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as B,j as o,b as $,W as D,d as M,r as q,P as d,B as V,o as R}from"./index-BUxfvzOI.js";import{s as W}from"./Plus-DDX8SATP.js";import{i as S}from"./Zap-CT8WBC0h.js";import{S as F}from"./search-input-B-0ya7r_.js";import{E as T}from"./empty-state-DvlwkIKU.js";import{c as G}from"./use-automations-Baz3C92q.js";import{u as H}from"./use-navigate-to-agent-jTAd3sn7.js";import{A as J}from"./automation-list-row-DYXQGSLm.js";import{h as K}from"./constants-DNuUCxmW.js";import{a as O}from"./use-virtual-mcp-CZJghpqp.js";import{R as Q}from"./require-capability-BJC8KLTE.js";import"./SearchMd-DYxH4YXa.js";import"./use-mcp-client-BdWyVRdu.js";import"./auth-D5m4cqRg.js";import"./use-destination-route-BiBwRnwH.js";import"./hooks-0YBotF11.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./decopilot-sse-pool-D5dycX_-.js";import"./task-board-BLlkbzQc.js";import"./schema-3NiDFCyj.js";import"./chat-context-DubBxTgM.js";import"./use-panel-navigate-hBYy-oqI.js";import"./slugify-CEUa2lfQ.js";import"./use-is-desktop-app-BNujXJc_.js";import"./use-ai-providers-BlpB44TE.js";import"./location-oTTXFrSF.js";import"./use-decopilot-events-DH3HeMHQ.js";import"./use-organization-settings-BAWyw-2y.js";import"./github-repo-COLY3wWI.js";import"./alert-dialog-BliafGGJ.js";import"./dropdown-menu-CB-q_iiO.js";import"./Check-CABufYLR.js";import"./ChevronRight-DTibj1Ui.js";import"./DotsVertical-BOoi0c7j.js";import"./agent-icon-mk-XQZni.js";import"./AlertCircle-BBYR4GFH.js";import"./Tool01-CSK4qMY9.js";import"./ArrowUp-QJEwDJA1.js";import"./ArrowLeft-D9stSdZU.js";import"./Tool02-DlCeYFZc.js";import"./XCircle-DdAk9WVh.js";import"./TrendUp01-DXKzNK5Z.js";import"./ZoomOut-JnnG8new.js";import"./Users03-Da4x8ARK.js";import"./CheckCircle-DK2Y0uD8.js";import"./ChevronUp-9jtCu5DD.js";import"./ChevronSelectorVertical-C-_DXKCi.js";import"./UserSquare-CFSxfDp_.js";import"./Copy01-DL41aqqZ.js";import"./CreditCard01-PsqzvnWg.js";import"./Download01-BE83rIoq.js";import"./Settings02-ZMpUQ0_a.js";import"./Eye-DR68Dt82.js";import"./Share07-NdsiGLTd.js";import"./GitBranch01-ttMYz_bX.js";import"./Globe01-D0KqKl2w.js";import"./XClose-CbZk3cnK.js";import"./HardDrive-frKQqTEA.js";import"./Image01-Crqq5x1o.js";import"./Key01-CeNXYOZ0.js";import"./Link01-DVMHQQa6.js";import"./LinkExternal01-DVYbdx38.js";import"./Monitor01-DQ7392nj.js";import"./Sun-DvIBG1pa.js";import"./Package-6DUiBV1f.js";import"./Palette-CDpV0MZz.js";import"./Play-CHGdbeFD.js";import"./Shield01-CWE6wNBM.js";import"./Stars01-DdTMtjEL.js";import"./Trash01-CtC4E2Sa.js";import"./Upload01-C2j94wR0.js";import"./User01-CNL_fPgy.js";import"./Users01-6Bgsc1i5.js";import"./access-gate-BcWIHWhj.js";import"./capability-load-error-YFCDLWxK.js";function U(){const t=B.c(20),i=$(),{org:l}=D(),{data:C}=G(void 0),g=C===void 0?[]:C,k=O(),P=H(),f=M(),[x,E]=q.useState(""),h=x.toLowerCase(),A=new Map(k.map(X)),b=g.filter(e=>{if(!h||e.name.toLowerCase().includes(h))return!0;if(e.virtual_mcp_id){const p=A.get(e.virtual_mcp_id);if(p&&p.title.toLowerCase().includes(h))return!0}return!1}),z=(e,p)=>{const N=p&&A.has(p)?p:K(l.id);R("automations_list_row_clicked",{automation_id:e,agent_id:N,source:"settings_automations"}),P(N,{panel:`automation:${e}`})};let c;t[0]!==f||t[1]!==l.slug?(c=()=>{R("automations_empty_state_browse_agents_clicked"),f({to:"/$org/settings/agents",params:{org:l.slug}})},t[0]=f,t[1]=l.slug,t[2]=c):c=t[2];const L=c,j=d,v=d,w=d;let s;t[3]!==i?(s=i("settings.automations.pageTitle"),t[3]=i,t[4]=s):s=t[4];let r;t[5]!==s?(r=o.jsx(d.Title,{children:s}),t[5]=s,t[6]=r):r=t[6];const _=g.length>0&&o.jsx(F,{value:x,onChange:E,placeholder:i("settings.automations.searchPlaceholder"),className:"w-full md:w-[375px]"});let m;t[7]!==r||t[8]!==_?(m=o.jsxs("div",{className:"flex flex-col gap-6",children:[r,_]}),t[7]=r,t[8]=_,t[9]=m):m=t[9];const y=g.length===0?o.jsx("div",{className:"flex items-center justify-center py-20",children:o.jsx(T,{image:o.jsx(S,{size:48,className:"text-muted-foreground"}),title:i("settings.automations.emptyTitle"),description:i("settings.automations.emptyDescription"),actions:o.jsxs(V,{size:"sm",onClick:L,children:[o.jsx(W,{size:14}),i("settings.automations.browseAgentsButton")]})})}):b.length===0?o.jsx("div",{className:"flex items-center justify-center py-20",children:o.jsx(T,{image:o.jsx(S,{size:48,className:"text-muted-foreground"}),title:i("settings.automations.noResultsTitle"),description:i("settings.automations.noResultsDescription",{search:x})})}):o.jsx("div",{className:"mt-6 rounded-xl border border-border overflow-hidden",children:b.map(e=>o.jsx(J,{automation:e,showAgent:!0,onClick:()=>z(e.id,e.virtual_mcp_id)},e.id))});let n;t[10]!==w.Body||t[11]!==m||t[12]!==y?(n=o.jsxs(w.Body,{children:[m,y]}),t[10]=w.Body,t[11]=m,t[12]=y,t[13]=n):n=t[13];let a;t[14]!==v.Content||t[15]!==n?(a=o.jsx(v.Content,{children:n}),t[14]=v.Content,t[15]=n,t[16]=a):a=t[16];let u;return t[17]!==j||t[18]!==a?(u=o.jsx(j,{children:a}),t[17]=j,t[18]=a,t[19]=u):u=t[19],u}function X(t){return[t.id,t]}function wo(){const t=B.c(1);let i;return t[0]===Symbol.for("react.memo_cache_sentinel")?(i=o.jsx(Q,{capability:"automations:manage",area:"automations",children:o.jsx(U,{})}),t[0]=i):i=t[0],i}export{wo as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as w,b as z,G as g,j as a,H as _,r as j,I as D,J as I,M as O,O as L,R as A,U as M}from"./index-BUxfvzOI.js";import{S as T}from"./index-bpF-3xgs.js";import{u as H}from"./settings-sidebar-DrnSvH1E.js";import"./task-route-BzutwceJ.js";import"./hooks-0YBotF11.js";import"./use-destination-route-BiBwRnwH.js";import"./constants-DNuUCxmW.js";import"./use-mcp-client-BdWyVRdu.js";import"./auth-D5m4cqRg.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./decopilot-sse-pool-D5dycX_-.js";import"./task-board-BLlkbzQc.js";import"./schema-3NiDFCyj.js";import"./ChevronUp-9jtCu5DD.js";import"./agent-icon-mk-XQZni.js";import"./AlertCircle-BBYR4GFH.js";import"./Tool01-CSK4qMY9.js";import"./ArrowUp-QJEwDJA1.js";import"./ArrowLeft-D9stSdZU.js";import"./Tool02-DlCeYFZc.js";import"./XCircle-DdAk9WVh.js";import"./TrendUp01-DXKzNK5Z.js";import"./ZoomOut-JnnG8new.js";import"./Users03-Da4x8ARK.js";import"./CheckCircle-DK2Y0uD8.js";import"./Check-CABufYLR.js";import"./ChevronRight-DTibj1Ui.js";import"./ChevronSelectorVertical-C-_DXKCi.js";import"./DotsVertical-BOoi0c7j.js";import"./UserSquare-CFSxfDp_.js";import"./Copy01-DL41aqqZ.js";import"./CreditCard01-PsqzvnWg.js";import"./Download01-BE83rIoq.js";import"./Settings02-ZMpUQ0_a.js";import"./Eye-DR68Dt82.js";import"./Share07-NdsiGLTd.js";import"./GitBranch01-ttMYz_bX.js";import"./Globe01-D0KqKl2w.js";import"./XClose-CbZk3cnK.js";import"./HardDrive-frKQqTEA.js";import"./Image01-Crqq5x1o.js";import"./Key01-CeNXYOZ0.js";import"./Link01-DVMHQQa6.js";import"./LinkExternal01-DVYbdx38.js";import"./Monitor01-DQ7392nj.js";import"./Sun-DvIBG1pa.js";import"./Package-6DUiBV1f.js";import"./Palette-CDpV0MZz.js";import"./Play-CHGdbeFD.js";import"./Plus-DDX8SATP.js";import"./SearchMd-DYxH4YXa.js";import"./Shield01-CWE6wNBM.js";import"./Stars01-DdTMtjEL.js";import"./Trash01-CtC4E2Sa.js";import"./Upload01-C2j94wR0.js";import"./User01-CNL_fPgy.js";import"./Users01-6Bgsc1i5.js";import"./Zap-CT8WBC0h.js";import"./use-virtual-mcp-CZJghpqp.js";import"./github-repo-COLY3wWI.js";import"./use-navigate-to-agent-jTAd3sn7.js";import"./chat-context-DubBxTgM.js";import"./use-panel-navigate-hBYy-oqI.js";import"./slugify-CEUa2lfQ.js";import"./use-is-desktop-app-BNujXJc_.js";import"./use-ai-providers-BlpB44TE.js";import"./location-oTTXFrSF.js";import"./use-decopilot-events-DH3HeMHQ.js";import"./use-organization-settings-BAWyw-2y.js";import"./toolbar-icon-button-Br5e6K4O.js";import"./popover-Sc_O_WR4.js";import"./drawer-OUYKjLkA.js";import"./github-repo-picker-CuSQNB2y.js";import"./dialog-BPFt4lFr.js";import"./collection-search-CAolxug-.js";import"./use-debounced-value-BMDd-RDt.js";import"./use-connection-dGTLN2Jw.js";import"./authenticate-and-persist-oauth-CWZyg-0e.js";import"./mcp-oauth-CMWryU4F.js";import"./extract-connection-data-gm0yVN7C.js";import"./metadata-dUsYcpuu.js";import"./connection-CeHqTfVG.js";import"./provision-repo-scoped-github-connection-WQFARyHG.js";import"./project-icon-9nkZPU3d.js";import"./shell-layout-n5QL1laG.js";import"./avatar-DXeLoFzx.js";import"./download-app-dialog-Co9yGker.js";import"./command-TpoWvelJ.js";import"./index-CusEBsHj.js";import"./required-auth-layout-CcVLthX6.js";import"./use-org-sso-Cy3RFg9C.js";import"./connection-card-O1CeIFNG.js";import"./use-registry-connections-CX8yVSFA.js";import"./useInfiniteQuery-D13XgnaZ.js";import"./use-infinite-scroll-RNOfAEIw.js";import"./retry-CErkP7V6.js";import"./connection-slug-CITJ0kGN.js";import"./integration-icon-B8NmeIJd.js";import"./form-2rgSk3zV.js";import"./label-BT_zUtSE.js";import"./input-CFRxvyvd.js";import"./select-CfXoB8aD.js";import"./textarea-Bex1-FCK.js";import"./connection-form-helpers-QOvwQJQ0.js";import"./collection-tabs-O5QiDhPj.js";import"./badge-HOAmJICW.js";import"./useSuspenseInfiniteQuery-Dk4wGkXL.js";import"./use-file-configs-CpRzuiys.js";import"./site-slug-uya6Wp4-.js";import"./dropdown-menu-CB-q_iiO.js";import"./get-initials-D-f_fDFw.js";import"./use-deployment-admin-COWfLdTh.js";import"./invite-member-dialog-CV9q86mF.js";import"./use-org-auth-client-U_Ntv5P2.js";import"./use-organization-roles-BLqgaL_R.js";import"./scroll-area-BWzJ3Fkr.js";import"./format-time-BnbuEtat.js";import"./differenceInSeconds-NQ4PDo0z.js";import"./create-organization-dialog-yCh2LrTE.js";import"./alert-dialog-BliafGGJ.js";import"./use-join-requests-CMpZs-ZY.js";function N(t){const e=w.c(11),{onPointerDown:o,onDoubleClick:l}=t,i=z(),{isMobile:b}=g(),c=H();if(b||c)return null;let s;e[0]!==i?(s=i("sidebar.sidebarResizeHandle.ariaLabel"),e[0]=i,e[1]=s):s=e[1];let r;e[2]!==i?(r=i("sidebar.sidebarResizeHandle.title"),e[2]=i,e[3]=r):r=e[3];let p,m;e[4]===Symbol.for("react.memo_cache_sentinel")?(p={left:"var(--sidebar-width)"},m=a.jsx("span",{className:"pointer-events-none absolute inset-y-0 left-1/2 w-px -translate-x-1/2 bg-transparent transition-colors duration-150 group-hover/resize:bg-border group-active/resize:bg-border"}),e[4]=p,e[5]=m):(p=e[4],m=e[5]);let n;return e[6]!==l||e[7]!==o||e[8]!==s||e[9]!==r?(n=a.jsx("div",{role:"separator","aria-orientation":"vertical","aria-label":s,title:r,onPointerDown:o,onDoubleClick:l,className:"group/resize absolute top-0 z-20 h-full w-2 -translate-x-1/2 cursor-col-resize",style:p,children:m}),e[6]=l,e[7]=o,e[8]=s,e[9]=r,e[10]=n):n=e[10],n}const v=240,W=400,C="sidebar.width";function S(t){return Math.max(v,Math.min(W,t))}function X(){const t=w.c(11),[e,o]=_(C,$),l=j.useRef(null);let i;t[0]!==o||t[1]!==e?(i=m=>{m.preventDefault();const n=m.clientX,d=S(e),f=l.current??(typeof document<"u"?document.querySelector('[data-slot="sidebar-wrapper"]'):null),u=f?Array.from(f.querySelectorAll('[data-slot="sidebar"], [data-slot="sidebar-container"]')):[];for(const y of u)y.style.transition="none";const h=y=>{const x=S(d+(y.clientX-n));f?.style.setProperty("--sidebar-width",`${x}px`)},R=y=>{const x=S(d+(y.clientX-n));o(x);for(const E of u)E.style.transition="";window.removeEventListener("pointermove",h),window.removeEventListener("pointerup",R),document.body.style.userSelect="",document.body.style.cursor=""};document.body.style.userSelect="none",document.body.style.cursor="col-resize",window.addEventListener("pointermove",h),window.addEventListener("pointerup",R)},t[0]=o,t[1]=e,t[2]=i):i=t[2];const b=i;let c;t[3]!==o?(c=()=>{o(v)},t[3]=o,t[4]=c):c=t[4];const s=c;let r;t[5]!==e?(r=S(e),t[5]=e,t[6]=r):r=t[6];let p;return t[7]!==b||t[8]!==s||t[9]!==r?(p={width:r,wrapperRef:l,onStartResize:b,resetWidth:s},t[7]=b,t[8]=s,t[9]=r,t[10]=p):p=t[10],p}function $(t){return typeof t=="number"?S(t):v}const P="3.125rem";function rr(){const t=w.c(16),e=D();let o;t[0]===Symbol.for("react.memo_cache_sentinel")?(o=I.sidebarOpen(),t[0]=o):o=t[0];const[l,i]=_(o,!0),{width:b,wrapperRef:c,onStartResize:s,resetWidth:r}=X(),p=`${b}px`;let m;t[1]!==p?(m={"--sidebar-width":p,"--sidebar-width-icon":P},t[1]=p,t[2]=m):m=t[2];const n=m;let d;t[3]!==e||t[4]!==s||t[5]!==r?(d=!e&&a.jsxs(a.Fragment,{children:[a.jsx(T,{}),a.jsx(N,{onPointerDown:s,onDoubleClick:r})]}),t[3]=e,t[4]=s,t[5]=r,t[6]=d):d=t[6];let f;t[7]===Symbol.for("react.memo_cache_sentinel")?(f=a.jsx(O,{className:"flex flex-col min-h-0",style:{background:"transparent",containerType:"inline-size"},children:a.jsx(L,{})}),t[7]=f):f=t[7];let u;t[8]!==n||t[9]!==d||t[10]!==c?(u=a.jsx("div",{className:"app-shell-root flex flex-col h-dvh overflow-hidden",children:a.jsxs(A,{ref:c,className:"flex-1 bg-sidebar relative min-h-0",style:n,children:[d,f]})}),t[8]=n,t[9]=d,t[10]=c,t[11]=u):u=t[11];let h;return t[12]!==i||t[13]!==l||t[14]!==u?(h=a.jsx(M,{open:l,onOpenChange:i,children:u}),t[12]=i,t[13]=l,t[14]=u,t[15]=h):h=t[15],h}export{rr as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as B,b as L,j as r}from"./index-BUxfvzOI.js";import{I as A}from"./input-CFRxvyvd.js";import{L as F}from"./label-BT_zUtSE.js";import{S as R,a as z,b as J,c as O,d as V}from"./select-CfXoB8aD.js";import{T as D}from"./textarea-Bex1-FCK.js";import{e as M,w as $,j as q,y as G,J as H}from"./index-Tm7GNy18.js";import{s as P}from"./primitives-BTt-Z2NI.js";import{u as Q}from"./use-autosave-jU5TWyWA.js";import"./Check-CABufYLR.js";import"./ChevronUp-9jtCu5DD.js";import"./ArrowUp-QJEwDJA1.js";import"./chat-context-DubBxTgM.js";import"./use-panel-navigate-hBYy-oqI.js";import"./use-destination-route-BiBwRnwH.js";import"./hooks-0YBotF11.js";import"./constants-DNuUCxmW.js";import"./use-mcp-client-BdWyVRdu.js";import"./auth-D5m4cqRg.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./decopilot-sse-pool-D5dycX_-.js";import"./task-board-BLlkbzQc.js";import"./schema-3NiDFCyj.js";import"./slugify-CEUa2lfQ.js";import"./use-is-desktop-app-BNujXJc_.js";import"./use-virtual-mcp-CZJghpqp.js";import"./use-ai-providers-BlpB44TE.js";import"./location-oTTXFrSF.js";import"./use-decopilot-events-DH3HeMHQ.js";import"./use-organization-settings-BAWyw-2y.js";import"./automation-runs-DG8JNxIq.js";import"./agent-icon-mk-XQZni.js";import"./AlertCircle-BBYR4GFH.js";import"./Tool01-CSK4qMY9.js";import"./ArrowLeft-D9stSdZU.js";import"./Tool02-DlCeYFZc.js";import"./XCircle-DdAk9WVh.js";import"./TrendUp01-DXKzNK5Z.js";import"./ZoomOut-JnnG8new.js";import"./Users03-Da4x8ARK.js";import"./CheckCircle-DK2Y0uD8.js";import"./ChevronRight-DTibj1Ui.js";import"./ChevronSelectorVertical-C-_DXKCi.js";import"./DotsVertical-BOoi0c7j.js";import"./UserSquare-CFSxfDp_.js";import"./Copy01-DL41aqqZ.js";import"./CreditCard01-PsqzvnWg.js";import"./Download01-BE83rIoq.js";import"./Settings02-ZMpUQ0_a.js";import"./Eye-DR68Dt82.js";import"./Share07-NdsiGLTd.js";import"./GitBranch01-ttMYz_bX.js";import"./Globe01-D0KqKl2w.js";import"./XClose-CbZk3cnK.js";import"./HardDrive-frKQqTEA.js";import"./Image01-Crqq5x1o.js";import"./Key01-CeNXYOZ0.js";import"./Link01-DVMHQQa6.js";import"./LinkExternal01-DVYbdx38.js";import"./Monitor01-DQ7392nj.js";import"./Sun-DvIBG1pa.js";import"./Package-6DUiBV1f.js";import"./Palette-CDpV0MZz.js";import"./Play-CHGdbeFD.js";import"./Plus-DDX8SATP.js";import"./SearchMd-DYxH4YXa.js";import"./Shield01-CWE6wNBM.js";import"./Stars01-DdTMtjEL.js";import"./Trash01-CtC4E2Sa.js";import"./Upload01-C2j94wR0.js";import"./User01-CNL_fPgy.js";import"./Users01-6Bgsc1i5.js";import"./Zap-CT8WBC0h.js";import"./useInfiniteQuery-D13XgnaZ.js";import"./use-infinite-scroll-RNOfAEIw.js";import"./use-connection-dGTLN2Jw.js";import"./table-DoXmGweu.js";import"./empty-state-DvlwkIKU.js";import"./use-members-BT8QeDlP.js";import"./use-org-auth-client-U_Ntv5P2.js";import"./use-automations-Baz3C92q.js";import"./useSuspenseInfiniteQuery-Dk4wGkXL.js";import"./avatar-DXeLoFzx.js";import"./format-time-BnbuEtat.js";import"./differenceInSeconds-NQ4PDo0z.js";import"./use-copy-BgYzQZf3.js";import"./markdown-CzVE3jNC.js";import"./dialog-BPFt4lFr.js";import"./monaco-editor-EqADFqFR.js";import"./editor-BzqhwZoG.js";import"./types-DskYYMR0.js";import"./shell-layout-n5QL1laG.js";import"./download-app-dialog-Co9yGker.js";import"./project-icon-9nkZPU3d.js";import"./github-repo-COLY3wWI.js";import"./command-TpoWvelJ.js";import"./index-CusEBsHj.js";import"./required-auth-layout-CcVLthX6.js";import"./use-org-sso-Cy3RFg9C.js";import"./integration-icon-B8NmeIJd.js";import"./use-navigate-to-agent-jTAd3sn7.js";import"./use-mcp-prompts-rfguU7hK.js";import"./form-2rgSk3zV.js";import"./file-type-icon-C9lYwnF1.js";import"./drawer-OUYKjLkA.js";import"./collection-search-CAolxug-.js";import"./tabs-Bx_-j5XU.js";import"./toggle-group-BsZFreyd.js";import"./task-route-BzutwceJ.js";import"./toolbar-icon-button-Br5e6K4O.js";import"./popover-Sc_O_WR4.js";import"./github-repo-picker-CuSQNB2y.js";import"./use-debounced-value-BMDd-RDt.js";import"./authenticate-and-persist-oauth-CWZyg-0e.js";import"./mcp-oauth-CMWryU4F.js";import"./extract-connection-data-gm0yVN7C.js";import"./metadata-dUsYcpuu.js";import"./connection-CeHqTfVG.js";import"./provision-repo-scoped-github-connection-WQFARyHG.js";import"./connection-card-O1CeIFNG.js";import"./use-registry-connections-CX8yVSFA.js";import"./retry-CErkP7V6.js";import"./connection-slug-CITJ0kGN.js";import"./connection-form-helpers-QOvwQJQ0.js";import"./collection-tabs-O5QiDhPj.js";import"./badge-HOAmJICW.js";import"./use-file-configs-CpRzuiys.js";import"./site-slug-uya6Wp4-.js";import"./dropdown-menu-CB-q_iiO.js";import"./get-initials-D-f_fDFw.js";import"./select-model-B7PCBhBx.js";import"./checkbox-D-7gRc3h.js";import"./ai-providers-logos-DD3qZ33J.js";import"./folder-icon-EcaObwkD.js";import"./question-004-sINsf4GQ.js";import"./use-status-sounds-Cybd1KmZ.js";import"./toolbar-BnS4trfz.js";import"./skill-preview-CxhIMaDo.js";import"./pt-BR-CLy76QW2.js";import"./alert-dialog-BliafGGJ.js";import"./use-debounced-autosave-DVbep3-c.js";import"./scroll-area-BWzJ3Fkr.js";import"./search-input-B-0ya7r_.js";import"./use-mcp-auth-status-BqPz0cuB.js";import"./switch-BFFq3kEc.js";import"./use-secrets-CZuyciVH.js";import"./client-icons-DhzSTDr-.js";import"./connect-layout-BzSPP-pF.js";import"./self-tool-result-BA-nfuIP.js";import"./track-CAyq4OYo.js";import"./use-tags-D5F3CTs7.js";import"./breadcrumb-tzF-K1vw.js";import"./safe-image-url-D5z803Ot.js";import"./automation-list-row-DYXQGSLm.js";import"./site-error--i37Vnuw.js";import"./cards-DBngTnGi.js";const U={authors:[{key:"name",labelKey:"sandbox.recordEditor.fieldName",widget:"text"},{key:"type",labelKey:"sandbox.recordEditor.fieldType",widget:"select",options:[{value:"Person",labelKey:"sandbox.recordEditor.optionPerson"},{value:"Organization",labelKey:"sandbox.recordEditor.optionOrganization"}]},{key:"email",labelKey:"sandbox.recordEditor.fieldEmail",widget:"text",placeholderKey:"sandbox.recordEditor.placeholderEmail"},{key:"jobTitle",labelKey:"sandbox.recordEditor.fieldJobTitle",widget:"text"},{key:"company",labelKey:"sandbox.recordEditor.fieldCompany",widget:"text"},{key:"avatar",labelKey:"sandbox.recordEditor.fieldAvatar",widget:"image"}]},W={authors:"sandbox.recordEditor.titleAuthor"};function Gr(I){const t=B.c(39),{orgSlug:E,virtualMcpId:K,branch:w,kind:a,blockKey:b,block:f}=I,i=L();let h;t[0]!==w||t[1]!==E||t[2]!==K?(h={orgSlug:E,virtualMcpId:K,branch:w},t[0]=w,t[1]=E,t[2]=K,t[3]=h):h=t[3];const p=M(h);let g;t[4]!==f||t[5]!==a?(g=$(f,a),t[4]=f,t[5]=a,t[6]=g):g=t[6];const C=g;let k;t[7]!==b||t[8]!==a||t[9]!==p?(k=l=>{p.mutate({blockKey:b,data:G(b,a,l)})},t[7]=b,t[8]=a,t[9]=p,t[10]=k):k=t[10];const[e,S]=Q(C,k);let v;t[11]!==e||t[12]!==S?(v=(l,o)=>S({...e,[l]:o}),t[11]=e,t[12]=S,t[13]=v):v=t[13];const s=v,N=W[a];let n;t[14]!==i||t[15]!==N?(n=i(N),t[14]=i,t[15]=N,t[16]=n):n=t[16];let c;t[17]!==n?(c=r.jsx("span",{className:"text-sm font-medium",children:n}),t[17]=n,t[18]=c):c=t[18];let d;t[19]!==p.isError||t[20]!==p.isPending?(d=r.jsx(q,{isPending:p.isPending,isError:p.isError}),t[19]=p.isError,t[20]=p.isPending,t[21]=d):d=t[21];let y;t[22]!==c||t[23]!==d?(y=r.jsxs("div",{className:"flex h-12 shrink-0 items-center justify-between border-b px-6",children:[c,d]}),t[22]=c,t[23]=d,t[24]=y):y=t[24];const T=U[a];let x;if(t[25]!==e||t[26]!==s||t[27]!==i||t[28]!==T){let l;t[30]!==e||t[31]!==s||t[32]!==i?(l=o=>r.jsx("div",{className:"space-y-2",children:o.widget==="image"?r.jsx(H,{schema:{type:"string",format:"image-uri",title:i(o.labelKey)},value:e[o.key],onChange:m=>s(o.key,m),path:o.key,label:i(o.labelKey)}):o.widget==="select"?r.jsxs(r.Fragment,{children:[r.jsx(F,{htmlFor:o.key,children:i(o.labelKey)}),r.jsxs(R,{value:P(e[o.key])||o.options?.[0]?.value,onValueChange:m=>s(o.key,m),children:[r.jsx(z,{id:o.key,className:"h-10 w-full",children:r.jsx(J,{placeholder:i(o.labelKey)})}),r.jsx(O,{children:(o.options??[]).map(m=>r.jsx(V,{value:m.value,children:i(m.labelKey)},m.value))})]})]}):r.jsxs(r.Fragment,{children:[r.jsx(F,{htmlFor:o.key,children:i(o.labelKey)}),o.widget==="textarea"?r.jsx(D,{id:o.key,value:P(e[o.key]),onChange:m=>s(o.key,m.target.value),rows:3}):r.jsx(A,{id:o.key,value:P(e[o.key]),placeholder:o.placeholderKey?i(o.placeholderKey):void 0,onChange:m=>s(o.key,m.target.value),className:"h-10"})]})},o.key),t[30]=e,t[31]=s,t[32]=i,t[33]=l):l=t[33],x=T.map(l),t[25]=e,t[26]=s,t[27]=i,t[28]=T,t[29]=x}else x=t[29];let u;t[34]!==x?(u=r.jsx("div",{className:"min-w-0 flex-1 overflow-y-auto px-6 py-6",children:r.jsx("div",{className:"mx-auto max-w-xl space-y-6",children:x})}),t[34]=x,t[35]=u):u=t[35];let j;return t[36]!==u||t[37]!==y?(j=r.jsxs("div",{className:"flex h-full flex-col",children:[y,u]}),t[36]=u,t[37]=y,t[38]=j):j=t[38],j}export{Gr as RecordEditor};
|