decocms 4.294.0 → 4.294.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/assets/{AlertCircle-Bvyaz2Kj.js → AlertCircle-BX7MJ072.js} +1 -1
- package/dist/client/assets/{AreaChart-BktBXh-n.js → AreaChart-B2c5VlMF.js} +1 -1
- package/dist/client/assets/{ArrowLeft-DNSJEFTr.js → ArrowLeft-D_iAJfNc.js} +1 -1
- package/dist/client/assets/{ArrowUp-MwWXr26Q.js → ArrowUp-DE3_BiFl.js} +1 -1
- package/dist/client/assets/{Check-CzGcU_18.js → Check-CMgbiLaX.js} +1 -1
- package/dist/client/assets/{CheckCircle-qvIgjR7C.js → CheckCircle-DSareV9G.js} +1 -1
- package/dist/client/assets/{ChevronDown-DnSLePrh.js → ChevronDown-Dw8obt8m.js} +1 -1
- package/dist/client/assets/{ChevronRight-JSjQetGj.js → ChevronRight-CmErvA0j.js} +1 -1
- package/dist/client/assets/{ChevronSelectorVertical-DRDRC9is.js → ChevronSelectorVertical-DvwcNCCU.js} +1 -1
- package/dist/client/assets/{ChevronUp-DFDLyF6e.js → ChevronUp-zRZTeZ7W.js} +1 -1
- package/dist/client/assets/{Copy01-CSghf1in.js → Copy01-TuMirHlz.js} +1 -1
- package/dist/client/assets/{CreditCard01-B6kY0NgK.js → CreditCard01-DE9AkrGD.js} +1 -1
- package/dist/client/assets/{DotsVertical-0FsnqvY-.js → DotsVertical-BWlRnIv9.js} +1 -1
- package/dist/client/assets/{Download01-D5Sj1RWJ.js → Download01-BrELUVKh.js} +1 -1
- package/dist/client/assets/{Eye-DkXPnw11.js → Eye-C1diZla3.js} +1 -1
- package/dist/client/assets/{FilterLines-BsrW2L96.js → FilterLines-CWtPXhPn.js} +1 -1
- package/dist/client/assets/{Globe01-B_IfqQPx.js → Globe01-BLauj86P.js} +1 -1
- package/dist/client/assets/{Globe04-DPtjyMGq.js → Globe04-BZfohkfh.js} +1 -1
- package/dist/client/assets/{HardDrive-C7bA_N_q.js → HardDrive-BooNC9Iz.js} +1 -1
- package/dist/client/assets/{Key01-DQfk0_yE.js → Key01-BNf86BzY.js} +1 -1
- package/dist/client/assets/{LinkExternal01-B_ilbe8Z.js → LinkExternal01-C5sEFVrU.js} +1 -1
- package/dist/client/assets/{LockUnlocked01-jP0H0WgM.js → LockUnlocked01-qFRWZtfh.js} +1 -1
- package/dist/client/assets/{LogOut01-iTN2K_HM.js → LogOut01-945MQKA3.js} +1 -1
- package/dist/client/assets/{Monitor01-CNZN0EeI.js → Monitor01-BYyknu9E.js} +1 -1
- package/dist/client/assets/{Palette-DJFYXyZC.js → Palette-CtmrE0Ya.js} +1 -1
- package/dist/client/assets/{Play-DlSWUpz8.js → Play-KEXVN9gu.js} +1 -1
- package/dist/client/assets/{Plus-ByjN5Z0Z.js → Plus-DVX_wDQ5.js} +1 -1
- package/dist/client/assets/{SearchLg-BbH2TeF5.js → SearchLg--Jj0q90X.js} +1 -1
- package/dist/client/assets/{SearchMd-BuhbwC54.js → SearchMd-BfGi9p6T.js} +1 -1
- package/dist/client/assets/{Settings02-CYzuwH_x.js → Settings02-NF-WIPx9.js} +1 -1
- package/dist/client/assets/{Share07-CxggNnyF.js → Share07-CaDcjgW4.js} +1 -1
- package/dist/client/assets/{Shield01-Ntkf4Ipf.js → Shield01-BKKyhf4r.js} +1 -1
- package/dist/client/assets/{Stars01-ByVJtKiy.js → Stars01--KT_Bx7a.js} +1 -1
- package/dist/client/assets/{Stars02-FjaCs5mP.js → Stars02-BX_P13x6.js} +1 -1
- package/dist/client/assets/{Sun-BpRkzKF1.js → Sun-DS3TtzGE.js} +1 -1
- package/dist/client/assets/{SwitchHorizontal01-CYGD-Yrj.js → SwitchHorizontal01-Cb_T5oPm.js} +1 -1
- package/dist/client/assets/{Tool01-k31lhfuq.js → Tool01-Ci1f_VX6.js} +1 -1
- package/dist/client/assets/{Tool02-DHuul6tC.js → Tool02-BSzeWnI0.js} +1 -1
- package/dist/client/assets/{Trash01-BikQIH2r.js → Trash01-BjqXjKjL.js} +1 -1
- package/dist/client/assets/{TrendUp01-BPsFCOJl.js → TrendUp01-BXDl_oA2.js} +1 -1
- package/dist/client/assets/{Upload01-D1HyPi1v.js → Upload01-Dz2owj0l.js} +1 -1
- package/dist/client/assets/{User01-Dh4UFXWh.js → User01-DfNUsZjG.js} +1 -1
- package/dist/client/assets/{UserSquare-DkrCVr7I.js → UserSquare-QpZbwdZV.js} +1 -1
- package/dist/client/assets/{Users01-CSnXgP67.js → Users01-CIQN8wG7.js} +1 -1
- package/dist/client/assets/{Users03-CbLD7m3H.js → Users03-1JkDRbw6.js} +1 -1
- package/dist/client/assets/{XCircle-BCS-7XaA.js → XCircle-BEPQ7ZR9.js} +1 -1
- package/dist/client/assets/{XClose-eJE1lk55.js → XClose-CmC5bnde.js} +1 -1
- package/dist/client/assets/{YAxis-Dzv5TV5a.js → YAxis-C68KAf7l.js} +1 -1
- package/dist/client/assets/{Zap-Duxw5XKO.js → Zap-BHFTnbC7.js} +1 -1
- package/dist/client/assets/{ZapSquare-r3ZmUA9D.js → ZapSquare-W_x0tYhG.js} +1 -1
- package/dist/client/assets/{access-gate-CJHzntYB.js → access-gate-CJ1xrwBs.js} +1 -1
- package/dist/client/assets/{agent-icon-4q5deIQd.js → agent-icon-DwW--uUY.js} +1 -1
- package/dist/client/assets/{agents-list-CCv6hSJm.js → agents-list-SZYdZyx8.js} +1 -1
- package/dist/client/assets/{ai-providers-Ba-TEw3Q.js → ai-providers--wPbboM3.js} +1 -1
- package/dist/client/assets/{alert-CoKDFDAh.js → alert-IgKAs3o8.js} +1 -1
- package/dist/client/assets/{alert-dialog-COe9C8NL.js → alert-dialog-3i0jJzJ0.js} +1 -1
- package/dist/client/assets/{api-keys-CYi42rya.js → api-keys-CUKmb7Np.js} +1 -1
- package/dist/client/assets/{app-editor-CAb18jNy.js → app-editor-C5RKxi_A.js} +1 -1
- package/dist/client/assets/{auth-catchall-Ckiz2vh8.js → auth-catchall-BCcqdIY-.js} +1 -1
- package/dist/client/assets/{auth-entry-DSphvAVn.js → auth-entry-FNjcKTKE.js} +1 -1
- package/dist/client/assets/{auth-DFJQFcQU.js → auth-jQituvKm.js} +1 -1
- package/dist/client/assets/{auth-split-layout-BAI5be01.js → auth-split-layout-DQfYa1Wy.js} +1 -1
- package/dist/client/assets/{authenticate-and-persist-oauth-BYrklfEZ.js → authenticate-and-persist-oauth-DsOW9H5Z.js} +1 -1
- package/dist/client/assets/{automation-list-row-BbyIMiZO.js → automation-list-row-CCZYSh-F.js} +1 -1
- package/dist/client/assets/{automation-runs-DnRz_4nV.js → automation-runs-BioqyUmT.js} +2 -2
- package/dist/client/assets/{automations-BUn0PLbS.js → automations-Uhdu42lm.js} +1 -1
- package/dist/client/assets/{avatar-xQKMSfbV.js → avatar-DQGduv0U.js} +1 -1
- package/dist/client/assets/{badge-BUE8eKrv.js → badge-CAWKSDnJ.js} +1 -1
- package/dist/client/assets/{block-document-o7SlfWjU.js → block-document-CvQIz5yK.js} +1 -1
- package/dist/client/assets/{breadcrumb-CkIAyGzd.js → breadcrumb-Cl6tbNSR.js} +1 -1
- package/dist/client/assets/{buckets-DILhj7RE.js → buckets-BwD1bAZL.js} +1 -1
- package/dist/client/assets/{bulk-category-panel-CEBvdjek.js → bulk-category-panel-Cqpjajjn.js} +1 -1
- package/dist/client/assets/{capability-load-error-BisJ15x6.js → capability-load-error-BTRZ_JFs.js} +1 -1
- package/dist/client/assets/{cards-B03QSnw9.js → cards-Do4DMym-.js} +1 -1
- package/dist/client/assets/{category-editor-0FXHuKZy.js → category-editor-DJa80_RF.js} +1 -1
- package/dist/client/assets/{chart-Bqv-9W0J.js → chart-CjmlfSOz.js} +1 -1
- package/dist/client/assets/{chat-context-C5qSIECJ.js → chat-context-B5Wg5Lf5.js} +1 -1
- package/dist/client/assets/{checkbox-CagDKatz.js → checkbox-BBaFR9e7.js} +1 -1
- package/dist/client/assets/{choose-editor-BFxf0RLD.js → choose-editor-D21isyag.js} +1 -1
- package/dist/client/assets/{cli-auth-success-C94YqgXR.js → cli-auth-success-xs-iEptG.js} +1 -1
- package/dist/client/assets/{collection-detail-BuV1hYLG.js → collection-detail-Bgc17VFa.js} +1 -1
- package/dist/client/assets/{collection-display-button-Cl7ahsU0.js → collection-display-button-DXBEx_vc.js} +1 -1
- package/dist/client/assets/{collection-search-cn_pA-cC.js → collection-search-B-xYnw3X.js} +1 -1
- package/dist/client/assets/{collection-table-wrapper-Cy_Kl14E.js → collection-table-wrapper-Ci0d113k.js} +1 -1
- package/dist/client/assets/{collection-tabs-BxqOQqdF.js → collection-tabs-B9i9CP-Z.js} +1 -1
- package/dist/client/assets/{command-N2b31krx.js → command-ClyqeQko.js} +1 -1
- package/dist/client/assets/{commerce-onboarding-LJIHA6Bu.js → commerce-onboarding-DoSINo3a.js} +1 -1
- package/dist/client/assets/config-C05cUmSb.js +1 -0
- package/dist/client/assets/{connect-DBR4OAAE.js → connect-DzIdwweE.js} +1 -1
- package/dist/client/assets/{connection-pCac2ZzE.js → connection-C10IpVW9.js} +1 -1
- package/dist/client/assets/{connection-card-DEBIEgz8.js → connection-card-BpdBS_Al.js} +1 -1
- package/dist/client/assets/{connection-detail-Qz0WkuM0.js → connection-detail-Dyv8cSja.js} +1 -1
- package/dist/client/assets/{connection-form-helpers-B-SpMh33.js → connection-form-helpers-iTHnU6X5.js} +1 -1
- package/dist/client/assets/{connections-BYI8uNKo.js → connections-DAyzQnUs.js} +1 -1
- package/dist/client/assets/{decopilot-sse-pool-BE8yQxwy.js → decopilot-sse-pool-S5tux0kK.js} +1 -1
- package/dist/client/assets/{dialog-o-lbJKf_.js → dialog-BST7kHjs.js} +1 -1
- package/dist/client/assets/{domain-settings-CL8KEiA1.js → domain-settings-BqlL-o8W.js} +1 -1
- package/dist/client/assets/{drawer-B43XZVqt.js → drawer-Mrrueqfd.js} +1 -1
- package/dist/client/assets/{dropdown-menu-DUzmGIpY.js → dropdown-menu-B1VRfncr.js} +1 -1
- package/dist/client/assets/{empty-state-C7rGE_UX.js → empty-state-N7iUhCDH.js} +1 -1
- package/dist/client/assets/{extract-connection-data-BGJLP0ou.js → extract-connection-data-XOJUSxR8.js} +1 -1
- package/dist/client/assets/{file-explorer-06vk6yxT.js → file-explorer-C6yyRfaX.js} +1 -1
- package/dist/client/assets/{file-type-icon-DD64j0xL.js → file-type-icon-N4BWvB1b.js} +1 -1
- package/dist/client/assets/{form-CTCJD_Hx.js → form-kVV6q-fx.js} +1 -1
- package/dist/client/assets/{general-CrGLry3H.js → general-Bb8jznvo.js} +1 -1
- package/dist/client/assets/{github-repo-picker-DVgeOsWJ.js → github-repo-picker-Do0PQSNG.js} +1 -1
- package/dist/client/assets/{hooks-D_iQI4O0.js → hooks-B79ZY8IT.js} +1 -1
- package/dist/client/assets/{index-7kjEJKM8.js → index-B8RO7-AA.js} +1 -1
- package/dist/client/assets/{index-BvphIPlv.js → index-BoZ9u4m1.js} +3 -3
- package/dist/client/assets/{index-DcU6_ARK.js → index-C5hmsqzf.js} +1 -1
- package/dist/client/assets/{index-CdHhwh12.js → index-CPq3T21x.js} +1 -1
- package/dist/client/assets/{index-DNjAWM2N.js → index-CsQMHT9g.js} +1 -1
- package/dist/client/assets/{index-DWy4Wue5.js → index-D6UX70oA.js} +1 -1
- package/dist/client/assets/{index-CF_G93Kw.js → index-DEww-2EZ.js} +1 -1
- package/dist/client/assets/{index-MqYGWr-V.js → index-DwmIdtlP.js} +1 -1
- package/dist/client/assets/{index-BeIdc9Ic.js → index-UTTF9eic.js} +58 -58
- package/dist/client/assets/{index-redirect-CAD8Y1Nh.js → index-redirect-BBfeBIf1.js} +1 -1
- package/dist/client/assets/{infra-billing-CIz-HF2i.js → infra-billing-B5uvzyJf.js} +1 -1
- package/dist/client/assets/{input-D6JubeHO.js → input-vNnjluS1.js} +1 -1
- package/dist/client/assets/{integration-icon-BJ2GfjLA.js → integration-icon-DmJLuQ2R.js} +1 -1
- package/dist/client/assets/{invite-member-dialog-Bw9AX5XF.js → invite-member-dialog-c_6h1c9d.js} +1 -1
- package/dist/client/assets/{label-DyLWoXFN.js → label-2hy1g0FP.js} +1 -1
- package/dist/client/assets/{layout-BP4ximvL.js → layout-CTomL7O6.js} +1 -1
- package/dist/client/assets/{login-CFTXASci.js → login-DaQOw-0F.js} +1 -1
- package/dist/client/assets/{mcp-oauth-ltvxvN83.js → mcp-oauth-1M77jlWl.js} +1 -1
- package/dist/client/assets/{members-CtS0eQig.js → members-ByBSVnV2.js} +1 -1
- package/dist/client/assets/{monaco-editor-BzQAHPgF.js → monaco-editor-Cfd7zTaZ.js} +1 -1
- package/dist/client/assets/{monitoring-stats-row-BopD55vf.js → monitoring-stats-row-CS0MLT1M.js} +1 -1
- package/dist/client/assets/{multi-select-gjON_HR_.js → multi-select-Bc1Ex9je.js} +1 -1
- package/dist/client/assets/{oauth-callback-ai-provider-BKFbwIll.js → oauth-callback-ai-provider-g-Qo2pcQ.js} +1 -1
- package/dist/client/assets/{oauth-callback-DWfdyzme.js → oauth-callback-rGk9Wox5.js} +1 -1
- package/dist/client/assets/{onboarding-23_OoJlU.js → onboarding-DXUs-Zwj.js} +1 -1
- package/dist/client/assets/{org-layout-NY6hUTVk.js → org-layout-w9rjradC.js} +1 -1
- package/dist/client/assets/{organization-choice-BzpYZyIq.js → organization-choice-BhpYK3pU.js} +1 -1
- package/dist/client/assets/{orgs-D6R2-8SP.js → orgs-B-lhj-vp.js} +1 -1
- package/dist/client/assets/{page-seo-form-YLCkZg3Q.js → page-seo-form-CAkmJPih.js} +1 -1
- package/dist/client/assets/{popover-Cn19M15h.js → popover-DrLCC3p5.js} +1 -1
- package/dist/client/assets/{post-calendar-sRU6ASP1.js → post-calendar-C_H7bClE.js} +1 -1
- package/dist/client/assets/{post-editor-jDc65MqA.js → post-editor-BRsttkiY.js} +1 -1
- package/dist/client/assets/{primitives-Cf7qfYfW.js → primitives-uAM2NwMD.js} +1 -1
- package/dist/client/assets/{profile-CCXHtjg4.js → profile-C00C8rDv.js} +1 -1
- package/dist/client/assets/{project-app-view-vowPZpAZ.js → project-app-view-CAw6sW8T.js} +1 -1
- package/dist/client/assets/{prompts-D7OEXSs0.js → prompts-C1ft2jhs.js} +1 -1
- package/dist/client/assets/record-editor-Dmt20zx4.js +1 -0
- package/dist/client/assets/{redirect-editor-BgC1l-ii.js → redirect-editor-BTs-HhX2.js} +1 -1
- package/dist/client/assets/registry-BkvSu6Go.js +2 -0
- package/dist/client/assets/{registry-layout-ClpkcjT8.js → registry-layout-VFGZ8IpM.js} +1 -1
- package/dist/client/assets/{reports-D0HbNhjG.js → reports-DhzLGuLY.js} +1 -1
- package/dist/client/assets/{require-capability-DF8bTjyU.js → require-capability-CEAo1-fZ.js} +1 -1
- package/dist/client/assets/{required-auth-layout-CpNSgXIB.js → required-auth-layout-DWW3HDyn.js} +1 -1
- package/dist/client/assets/{reset-password-CMj0SmFK.js → reset-password-DreFZeIe.js} +1 -1
- package/dist/client/assets/{review-settings-B2w_i9mz.js → review-settings-B-lAMYBo.js} +1 -1
- package/dist/client/assets/{roles-Cb798QiS.js → roles-BU6rptsx.js} +1 -1
- package/dist/client/assets/{scroll-area-Bcq1YylF.js → scroll-area-B2Bvze19.js} +1 -1
- package/dist/client/assets/{search-input-D9oyZGdk.js → search-input-Ca_LFpsl.js} +1 -1
- package/dist/client/assets/{secrets-DL2qRBPB.js → secrets-CqakQjb1.js} +1 -1
- package/dist/client/assets/{sections-editor-CT4jT7Nt.js → sections-editor-BBV08k5z.js} +1 -1
- package/dist/client/assets/{select-DO5mDlEe.js → select-DVeSr9Cv.js} +1 -1
- package/dist/client/assets/{select-model-XW5hTDtm.js → select-model-DSFTGsBN.js} +1 -1
- package/dist/client/assets/{self-tool-result-DUSusImJ.js → self-tool-result-Ck66n9EL.js} +1 -1
- package/dist/client/assets/{seo-editor-Ci0O3KUY.js → seo-editor-BQV7KNe6.js} +1 -1
- package/dist/client/assets/{settings-layout-dIO88wrS.js → settings-layout-2dsjZSYZ.js} +1 -1
- package/dist/client/assets/{shell-controls-CYR5niqE.js → shell-controls-BLPQ7kl6.js} +1 -1
- package/dist/client/assets/{shell-layout-DyObrhUk.js → shell-layout-Bgj0rQDA.js} +1 -1
- package/dist/client/assets/{spinner-hH9XnA8n.js → spinner-znMssV1b.js} +1 -1
- package/dist/client/assets/{sso-D6fjiyaU.js → sso-BksXn5ig.js} +1 -1
- package/dist/client/assets/{store-CQ0VV_Ql.js → store-q2_blJYB.js} +1 -1
- package/dist/client/assets/store-registry-DqrYH31S.js +2 -0
- package/dist/client/assets/{super-agent-icon-C9INS80X.js → super-agent-icon-D_RymLMx.js} +1 -1
- package/dist/client/assets/{switch-B_X107f4.js → switch-CE07liUg.js} +1 -1
- package/dist/client/assets/{synced-repos-JVGtEjIf.js → synced-repos-C0VYnIgW.js} +1 -1
- package/dist/client/assets/{table-CpwCU8Uq.js → table-C54lPCoC.js} +1 -1
- package/dist/client/assets/{tabs-DUNrVSeU.js → tabs-DVsDlywr.js} +1 -1
- package/dist/client/assets/{task-board-pShhwz8O.js → task-board-C_FiCg7o.js} +1 -1
- package/dist/client/assets/{tasks-C11xDtin.js → tasks-DdrLr8z8.js} +1 -1
- package/dist/client/assets/{textarea-CxTBRm8n.js → textarea-e01dAh4Q.js} +1 -1
- package/dist/client/assets/{toggle-group-DJJef25l.js → toggle-group-DVOGESuU.js} +1 -1
- package/dist/client/assets/{toolbar-B35mtx0K.js → toolbar-iG8binbI.js} +1 -1
- package/dist/client/assets/{track-Da6W74hL.js → track-Don0wR2Q.js} +1 -1
- package/dist/client/assets/{types-DKd1RoOu.js → types-BMYq-irZ.js} +1 -1
- package/dist/client/assets/{use-ai-providers-DUhPnVBj.js → use-ai-providers-Cu5w7RQA.js} +1 -1
- package/dist/client/assets/{use-api-keys-C4evvCqV.js → use-api-keys-CkhCpVU8.js} +1 -1
- package/dist/client/assets/{use-automations-XxWq7PCT.js → use-automations-CZQfO2ET.js} +1 -1
- package/dist/client/assets/{use-autosave-DOL2n-67.js → use-autosave-BLPSaddA.js} +1 -1
- package/dist/client/assets/{use-connection-D-FaQLFU.js → use-connection-CabbUm7J.js} +1 -1
- package/dist/client/assets/{use-copy-D0WDRRpO.js → use-copy-CPSkWD8d.js} +1 -1
- package/dist/client/assets/{use-create-virtual-mcp-dfMLHq9k.js → use-create-virtual-mcp-DYdOafWL.js} +1 -1
- package/dist/client/assets/{use-debounced-autosave-BPMb3HJB.js → use-debounced-autosave-D494opKg.js} +1 -1
- package/dist/client/assets/{use-debounced-value-B1Rqo74w.js → use-debounced-value-wOe54Kkz.js} +1 -1
- package/dist/client/assets/{use-decopilot-events-DP6owINC.js → use-decopilot-events-CoDj3hx4.js} +1 -1
- package/dist/client/assets/{use-delete-connection-UHZFgFb2.js → use-delete-connection-Bh7pa4Y9.js} +1 -1
- package/dist/client/assets/{use-deployment-admin-DTzGFcdn.js → use-deployment-admin-BhDeB0GP.js} +1 -1
- package/dist/client/assets/{use-destination-route-DKoYkCsy.js → use-destination-route-CUizQ3Ky.js} +1 -1
- package/dist/client/assets/{use-file-configs-J_EcO8h8.js → use-file-configs-BlsniSlU.js} +1 -1
- package/dist/client/assets/{use-infinite-scroll-CUw_Ivuj.js → use-infinite-scroll-BAdheIAu.js} +1 -1
- package/dist/client/assets/{use-join-requests-Bk3mX2ZH.js → use-join-requests-DJVwnQoI.js} +1 -1
- package/dist/client/assets/{use-mcp-auth-status-BNwzaQrN.js → use-mcp-auth-status-BJbL5Csu.js} +1 -1
- package/dist/client/assets/{use-mcp-client-BwH4TDLn.js → use-mcp-client-Cl4PpqBq.js} +1 -1
- package/dist/client/assets/{use-mcp-tools-D3VfPRcP.js → use-mcp-tools-CAgTZP66.js} +1 -1
- package/dist/client/assets/{use-members-DlgRTc5D.js → use-members-C1QvIqWQ.js} +1 -1
- package/dist/client/assets/{use-navigate-to-agent-C_Lcd8Df.js → use-navigate-to-agent-D8r5y5p4.js} +1 -1
- package/dist/client/assets/{use-org-auth-client-B56Z49z7.js → use-org-auth-client-CIuw_wjP.js} +1 -1
- package/dist/client/assets/{use-org-repo-syncs-C2VfO1Ye.js → use-org-repo-syncs-DCazGb2T.js} +1 -1
- package/dist/client/assets/{use-org-sso-CQ19h3IZ.js → use-org-sso-DoM99z93.js} +1 -1
- package/dist/client/assets/{use-organization-roles-CCWOZD9o.js → use-organization-roles-DZlpT-Bq.js} +1 -1
- package/dist/client/assets/{use-organization-settings-0BXaFqOt.js → use-organization-settings-DLT--rXL.js} +1 -1
- package/dist/client/assets/{use-panel-navigate-Bi1-MukR.js → use-panel-navigate-jSEiIqVH.js} +1 -1
- package/dist/client/assets/{use-registry-connections-BBSHOTrH.js → use-registry-connections-D0BvPX4D.js} +1 -1
- package/dist/client/assets/{use-secrets-BmX-LU55.js → use-secrets-5seihYfj.js} +1 -1
- package/dist/client/assets/{use-section-preview-base-CF53XGyQ.js → use-section-preview-base-DHqwJRrd.js} +1 -1
- package/dist/client/assets/{use-status-sounds-1I3SzUNL.js → use-status-sounds-DWru2W3X.js} +1 -1
- package/dist/client/assets/{use-tags-CSG6nBXw.js → use-tags-DiSYGuJm.js} +1 -1
- package/dist/client/assets/{use-view-mode--duMWzwB.js → use-view-mode-B1U71rKz.js} +1 -1
- package/dist/client/assets/{use-virtual-mcp-T3rF0m5R.js → use-virtual-mcp-Df2Znans.js} +1 -1
- package/dist/client/assets/useInfiniteQuery-DsOKY7NR.js +1 -0
- package/dist/client/assets/useSuspenseInfiniteQuery-Ci2I5tLg.js +1 -0
- package/dist/client/assets/{users-BJ7mky3H.js → users-DpiU7_gm.js} +1 -1
- package/dist/client/assets/{variant-calendar-DQ8rpx29.js → variant-calendar-BjMZYHfG.js} +1 -1
- package/dist/client/assets/{view-mode-toggle-Chk_9-6T.js → view-mode-toggle-D5s-POwP.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/config-CQPrXacX.js +0 -1
- package/dist/client/assets/record-editor-DNc-Oymt.js +0 -1
- package/dist/client/assets/registry-CGs3x31q.js +0 -2
- package/dist/client/assets/store-registry-BITZIFEF.js +0 -2
- package/dist/client/assets/useInfiniteQuery-CGYbyqjl.js +0 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-BksJPEIN.js +0 -1
package/dist/server/server.js
CHANGED
|
@@ -2920,7 +2920,7 @@ Respond with the structured verdict and a short reason.`,dc$;var ic$=D(()=>{D4()
|
|
|
2920
2920
|
${G.join(`
|
|
2921
2921
|
`)}`:Y}function NN6($){let Z=new Set;for(let X of $)for(let Q of X.split(`
|
|
2922
2922
|
`)){let Y=Q.trim();if(/^Co-authored-by:\s/i.test(Y))Z.add(Y)}return[...Z]}var ql$=200,XN6=12,YN6,JN6=300,w71=3;var E71=D(()=>{hD();FT0();YN6={aheadBy:0,behindBy:0,files:[]}});function BN6($){if(!$||$.includes(".."))return!1;return UN6.test($)}function kl$($){let Z=typeof $.__resolveType==="string"?$.__resolveType:null;if(!Z||!BN6(Z))return null;let{__resolveType:X,...Q}=$;return{resolveType:Z,payload:Q}}function Vl$($,Z){return`${$.replace(/\/+$/,"")}/deco/invoke/${Z}`}var UN6;var Sl$=D(()=>{UN6=/^[\w./@-]+$/});function Us($,Z){let X=$?.githubRepo;if(!X?.owner||!X?.name)return null;if(!X.connectionId)return X;if(!Z.includes(X.connectionId))return null;return X}async function Cl$($,Z,X,Q){if(!Q.connectionId)throw new Kv("Push requires a connected GitHub account. Connect mcp-github for this project and restart the sandbox.");let Y=$.organization?.id;if(!Y)throw new Kv(G9);await TO({ctx:$,connectionId:Q.connectionId,organizationId:Y,forceRefresh:!0,onLegacyMintError:(H)=>{let N=H instanceof Error?H.message:G9;throw new Kv(N)}});let{cloneUrl:G,gitUserName:J,gitUserEmail:W}=await IK(Q.connectionId,Q.owner,Q.name,$.db,$.vault).catch((H)=>{let{code:N,message:U}=E5$(H instanceof Error?H.message:String(H));throw N?new Kv(U):H}),K=lu($),F=await Z.proxyDaemonRequest(X,"/_sandbox/config",{method:"PUT",headers:new Headers({"content-type":"application/json"}),body:JSON.stringify({git:{repository:{cloneUrl:G},identity:{userName:J,userEmail:W}},...K?{operator:K}:{}})});if(!F.ok){let H=await AO(F,ON6).catch(()=>F.statusText);throw Error(`Failed to refresh sandbox git credentials (${F.status}): ${H}`)}}var ON6=10485760,Kv;var j71=D(()=>{XJ();sA0();Jn();Bi0();Ty();Kv=class Kv extends Error{constructor($){super($);this.name="GitPushAuthError"}}});function LN6($){let Z=$.startsWith("thread:")?$.slice(7):$;if(!Z||Z.length>255||Z.includes("..")||Z.startsWith("/")||Z.endsWith("/")||Z.endsWith(".lock")||!DN6.test(Z))throw Error(`Invalid branch name: ${$}`)}function Fv($){return AbortSignal.any([$.req.raw.signal,AbortSignal.timeout(EN6)])}async function zN6($,Z){let X=$.var.studioContext,Q=$J(Z.branch),Y=$.req.query("thread")??Q,G=Y&&Y===Q?Z.branchThread:Y?await X.storage.threads.get(Y).catch(()=>null):null,J=G?.virtual_mcp_id===Z.virtualMcpId?G:null,W=UC(J?.metadata?.runtime);if(W)return W;let K=mO0(Z.virtualMcpMetadata),F=K==="cms"?await $71(X,{claimName:Z.claimName}):"alive",H=K==="cms"&&F!=="alive"?"cms":"sandbox",N=!!J&&(F==="gone"||F==="alive"&&K==="cms");if(N&&J)bn(X,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:N});return H}async function PN6($){let Z=$.get("vmClaim");if(Z.runner)return Z.runner;try{return await $Q($.var.studioContext)}catch{return null}}function Hv($){let{runner:Z}=$.get("vmClaim");if(!Z)return $.json({error:"No sandbox runner configured"},503);return Z}async function nu($){let{virtualMcpMetadata:Z,connectionIds:X}=$.get("vmClaim"),Q=$.var.studioContext,Y=Us(Z,X);if(!Y)throw new M4(404,"AUTH","repo","Project has no GitHub repository");let G=t(Q);return eA0(Q,G.id,Y)}function z71($,Z){if(Z instanceof YA0)return $.json({error:Z.message},429,{...P5,...Z.retryAfterMs===null?{}:{"Retry-After":String(Math.ceil(Z.retryAfterMs/1000))}});if(Z instanceof M4){let Q=Z.status===404?404:Z.status===409||Z.status===422?409:502;return $.json({error:Z.message},Q,P5)}let X=Z instanceof Error?Z.message:String(Z);return $.json({error:X},502,P5)}async function fl$($,Z,X){let Q;try{Q=await fetch(Z,X)}catch{return $.json({error:"Preview unreachable"},502)}let Y;try{Y=await Q.text()}catch{return $.json({error:"Preview unreachable"},502)}return new Response(Y,{status:Q.status,headers:{"content-type":Q.headers.get("content-type")??"application/json"}})}async function bl$($){try{let Z=await nu($),X=await HT0(Z,$.get("vmClaim").branch);return $.json(X,200,P5)}catch(Z){return z71($,Z)}}function Bs($,Z){let Q=(BT0.get($)??Promise.resolve()).catch(()=>{}).then(Z),Y=Q.catch(()=>{});return BT0.set($,Y),Y.finally(()=>{if(BT0.get($)===Y)BT0.delete($)}),Q}async function tZ($,Z,X){if(!X?.runner&&$.get("vmClaim").runtime==="cms")return $.json({error:"sandbox not found: this session is sandbox-less"},404,P5);let Q=X?.runner??Hv($);if(Q instanceof Response)return Q;let{claimName:Y,userId:G,projectRef:J}=$.get("vmClaim"),W=X?.method??"POST",K=null,F=new Headers;if(X?.jsonBody!==void 0)K=X.jsonBody,F.set("content-type","application/json");else if(X?.forwardJsonBody)K=await $.req.text(),F.set("content-type","application/json");let H=X?.signal,N={method:W,headers:F,body:K,...H?{signal:H}:{}},U=async()=>{let B=await Q.proxyDaemonRequest(Y,Z,N);if(X?.map404to410&&B.status===404){try{await B.body?.cancel()}catch{}if(await Q.adoptLiveClaim({userId:G,projectRef:J},Y))B=await Q.proxyDaemonRequest(Y,Z,N);if(B.status===404){try{await B.body?.cancel()}catch{}return new Response(JSON.stringify({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."}),{status:410,headers:{"content-type":"application/json",...P5}})}}let O=await B.text(),L=X?.redactRepoDir?AN6(O):O,w=B.headers.get("content-type")??"application/json";return new Response(L,{status:B.status,headers:{"content-type":w,...P5}})};try{if(H){let B=U();return B.catch(()=>{}),await Promise.race([B,new Promise((L,w)=>{if(H.aborted)return w(H.reason);H.addEventListener("abort",()=>w(H.reason),{once:!0})})])}return await U()}catch(B){let O=B instanceof Error?B.message:String(B);return $.json({error:`Daemon unreachable: ${O}`},502)}}function AN6($){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 OT0($,Z,X,Q="GET",Y){let G=await $.proxyDaemonRequest(Z,X,{method:Q,headers:new Headers,body:null});if(G.status===404&&Y){try{await G.body?.cancel()}catch{}if(await $.adoptLiveClaim(Y,Z))G=await $.proxyDaemonRequest(Z,X,{method:Q,headers:new Headers,body:null})}if(G.status===404){try{await G.body?.cancel()}catch{}throw Error("SANDBOX_GONE")}let J=await G.text();if(!G.ok){let W=`Daemon error (${G.status})`;try{W=JSON.parse(J).error??W}catch{}throw Error(W)}return JSON.parse(J)}function TN6($){return xl$.includes($)}var DN6,_l$=524288,wN6=65536,EN6=1e4,vl$=2000,jN6,BT0,P5,xl$,yl$=()=>{let $=new H1;$.use("/:virtualMcpId/:branch/*",jN6),$.post("/:virtualMcpId/:branch/write",(X)=>tZ(X,"/_sandbox/write",{forwardJsonBody:!0,signal:Fv(X)})),$.post("/:virtualMcpId/:branch/unlink",(X)=>tZ(X,"/_sandbox/unlink",{forwardJsonBody:!0,signal:Fv(X)})),$.post("/:virtualMcpId/:branch/mkdir",(X)=>tZ(X,"/_sandbox/mkdir",{forwardJsonBody:!0,signal:Fv(X)})),$.post("/:virtualMcpId/:branch/rename",(X)=>tZ(X,"/_sandbox/rename",{forwardJsonBody:!0,signal:Fv(X)})),$.post("/:virtualMcpId/:branch/read",(X)=>tZ(X,"/_sandbox/read",{forwardJsonBody:!0,signal:Fv(X)})),$.post("/:virtualMcpId/:branch/glob",(X)=>tZ(X,"/_sandbox/glob",{forwardJsonBody:!0,signal:Fv(X)})),$.post("/:virtualMcpId/:branch/grep",(X)=>tZ(X,"/_sandbox/grep",{forwardJsonBody:!0,signal:Fv(X)})),$.post("/:virtualMcpId/:branch/exec/:script",async(X)=>{let Q=X.req.param("script");if(!Q)return X.json({error:"missing script name"},400);return tZ(X,`/_sandbox/exec/${encodeURIComponent(Q)}`)}),$.post("/:virtualMcpId/:branch/exec/:script/kill",async(X)=>{let Q=X.req.param("script");if(!Q)return X.json({error:"missing script name"},400);return tZ(X,`/_sandbox/exec/${encodeURIComponent(Q)}/kill`)}),$.get("/:virtualMcpId/:branch/config",(X)=>tZ(X,"/_sandbox/config",{method:"GET",map404to410:!0,redactRepoDir:!0})),$.put("/:virtualMcpId/:branch/config",(X)=>tZ(X,"/_sandbox/config",{method:"PUT",forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/setup/:step",async(X)=>{let Q=X.req.param("step");if(!Q||!TN6(Q))return X.json({error:`step must be one of: ${xl$.join(", ")}`},400);let Y=X.get("vmClaim"),G=await $71(X.var.studioContext,{claimName:Y.claimName})==="gone"?null:await PN6(X);if(!G)return X.json({error:"sandbox not found: nothing is running at this ref"},404,P5);if(Q==="start"){let J=t(X.var.studioContext),W=Py(Y.virtualMcpMetadata);try{await J70({ctx:X.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 X.json({error:`Failed to push env to daemon: ${F}`},502)}}return tZ(X,`/_sandbox/setup/${Q}`,{signal:X.req.raw.signal,map404to410:!0,runner:G})}),$.get("/:virtualMcpId/:branch/events",(X)=>{let Q=X.get("vmClaim");if(!Q.runner)return lN(X,async(Y)=>{await Y.writeSSE({event:"phase",data:JSON.stringify({kind:"failed",reason:"unknown",message:"No sandbox runner configured on this studio instance."})})});return yc$(X,{ctx:X.var.studioContext,claimName:Q.claimName,runner:Q.runner,virtualMcpId:Q.virtualMcpId,branch:Q.branch,userId:Q.userId,projectRef:Q.projectRef,virtualMcpMetadata:Q.virtualMcpMetadata})}),$.get("/:virtualMcpId/:branch/git/status",(X)=>{if(X.get("vmClaim").runtime==="cms")return bl$(X);return Z(X)});let Z=(X)=>tZ(X,"/_sandbox/git/status",{method:"GET",map404to410:!0,signal:AbortSignal.any([X.req.raw.signal,AbortSignal.timeout(vl$)])});return $.post("/:virtualMcpId/:branch/git/status",(X)=>{if(X.get("vmClaim").runtime==="cms")return bl$(X);return tZ(X,"/_sandbox/git/status",{map404to410:!0,signal:AbortSignal.any([X.req.raw.signal,AbortSignal.timeout(vl$)])})}),$.post("/:virtualMcpId/:branch/git/diff",async(X)=>{let Q=X.get("vmClaim");if(Q.runtime==="cms")try{let Y=await X.req.json().catch(()=>({})),G=await nu(X),J=await NT0(G,Q.branch,Y.base);return X.json(J,200,P5)}catch(Y){return z71(X,Y)}return tZ(X,"/_sandbox/git/diff",{forwardJsonBody:!0,map404to410:!0})}),$.post("/:virtualMcpId/:branch/git/publish",async(X)=>{if(X.get("vmClaim").runtime==="cms")return X.json({ok:!0},200,P5);let Q=Hv(X);if(Q instanceof Response)return Q;let{claimName:Y,virtualMcpMetadata:G,connectionIds:J}=X.get("vmClaim"),W=X.var.studioContext;return Bs(Y,async()=>{try{await Z71(W,Q,Y);let K=Us(G,J);if(K)await Cl$(W,Q,Y,K)}catch(K){if(K instanceof Kv)return X.json({error:K.message},403,P5);let F=K instanceof Error?K.message:String(K);return X.json({error:F},502,P5)}return tZ(X,"/_sandbox/git/publish",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/discard",async(X)=>{let Q=X.get("vmClaim");if(Q.runtime==="cms")return Bs(Q.claimName,async()=>{let Y=await X.req.json().catch(()=>({})),G=Array.isArray(Y.filepaths)?Y.filepaths.filter((J)=>typeof J==="string"):[];if(G.length===0)return X.json({error:"filepaths is required"},400,P5);try{let J=await nu(X);return await Ml$(J,Q.branch,G),X.json({ok:!0},200,P5)}catch(J){let W=J instanceof M4&&J.status===409?409:502,K=J instanceof Error?J.message:String(J);return X.json({error:K},W,P5)}});return Bs(Q.claimName,()=>tZ(X,"/_sandbox/git/discard",{forwardJsonBody:!0,map404to410:!0}))}),$.post("/:virtualMcpId/:branch/git/rebase",async(X)=>{let Q=X.get("vmClaim");if(Q.runtime==="cms")return Bs(Q.claimName,async()=>{try{let W=await X.req.json().catch(()=>({})),K=await nu(X),F=W.base??await K.getDefaultBranch();return await UT0(K,Q.branch,F),X.json({ok:!0},200,P5)}catch(W){return z71(X,W)}});let Y=Hv(X);if(Y instanceof Response)return Y;let{claimName:G}=X.get("vmClaim"),J=X.var.studioContext;return Bs(G,async()=>{try{await Z71(J,Y,G)}catch(W){let K=W instanceof Error?W.message:String(W);return X.json({error:K},502,P5)}return tZ(X,"/_sandbox/git/rebase",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/suggest-commit",p5({maxSize:_l$,onError:(X)=>X.json({error:"Payload too large"},413,P5)}),async(X)=>{let Q=X.get("vmClaim"),Y=null;if(Q.runtime!=="cms"){let F=Hv(X);if(F instanceof Response)return F;Y=F}let{claimName:G,userId:J,projectRef:W}=Q,K=X.var.studioContext;try{let F=await X.req.json().catch(()=>({})),H=F.status,N=F.diff,U=N!=null&&typeof N.diffs==="object"&&N.diffs!==null,[B,O]=Y71(H)&&U?[H,N]:Y?await Promise.all([OT0(Y,G,"/_sandbox/git/status","GET",{userId:J,projectRef:W}),OT0(Y,G,"/_sandbox/git/diff","GET",{userId:J,projectRef:W})]):await(async()=>{let w=await nu(X);return Promise.all([HT0(w,Q.branch),NT0(w,Q.branch)])})(),L=await lc$(K,B,O);return X.json(L,200,P5)}catch(F){let H=F instanceof Error?F.message:String(F);if(H==="SANDBOX_GONE")return X.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,P5);return X.json({error:H},502,P5)}}),$.post("/:virtualMcpId/:branch/git/judge-review",p5({maxSize:_l$,onError:(X)=>X.json({error:"Payload too large"},413,P5)}),async(X)=>{let Q=X.get("vmClaim"),Y=null;if(Q.runtime!=="cms"){let F=Hv(X);if(F instanceof Response)return F;Y=F}let{claimName:G,userId:J,projectRef:W}=Q,K=X.var.studioContext;try{let F=await X.req.json().catch(()=>({})),H=F.status,N=F.diff,U=N!=null&&typeof N.diffs==="object"&&N.diffs!==null,[B,O]=Y71(H)&&U?[H,N]:Y?await Promise.all([OT0(Y,G,"/_sandbox/git/status","GET",{userId:J,projectRef:W}),OT0(Y,G,"/_sandbox/git/diff","GET",{userId:J,projectRef:W})]):await(async()=>{let w=await nu(X);return Promise.all([HT0(w,Q.branch),NT0(w,Q.branch)])})(),L=await mc$(K,B,O,typeof F.language==="string"?F.language:void 0);return X.json(L,200,P5)}catch(F){let H=F instanceof Error?F.message:String(F);if(H==="SANDBOX_GONE")return X.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,P5);return X.json({error:H},502,P5)}}),$.get("/:virtualMcpId/:branch/preview-fetch",async(X)=>{let Q=Hv(X);if(Q instanceof Response)return Q;let{claimName:Y}=X.get("vmClaim"),G=X.req.query("path");if(!G||!G.startsWith("/")||G.startsWith("//")||G.includes("..")||G.includes("\\"))return X.json({error:"Path not allowed"},403);let J;try{J=await Q.getPreviewUrl(Y)}catch{return X.json({error:"Preview not available"},502)}if(!J)return X.json({error:"Preview not available"},502);let W=J.replace(/\/+$/,"");return fl$(X,`${W}${G}`)}),$.post("/:virtualMcpId/:branch/preview-invoke",p5({maxSize:wN6,onError:(X)=>X.json({error:"Payload too large"},413)}),async(X)=>{let Q=Hv(X);if(Q instanceof Response)return Q;let{claimName:Y}=X.get("vmClaim"),G;try{G=await Q.getPreviewUrl(Y)}catch{return X.json({error:"Preview not available"},502)}if(!G)return X.json({error:"Preview not available"},502);let J;try{J=await X.req.json()}catch{return X.json({error:"Invalid JSON body"},400)}if(!J||typeof J!=="object"||Array.isArray(J))return X.json({error:"Invalid JSON body"},400);let W=kl$(J);if(!W)return X.json({error:"Invalid or missing __resolveType"},400);let K=Vl$(G,W.resolveType);return fl$(X,K,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(W.payload),signal:AbortSignal.timeout(30000)})}),$};var gl$=D(()=>{U8();LF();cu();eZ1();Zn();fc$();y3();cy();bc$();l3();xc$();gc$();Hi0();Yn();W71();ic$();F71();hD();E71();Sl$();j71();DN6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;jN6=aA0(async($,Z)=>{let X=$.var.studioContext;try{o(X)}catch{return $.json({error:"Unauthorized"},401)}let Q=o0(X);if(!Q)return $.json({error:"Unauthorized"},401);let Y;try{Y=t(X)}catch{return $.json({error:"Organization scope required"},403)}let G=$.req.param("virtualMcpId"),J=$.req.param("branch");if(!G||!J)return $.json({error:"virtualMcpId and branch are required"},400);try{LN6(J)}catch(L){let w=L instanceof Error?L.message:String(L);return $.json({error:w},400)}let W=await X.storage.virtualMcps.findById(G);if(!W||W.organization_id!==Y.id)return $.json({error:"Virtual MCP not found"},404);let K=ep({orgId:Y.id,virtualMcpId:G,branch:J}),F=await Yi0(X,J),H=Gi0(F,Q),N=vc$({userId:H,projectRef:K}),U=W.metadata??null,B=await zN6($,{claimName:N,branch:J,virtualMcpId:G,sandboxUserId:H,virtualMcpMetadata:U,branchThread:F});if(B==="cms")return $.set("vmClaim",{claimName:N,callerUserId:Q,runner:null,virtualMcpId:G,branch:J,userId:H,projectRef:K,virtualMcpMetadata:U,connectionIds:W.connections?.map((L)=>L.connection_id)??[],runtime:B}),Z();let O;try{O=await $Q(X)}catch{O=null}if(!O)return $.json({error:"No sandbox runner found"},404);return $.set("vmClaim",{claimName:N,callerUserId:Q,runner:O,virtualMcpId:G,branch:J,userId:H,projectRef:K,virtualMcpMetadata:U,connectionIds:W.connections?.map((L)=>L.connection_id)??[],runtime:B}),Z()});BT0=new Map;P5={"Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache"};xl$=["clone","install","start"]});function hl$($,Z,X){let Q=P71.get($);if(!Q)Q={pending:null,running:!1},P71.set($,Q);if(!Q.pending)Q.pending={set:new Map,del:new Set,deps:Z,resolvers:[],rejecters:[]};let Y=Q.pending;Y.deps=Z;for(let[J,W]of Object.entries(X.set??{}))Y.set.set(J,W),Y.del.delete(J);for(let J of X.delete??[])Y.del.add(J),Y.set.delete(J);let G=new Promise((J,W)=>{Y.resolvers.push(J),Y.rejecters.push(W)});if(!Q.running)IN6($,Q);return G}async function IN6($,Z){Z.running=!0;try{while(Z.pending){let X=Z.pending;Z.pending=null;try{let Q=await qN6(X);for(let Y of X.resolvers)Y(Q)}catch(Q){for(let Y of X.rejecters)Y(Q)}}}finally{if(Z.running=!1,!Z.pending)P71.delete($)}}async function qN6($){let{client:Z,branch:X,packagePath:Q}=$.deps;for(let Y=0;;Y++){let G=await pu(Z,X),J=await Z.getCommitTreeSha(G),W=await Z.getDecofileTree(J,Q),K=D71(W,Q),F=[],H=new Map(K.map((O)=>[O.path,{stem:O.stem,sha:O.sha}]));for(let[O,L]of $.set){let w=L71(K,O),E=`${JSON.stringify(L,null,2)}
|
|
2923
|
-
`,j=await Z.createBlob(E);await Tl$(Z.owner,Z.repo,j,E);let z=w[0]??`${KT0(Q)}/${H71(O)}.json`;F.push({path:z,mode:"100644",type:"blob",sha:j});let A=z.slice(z.lastIndexOf("/")+1,-5);H.set(z,{stem:A,sha:j,content:E});for(let P of w.slice(1))F.push({path:P,mode:"100644",type:"blob",sha:null}),H.delete(P)}for(let O of $.del)for(let L of L71(K,O))F.push({path:L,mode:"100644",type:"blob",sha:null}),H.delete(L);if(F.length===0)return G;let N=Q?`${Q}/.deco/blocks.gen.json`:".deco/blocks.gen.json";if(W.some((O)=>O.type==="blob"&&O.path===N)){let O=await Promise.all([...H.values()].map(async(j)=>({stem:j.stem,content:j.content??await Z.getBlobText(j.sha)}))),{decofile:L,skipped:w}=Ks(O);if(w.length>0)console.warn("decofile gen: dropped blocks that were not valid JSON",{repo:`${Z.owner}/${Z.repo}`,branch:X,packagePath:Q,blocks:w.map((j)=>j.key)});let E=await Z.createBlob(L);F.push({path:N,mode:"100644",type:"blob",sha:E})}let U=await Z.createTree(J,F),B=await Z.createCommit({message:MN6($),treeSha:U,parentShas:[G]});try{return await Z.updateRef(X,B),B}catch(O){if(!(O instanceof M4&&O.status===422)||Y>=RN6-1)throw O;await L$(aZ(2000,200,Y,2,0.5))}}}function MN6($){let Z=(Y)=>{let G=Y.slice(0,3).join(", ");return Y.length>3?`${G} (+${Y.length-3} more)`:G},X=[];if($.set.size>0)X.push(`update ${Z([...$.set.keys()])}`);if($.del.size>0)X.push(`delete ${Z([...$.del])}`);let Q=`chore(decofile): ${X.join("; ")}`;return sm0(Q,$.deps.coAuthor)}var RN6=3,P71;var ul$=D(()=>{gO0();ZT0();W4();hD();FT0();P71=new Map});import{createHmac as cl$,randomBytes as kN6,timingSafeEqual as VN6}from"crypto";function ll$(){if(DT0)return DT0;let $;try{let Z=b0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return DT0=$?Buffer.from($):kN6(32),DT0}function A71($){let Z=$.nowMs??Date.now(),X={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+SN6)/1000)},Q=Buffer.from(JSON.stringify(X)).toString("base64url"),Y=cl$("sha256",ll$()).update(Q).digest("base64url");return`${Q}.${Y}`}function dl$($,Z){let X=$.indexOf(".");if(X<0)return!1;let Q=$.slice(0,X),Y=Buffer.from($.slice(X+1)),G=Buffer.from(cl$("sha256",ll$()).update(Q).digest("base64url"));if(Y.length!==G.length||!VN6(Y,G))return!1;let J;try{J=JSON.parse(Buffer.from(Q,"base64url").toString())}catch{return!1}let W=Math.floor((Z.nowMs??Date.now())/1000);return J.o===Z.organizationId&&J.m===Z.virtualMcpId&&J.b===Z.branch&&typeof J.e==="number"&&J.e>=W}var SN6=21600000,DT0=null;var ml$=D(()=>{R$()});import{z as tu}from"zod";function _N6($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&CN6.test($)}function ol$($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function Os($){let Z=$.get("decofileScope");return eA0($.var.studioContext,Z.organizationId,Z.githubRepo)}function Ds($,Z){if(Z instanceof M4){let Q=Z.status===404?404:Z.status===409?409:Z.status===422?409:502;return $.json({error:Z.message},Q)}let X=Z instanceof Error?Z.message:String(Z);return $.json({error:X},500)}function rl$(){let $=new H1;return $.use("/:virtualMcpId/:branch",tl$),$.use("/:virtualMcpId/:branch/*",tl$),$.get("/:virtualMcpId/:branch",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await Os(Z),Y=await Rl$(Q,X.branch,X.packagePath,{createBranchIfMissing:!!X.userId}),G={ETag:`"${Y.sha}"`,"Cache-Control":"no-store","Access-Control-Allow-Origin":"*"};if(Z.req.header("if-none-match")===`"${Y.sha}"`)return Z.body(null,304,G);if(!X.userId)return Z.body(Y.decofile,200,{...G,"content-type":"application/json"});let J=A71({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.body(`{"version":${JSON.stringify(Y.sha)},"token":${JSON.stringify(J)},"apiHost":${JSON.stringify(ol$(Z))},"decofile":${Y.decofile}}`,200,{...G,"content-type":"application/json"})}catch(Q){return Ds(Z,Q)}}),$.get("/:virtualMcpId/:branch/meta",async(Z)=>{let X=Z.get("decofileScope"),Q=X.packagePath?`${X.packagePath}/.deco/meta.gen.json`:".deco/meta.gen.json";try{let Y=await Os(Z),G=await Y.getFileTextAtRef(X.branch,Q);if(G===null){let J=await Y.getDefaultBranch();if(J!==X.branch)G=await Y.getFileTextAtRef(J,Q)}if(G===null)return Z.json({error:"meta.gen.json not committed"},404);return Z.body(G,200,{"content-type":"application/json","Cache-Control":"no-store","Access-Control-Allow-Origin":"*"})}catch(Y){return Ds(Z,Y)}}),$.patch("/:virtualMcpId/:branch",fN6,async(Z)=>{let X=Z.get("decofileScope"),Q=Z.var.studioContext,Y=bN6.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{$T0(J)}catch(W){let K=W instanceof Error?W.message:String(W);return Z.json({error:K},400)}for(let[J,W]of Object.entries(G.set??{}))if(typeof W!=="object"||W===null||Array.isArray(W))return Z.json({error:`Block "${J}" must be a JSON object`},400);try{let J=await Os(Z),W=await hl$(`${X.organizationId}/${X.virtualMcpId}/${X.branch}`,{client:J,branch:X.branch,packagePath:X.packagePath,coAuthor:lu(Q)},G),K=A71({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.json({version:W,token:K,apiHost:ol$(Z)})}catch(J){return Ds(Z,J)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await Os(Z),Y=await Q.getDefaultBranch();if(Y===X.branch)return Z.json({error:"Branch is already the default branch"},400);let G=`chore(decofile): publish ${X.branch}`;try{let J;try{J=await Q.mergeBranch(Y,X.branch,G)}catch(W){if(!(W instanceof M4&&W.status===409))throw W;await UT0(Q,X.branch,Y),J=await Q.mergeBranch(Y,X.branch,G)}return J?Z.json({result:"merged",sha:J}):Z.json({result:"up-to-date"})}catch(J){if(J instanceof M4&&J.status===409)return Z.json({error:"merge-conflict"},409);if(J instanceof M4&&J.status===405){let K=await Q.findOpenPullRequest(Y,X.branch)??await Q.createPullRequest({base:Y,head:X.branch,title:`Publish ${X.branch}`});return Z.json({result:"pull-request",number:K.number,url:K.html_url})}throw J}}catch(Q){return Ds(Z,Q)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await Os(Z),Y=await Q.getDefaultBranch();if(Y===X.branch)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0,lastCommitAt:null});try{let[{aheadBy:G,behindBy:J},W]=await Promise.all([Q.compare(Y,X.branch),Q.getBranchHead(X.branch)]);return Z.json({baseBranch:Y,aheadBy:G,behindBy:J,lastCommitAt:W.committedAt})}catch(G){if(G instanceof M4&&G.status===404)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0,lastCommitAt:null});throw G}}catch(Q){return Ds(Z,Q)}}),$}var CN6,il$=500,pl$=1048576,nl$=1024,vN6=8388608,fN6,bN6,tl$;var al$=D(()=>{ZT0();U8();LF();eZ1();sA0();j71();F71();ul$();ml$();E71();hD();FT0();CN6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;fN6=p5({maxSize:vN6,onError:($)=>$.json({error:"Payload too large"},413)}),bN6=tu.object({set:tu.record(tu.string(),tu.unknown()).optional(),delete:tu.array(tu.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)<=il$,{message:`Patch cannot touch more than ${il$} blocks`}).refine(($)=>Object.values($.set??{}).every((Z)=>JSON.stringify(Z).length<=pl$),{message:`Each block must be at most ${pl$} bytes`}).refine(($)=>[...Object.keys($.set??{}),...$.delete??[]].every((Z)=>Z.length<=nl$),{message:`Each block key must be at most ${nl$} characters`}),tl$=aA0(async($,Z)=>{let X=$.var.studioContext,Q=X.organization;if(!Q)return $.json({error:"Organization scope required"},500);let Y=$.req.param("virtualMcpId"),G=$.req.param("branch");if(!Y||!G)return $.json({error:"virtualMcpId and branch are required"},400);if(!_N6(G))return $.json({error:`Invalid branch name: ${G}`},400);let J=X.auth?.user?.id??null;if(!J){let B=$.req.query("token");if(!($.req.method==="GET"&&!$.req.path.match(/\/(publish|status)$/)))return $.json({error:"Unauthorized"},401);if(!B||!dl$(B,{organizationId:Q.id,virtualMcpId:Y,branch:G}))return $.json({error:"Unauthorized"},401)}let W=await X.storage.virtualMcps.findById(Y);if(!W||W.organization_id!==Q.id)return $.json({error:"Virtual MCP not found"},404);let K=W.metadata??null;if(!dO0(K))return $.json({error:"Project has no preview server configured"},404);let H=W.connections?.map((B)=>B.connection_id)??[],N=Us(K,H);if(!N)return $.json({error:"Project has no GitHub repository"},404);let U=K?.runtime;return $.set("decofileScope",{organizationId:Q.id,virtualMcpId:Y,branch:G,packagePath:U?.path?.replace(/^\/+|\/+$/g,"")||null,githubRepo:N,userId:J}),Z()})});var sl$=($)=>{let Z=new H1;if(Z.use("*",s_),Z.route("/",OA0()),Z.route("/",Og$()),Z.route("/",zc$()),Z.route("/",wc$()),Z.route("/",tA0()),Z.route("/tools",Mc$()),Z.route("/",Rc$()),Z.route("/",ru$({kvStorage:$.kvStorage})),Z.route("/",tu$()),Z.route("/fs",Hc$({getConnection:$.getNatsConnection})),Z.route("/sandbox",yl$()),Z.route("/decofile",rl$()),Z.route("/",Oc$()),Z.route("/deco-sites",LA0()),Z.route("/sso",KA0()),Z.route("/",oA0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",Jg$()),$.mountDevAssets)Z.route("/dev-assets",wA0({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("/",qb$()),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",Uc$()),Z.route("/mcp",Ew0()),Z.route("/mcp/self",nA0()),Z.route("/mcp",Pw0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var el$=D(()=>{U8();P91();Wg$();I91();EA0();fa();j91();ou$();au$();Nc$();ct();B91();Aw0();pZ1();Bc$();Dc$();Ec$();Pc$();Ic$();tZ1();kc$();oZ1();jw0();gl$();al$()});function xN6($){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 yN6=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},$d$=()=>{let $=new H1;return $.use("*",yN6),$.get("/",async(Z)=>{let X=b0(),Q=X.decoSupabaseUrl,Y=X.decoSupabaseServiceKey;if(!Q||!Y)return Z.json({apps:[]});try{let G=await nZ(Q,Y,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:xN6(G)})}catch(G){return console.error("[deco-apps] GET error:",G),Z.json({error:"Failed to fetch apps"},502)}}),$};var Zd$=D(()=>{U8();R$();UP0()});import{z as M1}from"zod";function PF($,Z="invalid_request_error",X=null,Q=null){return{error:{message:$,type:Z,param:X,code:Q}}}function nN6($){if(!$)return null;let Z=$.indexOf(":");if(Z===-1)return{credentialId:null,modelId:$};let X=$.substring(0,Z),Q=$.substring(Z+1);if(!X||!Q)return null;return{credentialId:X,modelId:Q}}function tN6($,Z,X){try{return JSON.parse($)}catch{throw new Yd$(`Invalid JSON in tool call arguments for function '${X}' (tool_call_id: ${Z}): ${$}`)}}function oN6($){let Z={};for(let X of $)if(X.role==="assistant"&&X.tool_calls)for(let Q of X.tool_calls)Z[Q.id]=Q.function.name;return $.map((X)=>{switch(X.role){case"system":return{role:"system",content:X.content};case"user":if(typeof X.content==="string")return{role:"user",content:X.content};return{role:"user",content:X.content.map((Y)=>{if(Y.type==="text")return{type:"text",text:Y.text};return{type:"image",image:Y.image_url.url}})};case"assistant":if(X.tool_calls&&X.tool_calls.length>0)return{role:"assistant",content:X.tool_calls.map((Y)=>({type:"tool-call",toolCallId:Y.id,toolName:Y.function.name,input:tN6(Y.function.arguments,Y.id,Y.function.name)}))};return{role:"assistant",content:X.content??""};case"tool":let Q=Z[X.tool_call_id]??"unknown";return{role:"tool",content:[{type:"tool-result",toolCallId:X.tool_call_id,toolName:Q,output:{type:"text",value:X.content}}]}}})}function rN6($){let Z=$.map((X)=>{let Q=X.function.parameters?mY(X.function.parameters):mY({type:"object",properties:{}});return[X.function.name,I$({description:X.function.description,inputSchema:Q})]});return Object.fromEntries(Z)}function aN6($){if(!$)return;return{openai:{response_format:$}}}function sN6(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function Xd$($,Z,X,Q,Y,G){let J={model:$,messages:Z,tools:X,temperature:Q.temperature,maxTokens:Q.max_tokens,topP:Q.top_p,frequencyPenalty:Q.frequency_penalty,presencePenalty:Q.presence_penalty,stopSequences:Q.stop?Array.isArray(Q.stop)?Q.stop:[Q.stop]:void 0,abortSignal:G};return Y?{...J,providerOptions:Y}:J}function Qd$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var gN6=256,hN6,uN6,cN6,lN6,dN6,mN6,iN6,pN6,Yd$,Gd$,Jd$;var Wd$=D(()=>{D4();U8();cu();PN();hN6=M1.object({type:M1.literal("function"),function:M1.object({name:M1.string(),description:M1.string().optional(),parameters:M1.record(M1.string(),M1.unknown()).optional()})}),uN6=M1.object({id:M1.string(),type:M1.literal("function"),function:M1.object({name:M1.string(),arguments:M1.string()})}),cN6=M1.discriminatedUnion("role",[M1.object({role:M1.literal("system"),content:M1.string(),name:M1.string().optional()}),M1.object({role:M1.literal("user"),content:M1.union([M1.string(),M1.array(M1.union([M1.object({type:M1.literal("text"),text:M1.string()}),M1.object({type:M1.literal("image_url"),image_url:M1.object({url:M1.string(),detail:M1.string().optional()})})]))]),name:M1.string().optional()}),M1.object({role:M1.literal("assistant"),content:M1.string().nullable().optional(),name:M1.string().optional(),tool_calls:M1.array(uN6).optional()}),M1.object({role:M1.literal("tool"),content:M1.string(),tool_call_id:M1.string()})]),lN6=M1.object({type:M1.literal("text")}),dN6=M1.object({type:M1.literal("json_object")}),mN6=M1.object({type:M1.literal("json_schema"),json_schema:M1.object({name:M1.string(),description:M1.string().optional(),schema:M1.record(M1.string(),M1.unknown()),strict:M1.boolean().optional()})}),iN6=M1.union([lN6,dN6,mN6]),pN6=M1.object({model:M1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:M1.array(cN6),stream:M1.boolean().optional().default(!1),temperature:M1.number().min(0).max(2).optional(),max_tokens:M1.number().positive().optional(),top_p:M1.number().min(0).max(1).optional(),frequency_penalty:M1.number().min(-2).max(2).optional(),presence_penalty:M1.number().min(-2).max(2).optional(),stop:M1.union([M1.string(),M1.array(M1.string())]).optional(),tools:M1.array(hN6).optional(),tool_choice:M1.union([M1.literal("auto"),M1.literal("none"),M1.literal("required"),M1.object({type:M1.literal("function"),function:M1.object({name:M1.string()})})]).optional(),response_format:iN6.optional(),user:M1.string().optional()});Yd$=class Yd$ extends Error{constructor($){super($);this.name="MessageConversionError"}};Gd$=new H1;Gd$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),X=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(PF("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(PF("Organization context is required. Ensure your API key has organization metadata.","invalid_request_error","organization"),400);if((Z.organization.slug??Z.organization.id)!==X)return $.json(PF("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Q=await $.req.json(),Y=pN6.safeParse(Q);if(!Y.success){let w=Y.error.issues[0]??{message:"Invalid request",path:[]};return $.json(PF(`Invalid request: ${w.message}`,"invalid_request_error",w.path.length>0?w.path.join("."):null),400)}let G=Y.data,J=nN6(G.model);if(!J)return $.json(PF("Invalid model format. Expected 'model_id' or 'credential_id:model_id' (e.g., 'claude-sonnet-4-6' or 'key_abc123:claude-sonnet-4-6')","invalid_request_error","model"),400);let{credentialId:W}=J,{modelId:K}=J;if(!W){let E=(await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id})).find((j)=>Qw(j.providerId));if(!E)return $.json(PF("No AI provider credentials configured for this organization. Add a credential in settings or specify one explicitly via 'credential_id:model_id'.","invalid_request_error","model"),400);W=E.id}let F;try{F=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json(PF(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let H=F.aiSdk.languageModel(K),N=oN6(G.messages),U=G.tools?rN6(G.tools):void 0,B=aN6(G.response_format),O=sN6(),L=Math.floor(Date.now()/1000);if(G.stream)return lN($,async(w)=>{let E=Xd$(H,N,U,G,B,$.req.raw.signal);try{let j=wO(E),z=!1,A=0,P="",I=async()=>{if(P.length===0)return;let q=P;P="",await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:G.model,choices:[{index:0,delta:{content:q},finish_reason:null}]})})};for await(let q of j.fullStream){if(!z&&(q.type==="text-delta"||q.type==="tool-call"))await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:G.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),z=!0;if(q.type==="text-delta"){if(P+=q.text,P.length>=gN6)await I()}else if(q.type==="tool-call"){await I();let k=A++;await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:G.model,choices:[{index:0,delta:{tool_calls:[{index:k,id:q.toolCallId,type:"function",function:{name:q.toolName,arguments:JSON.stringify(q.input)}}]},finish_reason:null}]})})}else if(q.type==="finish")await I(),await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:G.model,choices:[{index:0,delta:{},finish_reason:Qd$(q.finishReason)}],usage:q.totalUsage?{prompt_tokens:q.totalUsage.inputTokens??0,completion_tokens:q.totalUsage.outputTokens??0,total_tokens:q.totalUsage.totalTokens??0}:void 0})})}await I(),await w.writeSSE({data:"[DONE]"})}catch(j){let z=j;console.error("[openai-compat:stream] Error:",z.message),await w.writeSSE({data:JSON.stringify({error:{message:z.message,type:"server_error"}})})}});else{let w=Xd$(H,N,U,G,B,$.req.raw.signal),E=await DO(w),j={role:"assistant",content:E.text||null};if(E.toolCalls&&E.toolCalls.length>0)j.tool_calls=E.toolCalls.map((z)=>({id:z.toolCallId,type:"function",function:{name:z.toolName,arguments:JSON.stringify("input"in z?z.input:{})}})),j.content=null;return $.json({id:O,object:"chat.completion",created:L,model:G.model,choices:[{index:0,message:j,finish_reason:Qd$(E.finishReason)}],usage:{prompt_tokens:E.usage?.inputTokens??0,completion_tokens:E.usage?.outputTokens??0,total_tokens:E.usage?.totalTokens??0}})}}catch(Q){let Y=Q;if(Y.name==="AbortError")return $.json(PF("Request aborted","invalid_request_error"),400);if(Y.name==="MessageConversionError")return $.json(PF(Y.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",Y.message,Y.stack),$.json(PF(Y.message,"server_error"),500)}});Jd$=Gd$});function eN6($){if(typeof $!=="object"||$===null)return!1;let X=$.githubRepo?.url;return typeof X==="string"&&X.length>0}function Kd$(){let $=new H1;return $.use("*",async(Z,X)=>{await X(),Z.header("Cache-Control","private, no-store"),Z.header("Vary","Cookie")}),$.get("/",async(Z)=>{let X=Z.get("studioContext"),Q=o0(X);if(!Q)return Z.json({error:"Authentication required"},401);let G=(Z.req.query("site")??"").trim().toLowerCase();if(!oG(G))return Z.json({error:"Invalid site slug"},400);let J=await X.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["organization.id as id","organization.slug as slug","organization.name as name","organization.metadata as metadata"]).where("member.userId","=",Q).execute(),W=[];for(let F of J){if(!F.slug||_Z(F))continue;let H=await X.storage.virtualMcps.list(F.id);for(let N of H){if(as1(N)!==G)continue;if(!eN6(N.metadata))continue;W.push({orgSlug:F.slug,orgName:F.name??F.slug,project:{id:N.id,title:N.title,icon:N.icon??null}})}}let K={matches:W};return Z.json(K)}),$}var Fd$=D(()=>{U8();eB()});var Nd$;var Hd$=D(()=>{Nd$={name:"decocms",version:"4.294.0",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});function XU6(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??ZU6}}var Ud$,ZU6="https://ph.studio.decocms.com",Bd$;var Od$=D(()=>{U8();h50();vC();$9();R$();Y91();Hd$();Ud$=new H1;Ud$.get("/",($)=>{let Z={version:Nd$.version,theme:Pi1(),...AH().logo&&{logo:AH().logo},...KN()&&{internalUrl:aC1()},...b0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!b0().firecrawlApiKey,auth:Ly$(),posthog:XU6(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:Ts()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});Bd$=Ud$});function ou($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function T71($){return(ou($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((X)=>X.charAt(0).toUpperCase()+X.slice(1)).join(" ")}function Ld$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(ou($))}&sz=${Z}`}function Dd$($,Z){let X=$.trim();if(X.length<=Z)return X;let Q=X.slice(0,Z-1),Y=Q.lastIndexOf(" ");return`${(Y>Z*0.6?Q.slice(0,Y):Q).trimEnd()}\u2026`}function wd$($){let{brand:Z,domain:X,score:Q,verdict:Y}=$,G=typeof Q==="number"?`${Z} commerce report \u2014 ${Math.round(Q)}/100 \xB7 decocms`:`${Z} commerce report \xB7 decocms`,J=`See the full ${Z} scorecard \u2014 SEO, performance, conversion & AEO signals scored by decocms.`,W=Y?.trim()?Dd$(`${Y.trim().replace(/\s+/g," ")} \u2014 ${J}`,200):Dd$(`How does ${X} really perform? ${J}`,200);return{title:G,description:W}}import{z as l0}from"zod";var Nv,QU6,YU6,GU6,JU6,Ed$;var jd$=D(()=>{Nv=l0.enum(["good","bad","neutral"]),QU6=l0.preprocess(($)=>{if(Array.isArray($))return{kind:"text",value:$.find((X)=>X!==null&&typeof X!=="object")??""};return $!==null&&typeof $==="object"?$:{kind:"text",value:$}},l0.object({kind:l0.enum(["text","number","sparkline","badge","score"]).catch("text"),value:l0.coerce.string().optional(),tone:Nv.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 $})),YU6=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(QU6)),GU6={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()},JU6=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:Nv.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:Nv.optional()}),l0.object({template:l0.literal("stats"),stats:l0.array(l0.object({value:l0.coerce.string(),label:l0.coerce.string(),tone:Nv.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:Nv.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(YU6).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:Nv.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:Nv.optional()})).min(1)})]),Ed$=l0.object({...GU6,template:JU6})});function LT0($){let Z=[],X=[...$.sections].sort((Y,G)=>Y.position-G.position).map((Y)=>{let G=Ed$.safeParse(Y.props);if(G.success)return G.data;let J=G.error.issues[0];return Z.push({section_type:Y.section_type,position:Y.position,reason:J?`${J.path.join(".")||"(root)"}: ${J.message}`:"contract violation"}),null}).filter((Y)=>Y!==null),Q=X.filter((Y)=>Y.template.template!=="cover"&&Y.template.template!=="cta").map((Y)=>({key:Y.key,title:Y.title}));return{deck:{meta:{...$.meta,scores:$.summary?.scores,scannedAt:$.scanned_at,toc:Q},slides:X},drops:Z}}var R71=D(()=>{jd$()});import{join as zd$}from"path";async function KU6($){try{let Z=await fetch(`${WK({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(WU6)});if(!Z.ok)return null;let X=await Z.json(),{deck:Q}=LT0(X);if(!Q.slides.length)return null;let Y=Q.slides.find((W)=>W.template.template==="cover"),G=Y?.template,J=G&&G.template==="cover"?G:void 0;return{brand:Q.meta.brand?.trim()||T71($),score:Q.meta.scores?.cover??J?.score?.value,verdict:Y?.annotation?.trim()||Y?.headline?.trim()||void 0}}catch{return null}}function DG($){return $.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""")}function FU6($,Z){let X=ou($),Q=Z?.brand?.trim()||T71(X),Y=Ld$(X,128),J=`${(b0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(X)}`,{title:W,description:K}=wd$({brand:Q,domain:X,score:Z?.score,verdict:Z?.verdict}),F=`${J}/og.png`,H=`${Q} commerce report by decocms`;return[`<title>${DG(W)}</title>`,`<meta name="description" content="${DG(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="${DG(W)}" />`,`<meta property="og:description" content="${DG(K)}" />`,`<meta property="og:url" content="${DG(J)}" />`,`<meta property="og:image" content="${DG(F)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${DG(H)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${DG(W)}" />`,`<meta name="twitter:description" content="${DG(K)}" />`,`<meta name="twitter:image" content="${DG(F)}" />`,`<meta name="twitter:image:alt" content="${DG(H)}" />`,`<link rel="canonical" href="${DG(J)}" />`,`<link rel="icon" href="${DG(Y)}" sizes="any" />`].join(`
|
|
2923
|
+
`,j=await Z.createBlob(E);await Tl$(Z.owner,Z.repo,j,E);let z=w[0]??`${KT0(Q)}/${H71(O)}.json`;F.push({path:z,mode:"100644",type:"blob",sha:j});let A=z.slice(z.lastIndexOf("/")+1,-5);H.set(z,{stem:A,sha:j,content:E});for(let P of w.slice(1))F.push({path:P,mode:"100644",type:"blob",sha:null}),H.delete(P)}for(let O of $.del)for(let L of L71(K,O))F.push({path:L,mode:"100644",type:"blob",sha:null}),H.delete(L);if(F.length===0)return G;let N=Q?`${Q}/.deco/blocks.gen.json`:".deco/blocks.gen.json";if(W.some((O)=>O.type==="blob"&&O.path===N)){let O=await Promise.all([...H.values()].map(async(j)=>({stem:j.stem,content:j.content??await Z.getBlobText(j.sha)}))),{decofile:L,skipped:w}=Ks(O);if(w.length>0)console.warn("decofile gen: dropped blocks that were not valid JSON",{repo:`${Z.owner}/${Z.repo}`,branch:X,packagePath:Q,blocks:w.map((j)=>j.key)});let E=await Z.createBlob(L);F.push({path:N,mode:"100644",type:"blob",sha:E})}let U=await Z.createTree(J,F),B=await Z.createCommit({message:MN6($),treeSha:U,parentShas:[G]});try{return await Z.updateRef(X,B),B}catch(O){if(!(O instanceof M4&&O.status===422)||Y>=RN6-1)throw O;await L$(aZ(2000,200,Y,2,0.5))}}}function MN6($){let Z=(Y)=>{let G=Y.slice(0,3).join(", ");return Y.length>3?`${G} (+${Y.length-3} more)`:G},X=[];if($.set.size>0)X.push(`update ${Z([...$.set.keys()])}`);if($.del.size>0)X.push(`delete ${Z([...$.del])}`);let Q=`chore(decofile): ${X.join("; ")}`;return sm0(Q,$.deps.coAuthor)}var RN6=3,P71;var ul$=D(()=>{gO0();ZT0();W4();hD();FT0();P71=new Map});import{createHmac as cl$,randomBytes as kN6,timingSafeEqual as VN6}from"crypto";function ll$(){if(DT0)return DT0;let $;try{let Z=b0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return DT0=$?Buffer.from($):kN6(32),DT0}function A71($){let Z=$.nowMs??Date.now(),X={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+SN6)/1000)},Q=Buffer.from(JSON.stringify(X)).toString("base64url"),Y=cl$("sha256",ll$()).update(Q).digest("base64url");return`${Q}.${Y}`}function dl$($,Z){let X=$.indexOf(".");if(X<0)return!1;let Q=$.slice(0,X),Y=Buffer.from($.slice(X+1)),G=Buffer.from(cl$("sha256",ll$()).update(Q).digest("base64url"));if(Y.length!==G.length||!VN6(Y,G))return!1;let J;try{J=JSON.parse(Buffer.from(Q,"base64url").toString())}catch{return!1}let W=Math.floor((Z.nowMs??Date.now())/1000);return J.o===Z.organizationId&&J.m===Z.virtualMcpId&&J.b===Z.branch&&typeof J.e==="number"&&J.e>=W}var SN6=21600000,DT0=null;var ml$=D(()=>{R$()});import{z as tu}from"zod";function _N6($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&CN6.test($)}function ol$($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function Os($){let Z=$.get("decofileScope");return eA0($.var.studioContext,Z.organizationId,Z.githubRepo)}function Ds($,Z){if(Z instanceof M4){let Q=Z.status===404?404:Z.status===409?409:Z.status===422?409:502;return $.json({error:Z.message},Q)}let X=Z instanceof Error?Z.message:String(Z);return $.json({error:X},500)}function rl$(){let $=new H1;return $.use("/:virtualMcpId/:branch",tl$),$.use("/:virtualMcpId/:branch/*",tl$),$.get("/:virtualMcpId/:branch",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await Os(Z),Y=await Rl$(Q,X.branch,X.packagePath,{createBranchIfMissing:!!X.userId}),G={ETag:`"${Y.sha}"`,"Cache-Control":"no-store","Access-Control-Allow-Origin":"*"};if(Z.req.header("if-none-match")===`"${Y.sha}"`)return Z.body(null,304,G);if(!X.userId)return Z.body(Y.decofile,200,{...G,"content-type":"application/json"});let J=A71({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.body(`{"version":${JSON.stringify(Y.sha)},"token":${JSON.stringify(J)},"apiHost":${JSON.stringify(ol$(Z))},"decofile":${Y.decofile}}`,200,{...G,"content-type":"application/json"})}catch(Q){return Ds(Z,Q)}}),$.get("/:virtualMcpId/:branch/meta",async(Z)=>{let X=Z.get("decofileScope"),Q=X.packagePath?`${X.packagePath}/.deco/meta.gen.json`:".deco/meta.gen.json";try{let Y=await Os(Z),G=await Y.getFileTextAtRef(X.branch,Q);if(G===null){let J=await Y.getDefaultBranch();if(J!==X.branch)G=await Y.getFileTextAtRef(J,Q)}if(G===null)return Z.json({error:"meta.gen.json not committed"},404);return Z.body(G,200,{"content-type":"application/json","Cache-Control":"no-store","Access-Control-Allow-Origin":"*"})}catch(Y){return Ds(Z,Y)}}),$.patch("/:virtualMcpId/:branch",fN6,async(Z)=>{let X=Z.get("decofileScope"),Q=Z.var.studioContext,Y=bN6.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{$T0(J)}catch(W){let K=W instanceof Error?W.message:String(W);return Z.json({error:K},400)}for(let[J,W]of Object.entries(G.set??{}))if(typeof W!=="object"||W===null||Array.isArray(W))return Z.json({error:`Block "${J}" must be a JSON object`},400);try{let J=await Os(Z),W=await hl$(`${X.organizationId}/${X.virtualMcpId}/${X.branch}`,{client:J,branch:X.branch,packagePath:X.packagePath,coAuthor:lu(Q)},G),K=A71({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.json({version:W,token:K,apiHost:ol$(Z)})}catch(J){return Ds(Z,J)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await Os(Z),Y=await Q.getDefaultBranch();if(Y===X.branch)return Z.json({error:"Branch is already the default branch"},400);let G=`chore(decofile): publish ${X.branch}`;try{let J;try{J=await Q.mergeBranch(Y,X.branch,G)}catch(W){if(!(W instanceof M4&&W.status===409))throw W;await UT0(Q,X.branch,Y),J=await Q.mergeBranch(Y,X.branch,G)}return J?Z.json({result:"merged",sha:J}):Z.json({result:"up-to-date"})}catch(J){if(J instanceof M4&&J.status===409)return Z.json({error:"merge-conflict"},409);if(J instanceof M4&&J.status===405){let K=await Q.findOpenPullRequest(Y,X.branch)??await Q.createPullRequest({base:Y,head:X.branch,title:`Publish ${X.branch}`});return Z.json({result:"pull-request",number:K.number,url:K.html_url})}throw J}}catch(Q){return Ds(Z,Q)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await Os(Z),Y=await Q.getDefaultBranch();if(Y===X.branch)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0,lastCommitAt:null});try{let[{aheadBy:G,behindBy:J},W]=await Promise.all([Q.compare(Y,X.branch),Q.getBranchHead(X.branch)]);return Z.json({baseBranch:Y,aheadBy:G,behindBy:J,lastCommitAt:W.committedAt})}catch(G){if(G instanceof M4&&G.status===404)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0,lastCommitAt:null});throw G}}catch(Q){return Ds(Z,Q)}}),$}var CN6,il$=500,pl$=1048576,nl$=1024,vN6=8388608,fN6,bN6,tl$;var al$=D(()=>{ZT0();U8();LF();eZ1();sA0();j71();F71();ul$();ml$();E71();hD();FT0();CN6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;fN6=p5({maxSize:vN6,onError:($)=>$.json({error:"Payload too large"},413)}),bN6=tu.object({set:tu.record(tu.string(),tu.unknown()).optional(),delete:tu.array(tu.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)<=il$,{message:`Patch cannot touch more than ${il$} blocks`}).refine(($)=>Object.values($.set??{}).every((Z)=>JSON.stringify(Z).length<=pl$),{message:`Each block must be at most ${pl$} bytes`}).refine(($)=>[...Object.keys($.set??{}),...$.delete??[]].every((Z)=>Z.length<=nl$),{message:`Each block key must be at most ${nl$} characters`}),tl$=aA0(async($,Z)=>{let X=$.var.studioContext,Q=X.organization;if(!Q)return $.json({error:"Organization scope required"},500);let Y=$.req.param("virtualMcpId"),G=$.req.param("branch");if(!Y||!G)return $.json({error:"virtualMcpId and branch are required"},400);if(!_N6(G))return $.json({error:`Invalid branch name: ${G}`},400);let J=X.auth?.user?.id??null;if(!J){let B=$.req.query("token");if(!($.req.method==="GET"&&!$.req.path.match(/\/(publish|status)$/)))return $.json({error:"Unauthorized"},401);if(!B||!dl$(B,{organizationId:Q.id,virtualMcpId:Y,branch:G}))return $.json({error:"Unauthorized"},401)}let W=await X.storage.virtualMcps.findById(Y);if(!W||W.organization_id!==Q.id)return $.json({error:"Virtual MCP not found"},404);let K=W.metadata??null;if(!dO0(K))return $.json({error:"Project has no preview server configured"},404);let H=W.connections?.map((B)=>B.connection_id)??[],N=Us(K,H);if(!N)return $.json({error:"Project has no GitHub repository"},404);let U=K?.runtime;return $.set("decofileScope",{organizationId:Q.id,virtualMcpId:Y,branch:G,packagePath:U?.path?.replace(/^\/+|\/+$/g,"")||null,githubRepo:N,userId:J}),Z()})});var sl$=($)=>{let Z=new H1;if(Z.use("*",s_),Z.route("/",OA0()),Z.route("/",Og$()),Z.route("/",zc$()),Z.route("/",wc$()),Z.route("/",tA0()),Z.route("/tools",Mc$()),Z.route("/",Rc$()),Z.route("/",ru$({kvStorage:$.kvStorage})),Z.route("/",tu$()),Z.route("/fs",Hc$({getConnection:$.getNatsConnection})),Z.route("/sandbox",yl$()),Z.route("/decofile",rl$()),Z.route("/",Oc$()),Z.route("/deco-sites",LA0()),Z.route("/sso",KA0()),Z.route("/",oA0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",Jg$()),$.mountDevAssets)Z.route("/dev-assets",wA0({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("/",qb$()),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",Uc$()),Z.route("/mcp",Ew0()),Z.route("/mcp/self",nA0()),Z.route("/mcp",Pw0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var el$=D(()=>{U8();P91();Wg$();I91();EA0();fa();j91();ou$();au$();Nc$();ct();B91();Aw0();pZ1();Bc$();Dc$();Ec$();Pc$();Ic$();tZ1();kc$();oZ1();jw0();gl$();al$()});function xN6($){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 yN6=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},$d$=()=>{let $=new H1;return $.use("*",yN6),$.get("/",async(Z)=>{let X=b0(),Q=X.decoSupabaseUrl,Y=X.decoSupabaseServiceKey;if(!Q||!Y)return Z.json({apps:[]});try{let G=await nZ(Q,Y,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:xN6(G)})}catch(G){return console.error("[deco-apps] GET error:",G),Z.json({error:"Failed to fetch apps"},502)}}),$};var Zd$=D(()=>{U8();R$();UP0()});import{z as M1}from"zod";function PF($,Z="invalid_request_error",X=null,Q=null){return{error:{message:$,type:Z,param:X,code:Q}}}function nN6($){if(!$)return null;let Z=$.indexOf(":");if(Z===-1)return{credentialId:null,modelId:$};let X=$.substring(0,Z),Q=$.substring(Z+1);if(!X||!Q)return null;return{credentialId:X,modelId:Q}}function tN6($,Z,X){try{return JSON.parse($)}catch{throw new Yd$(`Invalid JSON in tool call arguments for function '${X}' (tool_call_id: ${Z}): ${$}`)}}function oN6($){let Z={};for(let X of $)if(X.role==="assistant"&&X.tool_calls)for(let Q of X.tool_calls)Z[Q.id]=Q.function.name;return $.map((X)=>{switch(X.role){case"system":return{role:"system",content:X.content};case"user":if(typeof X.content==="string")return{role:"user",content:X.content};return{role:"user",content:X.content.map((Y)=>{if(Y.type==="text")return{type:"text",text:Y.text};return{type:"image",image:Y.image_url.url}})};case"assistant":if(X.tool_calls&&X.tool_calls.length>0)return{role:"assistant",content:X.tool_calls.map((Y)=>({type:"tool-call",toolCallId:Y.id,toolName:Y.function.name,input:tN6(Y.function.arguments,Y.id,Y.function.name)}))};return{role:"assistant",content:X.content??""};case"tool":let Q=Z[X.tool_call_id]??"unknown";return{role:"tool",content:[{type:"tool-result",toolCallId:X.tool_call_id,toolName:Q,output:{type:"text",value:X.content}}]}}})}function rN6($){let Z=$.map((X)=>{let Q=X.function.parameters?mY(X.function.parameters):mY({type:"object",properties:{}});return[X.function.name,I$({description:X.function.description,inputSchema:Q})]});return Object.fromEntries(Z)}function aN6($){if(!$)return;return{openai:{response_format:$}}}function sN6(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function Xd$($,Z,X,Q,Y,G){let J={model:$,messages:Z,tools:X,temperature:Q.temperature,maxTokens:Q.max_tokens,topP:Q.top_p,frequencyPenalty:Q.frequency_penalty,presencePenalty:Q.presence_penalty,stopSequences:Q.stop?Array.isArray(Q.stop)?Q.stop:[Q.stop]:void 0,abortSignal:G};return Y?{...J,providerOptions:Y}:J}function Qd$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var gN6=256,hN6,uN6,cN6,lN6,dN6,mN6,iN6,pN6,Yd$,Gd$,Jd$;var Wd$=D(()=>{D4();U8();cu();PN();hN6=M1.object({type:M1.literal("function"),function:M1.object({name:M1.string(),description:M1.string().optional(),parameters:M1.record(M1.string(),M1.unknown()).optional()})}),uN6=M1.object({id:M1.string(),type:M1.literal("function"),function:M1.object({name:M1.string(),arguments:M1.string()})}),cN6=M1.discriminatedUnion("role",[M1.object({role:M1.literal("system"),content:M1.string(),name:M1.string().optional()}),M1.object({role:M1.literal("user"),content:M1.union([M1.string(),M1.array(M1.union([M1.object({type:M1.literal("text"),text:M1.string()}),M1.object({type:M1.literal("image_url"),image_url:M1.object({url:M1.string(),detail:M1.string().optional()})})]))]),name:M1.string().optional()}),M1.object({role:M1.literal("assistant"),content:M1.string().nullable().optional(),name:M1.string().optional(),tool_calls:M1.array(uN6).optional()}),M1.object({role:M1.literal("tool"),content:M1.string(),tool_call_id:M1.string()})]),lN6=M1.object({type:M1.literal("text")}),dN6=M1.object({type:M1.literal("json_object")}),mN6=M1.object({type:M1.literal("json_schema"),json_schema:M1.object({name:M1.string(),description:M1.string().optional(),schema:M1.record(M1.string(),M1.unknown()),strict:M1.boolean().optional()})}),iN6=M1.union([lN6,dN6,mN6]),pN6=M1.object({model:M1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:M1.array(cN6),stream:M1.boolean().optional().default(!1),temperature:M1.number().min(0).max(2).optional(),max_tokens:M1.number().positive().optional(),top_p:M1.number().min(0).max(1).optional(),frequency_penalty:M1.number().min(-2).max(2).optional(),presence_penalty:M1.number().min(-2).max(2).optional(),stop:M1.union([M1.string(),M1.array(M1.string())]).optional(),tools:M1.array(hN6).optional(),tool_choice:M1.union([M1.literal("auto"),M1.literal("none"),M1.literal("required"),M1.object({type:M1.literal("function"),function:M1.object({name:M1.string()})})]).optional(),response_format:iN6.optional(),user:M1.string().optional()});Yd$=class Yd$ extends Error{constructor($){super($);this.name="MessageConversionError"}};Gd$=new H1;Gd$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),X=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(PF("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(PF("Organization context is required. Ensure your API key has organization metadata.","invalid_request_error","organization"),400);if((Z.organization.slug??Z.organization.id)!==X)return $.json(PF("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Q=await $.req.json(),Y=pN6.safeParse(Q);if(!Y.success){let w=Y.error.issues[0]??{message:"Invalid request",path:[]};return $.json(PF(`Invalid request: ${w.message}`,"invalid_request_error",w.path.length>0?w.path.join("."):null),400)}let G=Y.data,J=nN6(G.model);if(!J)return $.json(PF("Invalid model format. Expected 'model_id' or 'credential_id:model_id' (e.g., 'claude-sonnet-4-6' or 'key_abc123:claude-sonnet-4-6')","invalid_request_error","model"),400);let{credentialId:W}=J,{modelId:K}=J;if(!W){let E=(await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id})).find((j)=>Qw(j.providerId));if(!E)return $.json(PF("No AI provider credentials configured for this organization. Add a credential in settings or specify one explicitly via 'credential_id:model_id'.","invalid_request_error","model"),400);W=E.id}let F;try{F=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json(PF(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let H=F.aiSdk.languageModel(K),N=oN6(G.messages),U=G.tools?rN6(G.tools):void 0,B=aN6(G.response_format),O=sN6(),L=Math.floor(Date.now()/1000);if(G.stream)return lN($,async(w)=>{let E=Xd$(H,N,U,G,B,$.req.raw.signal);try{let j=wO(E),z=!1,A=0,P="",I=async()=>{if(P.length===0)return;let q=P;P="",await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:G.model,choices:[{index:0,delta:{content:q},finish_reason:null}]})})};for await(let q of j.fullStream){if(!z&&(q.type==="text-delta"||q.type==="tool-call"))await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:G.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),z=!0;if(q.type==="text-delta"){if(P+=q.text,P.length>=gN6)await I()}else if(q.type==="tool-call"){await I();let k=A++;await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:G.model,choices:[{index:0,delta:{tool_calls:[{index:k,id:q.toolCallId,type:"function",function:{name:q.toolName,arguments:JSON.stringify(q.input)}}]},finish_reason:null}]})})}else if(q.type==="finish")await I(),await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:G.model,choices:[{index:0,delta:{},finish_reason:Qd$(q.finishReason)}],usage:q.totalUsage?{prompt_tokens:q.totalUsage.inputTokens??0,completion_tokens:q.totalUsage.outputTokens??0,total_tokens:q.totalUsage.totalTokens??0}:void 0})})}await I(),await w.writeSSE({data:"[DONE]"})}catch(j){let z=j;console.error("[openai-compat:stream] Error:",z.message),await w.writeSSE({data:JSON.stringify({error:{message:z.message,type:"server_error"}})})}});else{let w=Xd$(H,N,U,G,B,$.req.raw.signal),E=await DO(w),j={role:"assistant",content:E.text||null};if(E.toolCalls&&E.toolCalls.length>0)j.tool_calls=E.toolCalls.map((z)=>({id:z.toolCallId,type:"function",function:{name:z.toolName,arguments:JSON.stringify("input"in z?z.input:{})}})),j.content=null;return $.json({id:O,object:"chat.completion",created:L,model:G.model,choices:[{index:0,message:j,finish_reason:Qd$(E.finishReason)}],usage:{prompt_tokens:E.usage?.inputTokens??0,completion_tokens:E.usage?.outputTokens??0,total_tokens:E.usage?.totalTokens??0}})}}catch(Q){let Y=Q;if(Y.name==="AbortError")return $.json(PF("Request aborted","invalid_request_error"),400);if(Y.name==="MessageConversionError")return $.json(PF(Y.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",Y.message,Y.stack),$.json(PF(Y.message,"server_error"),500)}});Jd$=Gd$});function eN6($){if(typeof $!=="object"||$===null)return!1;let X=$.githubRepo?.url;return typeof X==="string"&&X.length>0}function Kd$(){let $=new H1;return $.use("*",async(Z,X)=>{await X(),Z.header("Cache-Control","private, no-store"),Z.header("Vary","Cookie")}),$.get("/",async(Z)=>{let X=Z.get("studioContext"),Q=o0(X);if(!Q)return Z.json({error:"Authentication required"},401);let G=(Z.req.query("site")??"").trim().toLowerCase();if(!oG(G))return Z.json({error:"Invalid site slug"},400);let J=await X.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["organization.id as id","organization.slug as slug","organization.name as name","organization.metadata as metadata"]).where("member.userId","=",Q).execute(),W=[];for(let F of J){if(!F.slug||_Z(F))continue;let H=await X.storage.virtualMcps.list(F.id);for(let N of H){if(as1(N)!==G)continue;if(!eN6(N.metadata))continue;W.push({orgSlug:F.slug,orgName:F.name??F.slug,project:{id:N.id,title:N.title,icon:N.icon??null}})}}let K={matches:W};return Z.json(K)}),$}var Fd$=D(()=>{U8();eB()});var Nd$;var Hd$=D(()=>{Nd$={name:"decocms",version:"4.294.1",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});function XU6(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??ZU6}}var Ud$,ZU6="https://ph.studio.decocms.com",Bd$;var Od$=D(()=>{U8();h50();vC();$9();R$();Y91();Hd$();Ud$=new H1;Ud$.get("/",($)=>{let Z={version:Nd$.version,theme:Pi1(),...AH().logo&&{logo:AH().logo},...KN()&&{internalUrl:aC1()},...b0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!b0().firecrawlApiKey,auth:Ly$(),posthog:XU6(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:Ts()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});Bd$=Ud$});function ou($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function T71($){return(ou($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((X)=>X.charAt(0).toUpperCase()+X.slice(1)).join(" ")}function Ld$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(ou($))}&sz=${Z}`}function Dd$($,Z){let X=$.trim();if(X.length<=Z)return X;let Q=X.slice(0,Z-1),Y=Q.lastIndexOf(" ");return`${(Y>Z*0.6?Q.slice(0,Y):Q).trimEnd()}\u2026`}function wd$($){let{brand:Z,domain:X,score:Q,verdict:Y}=$,G=typeof Q==="number"?`${Z} commerce report \u2014 ${Math.round(Q)}/100 \xB7 decocms`:`${Z} commerce report \xB7 decocms`,J=`See the full ${Z} scorecard \u2014 SEO, performance, conversion & AEO signals scored by decocms.`,W=Y?.trim()?Dd$(`${Y.trim().replace(/\s+/g," ")} \u2014 ${J}`,200):Dd$(`How does ${X} really perform? ${J}`,200);return{title:G,description:W}}import{z as l0}from"zod";var Nv,QU6,YU6,GU6,JU6,Ed$;var jd$=D(()=>{Nv=l0.enum(["good","bad","neutral"]),QU6=l0.preprocess(($)=>{if(Array.isArray($))return{kind:"text",value:$.find((X)=>X!==null&&typeof X!=="object")??""};return $!==null&&typeof $==="object"?$:{kind:"text",value:$}},l0.object({kind:l0.enum(["text","number","sparkline","badge","score"]).catch("text"),value:l0.coerce.string().optional(),tone:Nv.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 $})),YU6=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(QU6)),GU6={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()},JU6=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:Nv.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:Nv.optional()}),l0.object({template:l0.literal("stats"),stats:l0.array(l0.object({value:l0.coerce.string(),label:l0.coerce.string(),tone:Nv.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:Nv.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(YU6).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:Nv.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:Nv.optional()})).min(1)})]),Ed$=l0.object({...GU6,template:JU6})});function LT0($){let Z=[],X=[...$.sections].sort((Y,G)=>Y.position-G.position).map((Y)=>{let G=Ed$.safeParse(Y.props);if(G.success)return G.data;let J=G.error.issues[0];return Z.push({section_type:Y.section_type,position:Y.position,reason:J?`${J.path.join(".")||"(root)"}: ${J.message}`:"contract violation"}),null}).filter((Y)=>Y!==null),Q=X.filter((Y)=>Y.template.template!=="cover"&&Y.template.template!=="cta").map((Y)=>({key:Y.key,title:Y.title}));return{deck:{meta:{...$.meta,scores:$.summary?.scores,scannedAt:$.scanned_at,toc:Q},slides:X},drops:Z}}var R71=D(()=>{jd$()});import{join as zd$}from"path";async function KU6($){try{let Z=await fetch(`${WK({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(WU6)});if(!Z.ok)return null;let X=await Z.json(),{deck:Q}=LT0(X);if(!Q.slides.length)return null;let Y=Q.slides.find((W)=>W.template.template==="cover"),G=Y?.template,J=G&&G.template==="cover"?G:void 0;return{brand:Q.meta.brand?.trim()||T71($),score:Q.meta.scores?.cover??J?.score?.value,verdict:Y?.annotation?.trim()||Y?.headline?.trim()||void 0}}catch{return null}}function DG($){return $.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""")}function FU6($,Z){let X=ou($),Q=Z?.brand?.trim()||T71(X),Y=Ld$(X,128),J=`${(b0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(X)}`,{title:W,description:K}=wd$({brand:Q,domain:X,score:Z?.score,verdict:Z?.verdict}),F=`${J}/og.png`,H=`${Q} commerce report by decocms`;return[`<title>${DG(W)}</title>`,`<meta name="description" content="${DG(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="${DG(W)}" />`,`<meta property="og:description" content="${DG(K)}" />`,`<meta property="og:url" content="${DG(J)}" />`,`<meta property="og:image" content="${DG(F)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${DG(H)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${DG(W)}" />`,`<meta name="twitter:description" content="${DG(K)}" />`,`<meta name="twitter:image" content="${DG(F)}" />`,`<meta name="twitter:image:alt" content="${DG(H)}" />`,`<link rel="canonical" href="${DG(J)}" />`,`<link rel="icon" href="${DG(Y)}" sizes="any" />`].join(`
|
|
2924
2924
|
`)}function HU6($,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}
|
|
2925
2925
|
</head>`)}function Pd$($){let Z=new H1;return Z.get("/:domain/og.png",async(X)=>{let Q=ou(X.req.param("domain")),Y=async()=>{let G=$?Bun.file(zd$($,"report-og-fallback.png")):null;if(!G||!await G.exists())return X.notFound();return X.body(new Uint8Array(await G.arrayBuffer()),200,{"Content-Type":"image/png","Cache-Control":"public, max-age=0, s-maxage=3600"})};try{let G=await fetch(`${WK({})}/api/v2/public/diagnostics/${encodeURIComponent(Q)}/og.png`,{signal:AbortSignal.timeout(NU6)}),J=G.headers.get("content-type")??"";if(!G.ok||!J.startsWith("image/")||!G.body)return Y();return X.body(G.body,200,{"Content-Type":J,"Cache-Control":"public, max-age=0, s-maxage=604800"})}catch{return Y()}}),Z.get("/:domain",async(X)=>{let Q=X.req.param("domain"),Y=$?zd$($,"index.html"):null,G=Y?Bun.file(Y):null;if(!G||!await G.exists())return X.notFound();let J=await G.text();try{let W=await KU6(ou(Q)),K=FU6(Q,W);return X.html(HU6(J,K),200,{"Cache-Control":"public, max-age=0, s-maxage=300"})}catch{return X.html(J)}}),Z}var WU6=2500,NU6=1e4;var Ad$=D(()=>{U8();R71();WE();R$()});function Ls($,Z){return fetch(`${WK({})}${$}`,Z)}async function UU6($,Z,X){let Q=new URLSearchParams;if(Z)Q.set("pw",Z);if(X)Q.set("lang",X);let Y=Q.toString()?`?${Q.toString()}`:"",G=await Ls(`/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}=LT0(J);return{status:W.slides.length?"ready":"empty",deck:W,scanned_at:J.scanned_at,drops:K}}var BU6,mN,Td$=async($,Z)=>{if(!$.get("reportUser"))return $.json({error:"Authentication required"},401);await Z();return},Rd$;var Id$=D(()=>{U8();uY();WE();R71();BU6=new Set(["complete","errored","terminated","unknown"]),mN=new H1;mN.use("*",async($,Z)=>{let X=await X8.api.getSession({headers:$.req.raw.headers});$.set("reportUser",X?.user?.id?{email:X.user.email}:void 0),await Z(),$.header("Cache-Control","private, no-store"),$.header("Vary","Cookie");return});mN.use("/link-token/*",Td$);mN.use("/suggest",Td$);mN.get("/site/:domain",async($)=>{let Z=$.req.param("domain").trim();if(!Z)return $.json({error:"domain is required"},400);let X=$.get("reportUser"),Q=$.req.query("key")?.trim()||void 0,Y=$.req.query("lang")?.trim()||void 0;try{let G=await UU6(Z,Q,Y);if($.header("Cache-Control","private, no-store"),X||!G.deck)return $.json(G);return $.json({...G,deck:{...G.deck,slides:G.deck.slides.slice(0,1)},truncated:G.status==="ready"})}catch{return $.json({error:"report read failed"},502)}});mN.post("/run",async($)=>{let Z=$.get("reportUser"),X;try{X=await $.req.json()}catch{return $.json({error:"invalid JSON"},400)}let Q=typeof X.domain==="string"?X.domain.trim():"";if(!Q)return $.json({error:"domain is required"},400);let Y=Z?.email,G=typeof X.distinctId==="string"&&X.distinctId.trim()&&X.distinctId.length<=200?X.distinctId.trim():void 0;try{let J=await Ls("/api/v2/diagnostics/run",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${JE({})}`},body:JSON.stringify({url:Q,...Y?{email:Y}:{},distinct_id:G})});if(!J.ok)return $.json({error:`run HTTP ${J.status}`},502);let W=await J.json(),K=W.blocked?{state:"blocked"}:W.status==="fresh"?{state:"fresh"}:W.mode==="sync"?{state:"sync"}:{state:"running",id:W.id??null};return $.json(K)}catch{return $.json({error:"run failed"},502)}});mN.get("/status",async($)=>{let Z=$.req.query("id");if(!Z)return $.json({error:"id is required"},400);try{let X=await Ls(`/api/v2/diagnostics/status?id=${encodeURIComponent(Z)}`,{headers:{Authorization:`Bearer ${JE({})}`}});if(!X.ok)return $.json({error:`status HTTP ${X.status}`},502);let Y=(await X.json()).status??"unknown",G={done:BU6.has(Y),status:Y};return $.json(G)}catch{return $.json({error:"status failed"},502)}});mN.get("/link-token/:id",async($)=>{let Z=$.req.param("id");try{let X=await Ls(`/api/v2/public/link-tokens/${encodeURIComponent(Z)}`,{headers:{Accept:"application/json"}});if(X.status===404)return $.json(null);if(!X.ok)return $.json({error:`link token HTTP ${X.status}`},502);return $.json(await X.json())}catch{return $.json({error:"link token resolve failed"},502)}});mN.get("/suggest",async($)=>{let Z=($.req.query("q")??"").trim().slice(0,64);if(Z.length<2)return $.json({suggestions:[]});try{let X=await Ls(`/api/v2/public/suggest?q=${encodeURIComponent(Z)}`,{headers:{Accept:"application/json"}});if(!X.ok)return $.json({suggestions:[]});let Q=await X.json();return $.json({suggestions:Array.isArray(Q.suggestions)?Q.suggestions:[]})}catch{return $.json({suggestions:[]})}});Rd$=mN});import{createHmac as OU6,timingSafeEqual as DU6}from"crypto";function Md$($,Z,X,Q=Date.now()){if(!Z||!X)return!1;let Y,G=[];for(let F of Z.split(",")){let H=F.indexOf("=");if(H<=0)continue;let N=F.slice(0,H).trim(),U=F.slice(H+1).trim();if(N==="t")Y=U;else if(N==="v1")G.push(U)}if(!Y||G.length===0)return!1;let J=Number(Y);if(!Number.isFinite(J)||Math.abs(Q/1000-J)>LU6)return!1;let W=OU6("sha256",X).update(`${Y}.${$}`).digest("hex"),K=Buffer.from(W,"hex");return G.some((F)=>{let H=Buffer.from(F,"hex");return K.length===H.length&&DU6(K,H)})}function kd$($){let Z;try{Z=JSON.parse($)}catch{return null}let X=xJ(Z),Q=xJ(xJ(X?.data)?.object);if(!X||typeof X.type!=="string"||!Q)return null;return{id:AF(X.id),type:X.type,created:typeof X.created==="number"?X.created:void 0,livemode:typeof X.livemode==="boolean"?X.livemode:void 0,data:{object:Q}}}function Vd$($){switch($){case"active":case"trialing":return"active";case"past_due":return"past_due";default:return"canceled"}}function AF($){return typeof $==="string"?$:void 0}function xJ($){return typeof $==="object"&&$!==null?$:void 0}function wT0($){return typeof $==="number"?new Date($*1000):null}function M71($){return AF($)??AF(xJ($)?.id)}function wU6($){return M71($.subscription)??AF(xJ(xJ($.parent)?.subscription_details)?.subscription)}function EU6($){let Z=wT0($.current_period_end);if(Z)return Z;let X=xJ($.items)?.data;if(!Array.isArray(X))return null;let Q=0;for(let Y of X){let G=xJ(Y)?.current_period_end;if(typeof G==="number"&&G>Q)Q=G}return Q>0?new Date(Q*1000):null}function I71($,Z){let X=wT0($.created);return!!X&&!!Z.lastStripeEventAt&&X<Z.lastStripeEventAt}function q71($,Z){let X=wT0($.created);if(!X)return;return Z.lastStripeEventAt&&Z.lastStripeEventAt>X?void 0:X}async function jU6($,Z){let X=Z.data.object;switch(Z.type){case"checkout.session.completed":case"checkout.session.async_payment_succeeded":{let Q=AF(xJ(X.metadata)?.orgId);if(!Q)return{handled:!1,reason:"no orgId"};if(AF(xJ(X.metadata)?.kind)==="topup"){if(X.mode!=="payment")return{handled:!1,reason:"topup with wrong mode"};if(AF(X.payment_status)!=="paid")return{handled:!1,reason:"payment not confirmed"};let J=AF(X.id);if(!J)return console.error("stripe webhook: topup session without id",{eventId:Z.id,organizationId:Q}),{handled:!1,reason:"topup session without id"};let W=Number(xJ(X.metadata)?.creditCents);if(!Number.isInteger(W)||W<=0)return console.error("stripe webhook: paid topup with bad metadata \u2014 credit NOT applied",{eventId:Z.id,organizationId:Q,creditCents:xJ(X.metadata)?.creditCents}),{handled:!1,reason:"bad topup metadata"};return{handled:!0,organizationId:Q,topUp:{creditCents:W,referenceId:`stripe-topup:${J}`}}}if(X.mode!=="subscription")return{handled:!1,reason:"not a subscription checkout"};if(AF(X.payment_status)!=="paid")return{handled:!1,reason:"payment not confirmed"};let Y=await $.getBilling(Q);if(!Y)return{handled:!1,reason:"unknown org"};let G=M71(X.subscription);if(Y.stripeSubscriptionId&&G&&Y.stripeSubscriptionId!==G)return console.error("stripe webhook: refused checkout rebind",{organizationId:Q,eventId:Z.id}),{handled:!1,reason:"org already bound to another subscription",orphanSubscriptionId:G};if(I71(Z,Y))return{handled:!1,reason:"stale event"};return await $.updateStripeState(Q,{stripeCustomerId:M71(X.customer),stripeSubscriptionId:G,status:"active",lastStripeEventAt:q71(Z,Y)}),{handled:!0,organizationId:Q}}case"customer.subscription.updated":case"customer.subscription.deleted":{let Q=AF(X.id);if(!Q)return{handled:!1,reason:"no sub id"};let Y=await $.getBillingByStripeSubscriptionId(Q);if(!Y)return{handled:!1,reason:"unknown subscription"};let G=Z.type==="customer.subscription.deleted";if(!G&&I71(Z,Y))return{handled:!1,reason:"stale event"};let J=G?"canceled":Vd$(X.status);return await $.updateStripeState(Y.organizationId,{status:J,currentPeriodEnd:EU6(X),...G&&{stripeSubscriptionId:null},lastStripeEventAt:q71(Z,Y)}),{handled:!0,organizationId:Y.organizationId}}case"invoice.paid":{let Q=wU6(X);if(!Q)return{handled:!1,reason:"no sub id"};let Y=await $.getBillingByStripeSubscriptionId(Q);if(!Y)return{handled:!1,reason:"unknown subscription"};if(I71(Z,Y))return{handled:!1,reason:"stale event"};return await $.updateStripeState(Y.organizationId,{status:"active",currentPeriodEnd:wT0(X.period_end),lastStripeEventAt:q71(Z,Y)}),{handled:!0,organizationId:Y.organizationId}}default:return{handled:!1,reason:`unhandled event ${Z.type}`}}}function zU6($,Z){if(!Z.handled||$.livemode===!1)return null;let X=$.data.object;if(Z.topUp)return{name:"credits_topup_succeeded",organizationId:Z.organizationId,properties:{credit_cents:Z.topUp.creditCents}};switch($.type){case"checkout.session.completed":case"checkout.session.async_payment_succeeded":return{name:"subscription_started",organizationId:Z.organizationId,properties:{}};case"customer.subscription.deleted":return{name:"subscription_canceled",organizationId:Z.organizationId,properties:{}};case"customer.subscription.updated":return{name:"subscription_updated",organizationId:Z.organizationId,properties:{status:Vd$(X.status),...typeof X.cancel_at_period_end==="boolean"?{cancel_at_period_end:X.cancel_at_period_end}:{}}};case"invoice.paid":if(X.billing_reason==="subscription_create")return null;return{name:"subscription_renewed",organizationId:Z.organizationId,properties:{}};default:return null}}function qd$($,Z){let X=zU6($,Z);if(!X)return;bY({event:X.name,organizationId:X.organizationId,...$.id?{uuid:Vn1(`stripe:${$.id}:${X.name}`)}:{},...$.created?{timestamp:new Date($.created*1000)}:{},properties:X.properties})}async function Sd$($){let Z=new QK(r8().db),X=await jU6(Z,$);if(!(X.handled&&X.topUp))qd$($,X);if(X.handled&&X.topUp)await oE$({organizationId:X.organizationId,amountCents:X.topUp.creditCents,referenceId:X.topUp.referenceId}),qd$($,X);if(!X.handled&&X.orphanSubscriptionId)try{await te1(X.orphanSubscriptionId),console.error("stripe webhook: canceled orphan subscription",{subscriptionId:X.orphanSubscriptionId,eventId:$.id})}catch(Q){if(!(Q instanceof cY&&(Q.status===400||Q.status===404)))throw Q}return X}var LU6=300;var Cd$=D(()=>{dG();_4();E50();LE();g01()});var PU6=1048576,k71;var _d$=D(()=>{U8();LF();R$();Cd$();k71=new H1;k71.post("/webhook",p5({maxSize:PU6,onError:($)=>$.json({error:"payload too large"},413)}),async($)=>{let Z=b0().stripeWebhookSecret;if(!Z)return $.json({error:"stripe billing not configured"},503);let X=await $.req.text();if(!Md$(X,$.req.header("stripe-signature"),Z))return $.json({error:"invalid signature"},400);let Y=kd$(X);if(!Y)return $.json({error:"invalid payload"},400);let G=await Sd$(Y);return console.log("stripe webhook",{eventId:Y.id,type:Y.type,livemode:Y.livemode,...G}),$.json({received:!0})})});import{timingSafeEqual as AU6}from"crypto";function RU6($,Z,X){if(!Z?.startsWith("sha256="))return!1;let Q=new Bun.CryptoHasher("sha256",X).update($).digest("hex"),Y=Z.slice(7);if(Y.length!==Q.length)return!1;return AU6(Buffer.from(Y),Buffer.from(Q))}var TU6=5242880,V71;var vd$=D(()=>{U8();LF();l3();V71=new H1;V71.post("/webhook",p5({maxSize:TU6,onError:($)=>$.json({error:"payload too large"},413)}),async($)=>{let Z=process.env.GITHUB_WEBHOOK_SECRET;if(!Z)return $.json({error:"github webhook not configured"},503);let X=await $.req.text();if(!RU6(X,$.req.header("x-hub-signature-256"),Z))return $.json({error:"invalid signature"},400);if($.req.header("x-github-event")!=="push")return $.json({ok:!0,ignored:"event"});let Q;try{Q=JSON.parse(X)}catch{return $.json({error:"invalid payload"},400)}let Y=Q.ref,G=Q.repository?.full_name;if(!Y||!G)return $.json({ok:!0,ignored:"shape"});let W=(await _n0())?.markTenantPoolsDirty(G,Y)??[];return $.json({ok:!0,pools:W})})});function fd$($,Z){if(Z.startsWith("text/html")||Z.startsWith("image/svg"))$.set("Content-Security-Policy","sandbox allow-scripts allow-modals allow-same-origin")}var bd$,IU6,qU6,xd$;var yd$=D(()=>{U8();z3();Lg();sx();bd$=new H1,IU6=["range","if-none-match","if-modified-since"],qU6=["content-type","content-length","content-range","accept-ranges","etag","last-modified"];bd$.get("/:org/files/*",async($)=>{let Z=$.get("studioContext"),X=Z.organization?.id;if(!Z.auth?.user?.id){if(Au($))return $.redirect(`/login?next=${encodeURIComponent($.req.path)}`,302);throw new $$(401,{message:"Authentication required"})}if(!X)throw new $$(401,{message:"Organization context required"});let Q=$.req.path.replace(/^.*\/files\//,"");if(!Q)throw new $$(400,{message:"Missing file key"});let Y=await Ut(Q,Z);if(!Y)throw new $$(503,{message:"Object storage not configured"});if(Y.startsWith("data:")&&nG()){let K=Y.match(/^data:([^;]+);base64,(.+)$/s);if(!K)throw new $$(500,{message:"Invalid data URL from storage"});let[,F,H]=K,N=Buffer.from(H,"base64"),U=new Headers({"Content-Type":F,"Cache-Control":"private, max-age=86400"});return fd$(U,F),new Response(N,{status:200,headers:U})}let G=new Headers;for(let K of IU6){let F=$.req.header(K);if(F)G.set(K,F)}let J=await fetch(Y,{headers:G});if(J.status===403||J.status===404)throw new $$(404,{message:"File not found"});if(!J.ok&&J.status!==304&&J.status!==416)throw console.error(`[files] upstream storage error ${J.status} for key:`,Q),new $$(502,{message:"Upstream storage error"});let W=new Headers;for(let K of qU6){let F=J.headers.get(K);if(F)W.set(K,F)}return W.set("Cache-Control","private, max-age=86400"),fd$(W,W.get("content-type")??""),new Response(J.body,{status:J.status,headers:W})});xd$=bd$});var ws=_((Uv)=>{var MU6=Uv&&Uv.__createBinding||(Object.create?function($,Z,X,Q){if(Q===void 0)Q=X;var Y=Object.getOwnPropertyDescriptor(Z,X);if(!Y||("get"in Y?!Z.__esModule:Y.writable||Y.configurable))Y={enumerable:!0,get:function(){return Z[X]}};Object.defineProperty($,Q,Y)}:function($,Z,X,Q){if(Q===void 0)Q=X;$[Q]=Z[X]}),kU6=Uv&&Uv.__exportStar||function($,Z){for(var X in $)if(X!=="default"&&!Object.prototype.hasOwnProperty.call(Z,X))MU6(Z,$,X)};Object.defineProperty(Uv,"__esModule",{value:!0});kU6(zY(),Uv)});var ud$=_((gd$)=>{Object.defineProperty(gd$,"__esModule",{value:!0});gd$.version=void 0;gd$.version="3.4.0"});var dd$=_((TF)=>{var VU6=TF&&TF.__importDefault||function($){return $&&$.__esModule?$:{default:$}};Object.defineProperty(TF,"__esModule",{value:!0});TF.NodeTransport=TF.VERSION=void 0;TF.nodeResolveHost=bU6;var s6=ws(),SU6=j0("net"),S71=j0("tls"),CU6=j0("path"),cd$=j0("fs"),_U6=VU6(j0("dns")),vU6=ud$();TF.VERSION=vU6.version;var fU6="nats.js";class ld${socket;version;lang;yields=[];signal=(0,s6.deferred)();closedNotification=(0,s6.deferred)();options;connected=!1;tlsName="";done=!1;closeError;constructor(){this.lang=fU6,this.version=TF.VERSION}async connect($,Z){this.tlsName=$.tlsName,this.options=Z;let{tls:X}=this.options,{handshakeFirst:Q}=X||{};try{if(Q===!0)this.socket=await this.tlsFirst($);else this.socket=await this.dial($);if(this.done)this.socket?.destroy();let Y=await this.peekInfo();(0,s6.checkOptions)(Y,Z);let{tls_required:G,tls_available:J}=Y,W=J===!0&&Z.tls!==null;if(!Q&&(G||W))this.socket=await this.startTLS();if(this.done)this.socket?.destroy();if(G&&this.socket.encrypted!==!0)throw s6.errors.InvalidArgumentError.format("tls","is not available on this server");return this.connected=!0,this.setupHandlers(),this.signal.resolve(),Promise.resolve()}catch(Y){let G=Y;if(!G)G=new s6.errors.ConnectionError("error connecting - node provided an undefined error");let{code:J}=G,W=J==="ECONNREFUSED"?new s6.errors.ConnectionError("connection refused",{cause:G}):G;throw this.socket?.destroy(),W}}dial($){let Z=(0,s6.deferred)(),X,Q=(0,SU6.createConnection)($.port,$.hostname,()=>{Z.resolve(Q),Q.removeAllListeners()});return Q.on("error",(Y)=>{X=Y}),Q.on("close",()=>{Q.removeAllListeners(),Z.reject(X)}),Q.setNoDelay(!0),Z}get isClosed(){return this.done}close($){return this._closed($,!1)}peekInfo(){let $=(0,s6.deferred)(),Z;return this.socket.on("data",(X)=>{this.yields.push(X);let Q=s6.DataBuffer.concat(...this.yields),Y=(0,s6.extractProtocolMessage)(Q);if(Y!=="")try{let G=s6.INFO.exec(Y);if(!G)throw Error("unexpected response from server");let J=JSON.parse(G[1]);$.resolve(J)}catch(G){$.reject(G)}finally{this.socket.removeAllListeners()}}),this.socket.on("error",(X)=>{Z=X}),this.socket.on("close",()=>{this.socket.removeAllListeners(),$.reject(Z)}),$}loadFile($){if(!$)return Promise.resolve();let Z=(0,s6.deferred)();try{if($=(0,CU6.resolve)($),!(0,cd$.existsSync)($))Z.reject(Error(`${$} doesn't exist`));(0,cd$.readFile)($,(X,Q)=>{if(X)return Z.reject(X);Z.resolve(Q)})}catch(X){Z.reject(X)}return Z}async loadClientCerts(){let $={},{certFile:Z,cert:X,caFile:Q,ca:Y,keyFile:G,key:J}=this.options.tls;try{if(Z){let W=await this.loadFile(Z);if(W)$.cert=W}else if(X)$.cert=X;if(G){let W=await this.loadFile(G);if(W)$.key=W}else if(J)$.key=J;if(Q){let W=await this.loadFile(Q);if(W)$.ca=[W]}else if(Y)$.ca=Y;return Promise.resolve($)}catch(W){return Promise.reject(W)}}async tlsFirst($){let Z,X={servername:this.tlsName,rejectUnauthorized:!0};if(this.socket)X.socket=this.socket;if(typeof this.options.tls==="object")try{let Y=await this.loadClientCerts()||{};X=(0,s6.extend)(X,this.options.tls,Y)}catch(Y){return Promise.reject(new s6.errors.ConnectionError(Y.message,{cause:Y}))}let Q=(0,s6.deferred)();try{let Y=(0,S71.connect)($.port,$.hostname,X,()=>{Y.removeAllListeners(),Q.resolve(Y)});Y.on("error",(G)=>{Z=G}),Y.on("secureConnect",()=>{if(X.rejectUnauthorized===!1)return;if(!Y.authorized)throw Y.authorizationError}),Y.on("close",()=>{Q.reject(Z),Y.removeAllListeners()}),Y.setNoDelay(!0)}catch(Y){Q.reject(new s6.errors.ConnectionError(Y.message,{cause:Y}))}return Q}async startTLS(){let $,Z={socket:this.socket,servername:this.tlsName,rejectUnauthorized:!0};if(typeof this.options.tls==="object")try{let Q=await this.loadClientCerts()||{};Z=(0,s6.extend)(Z,this.options.tls,Q)}catch(Q){return Promise.reject(new s6.errors.ConnectionError(Q.message,{cause:Q}))}let X=(0,s6.deferred)();try{let Q=(0,S71.connect)(Z,()=>{Q.removeAllListeners(),X.resolve(Q)});Q.on("error",(Y)=>{$=Y}),Q.on("secureConnect",()=>{if(Z.rejectUnauthorized===!1)return;if(!Q.authorized)throw Q.authorizationError}),Q.on("close",()=>{X.reject($),Q.removeAllListeners()})}catch(Q){X.reject(new s6.errors.ConnectionError(Q.message,{cause:Q}))}return X}setupHandlers(){let $;this.socket.on("data",(Z)=>{return this.yields.push(Z),this.signal.resolve()}),this.socket.on("error",(Z)=>{$=Z}),this.socket.on("end",()=>{if(this.socket?.destroyed)return;this.socket?.write(new Uint8Array(0),()=>{this.socket?.end()})}),this.socket.on("close",()=>{this._closed($,!1)})}[Symbol.asyncIterator](){return this.iterate()}async*iterate(){while(!0){if(this.yields.length===0)await this.signal;let $=this.yields;this.yields=[];for(let Z=0;Z<$.length;Z++){if(this.options.debug)console.info(`> ${(0,s6.render)($[Z])}`);yield $[Z]}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,s6.deferred)()}}discard(){if(this.done=!0,this.socket)try{this.socket.removeAllListeners(),this.socket.destroy()}catch{}}disconnect(){this._closed(void 0,!0).then().catch()}isEncrypted(){return this.socket instanceof S71.TLSSocket}_send($){if(this.isClosed||this.socket===void 0)return Promise.resolve();if(this.options.debug)console.info(`< ${(0,s6.render)($)}`);let Z=(0,s6.deferred)();try{this.socket.write($,(X)=>{if(X){if(this.options.debug)console.error(`!!! ${(0,s6.render)($)}: ${X}`);return Z.reject(X)}return Z.resolve()})}catch(X){if(this.options.debug)console.error(`!!! ${(0,s6.render)($)}: ${X}`);Z.reject(X)}return Z}send($){this._send($).catch((X)=>{})}async _closed($,Z=!0){if(!this.connected)return;if(this.done){this.socket?.destroy();return}if(this.closeError=$,!$&&this.socket&&Z)try{await this._send(new TextEncoder().encode(""))}catch(X){if(this.options.debug)console.log("transport close terminated with an error",X)}try{if(this.socket)this.socket.removeAllListeners(),this.socket?.destroy(),this.socket=void 0}catch(X){console.log(X)}this.done=!0,this.closedNotification.resolve(this.closeError)}closed(){return this.closedNotification}}TF.NodeTransport=ld$;function bU6($){let Z=(0,s6.deferred)();return _U6.default.lookup($,{all:!0},(X,Q)=>{if(X){Z.reject(X);return}let Y=[];for(let G of Q)Y.push(G.address);if(Y.length===0)Y.push($);Z.resolve(Y)}),Z}});var td$=_((nd$)=>{Object.defineProperty(nd$,"__esModule",{value:!0});nd$.connect=xU6;var md$=dd$(),id$=ws(),pd$=ws();function xU6($={}){if((0,pd$.hasWsProtocol)($))return Promise.reject(pd$.errors.InvalidArgumentError.format("servers","node client doesn't support websockets, use the 'wsconnect' function instead"));return(0,id$.setTransportFactory)({factory:()=>{return new md$.NodeTransport},dnsResolveFn:md$.nodeResolveHost}),id$.NatsConnectionImpl.connect($)}});var od$=_((iN)=>{var gU6=iN&&iN.__createBinding||(Object.create?function($,Z,X,Q){if(Q===void 0)Q=X;var Y=Object.getOwnPropertyDescriptor(Z,X);if(!Y||("get"in Y?!Z.__esModule:Y.writable||Y.configurable))Y={enumerable:!0,get:function(){return Z[X]}};Object.defineProperty($,Q,Y)}:function($,Z,X,Q){if(Q===void 0)Q=X;$[Q]=Z[X]}),hU6=iN&&iN.__exportStar||function($,Z){for(var X in $)if(X!=="default"&&!Object.prototype.hasOwnProperty.call(Z,X))gU6(Z,$,X)};Object.defineProperty(iN,"__esModule",{value:!0});iN.connect=void 0;var uU6=td$();Object.defineProperty(iN,"connect",{enumerable:!0,get:function(){return uU6.connect}});hU6(ws(),iN)});function ed$($){let Z=$?.connectFn??mU6,X=null,Q=null,Y=!1,G=!1,J=!1,W=[];function K(){return X!==null&&!X.isClosed()&&!X.isDraining()&&!J}function F(){console.log(`[NatsProvider] fireReady: ${W.length} callbacks`);for(let U of W)try{U()}catch{}}function H(U){(async()=>{for await(let B of U.status())if(B.type==="disconnect")console.log("[NatsProvider] Disconnected"),J=!0;else if(B.type==="reconnect")console.log("[NatsProvider] Reconnected, re-firing ready callbacks"),J=!1,Q=null,F()})().catch(()=>{})}async function N(U,B){let O=0;while(!G)try{X=await Z({servers:U,timeout:dU6,reconnect:!0,maxReconnectAttempts:-1,...B?{authenticator:B}:{}}),console.log(`[NatsProvider] Connected to ${X.getServer()} after ${O} attempt(s)`),Q=null,J=!1,H(X),F();return}catch{O++;let L=aZ(lU6,cU6,O-1,2,0.5);await L$(L)}}return{init(U,B){if(Y)return;Y=!0,G=!1;let O=B?.creds?rd$.credsAuthenticator(new TextEncoder().encode(B.creds)):void 0;N(U,O).catch(()=>{})},isConnected(){return K()},getConnection(){return K()?X:null},getJetStream(){if(!K())return null;if(!Q)Q=sd$.jetstream(X);return Q},onReady(U){if(W.push(U),K())try{U()}catch{}},async drain(){if(G=!0,Y=!1,Q=null,J=!1,X){let U=X;X=null,await U.drain().catch(()=>{})}}}}function mU6($){return ad$.connect($)}var rd$,ad$,sd$,cU6=100,lU6=3000,dU6=3000;var $m$=D(()=>{W4();rd$=V(zc(),1),ad$=V(od$(),1),sd$=V(HL(),1)});function C71($,Z){return`${$}.${Z}`}class _71{cache;constructor($){this.cache=Qu({ttlMs:$?.ttlMs??iU6,maxSize:$?.maxSize??pU6})}async get($,Z){return this.cache.get(C71($,Z))??null}async set($,Z,X){this.cache.set(C71($,Z),X)}async invalidate($,Z){this.cache.delete(C71($,Z))}teardown(){this.cache.clear()}}var iU6=600000,pU6=5000;var Zm$=()=>{};function ET0($,Z){return`${$}:${Z}`}function v71($){let Z=Qu({ttlMs:$?.ttlMs??nU6,maxSize:$?.maxSize??tU6}),X=$?.getConnection,Q=crypto.randomUUID(),Y=new TextEncoder,G=new TextDecoder,J=null;function W(K,F){let H=X?.();if(!H)return;try{H.publish(Xm$,Y.encode(JSON.stringify({organizationId:K,keyId:F,originId:Q})))}catch(N){console.warn("[ProviderKeyCache] Publish failed (non-critical):",N)}}return{get(K,F){return Z.get(ET0(K,F))},set(K,F,H){Z.set(ET0(K,F),H)},invalidate(K,F){Z.delete(ET0(K,F)),W(K,F)},start(){if(J)return;let K=X?.();if(!K)return;J=K.subscribe(Xm$),(async()=>{for await(let F of J)try{let H=JSON.parse(G.decode(F.data));if(H.originId===Q)continue;Z.delete(ET0(H.organizationId,H.keyId))}catch{}})().catch(console.error)},teardown(){J?.unsubscribe(),J=null,Z.clear()}}}var Xm$="studio.ai-provider-keys.invalidate",nU6=30000,tU6=5000;var Qm$=()=>{};class f71{options;subscription=null;onCancel=null;encoder=new TextEncoder;originId=crypto.randomUUID();constructor($){this.options=$}async start($){if($)this.onCancel=$;if(this.subscription)return;if(!this.onCancel)return;let Z=this.options.getConnection();if(!Z)return;let X=new TextDecoder,Q=Z.subscribe("studio.decopilot.cancel");this.subscription=Q,(async()=>{for await(let Y of Q)try{let G=JSON.parse(X.decode(Y.data));if(G.originId===this.originId)continue;this.onCancel?.(G.taskId)}catch{}})().catch(console.error)}broadcast($){if(/[.*>\s]/.test($)){console.warn("[NatsCancelBroadcast] Invalid threadId, skipping broadcast");return}this.onCancel?.($);try{let Z=this.options.getConnection();if(!Z)return;let X=this.encoder.encode(JSON.stringify({taskId:$,originId:this.originId}));Z.publish("studio.decopilot.cancel",X)}catch(Z){console.warn("[NatsCancelBroadcast] Publish failed (non-critical):",Z)}}async stop(){this.subscription?.unsubscribe(),this.subscription=null,this.onCancel=null}}var Ym$=($)=>{let Z;return()=>Z??=$()},b71,x71;var Gm$=D(()=>{I6();b71=Ym$(()=>w$.createHistogram("decopilot.stream.encode_ms",{description:"Per-chunk JSON.stringify+encode time for decopilot stream",unit:"ms"})),x71=Ym$(()=>w$.createCounter("decopilot.stream.published_chunks",{description:"Logical decopilot stream chunks published to JetStream",unit:"{chunks}"}))});function ZB6($=Km$){return{name:dK,subjects:[`${er0}.>`],storage:wW.StorageType.File,max_age:aU6,max_bytes:eU6,max_msgs_per_subject:$B6,discard:wW.DiscardPolicy.Old,retention:wW.RetentionPolicy.Limits,duplicate_window:sU6,num_replicas:$}}class Fm${chunks=0;encodeMs=0;maxMs=0;bytes=0;windowStart=performance.now();constructor(){setInterval(()=>this.flush(),1e4).unref?.()}record($,Z){if(this.chunks++,this.encodeMs+=$,$>this.maxMs)this.maxMs=$;this.bytes+=Z}flush(){let $=performance.now(),Z=$-this.windowStart;if(this.chunks>0&&Z>0)console.warn(JSON.stringify({msg:"stream-encode-trace",windowMs:Math.round(Z),chunks:this.chunks,encodeMs:Math.round(this.encodeMs),pctOfLoop:+(this.encodeMs/Z*100).toFixed(1),maxChunkMs:+this.maxMs.toFixed(2),mbEncoded:+(this.bytes/1048576).toFixed(2)}));this.chunks=0,this.encodeMs=0,this.maxMs=0,this.bytes=0,this.windowStart=$}}function Jm$($){let Z=Wm$.headers();for(let[X,Q]of Object.entries($))Z.set(X,Q);return Z}function GB6($,Z){let X=0;return{publish(Q,Y,G,J){Q.publish(Y,G,J?{headers:J}:void 0).catch((W)=>{if(X++,rU6().add(1,{"org.id":Z??"unknown"}),X===1||X%100===0)console.warn(`[Decopilot] JetStream publish failed for thread ${$} (${X} total):`,W)})},get errorCount(){return X}}}function JB6($,Z){return $.info?.cluster?Z:1}function WB6($){if(!($ instanceof Error))return!1;if(/non-clustered/i.test($.message))return!0;return/replicas?\b/i.test($.message)&&/not supported|can ?not|exceed|insufficient|greater than/i.test($.message)}class y71{options;js=null;jsm=null;constructor($){this.options=$}async init(){let $=this.options.getConnection();if(!$){console.log("[Decopilot] StreamBuffer.init skipped: NATS not connected yet");return}let Z=async(Q,Y)=>{let G=ZB6(Y);try{await Q.streams.info(dK),await Q.streams.update(dK,G)}catch(J){if(J instanceof Error&&J.message.includes("stream not found"))await Q.streams.add(G),await Q.streams.update(dK,G);else if(J instanceof Error&&/can ?not change.*storage|storage type/i.test(J.message))await Q.streams.delete(dK),await Q.streams.add(G);else throw J}},X=await g6(async()=>{let Q=this.options.getJetStreamManager?await this.options.getJetStreamManager():await wW.jetstreamManager($),Y=JB6($,Km$);try{await Z(Q,Y)}catch(G){if(Y<=1||!WB6(G))throw G;console.warn(`[Decopilot] StreamBuffer: NATS rejected num_replicas=${Y} (${G.message}); falling back to an unreplicated stream`),await Z(Q,1)}return Q},{maxAttempts:5,minTimeout:250,maxTimeout:4000,jitter:0.5,isRetriable:Mg});this.js=this.options.getJetStream(),this.jsm=X,console.log(`[Decopilot] StreamBuffer.init ${this.js?"ready":"degraded (js=null)"}`)}pump($,Z,X,Q){let Y=this.js;if(!Y)return console.warn(`[Decopilot] pump: JetStream client unavailable for thread ${Z}; chunks NOT published to NATS`),Promise.resolve();let G=GB6(Z,Q),J=!1,W=()=>{if(J)return;J=!0;let F=gB$(Z);Y.publish(F.subject,F.data).catch(()=>{})};X.addEventListener("abort",W,{once:!0});let K=(F)=>{let H=performance.now(),N=Za0(F,{runId:Z}),U=performance.now()-H;b71().record(U),x71().add(1,{"org.id":Q??"unknown"}),YB6?.record(U,N.reduce((B,O)=>B+O.data.length,0));for(let B of N)G.publish(Y,B.subject,B.data,B.headers?Jm$(B.headers):void 0)};return(async()=>{let F=$.getReader(),H=0,N=0,U;try{while(!0){let{done:B,value:O}=await F.read();if(B)break;if(K(O),N++,++H>=64)H=0,await new Promise((L)=>setImmediate(L))}}catch(B){U=B,console.warn(`[Decopilot] stream pump error for thread ${Z}:`,B?.message??B)}finally{if(F.releaseLock(),W(),QB6)console.warn(JSON.stringify({msg:"decopilot-stream-diag",event:"pump-done",taskId:Z,publishedChunks:N,publishErrors:G.errorCount}))}if(U!==void 0)throw U})()}async publishSerialized($,Z){try{return await g6(()=>$.publish(Z.subject,Z.data,{...Z.headers?{headers:Jm$(Z.headers)}:{},...Z.msgId?{msgID:Z.msgId}:{}}),{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:Mg}),!0}catch(X){return console.error(`[Decopilot] publish failed after retries subject=${Z.subject}`,X),!1}}async publishRawChunk($,Z,X){let Q=this.js;if(!Q)return!1;let Y=performance.now(),G=Za0(Z,{runId:$,dedup:X});b71().record(performance.now()-Y),x71().add(1);for(let J of G)if(!await this.publishSerialized(Q,J))return!1;return!0}async publishDone($,Z,X){let Q=this.js;if(!Q)return!1;let Y=yB$({runId:$,fenceToken:Z,finalSeq:X});return await this.publishSerialized(Q,Y)}async createTailStream($,Z,X){let Q=this.js;if(!Q)return console.warn(`[Decopilot] createTailStream: JetStream client unavailable for thread ${$}; no live tail`),null;let Y=X?.deliverPolicy==="new"?wW.DeliverPolicy.New:wW.DeliverPolicy.All,G=X?.closeOnDone??!1,J=ZD($),W;try{W=await g6(async()=>{return(await Q.consumers.get(dK,{filter_subjects:J,deliver_policy:Y})).consume()},{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:Mg})}catch(L){return console.warn("[Decopilot] JetStream tail unavailable (non-critical):",L?.message??L),null}let H=sL0({messages:async function*(){try{for await(let L of W)yield{subject:L.subject,data:L.data,headers:L.headers}}finally{W.stop()}}(),onCancel:()=>W.stop()}).pipeThrough(tL0()).pipeThrough(oL0()).getReader(),N=!1,U=()=>{if(N)return;N=!0;try{H.releaseLock()}catch{}},B=!1,O=()=>{if(B)return;B=!0,W.stop(),H.cancel().catch(()=>{}),U()};return Z?.addEventListener("abort",O,{once:!0}),new ReadableStream({async pull(L){for(;;){let{done:w,value:E}=await H.read();if(w){O(),L.close();return}let j=E;if(j.kind==="done"){if(G){O(),L.close();return}continue}L.enqueue(j.chunk);return}},cancel(){O()}})}purge($){if(!this.jsm)return;this.jsm.streams.purge(dK,{filter:ZD($)}).catch(()=>{})}teardown(){this.js=null,this.jsm=null}}var wW,Wm$,oU6=($)=>{let Z;return()=>Z??=$()},rU6,aU6=86400000000000,sU6=120000000000,eU6=4294967296,Km$,$B6=500000,XB6,QB6,YB6;var Hm$=D(()=>{W4();Xa0();eL0();rL0();I6();Gm$();wW=V(HL(),1),Wm$=V(zc(),1),rU6=oU6(()=>w$.createCounter("decopilot.stream.publish_errors",{description:"Number of JetStream publish failures for decopilot stream chunks",unit:"{errors}"})),Km$=Math.max(1,Number(process.env.DECOPILOT_STREAM_REPLICAS??3)||3);XB6=process.env.STREAM_ENCODE_TRACE==="1",QB6=process.env.DECOPILOT_STREAM_TRACE==="1";YB6=XB6?new Fm$:null});function jT0($,Z,X,Q){if(!Q)return!1;return $.emit(Z,uW(X,Q.status,{title:Q.title??void 0,virtualMcpId:Q.virtual_mcp_id??void 0,createdBy:Q.created_by??void 0,triggerId:Q.trigger_id??null,branch:Q.branch??null,harnessId:Q.harness_id??void 0,createdAt:Q.created_at,updatedAt:Q.updated_at})),!0}var Nm$=D(()=>{_8()});class g71{storage;options;timer=null;constructor($,Z={}){this.storage=$;this.options=Z}start(){if(this.timer)return;let $=this.options.intervalMs??300000;this.timer=setInterval(()=>{this.runOnce()},$)}async runOnce(){let $=this.options.staleAfterMs??3600000;try{let Z=await this.storage.sweepAbandoned($);if(Z>0)console.log(`[async-research-sweeper] marked ${Z} stale jobs as abandoned`);return Z}catch(Z){return console.error("[async-research-sweeper] sweep failed",Z),0}}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}async function Um$($,Z,X){let Q=Z.organizationId;if(Z.status!=="in_review")return!1;if(!VC(X))return!1;if(await $.storage.taskBoard.hasHumanRejectedDone(Z.id,Q))return!1;let Y=await $.storage.organizationSettings.get(Q),G=LK(Y?.flags),J=await $.storage.taskBoard.update(Z.id,Q,{status:G},Z.updatedBy);return await z6($,{taskBoardItemId:Z.id,action:"status_changed",actorId:null,data:{from:Z.status,to:G,reason:"pr_merged"}}),u$(Q,J),console.log(`[task-board-review-sweeper] ${Z.id}: linked PR already merged \u2014 moved to ${G}`),!0}var Bm$=D(()=>{C6();WX();Bg();E5()});function OB6($){return $ instanceof nX}function DB6($,Z){return Z-$>=UB6}class h71{taskBoard;contextFactory;billing;options;timer=null;running=!1;cursor=null;constructor($,Z,X,Q={}){this.taskBoard=$;this.contextFactory=Z;this.billing=X;this.options=Q}start(){if(this.timer)return;let $=this.options.intervalMs??KB6;this.timer=setInterval(()=>{this.runOnce()},$),this.timer.unref()}async runOnce(){if(this.running)return 0;this.running=!0;let $=0;try{let Z=this.options.batchSize??HB6,X=this.options.itemIntervalMs??FB6,Q=new Date(Date.now()-X),Y=await this.taskBoard.listItemsPendingReview(Z,this.cursor,Q),G=Y.at(-1);this.cursor=Y.length===Z&&G?{updatedAt:G.updatedAt,id:G.id}:null;for(let{id:J,organizationId:W}of Y)try{if(await this.reconcileItem(J,W,Q))$++}catch(K){console.error(`[task-board-review-sweeper] ${J} failed`,K)}await this.reapNeverStartedThreads(Z),$+=await this.dispatchDueRetries(Z),await this.reactToUnhandledFailures(Z)}catch(Z){console.error("[task-board-review-sweeper] sweep failed",Z)}finally{this.running=!1}return $}async reapNeverStartedThreads($){try{let Z=await this.taskBoard.failNeverStartedLinkedThreads($,new Date(Date.now()-zt0),jo0);for(let X of Z)console.warn(`[task-board-review-sweeper] failed never-started thread ${X.threadId} on ${X.itemId}`)}catch(Z){console.error("[task-board-review-sweeper] reaping failed",Z)}}async reactToUnhandledFailures($){let Z=await this.taskBoard.listItemsStuckAfterFailure($,new Date(Date.now()-BB6));for(let{id:X,organizationId:Q,threadId:Y}of Z)try{console.warn(`[task-board-review-sweeper] reacting to an unhandled failure on ${X}`),await wo0(this.taskBoard,Y,Q),await Eo0(this.taskBoard,this.billing,Y,Q)}catch(G){console.error(`[task-board-review-sweeper] unhandled-failure reaction for ${X} failed`,G)}}async dispatchDueRetries($){let Z=0,X=await this.taskBoard.listItemsDueForRetry($,new Date);for(let{id:Q,organizationId:Y,attempts:G}of X)try{if(!await this.taskBoard.claimDueRetry(Q,Y,new Date))continue;let J=await this.taskBoard.getById(Q,Y);if(!J||J.status!=="in_progress"||J.assigneeId!==Y8)continue;let W=await this.contextFactory(Y,J.assignedBy??J.createdBy);if(!W)continue;await JN(W,J,{runClass:"retry"}),Z++,console.warn(`[task-board-review-sweeper] re-dispatched ${Q} after a failure (attempt ${G})`)}catch(J){if(console.error(`[task-board-review-sweeper] retry dispatch for ${Q} failed`,J),OB6(J)){await this.returnToTodo(Q,Y,J instanceof Error?J.message:String(J));continue}await this.taskBoard.scheduleRunRetry(Q,Y,G,new Date(Date.now()+NB6)).catch((W)=>console.error(`[task-board-review-sweeper] re-arming ${Q} failed`,W))}return Z}async returnToTodo($,Z,X){try{let Q=await this.taskBoard.getById($,Z);if(!Q||Q.status!=="in_progress")return;let Y=await this.taskBoard.returnToTodoAfterFailure($,Z,Q.updatedBy);if(!Y)return;await this.taskBoard.recordActivity({taskBoardItemId:$,action:"status_changed",actorId:null,data:{from:"in_progress",to:"todo",reason:X}}).catch(()=>{}),u$(Z,Y)}catch(Q){console.error(`[task-board-review-sweeper] returning ${$} to todo failed`,Q)}}async handOffReviewWithoutPr($,Z){let X=await this.taskBoard.listActivity(Z.id,Z.organizationId);if(!DB6(fH(X),Date.now()))return;await yK($,Z,"no pull request is linked to this task \u2014 there is nothing for a "+"reviewer to review")}async reconcileItem($,Z,X){if(!await this.taskBoard.claimSweep($,Z,X))return!1;let Q=await this.taskBoard.getById($,Z);if(!Q)return!1;if(Q.status!=="in_review")return!1;let Y=Q.assigneeId===Y8,G=await this.taskBoard.listPrs($,Z),J=await this.contextFactory(Z,Q.assignedBy??Q.createdBy);if(!J)return!1;if(G.length===0){if(Y)await this.handOffReviewWithoutPr(J,Q);return!1}let W=await Promise.all(G.map(async(K)=>({...K,...await Dg(Z,K)})));if(W.every((K)=>K.state===null))console.warn(`[task-board-review-sweeper] ${$}: no live PR state from GitHub (${W.length} PR(s)) \u2014 proceeding on unknown`);if(await Um$(J,Q,W))return!0;if(await qO$(J,Q))return!0;if(!Y)return!1;if(!go0(W))return!1;return await HL0(J,Q,{previewMatchesHead:ho0(W)}),!0}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}var KB6=60000,FB6=300000,HB6=50,NB6=60000,UB6=900000,BB6=120000;var Om$=D(()=>{C6();Vo0();YN();vt();Bm$();E5();aG();zo0();$G();Kt()});import{readdir as LB6,rm as zT0}from"fs/promises";import{join as PT0}from"path";async function AT0($){let Z=new Date;Z.setUTCDate(Z.getUTCDate()-wB6),Z.setUTCHours(0,0,0,0);let X=0;try{let Q=await Bv($);for(let Y of Q)if(/^\d{4}$/.test(Y))X+=await Dm$($,Y,Z);else if(!Y.startsWith(".")){let G=PT0($,Y),J=await Bv(G);for(let K of J){if(!/^\d{4}$/.test(K))continue;X+=await Dm$(G,K,Z)}if((await Bv(G)).length===0)await zT0(G,{recursive:!0,force:!0})}}catch(Q){console.warn("monitoring retention cleanup failed:",Q)}return X}async function Dm$($,Z,X){let Q=0,Y=PT0($,Z),G=await Bv(Y);for(let W of G){if(!/^\d{2}$/.test(W))continue;let K=PT0(Y,W),F=await Bv(K);for(let N of F){if(!/^\d{2}$/.test(N))continue;let U=new Date(`${Z}-${W}-${N}T00:00:00Z`);if(isNaN(U.getTime()))continue;if(U<X){let B=PT0(K,N);await zT0(B,{recursive:!0,force:!0}),Q++}}if((await Bv(K)).length===0)await zT0(K,{recursive:!0,force:!0})}if((await Bv(Y)).length===0)await zT0(Y,{recursive:!0,force:!0});return Q}async function Bv($){try{return(await LB6($)).filter((X)=>!X.startsWith("."))}catch{return[]}}var wB6=30;var u71=()=>{};import{DBOS as c71,SchedulerMode as EB6}from"@dbos-inc/dbos-sdk";async function zB6(){let $=[gJ(),Ov(),MF()],Z=0;for(let X of $)try{Z+=await AT0(X)}catch(Q){console.error("[monitoring-retention] cleanup failed:",Q)}return console.log(`[monitoring-retention] deleted ${Z} day-dir(s) across ${$.length} signal dir(s)`),{deleted:Z,dirs:$.length}}async function PB6($,Z){await c71.runStep(()=>zB6(),{name:"monitoringRetention"})}function wm$(){if(Lm$)return;Lm$=!0;let $=c71.registerWorkflow(PB6,{name:"monitoringRetentionWorkflow"});c71.registerScheduled($,{name:"monitoringRetentionWorkflow",crontab:jB6,mode:EB6.ExactlyOncePerIntervalWhenActive})}var jB6="23 4 * * *",Lm$=!1;var Em$=D(()=>{LY();u71()});function jm$($){return async(Z,X)=>{let Q=await $.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["member.role","organization.id as orgId","organization.slug as orgSlug","organization.name as orgName"]).where("member.userId","=",X).where("member.organizationId","=",Z).executeTakeFirst();if(!Q)return console.warn(`[automationContextFactory] User ${X} not found in org ${Z} \u2014 returning null`),null;let Y=await HJ.create();Y.auth.user={id:X,role:Q.role},Y.organization={id:Q.orgId,slug:Q.orgSlug,name:Q.orgName};let G=await Lt($.db,Z,Q.role);return Y.boundAuth=c51({auth:Y.authInstance,headers:new Headers,role:Q.role,permissions:G,userId:X}),Y.access=new mw(X,void 0,Y.boundAuth,Q.role,"self"),iO(Y,{id:Q.orgId,slug:Q.orgSlug}),Y}}var zm$=D(()=>{iw();pO()});function AB6(){return[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}]}function TB6(){return{services:AB6(),migrationsStatus:"pending",serverUrl:null,logs:[]}}function IB6(){for(let $ of RB6)$()}function Pm$($){let Z=[...l71.logs,$];l71={...l71,logs:Z.length>500?Z.slice(-500):Z},IB6()}function d71(){return qB6}var l71,RB6,qB6=!1;var m71=D(()=>{l71=TB6(),RB6=new Set});import{EventEmitter as MB6}from"events";var i71;var Am$=D(()=>{m71();i71=new MB6;i71.on("request",($)=>{Pm$($)})});function Tm$(){return async($,Z)=>{let X=Date.now(),Q=$.req.method,Y=$.req.path;if(Y==="/api/auth/get-session"||Y.includes("favicon")){await Z();return}let G="",J=!1;if(Y.startsWith("/mcp")&&Q==="POST"){J=!0;try{if($.req.header("Content-Type")?.includes("application/json")){let U=await $.req.raw.clone().json();if(U.method==="tools/call"&&U.params?.name){let B=ru(U.params.name),O=U.params.arguments||{},L=Object.keys(O).map((E)=>ru(E)),w=L.length>0?L.slice(0,3).join(",")+(L.length>3?"\u2026":""):"";G=`${J5.tool}${B}${J5.dim}(${w})${J5.reset}`}else if(U.method)G=`${J5.dim}${ru(U.method)}${J5.reset}`}}catch{}}let W=ru(Y);if(Y.startsWith("/mcp/conn_")){let H=Y.split("/")[2]??"";W=`/mcp/${J5.mcp}${ru(H.slice(0,12))}\u2026${J5.reset}`}else if(Y==="/mcp")W=`${J5.mcp}/mcp${J5.reset}`;else if(Y==="/mcp/registry")W=`${J5.mcp}/mcp/registry${J5.reset}`;let K=VB6(Q),F=J?"\u25C0":"\u2190";if(!d71())console.log(`${J5.dim}${F}${J5.reset} ${K}${Q}${J5.reset} ${W}${G?` ${G}`:""}`);try{await Z()}finally{let H=Date.now()-X,N=$.res.status,U=kB6(N),B=H<1000?`${H}ms`:`${(H/1000).toFixed(1)}s`,O=J?"\u25B6":"\u2192";if(!d71())console.log(`${J5.dim}${O}${J5.reset} ${K}${Q}${J5.reset} ${W}${G?` ${G}`:""} ${U}${N}${J5.reset} ${J5.duration}${B}${J5.reset}`);i71.emit("request",{method:Q,path:ru(Y),status:N,duration:H,timestamp:new Date})}}}var J5,kB6=($)=>{if($>=500)return J5.serverError;if($>=400)return J5.clientError;if($>=300)return J5.redirect;return J5.ok},VB6=($)=>{return J5[$]||J5.reset},ru=($)=>{return $.replace(/\r/g,"").replace(/\n/g,"").replace(/\x1b\[[0-9;]*m/g,"").replace(/[\x00-\x1f\x7f-\x9f]/g,"")};var Rm$=D(()=>{m71();Am$();J5={reset:"\x1B[0m",dim:"\x1B[2m",bold:"\x1B[1m",GET:"\x1B[36m",POST:"\x1B[33m",PUT:"\x1B[35m",DELETE:"\x1B[31m",ok:"\x1B[32m",redirect:"\x1B[36m",clientError:"\x1B[33m",serverError:"\x1B[31m",mcp:"\x1B[35m",tool:"\x1B[96m",duration:"\x1B[90m"}});import{createHmac as km$}from"crypto";import{mkdir as SB6,readdir as CB6,rm as Im$,stat as Vm$}from"fs/promises";import{join as n71,relative as _B6}from"path";import{z as P$}from"zod";function Cm$($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return n71(vB6,Z)}function _m$($){return $.replace(/^\/+/,"").replace(/\.\./g,"")}function p71($,Z){let X=Cm$($),Q=_m$(Z);return n71(X,Q)}function fB6($,Z,X,Q){let Y=b0().encryptionKey||"dev-secret",G=`${$}:${Z}:${X}:${Q}`;return km$("sha256",Y).update(G).digest("hex")}function Mm$($,Z,X,Q,Y){let G=Math.floor(Date.now()/1000)+Q,J=fB6(Z,X,G,Y),W=new URL(`/api/dev-assets/${Z}/${_m$(X)}`,$);return W.searchParams.set("expires",G.toString()),W.searchParams.set("signature",J),W.searchParams.set("method",Y),W.toString()}function vm$($,Z,X){let Q=`${$}:${Z.getTime()}:${X}`;return`"${km$("md5","etag").update(Q).digest("hex")}"`}async function fm$($,Z,X,Q,Y){try{let G=await CB6($,{withFileTypes:!0});for(let J of G){let W=n71($,J.name),F=_B6(Z,W).replace(/\\/g,"/");if(X&&!F.startsWith(X))continue;if(J.isDirectory())if(Q){let H=F+"/";if(!X||H.startsWith(X)){if(!(X?F.slice(X.length):F).includes("/"))Y.commonPrefixes.add(H)}}else await fm$(W,Z,X,Q,Y);else if(J.isFile()){if(Q&&X){let H=F.slice(X.length);if(H.includes(Q)){let N=H.indexOf(Q),U=X+H.slice(0,N+1);Y.commonPrefixes.add(U);continue}}try{let H=await Vm$(W);Y.objects.push({key:F,size:H.size,lastModified:H.mtime.toISOString(),etag:vm$(W,H.mtime,H.size)})}catch{}}}}catch{}}function bm$($,Z){let Q=t($).id;return[{name:"LIST_OBJECTS",description:"List objects in the local assets directory with pagination support",inputSchema:P$.object({prefix:P$.string().optional(),maxKeys:P$.number().optional().default(1000),continuationToken:P$.string().optional(),delimiter:P$.string().optional()}),outputSchema:P$.object({objects:P$.array(P$.object({key:P$.string(),size:P$.number(),lastModified:P$.string(),etag:P$.string()})),nextContinuationToken:P$.string().optional(),isTruncated:P$.boolean(),commonPrefixes:P$.array(P$.string()).optional()}),handler:async(Y)=>{let G=Y,J=G.prefix||"",W=G.maxKeys??1000,K=G.delimiter,F=G.continuationToken,H=Cm$(Q);await SB6(H,{recursive:!0});let N={objects:[],commonPrefixes:new Set};await fm$(H,H,J,K,N),N.objects.sort((w,E)=>w.key.localeCompare(E.key));let U=0;if(F){if(U=N.objects.findIndex((w)=>w.key>F),U===-1)U=N.objects.length}let B=N.objects.slice(U,U+W),O=U+W<N.objects.length,L=O?B[B.length-1]?.key:void 0;return{objects:B,isTruncated:O,nextContinuationToken:L,commonPrefixes:Array.from(N.commonPrefixes).sort()}}},{name:"GET_OBJECT_METADATA",description:"Get metadata for a file in the local assets directory",inputSchema:P$.object({key:P$.string()}),outputSchema:P$.object({contentType:P$.string().optional(),contentLength:P$.number(),lastModified:P$.string(),etag:P$.string(),metadata:P$.record(P$.string(),P$.string()).optional()}),handler:async(Y)=>{let G=Y,J=p71(Q,G.key),W=await Vm$(J);return{contentType:M91(G.key),contentLength:W.size,lastModified:W.mtime.toISOString(),etag:vm$(J,W.mtime,W.size)}}},{name:"GET_PRESIGNED_URL",description:"Generate a presigned URL for downloading a file from local storage",inputSchema:P$.object({key:P$.string(),expiresIn:P$.number().optional()}),outputSchema:P$.object({url:P$.string(),expiresIn:P$.number()}),handler:async(Y)=>{let G=Y,J=G.expiresIn??qm$;return{url:Mm$(Z,Q,G.key,J,"GET"),expiresIn:J}}},{name:"PUT_PRESIGNED_URL",description:"Generate a presigned URL for uploading a file to local storage",inputSchema:P$.object({key:P$.string(),expiresIn:P$.number().optional(),contentType:P$.string().optional()}),outputSchema:P$.object({url:P$.string(),expiresIn:P$.number()}),handler:async(Y)=>{let G=Y,J=G.expiresIn??qm$;return{url:Mm$(Z,Q,G.key,J,"PUT"),expiresIn:J}}},{name:"DELETE_OBJECT",description:"Delete a single file from local storage",inputSchema:P$.object({key:P$.string()}),outputSchema:P$.object({success:P$.boolean(),key:P$.string()}),handler:async(Y)=>{let G=Y,J=p71(Q,G.key);try{return await Im$(J),{success:!0,key:G.key}}catch{return{success:!1,key:G.key}}}},{name:"DELETE_OBJECTS",description:"Delete multiple files from local storage",inputSchema:P$.object({keys:P$.array(P$.string()).max(1000)}),outputSchema:P$.object({deleted:P$.array(P$.string()),errors:P$.array(P$.object({key:P$.string(),message:P$.string()}))}),handler:async(Y)=>{let G=Y,J=[],W=[];return await Promise.all(G.keys.map(async(K)=>{let F=p71(Q,K);try{await Im$(F),J.push(K)}catch(H){W.push({key:K,message:H instanceof Error?H.message:"Unknown error"})}})),{deleted:J,errors:W}}}]}async function t71($,Z,X){let Q=bm$(Z,X),Y=new nW({name:"dev-assets-mcp",version:"1.0.0"},{capabilities:{tools:{}},jsonSchemaValidator:N5});for(let J of Q){let W="shape"in J.inputSchema?J.inputSchema.shape:P$.object({}).shape,K=J.outputSchema&&"shape"in J.outputSchema?J.outputSchema.shape:P$.object({}).shape;Y.registerTool(J.name,{description:J.description??"",inputSchema:W,outputSchema:K,annotations:J.annotations,_meta:J._meta},async(F)=>{try{let H=await J.handler(F);return{content:[{type:"text",text:JSON.stringify(H)}],structuredContent:H}}catch(H){return{content:[{type:"text",text:`Error: ${H.message}`}],isError:!0}}})}let G=new YQ({enableJsonResponse:$.headers.get("Accept")?.includes("application/json")??!1});return await Y.connect(G),zJ(Y,G,$,"mcp:dev-assets")}async function xm$($,Z,X,Q){let G=bm$(X,Q).find((J)=>J.name===$);if(!G)return{content:[{type:"text",text:`Tool not found: ${$}`}],isError:!0};try{let J=await G.handler(Z);return{content:[{type:"text",text:JSON.stringify(J)}]}}catch(J){return{content:[{type:"text",text:J instanceof Error?J.message:String(J)}],isError:!0}}}var vB6="./data/assets",qm$=3600,Sm$,ym$;var gm$=D(()=>{R$();vg();U8();dd();aC();gX();EA0();Sm$=new H1;Sm$.all("/",async($)=>{let Z=$.get("studioContext"),X=new URL($.req.url),Q=`${X.protocol}//${X.host}`;return t71($.req.raw,Z,Q)});ym$=Sm$});var hm$={};J4(hm$,{mountDevRoutes:()=>bB6});function bB6($,Z){$.all("/mcp/:connectionId{.*_dev-assets$}",Z,async(Q)=>{let Y=Q.get("studioContext"),G=new URL(Q.req.url),J=`${G.protocol}//${G.host}`;return t71(Q.req.raw,Y,J)}),$.all("/mcp/:connectionId{.*_dev-assets$}/call-tool/:toolName",Z,async(Q)=>{let Y=Q.get("studioContext"),G=new URL(Q.req.url),J=`${G.protocol}//${G.host}`,W=Q.req.param("toolName");if(!W)return Q.json({error:"Missing tool name"},400);let K=await Q.req.json(),F=await xm$(W,K,Y,J);if(F.isError)return Q.json(F.content,500);return Q.json(F.content)}),$.use("/mcp/dev-assets",Z),$.route("/mcp/dev-assets",ym$);let X=new H1;X.use("*",DW({mountPath:"/api/dev-assets"})),X.route("/",wA0({orgFromPath:!1})),$.route("/api/dev-assets",X)}var um$=D(()=>{U8();z91();EA0();gm$()});import{sql as xB6}from"kysely";import{randomUUID as cm$}from"crypto";import{z as yB6}from"zod";async function hB6($){let Z=new Date().toISOString(),X=cm$(),Q=C8.SELF($.organizationId),Y="registry.publish_request.created",G={requestId:$.request.id,requestedId:$.request.requested_id,title:$.request.title,status:$.request.status,createdAt:$.request.created_at,requester:{name:$.request.requester_name,email:$.request.requester_email}};await $.db.insertInto("events").values({id:X,organization_id:$.organizationId,type:"registry.publish_request.created",source:Q,specversion:"1.0",subject:$.request.id,time:Z,datacontenttype:"application/json",dataschema:null,data:JSON.stringify(G),cron:null,status:"pending",attempts:0,last_error:null,next_retry_at:null,created_at:Z,updated_at:Z}).execute();let J=await $.db.selectFrom("event_subscriptions").select(["id"]).where("organization_id","=",$.organizationId).where("enabled","=",1).where("event_type","=","registry.publish_request.created").where((W)=>W.or([W("publisher","is",null),W("publisher","=",Q)])).execute();if(J.length>0)await $.db.insertInto("event_deliveries").values(J.map((W)=>({id:cm$(),event_id:X,subscription_id:W.id,status:"pending",attempts:0,last_error:null,delivered_at:null,next_retry_at:null,created_at:Z}))).execute();try{await xB6`SELECT
|
|
2926
2926
|
pg_notify('studio_events', ${X}),
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{i as p}from"./AlertCircle-Bvyaz2Kj.js";import{t as y,l as N,m as k,i as h,f as C,g as b,h as m,n as x,k as _,a as v,s as T}from"./UserSquare-DkrCVr7I.js";import{fj as B,bo as S}from"./index-BvphIPlv.js";import{i as K}from"./CheckCircle-qvIgjR7C.js";import{a as w}from"./DotsVertical-0FsnqvY-.js";import{s as D}from"./Eye-DkXPnw11.js";import{i as I}from"./Shield01-Ntkf4Ipf.js";import{f as A,g as O}from"./task-board-pShhwz8O.js";const E=B("Bug",[["path",{d:"m8 2 1.88 1.88",key:"fmnt4t"}],["path",{d:"M14.12 3.88 16 2",key:"qol33r"}],["path",{d:"M9 7.13v-1a3.003 3.003 0 1 1 6 0v1",key:"d7y7pr"}],["path",{d:"M12 20c-3.3 0-6-2.7-6-6v-3a4 4 0 0 1 4-4h4a4 4 0 0 1 4 4v3c0 3.3-2.7 6-6 6",key:"xs1cw7"}],["path",{d:"M12 20v-9",key:"1qisl0"}],["path",{d:"M6.53 9C4.6 8.8 3 7.1 3 5",key:"32zzws"}],["path",{d:"M6 13H2",key:"82j7cp"}],["path",{d:"M3 21c0-2.1 1.7-3.9 3.8-4",key:"4p0ekp"}],["path",{d:"M20.97 5c0 2.1-1.6 3.8-3.5 4",key:"18gb23"}],["path",{d:"M22 13h-4",key:"1jl80f"}],["path",{d:"M17.2 17c2.1.1 3.8 1.9 3.8 4",key:"k3fwyw"}]]),R=["ended_after_delivery","superseded"];function $(e){return!!e&&R.includes(e)}const M=new Intl.DateTimeFormat(void 0,{month:"short",day:"numeric",timeZone:"UTC"});function Z(e){const a=r=>{if(!r)return null;const n=Date.parse(r);return Number.isNaN(n)?null:M.format(new Date(n))},t=a(e.startsAt),o=a(e.endsAt);return!t&&!o?null:t&&o?`${t} – ${o}`:t??o}function g(e){return e.threads.some(a=>a.status==="requires_action")}function J(e){return e.status==="in_review"&&!e.assigneeId}function Q(e){return g(e)}function W(e){return e.status==="in_progress"&&g(e)?"text-warning animate-pulse":F[e.status].iconClassName}function X(e){return e.threads.some(t=>t.status==="in_progress")?"running":e.threads.some(t=>t.status==="failed"&&!$(t.failureKind))?"failed":null}function ee(e,a,t){const o=e.findIndex(i=>i.id===t),r=a===t?e[o+1]?.id??null:a,n=e.filter(i=>i.id!==t),s=r?n.findIndex(i=>i.id===r):-1,f=s===-1?n.length:s,c=n[f-1],l=n[f];return c&&l?(c.sortOrder+l.sortOrder)/2:c?c.sortOrder+1:l?l.sortOrder-1:0}function te(e,a){return Array.from({length:a},(t,o)=>e-(a-1-o)*1e-4)}const d=["triage","todo","in_progress","in_review","approved","merged","post_deploy_validation","done","archived"],U=["archived"],F={triage:{labelKey:"taskBoard.config.statusBacklog",icon:p,iconClassName:"text-muted-foreground"},todo:{labelKey:"taskBoard.config.statusTodo",icon:w,iconClassName:"text-muted-foreground"},in_progress:{labelKey:"taskBoard.config.statusInProgress",icon:h,iconClassName:"text-primary"},in_review:{labelKey:"taskBoard.config.statusInReview",icon:D,iconClassName:"text-warning"},approved:{labelKey:"taskBoard.config.statusApproved",icon:k,iconClassName:"text-success"},merged:{labelKey:"taskBoard.config.statusMerged",icon:N,iconClassName:"text-primary"},post_deploy_validation:{labelKey:"taskBoard.config.statusPostDeployValidation",icon:y,iconClassName:"text-warning"},done:{labelKey:"taskBoard.config.statusDone",icon:K,iconClassName:"text-success"},archived:{labelKey:"taskBoard.config.statusArchived",icon:S,iconClassName:"text-muted-foreground"}},ae=["bug","feature","chore","spike","security"],se={bug:{labelKey:"taskBoard.config.typeBug",icon:E,iconClassName:"text-destructive"},feature:{labelKey:"taskBoard.config.typeFeature",icon:T,iconClassName:"text-success"},chore:{labelKey:"taskBoard.config.typeChore",icon:v,iconClassName:"text-muted-foreground"},spike:{labelKey:"taskBoard.config.typeSpike",icon:_,iconClassName:"text-yellow-500"},security:{labelKey:"taskBoard.config.typeSecurity",icon:I,iconClassName:"text-purple-500"}};function u(e){return A.includes(e)}function oe(e){return e?d:d.filter(a=>!u(a))}function ne({deliveryEnabled:e,shownLanes:a,occupied:t}){const o=d.filter(s=>e||!u(s)||t.includes(s)),r=o.filter(s=>U.includes(s)||!e&&u(s)),n=r.filter(s=>!a.includes(s));return{lanes:o.filter(s=>!n.includes(s)),hidden:n,hideable:r}}const re=["none","low","medium","high","urgent"],ie={none:{labelKey:"taskBoard.config.priorityNone",flagClassName:"text-muted-foreground",dotClassName:"border border-muted-foreground/50",icon:m,iconClassName:"text-muted-foreground/40"},low:{labelKey:"taskBoard.config.priorityLow",flagClassName:"text-muted-foreground",dotClassName:"bg-muted-foreground/40",icon:x,iconClassName:"text-muted-foreground"},medium:{labelKey:"taskBoard.config.priorityMedium",flagClassName:"text-blue-500",dotClassName:"bg-blue-500",icon:m,iconClassName:"text-blue-500"},high:{labelKey:"taskBoard.config.priorityHigh",flagClassName:"text-warning",dotClassName:"bg-warning",icon:b,iconClassName:"text-warning"},urgent:{labelKey:"taskBoard.config.priorityUrgent",flagClassName:"text-destructive",dotClassName:"bg-destructive",icon:C,iconClassName:"text-destructive"}};function ce(e,a=Date.now()){const t=new Date(e).getTime();return Number.isNaN(t)?null:t<a?"overdue":t-a<=L*864e5?"soon":null}const L=3;function le(e){return`color-mix(in oklab, ${e??O} var(--user-color-strength), transparent)`}export{U as H,ie as P,F as S,se as T,ae as a,re as b,g as c,J as d,X as e,Z as f,Q as g,ee as h,$ as i,d as j,ce as k,ne as l,oe as m,u as n,te as r,W as s,le as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as B,b as L,j as r}from"./index-BvphIPlv.js";import{I as A}from"./input-D6JubeHO.js";import{L as F}from"./label-DyLWoXFN.js";import{S as R,a as V,b as z,c as O,d as D}from"./select-DO5mDlEe.js";import{T as G}from"./textarea-CxTBRm8n.js";import{G as J,V as M,K as X,X as $,a5 as q}from"./index-BeIdc9Ic.js";import{s as P}from"./primitives-Cf7qfYfW.js";import{u as H}from"./use-autosave-DOL2n-67.js";import"./Check-CzGcU_18.js";import"./ChevronDown-DnSLePrh.js";import"./ChevronUp-DFDLyF6e.js";import"./ArrowUp-MwWXr26Q.js";import"./chat-context-C5qSIECJ.js";import"./use-panel-navigate-Bi1-MukR.js";import"./dialog-o-lbJKf_.js";import"./Copy01-CSghf1in.js";import"./Download01-D5Sj1RWJ.js";import"./use-destination-route-DKoYkCsy.js";import"./constants-dLUUoWH7.js";import"./session-runtime-wVXsCwcJ.js";import"./hooks-D_iQI4O0.js";import"./use-mcp-client-BwH4TDLn.js";import"./auth-DFJQFcQU.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./decopilot-sse-pool-BE8yQxwy.js";import"./task-board-pShhwz8O.js";import"./use-is-desktop-app-BNujXJc_.js";import"./use-virtual-mcp-T3rF0m5R.js";import"./use-ai-providers-DUhPnVBj.js";import"./use-decopilot-events-DP6owINC.js";import"./use-organization-settings-0BXaFqOt.js";import"./automation-runs-DnRz_4nV.js";import"./agent-icon-4q5deIQd.js";import"./AlertCircle-Bvyaz2Kj.js";import"./UserSquare-DkrCVr7I.js";import"./Tool01-k31lhfuq.js";import"./ArrowLeft-DNSJEFTr.js";import"./Tool02-DHuul6tC.js";import"./XCircle-BCS-7XaA.js";import"./TrendUp01-BPsFCOJl.js";import"./ZapSquare-r3ZmUA9D.js";import"./Users03-CbLD7m3H.js";import"./CheckCircle-qvIgjR7C.js";import"./ChevronRight-JSjQetGj.js";import"./ChevronSelectorVertical-DRDRC9is.js";import"./DotsVertical-0FsnqvY-.js";import"./Stars02-FjaCs5mP.js";import"./CreditCard01-B6kY0NgK.js";import"./Settings02-CYzuwH_x.js";import"./Eye-DkXPnw11.js";import"./FilterLines-BsrW2L96.js";import"./Share07-CxggNnyF.js";import"./Globe01-B_IfqQPx.js";import"./Globe04-DPtjyMGq.js";import"./SwitchHorizontal01-CYGD-Yrj.js";import"./HardDrive-C7bA_N_q.js";import"./Key01-DQfk0_yE.js";import"./LinkExternal01-B_ilbe8Z.js";import"./LockUnlocked01-jP0H0WgM.js";import"./LogOut01-iTN2K_HM.js";import"./Monitor01-CNZN0EeI.js";import"./Sun-BpRkzKF1.js";import"./Palette-DJFYXyZC.js";import"./Play-DlSWUpz8.js";import"./Plus-ByjN5Z0Z.js";import"./SearchLg-BbH2TeF5.js";import"./SearchMd-BuhbwC54.js";import"./Shield01-Ntkf4Ipf.js";import"./Stars01-ByVJtKiy.js";import"./Trash01-BikQIH2r.js";import"./Upload01-D1HyPi1v.js";import"./User01-Dh4UFXWh.js";import"./Users01-CSnXgP67.js";import"./XClose-eJE1lk55.js";import"./Zap-Duxw5XKO.js";import"./useInfiniteQuery-CGYbyqjl.js";import"./use-infinite-scroll-CUw_Ivuj.js";import"./use-connection-D-FaQLFU.js";import"./table-CpwCU8Uq.js";import"./empty-state-C7rGE_UX.js";import"./use-members-DlgRTc5D.js";import"./use-org-auth-client-B56Z49z7.js";import"./use-automations-XxWq7PCT.js";import"./useSuspenseInfiniteQuery-BksJPEIN.js";import"./avatar-xQKMSfbV.js";import"./format-time-BnbuEtat.js";import"./differenceInSeconds-NQ4PDo0z.js";import"./use-copy-D0WDRRpO.js";import"./monaco-editor-BzQAHPgF.js";import"./spinner-hH9XnA8n.js";import"./types-DKd1RoOu.js";import"./shell-layout-DyObrhUk.js";import"./required-auth-layout-CpNSgXIB.js";import"./use-org-sso-CQ19h3IZ.js";import"./integration-icon-BJ2GfjLA.js";import"./use-navigate-to-agent-C_Lcd8Df.js";import"./chart-Bqv-9W0J.js";import"./index-CF_G93Kw.js";import"./form-CTCJD_Hx.js";import"./file-type-icon-DD64j0xL.js";import"./drawer-B43XZVqt.js";import"./collection-search-cn_pA-cC.js";import"./tabs-DUNrVSeU.js";import"./toggle-group-DJJef25l.js";import"./super-agent-icon-C9INS80X.js";import"./self-tool-result-DUSusImJ.js";import"./alert-dialog-COe9C8NL.js";import"./extract-connection-data-BGJLP0ou.js";import"./metadata-dUsYcpuu.js";import"./provision-repo-scoped-github-connection-CMPWtdMv.js";import"./use-debounced-value-B1Rqo74w.js";import"./authenticate-and-persist-oauth-BYrklfEZ.js";import"./mcp-oauth-ltvxvN83.js";import"./track-Da6W74hL.js";import"./popover-Cn19M15h.js";import"./toolbar-B35mtx0K.js";import"./github-repo-picker-DVgeOsWJ.js";import"./use-mcp-tools-D3VfPRcP.js";import"./agent-capabilities-B52k7xCe.js";import"./connection-card-DEBIEgz8.js";import"./use-registry-connections-BBSHOTrH.js";import"./retry-CErkP7V6.js";import"./connection-slug-eyAPH6o3.js";import"./connection-form-helpers-B-SpMh33.js";import"./collection-tabs-BxqOQqdF.js";import"./badge-BUE8eKrv.js";import"./select-model-XW5hTDtm.js";import"./checkbox-CagDKatz.js";import"./ai-providers-logos-DD3qZ33J.js";import"./cards-B03QSnw9.js";import"./dropdown-menu-DUzmGIpY.js";import"./question-004-sINsf4GQ.js";import"./use-status-sounds-1I3SzUNL.js";import"./use-file-configs-J_EcO8h8.js";import"./pt-BR-CLy76QW2.js";import"./use-debounced-autosave-BPMb3HJB.js";import"./scroll-area-Bcq1YylF.js";import"./search-input-D9oyZGdk.js";import"./use-mcp-auth-status-BNwzaQrN.js";import"./switch-B_X107f4.js";import"./use-secrets-BmX-LU55.js";import"./AreaChart-BktBXh-n.js";import"./config-CQPrXacX.js";import"./breadcrumb-CkIAyGzd.js";import"./command-N2b31krx.js";import"./index-MqYGWr-V.js";import"./get-initials-D-f_fDFw.js";import"./use-tags-CSG6nBXw.js";import"./automation-list-row-BbyIMiZO.js";import"./site-error--i37Vnuw.js";import"./use-org-repo-syncs-C2VfO1Ye.js";const Q={authors:[{key:"name",labelKey:"sandbox.recordEditor.fieldName",widget:"text"},{key:"type",labelKey:"sandbox.recordEditor.fieldType",widget:"select",options:[{value:"Person",labelKey:"sandbox.recordEditor.optionPerson"},{value:"Organization",labelKey:"sandbox.recordEditor.optionOrganization"}]},{key:"email",labelKey:"sandbox.recordEditor.fieldEmail",widget:"text",placeholderKey:"sandbox.recordEditor.placeholderEmail"},{key:"jobTitle",labelKey:"sandbox.recordEditor.fieldJobTitle",widget:"text"},{key:"company",labelKey:"sandbox.recordEditor.fieldCompany",widget:"text"},{key:"avatar",labelKey:"sandbox.recordEditor.fieldAvatar",widget:"image"}]},U={authors:"sandbox.recordEditor.titleAuthor"};function 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=J(h);let g;t[4]!==f||t[5]!==a?(g=M(f,a),t[4]=f,t[5]=a,t[6]=g):g=t[6];const C=g;let k;t[7]!==b||t[8]!==a||t[9]!==p?(k=l=>{p.mutate({blockKey:b,data:$(b,a,l)})},t[7]=b,t[8]=a,t[9]=p,t[10]=k):k=t[10];const[e,S]=H(C,k);let v;t[11]!==e||t[12]!==S?(v=(l,o)=>S({...e,[l]:o}),t[11]=e,t[12]=S,t[13]=v):v=t[13];const s=v,N=U[a];let n;t[14]!==i||t[15]!==N?(n=i(N),t[14]=i,t[15]=N,t[16]=n):n=t[16];let c;t[17]!==n?(c=r.jsx("span",{className:"text-sm font-medium",children:n}),t[17]=n,t[18]=c):c=t[18];let d;t[19]!==p.isError||t[20]!==p.isPending?(d=r.jsx(X,{isPending:p.isPending,isError:p.isError}),t[19]=p.isError,t[20]=p.isPending,t[21]=d):d=t[21];let y;t[22]!==c||t[23]!==d?(y=r.jsxs("div",{className:"flex h-12 shrink-0 items-center justify-between border-b px-6",children:[c,d]}),t[22]=c,t[23]=d,t[24]=y):y=t[24];const T=Q[a];let x;if(t[25]!==e||t[26]!==s||t[27]!==i||t[28]!==T){let l;t[30]!==e||t[31]!==s||t[32]!==i?(l=o=>r.jsx("div",{className:"space-y-2",children:o.widget==="image"?r.jsx(q,{schema:{type:"string",format:"image-uri",title:i(o.labelKey)},value:e[o.key],onChange:m=>s(o.key,m),path:o.key,label:i(o.labelKey)}):o.widget==="select"?r.jsxs(r.Fragment,{children:[r.jsx(F,{htmlFor:o.key,children:i(o.labelKey)}),r.jsxs(R,{value:P(e[o.key])||o.options?.[0]?.value,onValueChange:m=>s(o.key,m),children:[r.jsx(V,{id:o.key,className:"h-10 w-full",children:r.jsx(z,{placeholder:i(o.labelKey)})}),r.jsx(O,{children:(o.options??[]).map(m=>r.jsx(D,{value:m.value,children:i(m.labelKey)},m.value))})]})]}):r.jsxs(r.Fragment,{children:[r.jsx(F,{htmlFor:o.key,children:i(o.labelKey)}),o.widget==="textarea"?r.jsx(G,{id:o.key,value:P(e[o.key]),onChange:m=>s(o.key,m.target.value),rows:3}):r.jsx(A,{id:o.key,value:P(e[o.key]),placeholder:o.placeholderKey?i(o.placeholderKey):void 0,onChange:m=>s(o.key,m.target.value),className:"h-10"})]})},o.key),t[30]=e,t[31]=s,t[32]=i,t[33]=l):l=t[33],x=T.map(l),t[25]=e,t[26]=s,t[27]=i,t[28]=T,t[29]=x}else x=t[29];let u;t[34]!==x?(u=r.jsx("div",{className:"min-w-0 flex-1 overflow-y-auto px-6 py-6",children:r.jsx("div",{className:"mx-auto max-w-xl space-y-6",children:x})}),t[34]=x,t[35]=u):u=t[35];let j;return t[36]!==u||t[37]!==y?(j=r.jsxs("div",{className:"flex h-full flex-col",children:[y,u]}),t[36]=u,t[37]=y,t[38]=j):j=t[38],j}export{Gr as RecordEditor};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/registry-layout-ClpkcjT8.js","assets/index-BvphIPlv.js","assets/index-DJSuP9VA.css","assets/Tool02-DHuul6tC.js","assets/CheckCircle-qvIgjR7C.js","assets/Settings02-CYzuwH_x.js","assets/use-mcp-client-BwH4TDLn.js","assets/constants-dLUUoWH7.js","assets/auth-DFJQFcQU.js","assets/useInfiniteQuery-CGYbyqjl.js","assets/use-infinite-scroll-CUw_Ivuj.js","assets/badge-BUE8eKrv.js","assets/input-D6JubeHO.js","assets/dropdown-menu-DUzmGIpY.js","assets/Check-CzGcU_18.js","assets/ChevronRight-JSjQetGj.js","assets/DotsVertical-0FsnqvY-.js","assets/table-CpwCU8Uq.js","assets/toggle-group-DJJef25l.js","assets/use-view-mode--duMWzwB.js","assets/FilterLines-BsrW2L96.js","assets/Globe01-B_IfqQPx.js","assets/SearchMd-BuhbwC54.js","assets/dialog-o-lbJKf_.js","assets/AlertCircle-Bvyaz2Kj.js","assets/Download01-D5Sj1RWJ.js","assets/Upload01-D1HyPi1v.js","assets/metadata-dUsYcpuu.js","assets/alert-dialog-COe9C8NL.js","assets/Trash01-BikQIH2r.js","assets/label-DyLWoXFN.js","assets/select-DO5mDlEe.js","assets/ChevronDown-DnSLePrh.js","assets/ChevronUp-DFDLyF6e.js","assets/switch-B_X107f4.js","assets/textarea-CxTBRm8n.js","assets/ArrowLeft-DNSJEFTr.js","assets/XCircle-BCS-7XaA.js","assets/checkbox-CagDKatz.js","assets/Eye-DkXPnw11.js","assets/LinkExternal01-B_ilbe8Z.js","assets/use-copy-D0WDRRpO.js","assets/Copy01-CSghf1in.js","assets/Key01-DQfk0_yE.js","assets/Plus-ByjN5Z0Z.js","assets/mcp-oauth-ltvxvN83.js","assets/Play-DlSWUpz8.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{c as i,j as e,r as s,k as a,bp as o}from"./index-BvphIPlv.js";import{R as n}from"./require-capability-DF8bTjyU.js";import"./access-gate-CJHzntYB.js";import"./capability-load-error-BisJ15x6.js";const c=s.lazy(()=>o(()=>import("./registry-layout-ClpkcjT8.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46])));function u(){const r=i.c(1);let t;return r[0]===Symbol.for("react.memo_cache_sentinel")?(t=e.jsx(n,{capability:"registry:manage",area:"the registry",children:e.jsx(s.Suspense,{fallback:e.jsx("div",{className:"flex-1 flex items-center justify-center",children:e.jsx(a,{size:20,className:"animate-spin text-muted-foreground"})}),children:e.jsx(c,{})})}),r[0]=t):t=r[0],t}export{u as default};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/registry-layout-ClpkcjT8.js","assets/index-BvphIPlv.js","assets/index-DJSuP9VA.css","assets/Tool02-DHuul6tC.js","assets/CheckCircle-qvIgjR7C.js","assets/Settings02-CYzuwH_x.js","assets/use-mcp-client-BwH4TDLn.js","assets/constants-dLUUoWH7.js","assets/auth-DFJQFcQU.js","assets/useInfiniteQuery-CGYbyqjl.js","assets/use-infinite-scroll-CUw_Ivuj.js","assets/badge-BUE8eKrv.js","assets/input-D6JubeHO.js","assets/dropdown-menu-DUzmGIpY.js","assets/Check-CzGcU_18.js","assets/ChevronRight-JSjQetGj.js","assets/DotsVertical-0FsnqvY-.js","assets/table-CpwCU8Uq.js","assets/toggle-group-DJJef25l.js","assets/use-view-mode--duMWzwB.js","assets/FilterLines-BsrW2L96.js","assets/Globe01-B_IfqQPx.js","assets/SearchMd-BuhbwC54.js","assets/dialog-o-lbJKf_.js","assets/AlertCircle-Bvyaz2Kj.js","assets/Download01-D5Sj1RWJ.js","assets/Upload01-D1HyPi1v.js","assets/metadata-dUsYcpuu.js","assets/alert-dialog-COe9C8NL.js","assets/Trash01-BikQIH2r.js","assets/label-DyLWoXFN.js","assets/select-DO5mDlEe.js","assets/ChevronDown-DnSLePrh.js","assets/ChevronUp-DFDLyF6e.js","assets/switch-B_X107f4.js","assets/textarea-CxTBRm8n.js","assets/ArrowLeft-DNSJEFTr.js","assets/XCircle-BCS-7XaA.js","assets/checkbox-CagDKatz.js","assets/Eye-DkXPnw11.js","assets/LinkExternal01-B_ilbe8Z.js","assets/use-copy-D0WDRRpO.js","assets/Copy01-CSghf1in.js","assets/Key01-DQfk0_yE.js","assets/Plus-ByjN5Z0Z.js","assets/mcp-oauth-ltvxvN83.js","assets/Play-DlSWUpz8.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{c as n,d as c,f as m,j as t,k as f,r as l,bp as p}from"./index-BvphIPlv.js";import{R as u}from"./require-capability-DF8bTjyU.js";import"./access-gate-CJHzntYB.js";import"./capability-load-error-BisJ15x6.js";const g=l.lazy(()=>p(()=>import("./registry-layout-ClpkcjT8.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46])));function h(){const e=n.c(5),i=c();let s;e[0]===Symbol.for("react.memo_cache_sentinel")?(s={from:"/shell/$org"},e[0]=s):s=e[0];const{org:o}=m(s);let r;e[1]===Symbol.for("react.memo_cache_sentinel")?(r=t.jsx("div",{className:"h-full flex items-center justify-center",children:t.jsx(f,{size:20,className:"animate-spin text-muted-foreground"})}),e[1]=r):r=e[1];let a;return e[2]!==i||e[3]!==o?(a=t.jsx(u,{capability:"registry:manage",area:"the registry",children:t.jsx(l.Suspense,{fallback:r,children:t.jsx(g,{onBack:()=>i({to:"/$org/settings/store",params:{org:o}})})})}),e[2]=i,e[3]=o,e[4]=a):a=e[4],a}export{h as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{I as i}from"./use-infinite-scroll-CUw_Ivuj.js";import{fi as u}from"./index-BvphIPlv.js";function t(e,r){return u(e,i,r)}export{t as u};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{I as s}from"./use-infinite-scroll-CUw_Ivuj.js";import{fi as u,b$ as n}from"./index-BvphIPlv.js";function i(r,e){return u({...r,enabled:!0,suspense:!0,throwOnError:n},s,e)}export{i as u};
|