decocms 4.204.8 → 4.204.10
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-DtcBf9Yo.js → AlertCircle-S3tUrNGM.js} +1 -1
- package/dist/client/assets/{AreaChart-C2XaH0LG.js → AreaChart-Cu3xlCnY.js} +1 -1
- package/dist/client/assets/{ArrowLeft-B-hnSQq2.js → ArrowLeft-C-VLc02o.js} +1 -1
- package/dist/client/assets/{ArrowUp-B3DHcORu.js → ArrowUp-BF3c2HfT.js} +1 -1
- package/dist/client/assets/{ArrowUpRight-CVDj4jou.js → ArrowUpRight-EXEebwOA.js} +1 -1
- package/dist/client/assets/{Check-BR_y3pQa.js → Check-DVItEi9m.js} +1 -1
- package/dist/client/assets/{CheckCircle-R8LkrRIy.js → CheckCircle-B8_pZ_0W.js} +1 -1
- package/dist/client/assets/{ChevronDown-D2bp-PP5.js → ChevronDown-B-GQw7lM.js} +1 -1
- package/dist/client/assets/{ChevronRight-DZMXqS4X.js → ChevronRight-ZlJ6tW8i.js} +1 -1
- package/dist/client/assets/{ChevronUp-DAV3DjQS.js → ChevronUp-CDWWo2re.js} +1 -1
- package/dist/client/assets/{Copy01-C8QzdAn6.js → Copy01-CP2bYSE7.js} +1 -1
- package/dist/client/assets/{CpuChip01-DHnFKAGO.js → CpuChip01-DbkDo2ye.js} +1 -1
- package/dist/client/assets/{CreditCard01-C-vU30wQ.js → CreditCard01-DM2RUOXa.js} +1 -1
- package/dist/client/assets/{DotsVertical-DJMcNLhs.js → DotsVertical-DLr5T8r3.js} +1 -1
- package/dist/client/assets/{Eye-DwVpzbWw.js → Eye-DR0uzzed.js} +1 -1
- package/dist/client/assets/{FilterLines-BaG7OFm9.js → FilterLines-O_HhRX_J.js} +1 -1
- package/dist/client/assets/{Globe01-dAJoogYX.js → Globe01-rc-FGcbv.js} +1 -1
- package/dist/client/assets/{Globe04-BxogqSsW.js → Globe04-DRXRGMnk.js} +1 -1
- package/dist/client/assets/{HardDrive-_UYpWeTk.js → HardDrive-D1dj1rAY.js} +1 -1
- package/dist/client/assets/{Key01-D9uy-EVq.js → Key01-CyMmGWXN.js} +1 -1
- package/dist/client/assets/{LayoutLeft-B47i0RIs.js → LayoutLeft-Dyip2cM-.js} +1 -1
- package/dist/client/assets/{LinkExternal01-BB93vvSL.js → LinkExternal01-os5Jqgmh.js} +1 -1
- package/dist/client/assets/{LogOut01-8H0tgmyh.js → LogOut01-Bm-a9M6Z.js} +1 -1
- package/dist/client/assets/{Monitor01-CN67zPMs.js → Monitor01-Btxcjz3d.js} +1 -1
- package/dist/client/assets/{Palette-D4fODps0.js → Palette-CipJDlN3.js} +1 -1
- package/dist/client/assets/{Play-CX4L6lNV.js → Play-RIvz_fBW.js} +1 -1
- package/dist/client/assets/{Plus-D890VKuZ.js → Plus-CKZN4XN2.js} +1 -1
- package/dist/client/assets/{SearchLg-DM2RMwp0.js → SearchLg-C8-JlhY0.js} +1 -1
- package/dist/client/assets/{SearchMd-BMm-Ud9Q.js → SearchMd-CBpTd8o5.js} +1 -1
- package/dist/client/assets/{Settings02-Cy7bsG-K.js → Settings02-CbFzCM1a.js} +1 -1
- package/dist/client/assets/{Share07-DNfq8lpE.js → Share07-ReQHzsZK.js} +1 -1
- package/dist/client/assets/{Shield01-DlsuvYgX.js → Shield01-B7sH0eDQ.js} +1 -1
- package/dist/client/assets/{Star01-Dt3epwfk.js → Star01-C7Bjhh1c.js} +1 -1
- package/dist/client/assets/{Stars01-CCtdgWnG.js → Stars01-CL346dFV.js} +1 -1
- package/dist/client/assets/{Stars02-BWggMQVR.js → Stars02-DXys4NW2.js} +1 -1
- package/dist/client/assets/{Sun-DOiNtDyS.js → Sun-BYpMxySu.js} +1 -1
- package/dist/client/assets/{SwitchHorizontal01-BdJ_uwvL.js → SwitchHorizontal01-B4Zqtra4.js} +1 -1
- package/dist/client/assets/{Tool01-DUDRbk6f.js → Tool01-CPMFfQ6f.js} +1 -1
- package/dist/client/assets/{Tool02-pNvqhtQL.js → Tool02-DQoRs_qf.js} +1 -1
- package/dist/client/assets/{Trash01-C5AQUbsJ.js → Trash01-DRzlUNv-.js} +1 -1
- package/dist/client/assets/{TrendUp01-CstfDBZ0.js → TrendUp01-BjJ3TVas.js} +1 -1
- package/dist/client/assets/{Upload01-ClVPxQWx.js → Upload01-BFm35z50.js} +1 -1
- package/dist/client/assets/{User01-CfF-4bkp.js → User01-B4ELS96t.js} +1 -1
- package/dist/client/assets/{Users01-DaZH4H92.js → Users01-BcOgHRee.js} +1 -1
- package/dist/client/assets/{Users03-CTWqWA1O.js → Users03-H6rBQYPH.js} +1 -1
- package/dist/client/assets/{X-DWChjb31.js → X-YXH_1PLk.js} +1 -1
- package/dist/client/assets/{XCircle-D_nb6Vha.js → XCircle-rXTIAxzi.js} +1 -1
- package/dist/client/assets/{XClose-CVpG_kT3.js → XClose-DSvTHITF.js} +1 -1
- package/dist/client/assets/{Zap-BDIinP9d.js → Zap-mPOT3aTd.js} +1 -1
- package/dist/client/assets/{ZapSquare-n0L-XRyM.js → ZapSquare-CPOzuIMm.js} +1 -1
- package/dist/client/assets/{access-gate-Bzzjolv0.js → access-gate-CnV1fBz6.js} +1 -1
- package/dist/client/assets/{agent-icon-BxgVS7Dq.js → agent-icon-C6MeNTHc.js} +1 -1
- package/dist/client/assets/{agents-list-B6PYqAJT.js → agents-list-DY0VRXQY.js} +1 -1
- package/dist/client/assets/{ai-providers-DYUdQDSa.js → ai-providers-DGBvGtFq.js} +1 -1
- package/dist/client/assets/{alert-dialog-BrKzytYR.js → alert-dialog-Z2a29KAE.js} +1 -1
- package/dist/client/assets/{alert-DDqgaeq_.js → alert-zjljpP8C.js} +1 -1
- package/dist/client/assets/{app-editor-DAMbLHKn.js → app-editor-ClibDB8O.js} +1 -1
- package/dist/client/assets/{auth-x1UcwGb9.js → auth-CTYkmw0h.js} +1 -1
- package/dist/client/assets/{auth-catchall-xBSAXUyl.js → auth-catchall-gL72Ys5R.js} +1 -1
- package/dist/client/assets/{auth-entry-gKdAoMHS.js → auth-entry-BTVP9mHW.js} +1 -1
- package/dist/client/assets/{auth-split-layout-BevIZR5R.js → auth-split-layout-BG_Lxuo4.js} +1 -1
- package/dist/client/assets/{authenticate-and-persist-oauth-elrxAvdD.js → authenticate-and-persist-oauth-BcRuhJJh.js} +1 -1
- package/dist/client/assets/{automation-list-row-BZrt3IN7.js → automation-list-row-C1x1P0fO.js} +1 -1
- package/dist/client/assets/{automation-runs-Bp0vRiMQ.js → automation-runs-B7YmQ3W_.js} +1 -1
- package/dist/client/assets/{automations--utMUw0J.js → automations-CSE9FuHu.js} +1 -1
- package/dist/client/assets/{avatar-DznSxzVk.js → avatar-GuOwhJMq.js} +1 -1
- package/dist/client/assets/{badge-DIY03YLR.js → badge-BUMcirJ_.js} +1 -1
- package/dist/client/assets/{billing-1oH-lxbJ.js → billing-N_NS0HZU.js} +1 -1
- package/dist/client/assets/{block-document-DzCAGpqd.js → block-document-DpyiqE6d.js} +1 -1
- package/dist/client/assets/{brand-context-D9DGEscw.js → brand-context-BeLm8S5J.js} +1 -1
- package/dist/client/assets/{buckets-Bqs3cx4n.js → buckets-BiUTgEkv.js} +1 -1
- package/dist/client/assets/{bulk-category-panel-DI5bYVhD.js → bulk-category-panel-PG06Z124.js} +1 -1
- package/dist/client/assets/{capability-load-error-C-U6Sa6h.js → capability-load-error-tvYGzCAR.js} +1 -1
- package/dist/client/assets/{card-CpzI55XY.js → card-DrZauAzu.js} +1 -1
- package/dist/client/assets/{cards-CCwwx56B.js → cards-wB1ywU8s.js} +1 -1
- package/dist/client/assets/{category-editor-mnZIEv-C.js → category-editor-7HsmZreR.js} +1 -1
- package/dist/client/assets/{chat-context-C9ar1H2g.js → chat-context-DdVbt9rF.js} +1 -1
- package/dist/client/assets/{checkbox-bTBnaCwu.js → checkbox-DHTzkGAl.js} +1 -1
- package/dist/client/assets/{cli-auth-success-xDq1tMaB.js → cli-auth-success-DIfqkoCf.js} +1 -1
- package/dist/client/assets/{collection-detail-BBqHH7mi.js → collection-detail-_PvatVV-.js} +1 -1
- package/dist/client/assets/{collection-display-button-oVTbgkTW.js → collection-display-button-gYUMIi3M.js} +1 -1
- package/dist/client/assets/{collection-search-C3lFh49F.js → collection-search-iLO71ITd.js} +1 -1
- package/dist/client/assets/{collection-table-wrapper-Csjg7oFh.js → collection-table-wrapper-CKdV9gfO.js} +1 -1
- package/dist/client/assets/{collection-tabs-BUYE6_aB.js → collection-tabs-BTzPN9Uw.js} +1 -1
- package/dist/client/assets/{command-BSRriZpw.js → command-cUl3TMhA.js} +1 -1
- package/dist/client/assets/{commerce-onboarding-C76Uuzhx.js → commerce-onboarding-C1NHY-n5.js} +1 -1
- package/dist/client/assets/{connect-B_sXgCfo.js → connect-Cs0n6CBF.js} +1 -1
- package/dist/client/assets/{connection-BfpvjUDn.js → connection-DpCsdxse.js} +1 -1
- package/dist/client/assets/connection-card-mzJwyzPm.js +1 -0
- package/dist/client/assets/{connection-detail-BfmBd46a.js → connection-detail-p7V92Xe9.js} +1 -1
- package/dist/client/assets/{connection-form-helpers-BrHmweTk.js → connection-form-helpers-Bw9isfP9.js} +1 -1
- package/dist/client/assets/{connections-BdQPawVl.js → connections-CQHoaKrX.js} +1 -1
- package/dist/client/assets/{decopilot-sse-pool-D87qFHwq.js → decopilot-sse-pool-K3BKPApP.js} +1 -1
- package/dist/client/assets/{dialog-WVvleGQm.js → dialog-CvINJL7J.js} +1 -1
- package/dist/client/assets/{domain-settings-OIx1b8Jw.js → domain-settings-CdTqdpqF.js} +1 -1
- package/dist/client/assets/{drawer-gpPY6nDx.js → drawer-BEOdopIU.js} +1 -1
- package/dist/client/assets/{dropdown-menu-20L0YMC6.js → dropdown-menu-JlLoVdyA.js} +1 -1
- package/dist/client/assets/{empty-state-CFMZVO6F.js → empty-state-D6aW5aom.js} +1 -1
- package/dist/client/assets/{extract-connection-data-DCq0f1yL.js → extract-connection-data-Cc8DV92e.js} +1 -1
- package/dist/client/assets/{file-explorer-DZWEMha3.js → file-explorer-Vzx7spbo.js} +1 -1
- package/dist/client/assets/{file-type-icon-NN5hCyZB.js → file-type-icon-CrU5LH5F.js} +1 -1
- package/dist/client/assets/{form-CZ38MeFO.js → form-BeZYqJIV.js} +1 -1
- package/dist/client/assets/{general-DSfpvGqK.js → general-B8-yT4_a.js} +1 -1
- package/dist/client/assets/{github-repo-picker-wc1fy6m0.js → github-repo-picker-BobeGdht.js} +1 -1
- package/dist/client/assets/{hooks-CTVKyWiF.js → hooks-N8--dPpR.js} +1 -1
- package/dist/client/assets/{index-Qhd1m1yN.js → index-1NV2x614.js} +1 -1
- package/dist/client/assets/index-BWIHO7Hn.js +1 -0
- package/dist/client/assets/{index-fW99d5cN.js → index-CC6dMSZJ.js} +5 -5
- package/dist/client/assets/{index-Dq1rZkEr.js → index-ChuTvkZa.js} +1 -1
- package/dist/client/assets/{index-DMVkFPM-.js → index-CtC2E-LR.js} +5 -5
- package/dist/client/assets/{index-DqIfVQ0r.js → index-DQkHT-OL.js} +1 -1
- package/dist/client/assets/{index-LTFa6mru.js → index-DkutF1n7.js} +1 -1
- package/dist/client/assets/{index-Cs9v7gAy.js → index-O-7D6d7B.js} +1 -1
- package/dist/client/assets/{index-Bw3T9xql.js → index-d_ZVJ1op.js} +1 -1
- package/dist/client/assets/{index-redirect-hiPQBtHD.js → index-redirect-BbN81JYF.js} +1 -1
- package/dist/client/assets/{index-CWUWmnm-.js → index-zcyn-snX.js} +1 -1
- package/dist/client/assets/{input-D_8MPCeJ.js → input-X3IRq8Dd.js} +1 -1
- package/dist/client/assets/{integration-icon-Bht6F7tI.js → integration-icon-4_ZPxZeB.js} +1 -1
- package/dist/client/assets/{invite-member-dialog-DeDFRMvJ.js → invite-member-dialog-o4RZ379R.js} +1 -1
- package/dist/client/assets/{label-C6nnufR8.js → label-BYzwsspf.js} +1 -1
- package/dist/client/assets/{layout-moE1SmMX.js → layout-qWYWaMuu.js} +1 -1
- package/dist/client/assets/{login-C6cFZVbf.js → login-DhOgdoxQ.js} +1 -1
- package/dist/client/assets/{mcp-oauth-Cf716aWB.js → mcp-oauth-BLBWrCUa.js} +1 -1
- package/dist/client/assets/{members-BUIyh_Qx.js → members-DRaAu6NC.js} +1 -1
- package/dist/client/assets/{monaco-editor-HHXcjPSb.js → monaco-editor-3b2zi4-X.js} +1 -1
- package/dist/client/assets/{monitoring-stats-row-BxwRkU69.js → monitoring-stats-row-Bq90QBGB.js} +1 -1
- package/dist/client/assets/{multi-select-BcYCcoJ3.js → multi-select-DR5-c85W.js} +1 -1
- package/dist/client/assets/{oauth-callback-DaTNv2oG.js → oauth-callback-D3oN8Cuc.js} +1 -1
- package/dist/client/assets/{oauth-callback-ai-provider-D0RFZwo_.js → oauth-callback-ai-provider-CfrerDRK.js} +1 -1
- package/dist/client/assets/{onboarding-BNwePgsI.js → onboarding-CTMaq1b3.js} +1 -1
- package/dist/client/assets/{org-layout-QuN9vEIV.js → org-layout-vfwCxPjT.js} +1 -1
- package/dist/client/assets/{organization-choice-DxkzJjLH.js → organization-choice-CwmqTfdN.js} +1 -1
- package/dist/client/assets/{orgs-Bn53dsrw.js → orgs-DlOAMcNI.js} +1 -1
- package/dist/client/assets/{page-seo-form-nqYwAjff.js → page-seo-form-HHNqrlIA.js} +1 -1
- package/dist/client/assets/{popover-Bx55LB3t.js → popover-CQjEn4Hf.js} +1 -1
- package/dist/client/assets/{post-editor-DIX6Ets5.js → post-editor-CIcJoAg3.js} +1 -1
- package/dist/client/assets/{primitives-DZQAwXw0.js → primitives-CRrlbF22.js} +1 -1
- package/dist/client/assets/{profile-DEV-g8vm.js → profile-BEt36Qw1.js} +1 -1
- package/dist/client/assets/{project-app-view-3WMLshkM.js → project-app-view-BOz2B1bU.js} +1 -1
- package/dist/client/assets/record-editor-BZkBJgF7.js +1 -0
- package/dist/client/assets/{redirect-editor-DCCvl-dl.js → redirect-editor-ClCcpxAR.js} +1 -1
- package/dist/client/assets/registry-DCIcUVNd.js +2 -0
- package/dist/client/assets/{registry-layout-BmqfeU1z.js → registry-layout-Dvx_Szjz.js} +4 -4
- package/dist/client/assets/{reports-AZ61Dkk6.js → reports-BFOjGs8n.js} +1 -1
- package/dist/client/assets/{require-capability-BJIhlMK3.js → require-capability-DVWYmb54.js} +1 -1
- package/dist/client/assets/{required-auth-layout-C9NA8GyA.js → required-auth-layout-CoO0KUJg.js} +1 -1
- package/dist/client/assets/{reset-password-Bz61xe_n.js → reset-password-BL7jdsAh.js} +1 -1
- package/dist/client/assets/{roles-CTwTAgJg.js → roles-DTJecbct.js} +1 -1
- package/dist/client/assets/{search-input-CGniBcvo.js → search-input-Drmv5L0k.js} +1 -1
- package/dist/client/assets/{secrets-Bu1Mmcd2.js → secrets-BXvZa5D7.js} +1 -1
- package/dist/client/assets/{sections-editor-DZv1y90K.js → sections-editor-DA5P4axK.js} +1 -1
- package/dist/client/assets/{select-BW4isZ92.js → select-DebKCVWG.js} +1 -1
- package/dist/client/assets/{select-model-BEeMCN_p.js → select-model-Du3Ej6w9.js} +1 -1
- package/dist/client/assets/{self-tool-result-CIhVFiWW.js → self-tool-result-CbeJFLJD.js} +1 -1
- package/dist/client/assets/{seo-editor-CepOgmE_.js → seo-editor-FYIvtF7w.js} +1 -1
- package/dist/client/assets/{settings-layout-DGyMqtT0.js → settings-layout-De6xrqYB.js} +1 -1
- package/dist/client/assets/{settings-section-BoZ_2dOP.js → settings-section-QqmygRgB.js} +1 -1
- package/dist/client/assets/{shell-controls-D5Z6jQL2.js → shell-controls-DjH2Q1_u.js} +1 -1
- package/dist/client/assets/{shell-layout-Jt2Up0xu.js → shell-layout-1DeOVhNf.js} +1 -1
- package/dist/client/assets/{sidebar-D5wZpmSX.js → sidebar-BOln8IrV.js} +1 -1
- package/dist/client/assets/{skeleton-DodMTjF4.js → skeleton-BM5uapzj.js} +1 -1
- package/dist/client/assets/{spinner-CYS46qdm.js → spinner-j9AhGshc.js} +1 -1
- package/dist/client/assets/{sso-CvQENK4m.js → sso-DhVWLdbg.js} +1 -1
- package/dist/client/assets/{store-D0gLYqLK.js → store-Bf5VRWiM.js} +1 -1
- package/dist/client/assets/store-registry-2m9R4t6i.js +2 -0
- package/dist/client/assets/{studio-tools-DEutoWNu.js → studio-tools-BezFTuXR.js} +1 -1
- package/dist/client/assets/{switch-C3OobioL.js → switch-CtsSOMzr.js} +1 -1
- package/dist/client/assets/{synced-repos-F1472S8m.js → synced-repos-D10b7mH_.js} +1 -1
- package/dist/client/assets/{tab-id-BT-_kHWc.js → tab-id-DPkbZn_B.js} +1 -1
- package/dist/client/assets/{table-BMPT8a4p.js → table-DNdIW1tO.js} +1 -1
- package/dist/client/assets/{tabs-D_dbBYmt.js → tabs-I5lzHd9e.js} +1 -1
- package/dist/client/assets/{textarea-D-tXzWP1.js → textarea-B9uCq3eq.js} +1 -1
- package/dist/client/assets/{toggle-group-IyghBImb.js → toggle-group-C_QK4KF9.js} +1 -1
- package/dist/client/assets/{toolbar-TpGHOKL5.js → toolbar-DuSiIxXb.js} +1 -1
- package/dist/client/assets/{tooltip-CoSau9fL.js → tooltip-CwsLUjMv.js} +1 -1
- package/dist/client/assets/{use-ai-providers-CLSAcqN_.js → use-ai-providers-BxmH68cx.js} +1 -1
- package/dist/client/assets/{use-automations-CKK5WIav.js → use-automations-DvK9BWDg.js} +1 -1
- package/dist/client/assets/{use-autosave-DkwbJlmn.js → use-autosave-C5ySsSRD.js} +1 -1
- package/dist/client/assets/{use-capability-CwhLLMnx.js → use-capability-GpR6gBN5.js} +1 -1
- package/dist/client/assets/{use-clock-tick-BJ09r96M.js → use-clock-tick-QmgRnGyf.js} +1 -1
- package/dist/client/assets/{use-connection-EYBPR7MW.js → use-connection-nadtbTDO.js} +1 -1
- package/dist/client/assets/{use-copy-C4lEewEl.js → use-copy-Dj-rElGK.js} +1 -1
- package/dist/client/assets/{use-create-virtual-mcp-CIQS41tm.js → use-create-virtual-mcp-Dsneuz2y.js} +1 -1
- package/dist/client/assets/{use-debounced-autosave-CnFUc_La.js → use-debounced-autosave-DLQhsaa9.js} +1 -1
- package/dist/client/assets/{use-debounced-value-C8M9q0gE.js → use-debounced-value-O4fTo90a.js} +1 -1
- package/dist/client/assets/{use-deco-credits-CIByNz6a.js → use-deco-credits-D_bno26f.js} +1 -1
- package/dist/client/assets/{use-decopilot-events-CYXHJK9C.js → use-decopilot-events-CUtQ3iVc.js} +1 -1
- package/dist/client/assets/{use-delete-connection-Cv4uDyG-.js → use-delete-connection-BSC4VZVw.js} +1 -1
- package/dist/client/assets/{use-deployment-admin-uutZGnzB.js → use-deployment-admin-CRZ67P6h.js} +1 -1
- package/dist/client/assets/{use-file-configs-C_4jf-dU.js → use-file-configs-BDxIb8o3.js} +1 -1
- package/dist/client/assets/{use-infinite-scroll-DvtqsxMD.js → use-infinite-scroll-CaHZ7nlc.js} +1 -1
- package/dist/client/assets/{use-join-requests-CpoV-SyZ.js → use-join-requests-CTC9f03j.js} +1 -1
- package/dist/client/assets/{use-mcp-client-B8LG6Bji.js → use-mcp-client-CY21aayR.js} +1 -1
- package/dist/client/assets/{use-mcp-tools-CiWJWFrj.js → use-mcp-tools-CqyBsycN.js} +1 -1
- package/dist/client/assets/{use-members-CkfAgnFj.js → use-members-DvJQZTDj.js} +1 -1
- package/dist/client/assets/{use-mobile-DdV2a2yW.js → use-mobile-BoLP0XkO.js} +1 -1
- package/dist/client/assets/{use-navigate-to-agent-CHDlhBkM.js → use-navigate-to-agent-vZFQjZkg.js} +1 -1
- package/dist/client/assets/{use-open-billing-url-C0E-_uSb.js → use-open-billing-url-CD3v-egC.js} +1 -1
- package/dist/client/assets/{use-org-auth-client-DtqhPen4.js → use-org-auth-client-B6fyLtd9.js} +1 -1
- package/dist/client/assets/{use-org-sso-C0s9nUkk.js → use-org-sso-D56BAAzC.js} +1 -1
- package/dist/client/assets/{use-organization-roles-CytlBffZ.js → use-organization-roles-DEWvCy25.js} +1 -1
- package/dist/client/assets/{use-organization-settings-CmVnQrE1.js → use-organization-settings-ClvoNZM5.js} +1 -1
- package/dist/client/assets/{use-registry-connections-DqFzJwgz.js → use-registry-connections-GPetG9pO.js} +1 -1
- package/dist/client/assets/{use-secrets-B-BZwXaP.js → use-secrets-CaAM_zSv.js} +1 -1
- package/dist/client/assets/{use-section-preview-base-DXaMjOcd.js → use-section-preview-base-pkS84tI_.js} +1 -1
- package/dist/client/assets/{use-status-sounds-c0jco0J0.js → use-status-sounds-Bm3GY21U.js} +1 -1
- package/dist/client/assets/{use-tags-DEDR5Tu0.js → use-tags-2Kq869-U.js} +1 -1
- package/dist/client/assets/{use-view-mode-CGVnT9_E.js → use-view-mode-BdHCAuqF.js} +1 -1
- package/dist/client/assets/{use-virtual-mcp-yKBJMfWy.js → use-virtual-mcp-CsUdwa4f.js} +1 -1
- package/dist/client/assets/useInfiniteQuery-DdMepkKG.js +1 -0
- package/dist/client/assets/{useRouterState-DsPU_744.js → useRouterState-Yic7byf9.js} +1 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-D1XLCNC_.js +1 -0
- package/dist/client/assets/{users-CGCQ7jJj.js → users-BB1MbXhj.js} +1 -1
- package/dist/client/assets/{variant-calendar-CS9DD7EC.js → variant-calendar-BbNi68Dz.js} +1 -1
- package/dist/client/assets/{view-mode-toggle-COn4LVUv.js → view-mode-toggle-hj9LNRra.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/connection-card-DF4qoD2Y.js +0 -1
- package/dist/client/assets/index-juR1O0AE.js +0 -1
- package/dist/client/assets/record-editor-Dyyr8Quz.js +0 -1
- package/dist/client/assets/registry-Cmni94EC.js +0 -2
- package/dist/client/assets/store-registry-D5NeoOqy.js +0 -2
- package/dist/client/assets/useInfiniteQuery-CtOu1pb4.js +0 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-JBD_8V_N.js +0 -1
package/dist/server/cli.js
CHANGED
|
@@ -1332,7 +1332,7 @@ Usage: deco services <up|down|status>`),process.exit(1)}}var mc1=O(()=>{Vx()});f
|
|
|
1332
1332
|
`.execute($);if(Number(W.rows[0]?.cnt)===0){console.warn(`Failed to migrate ${J}/${K}, keeping in old table`);continue}}await Qb`
|
|
1333
1333
|
DELETE FROM kysely_migration WHERE name = ${X}
|
|
1334
1334
|
`.execute($)}}async function Wn1($){await lc6($),await dc6($);let Z=new Jn1({db:$,provider:{getMigrations:()=>Promise.resolve(ol0)}}),{error:X,results:Q}=await Z.migrateToLatest(),Y=0;if(Q?.forEach((G)=>{if(G.status==="Success")Y++;else if(G.status==="Error")console.error(`Failed to execute migration "${G.migrationName}"`)}),X)throw console.error("Failed to migrate"),console.error(X),X;return Y}async function mc6($){let{keepOpen:Z=!1,database:X,skipBetterAuth:Q=!1}=$??{},Y="skipped";if(!Q&&!X)Y=await jh0();let G=X??N6(),J=async()=>{if(!Z&&!X)await Ow(G).catch((K)=>{console.warn("Warning: Error closing database:",K)})};try{let K=await Wn1(G.db);return await J(),{betterAuth:Y,kysely:K}}catch(K){throw await J(),K}}async function ic6(){let $=N6(),Z=new Jn1({db:$.db,provider:{getMigrations:()=>Promise.resolve(ol0)}}),{error:X,results:Q}=await Z.migrateDown();if(Q?.forEach((Y)=>{if(Y.status==="Success")console.log(`\u2705 Migration "${Y.migrationName}" rolled back successfully`);else if(Y.status==="Error")console.error(`\u274C Failed to rollback migration "${Y.migrationName}"`)}),X)throw console.error("Failed to rollback migration"),console.error(X),X}var Nn1=O(()=>{Gn1();Ph0();o7()});async function a50($){let Z={...process.env},X=m00($,Z);console.log(RF1(X.settings.encryptionKey));let Q=X.settings.betterAuthSecret||(X.settings.localMode?Pd1(X.settings.dataDir):""),{ensureServices:Y}=await Promise.resolve().then(() => (K50(),J50)),{outputs:G,services:J}=await Y({home:X.settings.dataDir,externalDatabaseUrl:X.externalDatabaseUrl,externalNatsUrl:X.externalNatsUrl});if(!X.skipMigrations){let{migrateBetterAuth:W}=await Promise.resolve().then(() => (Ph0(),Td1));await W(G.databaseUrl);let{createDatabase:H}=await Promise.resolve().then(() => (o7(),hl1)),{migrateToLatest:N}=await Promise.resolve().then(() => (Nn1(),Hn1)),U=H(G.databaseUrl);await N({keepOpen:!0,database:U,skipBetterAuth:!0})}let K={...X.settings,betterAuthSecret:Q,databaseUrl:G.databaseUrl,natsUrls:G.natsUrls,...G.s3?{s3Endpoint:G.s3.endpoint,s3Bucket:G.s3.bucket,s3AccessKeyId:G.s3.accessKeyId,s3SecretAccessKey:G.s3.secretAccessKey,s3ForcePathStyle:G.s3.forcePathStyle}:{},...G.natsTunnel?{natsPublicUrl:G.natsTunnel.publicUrl,natsAccountJwt:G.natsTunnel.accountJwt,natsAccountSigningKey:G.natsTunnel.accountSigningKey,natsOperatorJwt:G.natsTunnel.operatorJwt,natsTunnelPublicEnabled:!0,natsCredsPath:G.natsTunnel.credsPath}:{}};return ic1(K),{settings:K,services:J.map((W)=>({name:W.name==="PostgreSQL"?"Postgres":W.name,port:W.port})),managedServiceNames:J.filter((W)=>W.owner==="managed").map((W)=>W.name)}}var rl0=O(()=>{Vx();Ad1();b8()});var wn1={};B0(wn1,{updateService:()=>oD,subscribeCliState:()=>el0,setTuiConsoleIntercepted:()=>s50,setServerUrl:()=>Vm,setMigrationsDone:()=>km,setDevMode:()=>tc6,resetCliStateForTests:()=>nc6,isTuiConsoleIntercepted:()=>e50,getCliState:()=>sl0,addLogEntry:()=>jw});function Un1(){return{services:[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}],migrationsStatus:"pending",serverUrl:null,logs:[]}}function nc6(){_Q=Un1()}function pc6(){return[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}]}function Mm(){for(let $ of al0)$()}function sl0(){return _Q}function el0($){return al0.add($),()=>al0.delete($)}function oD($){_Q={..._Q,services:_Q.services.map((Z)=>Z.name===$.name?$:Z)},Mm()}function km(){_Q={..._Q,migrationsStatus:"done"},Mm()}function Vm($){_Q={..._Q,serverUrl:$},Mm()}function jw($){let Z=[..._Q.logs,$];_Q={..._Q,logs:Z.length>500?Z.slice(-500):Z},Mm()}function tc6(){_Q={..._Q,services:[...pc6(),{name:"API",status:"pending",port:0},{name:"Vite",status:"pending",port:0}]},Mm()}function s50($){Fn1=$}function e50(){return Fn1}var _Q,al0,Fn1=!1;var rD=O(()=>{_Q=Un1();al0=new Set});import{createServer as Bn1}from"net";function oc6($){return new Promise((Z)=>{let X=Bn1();X.once("error",()=>Z(!1)),X.listen($,"0.0.0.0",()=>{X.close(()=>Z(!0))})})}async function Sm($){if(await oc6($))return $;let Z=await new Promise((X,Q)=>{let Y=Bn1();Y.once("error",Q),Y.listen(0,"0.0.0.0",()=>{let G=Y.address(),J=typeof G==="object"&&G?G.port:0;Y.close(()=>X(J))})});return console.warn(`Port ${$} is in use, using port ${Z} instead.`),Z}var $d0=()=>{};function Cm($){return $.replace(/\x1b\[[0-9;]*m/g,"")}var Zd0={};B0(Zd0,{startDevServer:()=>ac6});import{join as rc6}from"path";function On1($){let Z=$.getReader(),X=new TextDecoder,Q="";function Y(){let G=Q.split(`
|
|
1335
|
-
`);Q=G.pop()??"";for(let J of G){let K=Cm(J).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;jw({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:K})}}(async()=>{for(;;){let{done:G,value:J}=await Z.read();if(G)break;Q+=X.decode(J,{stream:!0}),Y()}if(Q.trim()){let G=Cm(Q).replace(/^\[\d+\]\s*/,"").trim();if(G)jw({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:G})}})()}async function ac6($){let{baseUrl:Z,noTui:X}=$,Q=process.env.HOST==="0.0.0.0"&&Boolean(process.env.PORT),Y=Q?process.env.PORT:$.vitePort,G=Z||`http://localhost:${Y}`,J=Q?await Sm(Number(Y)+1):await Sm(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await a50({port:String(J),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let L of W)oD({name:L.name,status:"ready",port:L.port});km();let N=rc6(import.meta.dir,"..","..","..","..",".."),U=X===!0,F=Bun.spawn(["bun","run","dev:servers"],{cwd:N,env:{...process.env,PORT:String(K.port),VITE_PORT:String(Y),DATABASE_URL:K.databaseUrl,NATS_URL:K.natsUrls.join(","),NODE_ENV:K.nodeEnv,BASE_URL:G,DECOCMS_LOCAL_MODE:String(K.localMode),DECOCMS_HOME:K.dataDir,DATA_DIR:K.dataDir,DECO_CLI:"1",...K.betterAuthSecret?{BETTER_AUTH_SECRET:K.betterAuthSecret}:{},...K.s3Endpoint?{S3_ENDPOINT:K.s3Endpoint,S3_BUCKET:K.s3Bucket??"",S3_ACCESS_KEY_ID:K.s3AccessKeyId??"",S3_SECRET_ACCESS_KEY:K.s3SecretAccessKey??"",S3_FORCE_PATH_STYLE:String(K.s3ForcePathStyle)}:{},...K.natsPublicUrl&&K.natsAccountJwt&&K.natsAccountSigningKey?{NATS_PUBLIC_URL:K.natsPublicUrl,NATS_ACCOUNT_JWT:K.natsAccountJwt,NATS_ACCOUNT_SIGNING_KEY:K.natsAccountSigningKey,NATS_OPERATOR_JWT:K.natsOperatorJwt??"",NATS_TUNNEL_PUBLIC_ENABLED:"true",...K.natsCredsPath?{NATS_CREDS:K.natsCredsPath}:{}}:{}},stdio:["inherit",U?"inherit":"pipe",U?"inherit":"pipe"]});if(!U)On1(F.stdout),On1(F.stderr);Vm(G),oD({name:"Vite",status:"ready",port:Number(Y)}),oD({name:"API",status:"ready",port:Number(K.port)});let B=async(L)=>{if(F.kill(L),await F.exited,H.length>0){let{stopServices:D}=await Promise.resolve().then(() => (K50(),J50));await D(K.dataDir)}};return process.on("SIGINT",()=>B("SIGINT")),process.on("SIGTERM",()=>B("SIGTERM")),{port:Number(Y),process:F}}var Xd0=O(()=>{rl0();rD();$d0()});var $90;var Qd0=O(()=>{$90={name:"decocms",version:"4.204.8",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@nats-io/jwt":"0.0.10-5","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});import{Box as ec6,Text as Ln1}from"ink";import{jsx as $l6,jsxs as Dn1}from"react/jsx-runtime";function En1({version:$}){return Dn1(ec6,{flexDirection:"column",marginTop:1,children:[k50.map((Z,X)=>$l6(Ln1,{color:V50[X],children:Z},X)),Dn1(Ln1,{dimColor:!0,children:[" v",$]})]})}var zn1=O(()=>{Lm()});import{Box as aD,Text as Pw}from"ink";import{Spinner as Zl6}from"@inkjs/ui";import{jsx as lY,jsxs as Yb}from"react/jsx-runtime";function jn1({status:$}){if($==="pending")return lY(Zl6,{label:""});return lY(Pw,{color:"green",children:"\u2713"})}function Xl6($){return`${$.name}: ${$.port||"...."}`}function Pn1({services:$,migrationsStatus:Z,home:X,serverUrl:Q}){return Yb(aD,{flexDirection:"column",paddingBottom:1,children:[lY(En1,{version:$90.version}),lY(aD,{marginBottom:1,children:lY(Pw,{dimColor:!0,children:"\u2500".repeat(80)})}),lY(aD,{children:Yb(Pw,{dimColor:!0,children:["Home: ",X]})}),Yb(aD,{gap:2,children:[$.map((Y)=>Yb(aD,{gap:1,children:[lY(Pw,{children:Xl6(Y)}),lY(jn1,{status:Y.status})]},Y.name)),Yb(aD,{gap:1,children:[lY(Pw,{children:"Migrations"}),lY(jn1,{status:Z})]})]}),lY(aD,{children:Q?Yb(Pw,{children:["Open in browser: ",lY(Pw,{color:"cyan",children:Q})]}):lY(Pw,{dimColor:!0,children:"Starting..."})})]})}var An1=O(()=>{Qd0();zn1()});import{Box as Ql6,Text as _m}from"ink";import{jsx as Yd0,jsxs as Gd0}from"react/jsx-runtime";function Yl6($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function Tn1({logs:$}){return Yd0(Ql6,{flexDirection:"column",children:$.map((Z,X)=>{if(Z.rawLine)return Yd0(_m,{dimColor:!0,children:Z.rawLine},X);let Q=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return Gd0(_m,{children:[Gd0(_m,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),Yd0(_m,{color:Yl6(Z.status),children:Z.status}),Gd0(_m,{dimColor:!0,children:[" ",Q.padStart(8)]})]},X)})})}var Rn1=()=>{};var Jd0={};B0(Jd0,{App:()=>Kl6});import{Box as Gl6}from"ink";import{useSyncExternalStore as Jl6}from"react";import{jsx as In1,jsxs as Wl6}from"react/jsx-runtime";function Kl6({home:$}){let Z=Jl6(el0,sl0);return Wl6(Gl6,{flexDirection:"column",children:[In1(Pn1,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),In1(Tn1,{logs:Z.logs})]})}var Kd0=O(()=>{An1();Rn1();rD()});var OJ="thread-gate",fN="decopilot-hosted-harness",tG="automations",Aw="background-tools";var qn1="7";function Mn1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:qn1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var kn1=()=>{};function Hl6(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function Wd0($,Z){for(let X=0;X<$.length;X++){let Q=$[X];if(Q===void 0)continue;if(Q===Z)return $[X+1];if(Q.startsWith(`${Z}=`))return Q.slice(Z.length+1)}return}function Vn1(){let $=Hl6();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:Wd0($,"--cpu-prof-dir")??process.cwd(),name:Wd0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(Wd0($,"--cpu-prof-interval")??1000),note:"profile is written on process exit"}));return}if(process.env.CPU_PROFILE)console.warn(JSON.stringify({msg:"cpu-profiling-requested-but-inactive",hint:'CPU profiling is a Bun launch flag. Set BUN_OPTIONS="--cpu-prof --cpu-prof-md --cpu-prof-dir=/tmp" before starting the process.'}))}function Sn1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let X=iD();if(!X)return;let Q={};try{let{heapStats:Y}=await import("bun:jsc"),G=Y(),J=Object.entries(G.objectTypeCounts).sort((K,W)=>W[1]-K[1]).slice(0,20);Q={objectCount:G.objectCount,heapSize:G.heapSize,top:Object.fromEntries(J)}}catch{}console.log(JSON.stringify({msg:"heap-watch",ts:new Date().toISOString(),uptimeS:Math.round(process.uptime()),rss:X.rss,heapUsed:X.heapUsed,heapTotal:X.heapTotal,external:X.external,arrayBuffers:X.arrayBuffers,...Q}))};return Z().catch(()=>{}),Z90=setInterval(()=>void Z().catch(()=>{}),$),Z90.unref?.(),process.on("SIGUSR2",()=>{try{let X=Bun.generateHeapSnapshot("v8"),Q=typeof X==="string"?X:JSON.stringify(X),Y=`/tmp/heap-${process.pid}-${Date.now()}.heapsnapshot`;Bun.write(Y,Q),console.log(JSON.stringify({msg:"heap-snapshot-written",path:Y}))}catch(X){console.error("[heap-watch] snapshot failed:",X)}}),()=>{if(Z90)clearInterval(Z90)}}var Z90;var Cn1=()=>{};import*as Nl6 from"bun:jsc";function _n1(){if(process.env.STALL_WATCHDOG!=="1")return()=>{};let $=Number(process.env.STALL_WATCHDOG_MS??100),Z=Number(process.env.STALL_WATCHDOG_TICK_MS??50);try{Ul6()}catch(G){return console.error("[stall-watchdog] failed to start sampling profiler:",G),()=>{}}let X,Q=performance.now()+Z,Y=()=>{let G=performance.now(),J=G-Q;Q=G+Z;let K=[];try{K=Fl6()?.traces??[]}catch{}if(J>$&&K.length>0){let W=new Map;for(let N of K){let U=N.frames.find((B)=>B.sourceURL&&!/Unknown Executable/.test(B.category??""))??N.frames[0];if(!U)continue;let F=(U.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),w=`${U.name??"?"} @ ${F}:${U.line??"?"}`;W.set(w,(W.get(w)??0)+1)}let H=[...W.entries()].sort((N,U)=>U[1]-N[1]).slice(0,8).map(([N,U])=>({frame:N,count:U}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(J),samplesInWindow:K.length,top:H}))}X=setTimeout(Y,Z),X.unref?.()};return X=setTimeout(Y,Z),X.unref?.(),()=>{if(X)clearTimeout(X)}}var Ul6,Fl6;var vn1=O(()=>{({startSamplingProfiler:Ul6,samplingProfilerStackTraces:Fl6}=Nl6)});function xn1(){Vn1();let $=[Sn1(),Cl1(),_n1()];return()=>{for(let Z of $)Z()}}var fn1=O(()=>{Nh0();Cn1();vn1()});var sD=_((bn1)=>{Object.defineProperty(bn1,"__esModule",{value:!0});bn1.RepublishHeaders=bn1.DirectMsgHeaders=bn1.JsHeaders=bn1.AdvisoryKind=void 0;bn1.isOrderedPushConsumerOptions=wl6;bn1.isPullConsumer=Bl6;bn1.isPushConsumer=Ol6;bn1.isBoundPushConsumerOptions=Ll6;function wl6($){if($&&typeof $==="object")return"name_prefix"in $||"deliver_subject_prefix"in $||"filter_subjects"in $||"filter_subject"in $||"deliver_policy"in $||"opt_start_seq"in $||"opt_start_time"in $||"replay_policy"in $||"inactive_threshold"in $||"headers_only"in $||"deliver_prefix"in $;return!1}function Bl6($){return $.isPullConsumer()}function Ol6($){return $.isPushConsumer()}function Ll6($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}bn1.AdvisoryKind={API:"api_audit",StreamAction:"stream_action",ConsumerAction:"consumer_action",SnapshotCreate:"snapshot_create",SnapshotComplete:"snapshot_complete",RestoreCreate:"restore_create",RestoreComplete:"restore_complete",MaxDeliver:"max_deliver",Terminated:"terminated",Ack:"consumer_ack",StreamLeaderElected:"stream_leader_elected",StreamQuorumLost:"stream_quorum_lost",ConsumerLeaderElected:"consumer_leader_elected",ConsumerQuorumLost:"consumer_quorum_lost"};bn1.JsHeaders={StreamSourceHdr:"Nats-Stream-Source",LastConsumerSeqHdr:"Nats-Last-Consumer",LastStreamSeqHdr:"Nats-Last-Stream",ConsumerStalledHdr:"Nats-Consumer-Stalled",MessageSizeHdr:"Nats-Msg-Size",RollupHdr:"Nats-Rollup",RollupValueSubject:"sub",RollupValueAll:"all",PendingMessagesHdr:"Nats-Pending-Messages",PendingBytesHdr:"Nats-Pending-Bytes",RequiredApiLevel:"Nats-Required-Api-Level"};bn1.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};bn1.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var dY=_((gn1)=>{Object.defineProperty(gn1,"__esModule",{value:!0});gn1.TD=gn1.TE=gn1.Empty=void 0;gn1.encode=Il6;gn1.decode=ql6;gn1.Empty=new Uint8Array(0);gn1.TE=new TextEncoder;gn1.TD=new TextDecoder;function Rl6(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}function Il6(...$){let Z=[];for(let X=0;X<$.length;X++)Z.push(gn1.TE.encode($[X]));if(Z.length===0)return gn1.Empty;if(Z.length===1)return Z[0];return Rl6(...Z)}function ql6($){if(!$||$.length===0)return"";return gn1.TD.decode($)}});var mY=_((cn1)=>{Object.defineProperty(cn1,"__esModule",{value:!0});cn1.errors=cn1.PermissionViolationError=cn1.NoRespondersError=cn1.TimeoutError=cn1.RequestError=cn1.ProtocolError=cn1.ConnectionError=cn1.DrainingConnectionError=cn1.ClosedConnectionError=cn1.AuthorizationError=cn1.UserAuthenticationExpiredError=cn1.InvalidOperationError=cn1.InvalidArgumentError=cn1.InvalidSubjectError=void 0;class Nd0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}cn1.InvalidSubjectError=Nd0;class X90 extends Error{constructor($,Z){super($,Z);this.name="InvalidArgumentError"}static format($,Z,X){if(Array.isArray(Z)&&Z.length>1)Z=Z[0];if(Array.isArray($))$=$.map((Q)=>`'${Q}'`),$=$.join(",");else $=`'${$}'`;return new X90(`${$} ${Z}`,X)}}cn1.InvalidArgumentError=X90;class Ud0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}cn1.InvalidOperationError=Ud0;class Q90 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new Q90($);return null}}cn1.UserAuthenticationExpiredError=Q90;class Y90 extends Error{constructor($,Z){super($,Z);this.name="AuthorizationError"}static parse($){let Z=["authorization violation","account authentication expired","authentication timeout"],X=$.toLowerCase();for(let Q=0;Q<Z.length;Q++)if(X.indexOf(Z[Q])!==-1)return new Y90($);return null}}cn1.AuthorizationError=Y90;class Fd0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}cn1.ClosedConnectionError=Fd0;class wd0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}cn1.DrainingConnectionError=wd0;class Bd0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}cn1.ConnectionError=Bd0;class Od0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}cn1.ProtocolError=Od0;class Ld0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof G90}}cn1.RequestError=Ld0;class Dd0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}cn1.TimeoutError=Dd0;class G90 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}cn1.NoRespondersError=G90;class J90 extends Error{operation;subject;queue;constructor($,Z,X,Q,Y){super($,Y);this.name="PermissionViolationError",this.operation=Z,this.subject=X,this.queue=Q}static parse($){if(($?$.toLowerCase():"").indexOf("permissions violation")===-1)return null;let X="publish",Q="",Y=void 0,G=$.match(/(Publish|Subscription) to "(\S+)"/);if(G){if(X=G[1].toLowerCase(),Q=G[2],X==="subscription"){let J=$.match(/using queue "(\S+)"/);if(J)Y=J[1]}}return new J90($,X,Q,Y)}}cn1.PermissionViolationError=J90;cn1.errors={AuthorizationError:Y90,ClosedConnectionError:Fd0,ConnectionError:Bd0,DrainingConnectionError:wd0,InvalidArgumentError:X90,InvalidOperationError:Ud0,InvalidSubjectError:Nd0,NoRespondersError:G90,PermissionViolationError:J90,ProtocolError:Od0,RequestError:Ld0,TimeoutError:Dd0,UserAuthenticationExpiredError:Q90}});var LJ=_((nn1)=>{Object.defineProperty(nn1,"__esModule",{value:!0});nn1.SimpleMutex=nn1.Perf=void 0;nn1.extend=dl6;nn1.render=ml6;nn1.timeout=il6;nn1.delay=nl6;nn1.deadline=pl6;nn1.deferred=zd0;nn1.debugDeferred=tl6;nn1.shuffle=ol6;nn1.collect=rl6;nn1.jitter=in1;nn1.backoff=al6;nn1.nanos=sl6;nn1.millis=el6;nn1.randomToken=Xd6;var ll6=dY(),Ed0=mY();function dl6($,...Z){for(let X=0;X<Z.length;X++){let Q=Z[X];Object.keys(Q).forEach(function(Y){$[Y]=Q[Y]})}return $}function ml6($){return ll6.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function il6($,Z=!0){let X=Z?new Ed0.TimeoutError:null,Q,Y,G=new Promise((J,K)=>{Q={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(X===null)K(new Ed0.TimeoutError);else K(X)},$)});return Object.assign(G,Q)}function nl6($=0){let Z,X=new Promise((Q)=>{let Y=setTimeout(()=>{Q()},$);Z={cancel:()=>{if(Y)clearTimeout(Y),Q()}}});return Object.assign(X,Z)}async function pl6($,Z=1000){let X=zd0(),Q=setTimeout(()=>{X.reject(new Ed0.TimeoutError)},Z);try{return await Promise.race([$,X])}finally{clearTimeout(Q)}}function zd0(){let $={},Z=new Promise((X,Q)=>{$={resolve:X,reject:Q}});return Object.assign(Z,$)}function tl6(){let $={},Z=new Promise((X,Q)=>{$={resolve:(Y)=>{console.trace("resolve",Y),X(Y)},reject:(Y)=>{console.trace("reject"),Q(Y)}}});return Object.assign(Z,$)}function ol6($){for(let Z=$.length-1;Z>0;Z--){let X=Math.floor(Math.random()*(Z+1));[$[Z],$[X]]=[$[X],$[Z]]}return $}async function rl6($){let Z=[];for await(let X of $)Z.push(X);return Z}class dn1{timers;measures;constructor(){this.timers=new Map,this.measures=new Map}mark($){this.timers.set($,performance.now())}measure($,Z,X){let Q=this.timers.get(Z);if(Q===void 0)throw Error(`${Z} is not defined`);let Y=this.timers.get(X);if(Y===void 0)throw Error(`${X} is not defined`);this.measures.set($,Y-Q)}getEntries(){let $=[];return this.measures.forEach((Z,X)=>{$.push({name:X,duration:Z})}),$}}nn1.Perf=dn1;class mn1{max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=zd0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}nn1.SimpleMutex=mn1;function in1($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function al6($=[0,250,250,500,500,3000,5000]){if(!Array.isArray($))$=[0,250,250,500,500,3000,5000];let Z=$.length-1;return{backoff(X){return in1(X>Z?$[Z]:$[X])}}}function sl6($){return $*1e6}function el6($){return Math.floor($/1e6)}var $d6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",bN=new Uint8Array(62);for(let $=0;$<62;$++)bN[$]=$d6.charCodeAt($);var Zd6=218340105584896;function Xd6(){let $=Math.floor(Math.random()*Zd6),Z=$%62,X=bN[Z];$=($-Z)/62,Z=$%62;let Q=bN[Z];$=($-Z)/62,Z=$%62;let Y=bN[Z];$=($-Z)/62,Z=$%62;let G=bN[Z];$=($-Z)/62,Z=$%62;let J=bN[Z];$=($-Z)/62,Z=$%62;let K=bN[Z];$=($-Z)/62,Z=$%62;let W=bN[Z];$=($-Z)/62;let H=bN[$];return String.fromCharCode(X,Q,Y,G,J,K,W,H)}});var $p1=_((sn1)=>{Object.defineProperty(sn1,"__esModule",{value:!0});sn1.nuid=sn1.NuidImpl=void 0;var Ed6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",Tw=62,W90=12,rn1=10,tn1=33,zd6=333,on1=W90+rn1,Pd0=new Uint8Array(Tw);for(let $=0;$<Tw;$++)Pd0[$]=Ed6.charCodeAt($);var K90=4294967296,an1=BigInt(Tw)**BigInt(rn1),vm=Number(an1/(1n<<32n)),jd0=Number(an1%(1n<<32n));function jd6($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function Pd6($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else jd6($)}class Ad0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(on1),this.cbuf=new Uint8Array(W90),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(vm+1)),this.seqLo=Math.floor(Math.random()*K90);while($++<8&&this.seqHi===vm&&this.seqLo>=jd0);if(this.seqHi===vm&&this.seqLo>=jd0)this.seqLo=0;this.inc=Math.random()*(zd6-tn1)+tn1|0}setPre(){Pd6(this.cbuf);for(let $=0;$<W90;$++)this.buf[$]=Pd0[this.cbuf[$]%Tw]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let X=on1-1;X>=W90;X--){let Q=Math.floor($/Tw),G=($-Q*Tw)*K90+Z,J=Math.floor(G/Tw),K=G-J*Tw;this.buf[X]=Pd0[K],$=Q,Z=J}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=K90)this.seqLo-=K90,this.seqHi+=1;if(this.seqHi>vm||this.seqHi===vm&&this.seqLo>=jd0)this.setPre(),this.initSeqAndInc();this.fillSeq();let $=this.buf;return String.fromCharCode($[0],$[1],$[2],$[3],$[4],$[5],$[6],$[7],$[8],$[9],$[10],$[11],$[12],$[13],$[14],$[15],$[16],$[17],$[18],$[19],$[20],$[21])}reset(){this.init()}}sn1.NuidImpl=Ad0;sn1.nuid=new Ad0});var Yp1=_((Xp1)=>{Object.defineProperty(Xp1,"__esModule",{value:!0});Xp1.nuid=Xp1.Nuid=void 0;var Zp1=$p1();Xp1.Nuid=Zp1.NuidImpl;Xp1.nuid=Zp1.nuid});var N90=_((H90)=>{Object.defineProperty(H90,"__esModule",{value:!0});H90.nuid=H90.Nuid=void 0;var Gp1=Yp1();Object.defineProperty(H90,"Nuid",{enumerable:!0,get:function(){return Gp1.Nuid}});Object.defineProperty(H90,"nuid",{enumerable:!0,get:function(){return Gp1.nuid}})});var Rw=_((Jp1)=>{Object.defineProperty(Jp1,"__esModule",{value:!0});Jp1.DEFAULT_HOST=Jp1.DEFAULT_PORT=Jp1.Match=void 0;Jp1.syncIterator=Md6;Jp1.createInbox=kd6;var Id6=N90(),qd6=mY();Jp1.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function Md6($){let Z=$[Symbol.asyncIterator]();return{async next(){let X=await Z.next();if(X.done)return Promise.resolve(null);return Promise.resolve(X.value)}}}function kd6($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw qd6.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${Id6.nuid.next()}`}Jp1.DEFAULT_PORT=4222;Jp1.DEFAULT_HOST="127.0.0.1"});var xm=_((Np1)=>{Object.defineProperty(Np1,"__esModule",{value:!0});Np1.DataBuffer=void 0;var Wp1=dY();class Hp1{buffers;byteLength;constructor(){this.buffers=[],this.byteLength=0}static concat(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}static fromAscii($){if(!$)$="";return Wp1.TE.encode($)}static toAscii($){return Wp1.TD.decode($)}reset(){this.buffers.length=0,this.byteLength=0}pack(){if(this.buffers.length>1){let $=new Uint8Array(this.byteLength),Z=0;for(let X=0;X<this.buffers.length;X++)$.set(this.buffers[X],Z),Z+=this.buffers[X].length;this.buffers.length=0,this.buffers.push($)}}shift(){if(this.buffers.length){let $=this.buffers.shift();if($)return this.byteLength-=$.length,$}return new Uint8Array(0)}drain($){if(this.buffers.length){this.pack();let Z=this.buffers.pop();if(Z){let X=this.byteLength;if($===void 0||$>X)$=X;let Q=Z.subarray(0,$);if(X>$)this.buffers.push(Z.subarray($));return this.byteLength=X-$,Q}}return new Uint8Array(0)}fill($,...Z){if($)this.buffers.push($),this.byteLength+=$.length;for(let X=0;X<Z.length;X++)if(Z[X]&&Z[X].length)this.buffers.push(Z[X]),this.byteLength+=Z[X].length}peek(){if(this.buffers.length)return this.pack(),this.buffers[0];return new Uint8Array(0)}size(){return this.byteLength}length(){return this.buffers.length}}Np1.DataBuffer=Hp1});var eD=_((wp1)=>{Object.defineProperty(wp1,"__esModule",{value:!0});wp1.LF=wp1.CR=wp1.CRLF=wp1.CR_LF_LEN=wp1.CR_LF=void 0;wp1.setTransportFactory=bd6;wp1.defaultPort=yd6;wp1.getUrlParseFn=gd6;wp1.newTransport=hd6;wp1.getResolveFn=ud6;wp1.protoLen=Fp1;wp1.extractProtocolMessage=cd6;var vd6=dY(),xd6=Rw(),fd6=xm(),iY;function bd6($){iY=$}function yd6(){return iY!==void 0&&iY.defaultPort!==void 0?iY.defaultPort:xd6.DEFAULT_PORT}function gd6(){return iY!==void 0&&iY.urlParseFn?iY.urlParseFn:void 0}function hd6(){if(!iY||typeof iY.factory!=="function")throw Error("transport fn is not set");return iY.factory()}function ud6(){return iY!==void 0&&iY.dnsResolveFn?iY.dnsResolveFn:void 0}wp1.CR_LF=`\r
|
|
1335
|
+
`);Q=G.pop()??"";for(let J of G){let K=Cm(J).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;jw({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:K})}}(async()=>{for(;;){let{done:G,value:J}=await Z.read();if(G)break;Q+=X.decode(J,{stream:!0}),Y()}if(Q.trim()){let G=Cm(Q).replace(/^\[\d+\]\s*/,"").trim();if(G)jw({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:G})}})()}async function ac6($){let{baseUrl:Z,noTui:X}=$,Q=process.env.HOST==="0.0.0.0"&&Boolean(process.env.PORT),Y=Q?process.env.PORT:$.vitePort,G=Z||`http://localhost:${Y}`,J=Q?await Sm(Number(Y)+1):await Sm(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await a50({port:String(J),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let L of W)oD({name:L.name,status:"ready",port:L.port});km();let N=rc6(import.meta.dir,"..","..","..","..",".."),U=X===!0,F=Bun.spawn(["bun","run","dev:servers"],{cwd:N,env:{...process.env,PORT:String(K.port),VITE_PORT:String(Y),DATABASE_URL:K.databaseUrl,NATS_URL:K.natsUrls.join(","),NODE_ENV:K.nodeEnv,BASE_URL:G,DECOCMS_LOCAL_MODE:String(K.localMode),DECOCMS_HOME:K.dataDir,DATA_DIR:K.dataDir,DECO_CLI:"1",...K.betterAuthSecret?{BETTER_AUTH_SECRET:K.betterAuthSecret}:{},...K.s3Endpoint?{S3_ENDPOINT:K.s3Endpoint,S3_BUCKET:K.s3Bucket??"",S3_ACCESS_KEY_ID:K.s3AccessKeyId??"",S3_SECRET_ACCESS_KEY:K.s3SecretAccessKey??"",S3_FORCE_PATH_STYLE:String(K.s3ForcePathStyle)}:{},...K.natsPublicUrl&&K.natsAccountJwt&&K.natsAccountSigningKey?{NATS_PUBLIC_URL:K.natsPublicUrl,NATS_ACCOUNT_JWT:K.natsAccountJwt,NATS_ACCOUNT_SIGNING_KEY:K.natsAccountSigningKey,NATS_OPERATOR_JWT:K.natsOperatorJwt??"",NATS_TUNNEL_PUBLIC_ENABLED:"true",...K.natsCredsPath?{NATS_CREDS:K.natsCredsPath}:{}}:{}},stdio:["inherit",U?"inherit":"pipe",U?"inherit":"pipe"]});if(!U)On1(F.stdout),On1(F.stderr);Vm(G),oD({name:"Vite",status:"ready",port:Number(Y)}),oD({name:"API",status:"ready",port:Number(K.port)});let B=async(L)=>{if(F.kill(L),await F.exited,H.length>0){let{stopServices:D}=await Promise.resolve().then(() => (K50(),J50));await D(K.dataDir)}};return process.on("SIGINT",()=>B("SIGINT")),process.on("SIGTERM",()=>B("SIGTERM")),{port:Number(Y),process:F}}var Xd0=O(()=>{rl0();rD();$d0()});var $90;var Qd0=O(()=>{$90={name:"decocms",version:"4.204.10",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@nats-io/jwt":"0.0.10-5","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});import{Box as ec6,Text as Ln1}from"ink";import{jsx as $l6,jsxs as Dn1}from"react/jsx-runtime";function En1({version:$}){return Dn1(ec6,{flexDirection:"column",marginTop:1,children:[k50.map((Z,X)=>$l6(Ln1,{color:V50[X],children:Z},X)),Dn1(Ln1,{dimColor:!0,children:[" v",$]})]})}var zn1=O(()=>{Lm()});import{Box as aD,Text as Pw}from"ink";import{Spinner as Zl6}from"@inkjs/ui";import{jsx as lY,jsxs as Yb}from"react/jsx-runtime";function jn1({status:$}){if($==="pending")return lY(Zl6,{label:""});return lY(Pw,{color:"green",children:"\u2713"})}function Xl6($){return`${$.name}: ${$.port||"...."}`}function Pn1({services:$,migrationsStatus:Z,home:X,serverUrl:Q}){return Yb(aD,{flexDirection:"column",paddingBottom:1,children:[lY(En1,{version:$90.version}),lY(aD,{marginBottom:1,children:lY(Pw,{dimColor:!0,children:"\u2500".repeat(80)})}),lY(aD,{children:Yb(Pw,{dimColor:!0,children:["Home: ",X]})}),Yb(aD,{gap:2,children:[$.map((Y)=>Yb(aD,{gap:1,children:[lY(Pw,{children:Xl6(Y)}),lY(jn1,{status:Y.status})]},Y.name)),Yb(aD,{gap:1,children:[lY(Pw,{children:"Migrations"}),lY(jn1,{status:Z})]})]}),lY(aD,{children:Q?Yb(Pw,{children:["Open in browser: ",lY(Pw,{color:"cyan",children:Q})]}):lY(Pw,{dimColor:!0,children:"Starting..."})})]})}var An1=O(()=>{Qd0();zn1()});import{Box as Ql6,Text as _m}from"ink";import{jsx as Yd0,jsxs as Gd0}from"react/jsx-runtime";function Yl6($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function Tn1({logs:$}){return Yd0(Ql6,{flexDirection:"column",children:$.map((Z,X)=>{if(Z.rawLine)return Yd0(_m,{dimColor:!0,children:Z.rawLine},X);let Q=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return Gd0(_m,{children:[Gd0(_m,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),Yd0(_m,{color:Yl6(Z.status),children:Z.status}),Gd0(_m,{dimColor:!0,children:[" ",Q.padStart(8)]})]},X)})})}var Rn1=()=>{};var Jd0={};B0(Jd0,{App:()=>Kl6});import{Box as Gl6}from"ink";import{useSyncExternalStore as Jl6}from"react";import{jsx as In1,jsxs as Wl6}from"react/jsx-runtime";function Kl6({home:$}){let Z=Jl6(el0,sl0);return Wl6(Gl6,{flexDirection:"column",children:[In1(Pn1,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),In1(Tn1,{logs:Z.logs})]})}var Kd0=O(()=>{An1();Rn1();rD()});var OJ="thread-gate",fN="decopilot-hosted-harness",tG="automations",Aw="background-tools";var qn1="7";function Mn1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:qn1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var kn1=()=>{};function Hl6(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function Wd0($,Z){for(let X=0;X<$.length;X++){let Q=$[X];if(Q===void 0)continue;if(Q===Z)return $[X+1];if(Q.startsWith(`${Z}=`))return Q.slice(Z.length+1)}return}function Vn1(){let $=Hl6();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:Wd0($,"--cpu-prof-dir")??process.cwd(),name:Wd0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(Wd0($,"--cpu-prof-interval")??1000),note:"profile is written on process exit"}));return}if(process.env.CPU_PROFILE)console.warn(JSON.stringify({msg:"cpu-profiling-requested-but-inactive",hint:'CPU profiling is a Bun launch flag. Set BUN_OPTIONS="--cpu-prof --cpu-prof-md --cpu-prof-dir=/tmp" before starting the process.'}))}function Sn1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let X=iD();if(!X)return;let Q={};try{let{heapStats:Y}=await import("bun:jsc"),G=Y(),J=Object.entries(G.objectTypeCounts).sort((K,W)=>W[1]-K[1]).slice(0,20);Q={objectCount:G.objectCount,heapSize:G.heapSize,top:Object.fromEntries(J)}}catch{}console.log(JSON.stringify({msg:"heap-watch",ts:new Date().toISOString(),uptimeS:Math.round(process.uptime()),rss:X.rss,heapUsed:X.heapUsed,heapTotal:X.heapTotal,external:X.external,arrayBuffers:X.arrayBuffers,...Q}))};return Z().catch(()=>{}),Z90=setInterval(()=>void Z().catch(()=>{}),$),Z90.unref?.(),process.on("SIGUSR2",()=>{try{let X=Bun.generateHeapSnapshot("v8"),Q=typeof X==="string"?X:JSON.stringify(X),Y=`/tmp/heap-${process.pid}-${Date.now()}.heapsnapshot`;Bun.write(Y,Q),console.log(JSON.stringify({msg:"heap-snapshot-written",path:Y}))}catch(X){console.error("[heap-watch] snapshot failed:",X)}}),()=>{if(Z90)clearInterval(Z90)}}var Z90;var Cn1=()=>{};import*as Nl6 from"bun:jsc";function _n1(){if(process.env.STALL_WATCHDOG!=="1")return()=>{};let $=Number(process.env.STALL_WATCHDOG_MS??100),Z=Number(process.env.STALL_WATCHDOG_TICK_MS??50);try{Ul6()}catch(G){return console.error("[stall-watchdog] failed to start sampling profiler:",G),()=>{}}let X,Q=performance.now()+Z,Y=()=>{let G=performance.now(),J=G-Q;Q=G+Z;let K=[];try{K=Fl6()?.traces??[]}catch{}if(J>$&&K.length>0){let W=new Map;for(let N of K){let U=N.frames.find((B)=>B.sourceURL&&!/Unknown Executable/.test(B.category??""))??N.frames[0];if(!U)continue;let F=(U.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),w=`${U.name??"?"} @ ${F}:${U.line??"?"}`;W.set(w,(W.get(w)??0)+1)}let H=[...W.entries()].sort((N,U)=>U[1]-N[1]).slice(0,8).map(([N,U])=>({frame:N,count:U}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(J),samplesInWindow:K.length,top:H}))}X=setTimeout(Y,Z),X.unref?.()};return X=setTimeout(Y,Z),X.unref?.(),()=>{if(X)clearTimeout(X)}}var Ul6,Fl6;var vn1=O(()=>{({startSamplingProfiler:Ul6,samplingProfilerStackTraces:Fl6}=Nl6)});function xn1(){Vn1();let $=[Sn1(),Cl1(),_n1()];return()=>{for(let Z of $)Z()}}var fn1=O(()=>{Nh0();Cn1();vn1()});var sD=_((bn1)=>{Object.defineProperty(bn1,"__esModule",{value:!0});bn1.RepublishHeaders=bn1.DirectMsgHeaders=bn1.JsHeaders=bn1.AdvisoryKind=void 0;bn1.isOrderedPushConsumerOptions=wl6;bn1.isPullConsumer=Bl6;bn1.isPushConsumer=Ol6;bn1.isBoundPushConsumerOptions=Ll6;function wl6($){if($&&typeof $==="object")return"name_prefix"in $||"deliver_subject_prefix"in $||"filter_subjects"in $||"filter_subject"in $||"deliver_policy"in $||"opt_start_seq"in $||"opt_start_time"in $||"replay_policy"in $||"inactive_threshold"in $||"headers_only"in $||"deliver_prefix"in $;return!1}function Bl6($){return $.isPullConsumer()}function Ol6($){return $.isPushConsumer()}function Ll6($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}bn1.AdvisoryKind={API:"api_audit",StreamAction:"stream_action",ConsumerAction:"consumer_action",SnapshotCreate:"snapshot_create",SnapshotComplete:"snapshot_complete",RestoreCreate:"restore_create",RestoreComplete:"restore_complete",MaxDeliver:"max_deliver",Terminated:"terminated",Ack:"consumer_ack",StreamLeaderElected:"stream_leader_elected",StreamQuorumLost:"stream_quorum_lost",ConsumerLeaderElected:"consumer_leader_elected",ConsumerQuorumLost:"consumer_quorum_lost"};bn1.JsHeaders={StreamSourceHdr:"Nats-Stream-Source",LastConsumerSeqHdr:"Nats-Last-Consumer",LastStreamSeqHdr:"Nats-Last-Stream",ConsumerStalledHdr:"Nats-Consumer-Stalled",MessageSizeHdr:"Nats-Msg-Size",RollupHdr:"Nats-Rollup",RollupValueSubject:"sub",RollupValueAll:"all",PendingMessagesHdr:"Nats-Pending-Messages",PendingBytesHdr:"Nats-Pending-Bytes",RequiredApiLevel:"Nats-Required-Api-Level"};bn1.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};bn1.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var dY=_((gn1)=>{Object.defineProperty(gn1,"__esModule",{value:!0});gn1.TD=gn1.TE=gn1.Empty=void 0;gn1.encode=Il6;gn1.decode=ql6;gn1.Empty=new Uint8Array(0);gn1.TE=new TextEncoder;gn1.TD=new TextDecoder;function Rl6(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}function Il6(...$){let Z=[];for(let X=0;X<$.length;X++)Z.push(gn1.TE.encode($[X]));if(Z.length===0)return gn1.Empty;if(Z.length===1)return Z[0];return Rl6(...Z)}function ql6($){if(!$||$.length===0)return"";return gn1.TD.decode($)}});var mY=_((cn1)=>{Object.defineProperty(cn1,"__esModule",{value:!0});cn1.errors=cn1.PermissionViolationError=cn1.NoRespondersError=cn1.TimeoutError=cn1.RequestError=cn1.ProtocolError=cn1.ConnectionError=cn1.DrainingConnectionError=cn1.ClosedConnectionError=cn1.AuthorizationError=cn1.UserAuthenticationExpiredError=cn1.InvalidOperationError=cn1.InvalidArgumentError=cn1.InvalidSubjectError=void 0;class Nd0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}cn1.InvalidSubjectError=Nd0;class X90 extends Error{constructor($,Z){super($,Z);this.name="InvalidArgumentError"}static format($,Z,X){if(Array.isArray(Z)&&Z.length>1)Z=Z[0];if(Array.isArray($))$=$.map((Q)=>`'${Q}'`),$=$.join(",");else $=`'${$}'`;return new X90(`${$} ${Z}`,X)}}cn1.InvalidArgumentError=X90;class Ud0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}cn1.InvalidOperationError=Ud0;class Q90 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new Q90($);return null}}cn1.UserAuthenticationExpiredError=Q90;class Y90 extends Error{constructor($,Z){super($,Z);this.name="AuthorizationError"}static parse($){let Z=["authorization violation","account authentication expired","authentication timeout"],X=$.toLowerCase();for(let Q=0;Q<Z.length;Q++)if(X.indexOf(Z[Q])!==-1)return new Y90($);return null}}cn1.AuthorizationError=Y90;class Fd0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}cn1.ClosedConnectionError=Fd0;class wd0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}cn1.DrainingConnectionError=wd0;class Bd0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}cn1.ConnectionError=Bd0;class Od0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}cn1.ProtocolError=Od0;class Ld0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof G90}}cn1.RequestError=Ld0;class Dd0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}cn1.TimeoutError=Dd0;class G90 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}cn1.NoRespondersError=G90;class J90 extends Error{operation;subject;queue;constructor($,Z,X,Q,Y){super($,Y);this.name="PermissionViolationError",this.operation=Z,this.subject=X,this.queue=Q}static parse($){if(($?$.toLowerCase():"").indexOf("permissions violation")===-1)return null;let X="publish",Q="",Y=void 0,G=$.match(/(Publish|Subscription) to "(\S+)"/);if(G){if(X=G[1].toLowerCase(),Q=G[2],X==="subscription"){let J=$.match(/using queue "(\S+)"/);if(J)Y=J[1]}}return new J90($,X,Q,Y)}}cn1.PermissionViolationError=J90;cn1.errors={AuthorizationError:Y90,ClosedConnectionError:Fd0,ConnectionError:Bd0,DrainingConnectionError:wd0,InvalidArgumentError:X90,InvalidOperationError:Ud0,InvalidSubjectError:Nd0,NoRespondersError:G90,PermissionViolationError:J90,ProtocolError:Od0,RequestError:Ld0,TimeoutError:Dd0,UserAuthenticationExpiredError:Q90}});var LJ=_((nn1)=>{Object.defineProperty(nn1,"__esModule",{value:!0});nn1.SimpleMutex=nn1.Perf=void 0;nn1.extend=dl6;nn1.render=ml6;nn1.timeout=il6;nn1.delay=nl6;nn1.deadline=pl6;nn1.deferred=zd0;nn1.debugDeferred=tl6;nn1.shuffle=ol6;nn1.collect=rl6;nn1.jitter=in1;nn1.backoff=al6;nn1.nanos=sl6;nn1.millis=el6;nn1.randomToken=Xd6;var ll6=dY(),Ed0=mY();function dl6($,...Z){for(let X=0;X<Z.length;X++){let Q=Z[X];Object.keys(Q).forEach(function(Y){$[Y]=Q[Y]})}return $}function ml6($){return ll6.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function il6($,Z=!0){let X=Z?new Ed0.TimeoutError:null,Q,Y,G=new Promise((J,K)=>{Q={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(X===null)K(new Ed0.TimeoutError);else K(X)},$)});return Object.assign(G,Q)}function nl6($=0){let Z,X=new Promise((Q)=>{let Y=setTimeout(()=>{Q()},$);Z={cancel:()=>{if(Y)clearTimeout(Y),Q()}}});return Object.assign(X,Z)}async function pl6($,Z=1000){let X=zd0(),Q=setTimeout(()=>{X.reject(new Ed0.TimeoutError)},Z);try{return await Promise.race([$,X])}finally{clearTimeout(Q)}}function zd0(){let $={},Z=new Promise((X,Q)=>{$={resolve:X,reject:Q}});return Object.assign(Z,$)}function tl6(){let $={},Z=new Promise((X,Q)=>{$={resolve:(Y)=>{console.trace("resolve",Y),X(Y)},reject:(Y)=>{console.trace("reject"),Q(Y)}}});return Object.assign(Z,$)}function ol6($){for(let Z=$.length-1;Z>0;Z--){let X=Math.floor(Math.random()*(Z+1));[$[Z],$[X]]=[$[X],$[Z]]}return $}async function rl6($){let Z=[];for await(let X of $)Z.push(X);return Z}class dn1{timers;measures;constructor(){this.timers=new Map,this.measures=new Map}mark($){this.timers.set($,performance.now())}measure($,Z,X){let Q=this.timers.get(Z);if(Q===void 0)throw Error(`${Z} is not defined`);let Y=this.timers.get(X);if(Y===void 0)throw Error(`${X} is not defined`);this.measures.set($,Y-Q)}getEntries(){let $=[];return this.measures.forEach((Z,X)=>{$.push({name:X,duration:Z})}),$}}nn1.Perf=dn1;class mn1{max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=zd0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}nn1.SimpleMutex=mn1;function in1($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function al6($=[0,250,250,500,500,3000,5000]){if(!Array.isArray($))$=[0,250,250,500,500,3000,5000];let Z=$.length-1;return{backoff(X){return in1(X>Z?$[Z]:$[X])}}}function sl6($){return $*1e6}function el6($){return Math.floor($/1e6)}var $d6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",bN=new Uint8Array(62);for(let $=0;$<62;$++)bN[$]=$d6.charCodeAt($);var Zd6=218340105584896;function Xd6(){let $=Math.floor(Math.random()*Zd6),Z=$%62,X=bN[Z];$=($-Z)/62,Z=$%62;let Q=bN[Z];$=($-Z)/62,Z=$%62;let Y=bN[Z];$=($-Z)/62,Z=$%62;let G=bN[Z];$=($-Z)/62,Z=$%62;let J=bN[Z];$=($-Z)/62,Z=$%62;let K=bN[Z];$=($-Z)/62,Z=$%62;let W=bN[Z];$=($-Z)/62;let H=bN[$];return String.fromCharCode(X,Q,Y,G,J,K,W,H)}});var $p1=_((sn1)=>{Object.defineProperty(sn1,"__esModule",{value:!0});sn1.nuid=sn1.NuidImpl=void 0;var Ed6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",Tw=62,W90=12,rn1=10,tn1=33,zd6=333,on1=W90+rn1,Pd0=new Uint8Array(Tw);for(let $=0;$<Tw;$++)Pd0[$]=Ed6.charCodeAt($);var K90=4294967296,an1=BigInt(Tw)**BigInt(rn1),vm=Number(an1/(1n<<32n)),jd0=Number(an1%(1n<<32n));function jd6($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function Pd6($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else jd6($)}class Ad0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(on1),this.cbuf=new Uint8Array(W90),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(vm+1)),this.seqLo=Math.floor(Math.random()*K90);while($++<8&&this.seqHi===vm&&this.seqLo>=jd0);if(this.seqHi===vm&&this.seqLo>=jd0)this.seqLo=0;this.inc=Math.random()*(zd6-tn1)+tn1|0}setPre(){Pd6(this.cbuf);for(let $=0;$<W90;$++)this.buf[$]=Pd0[this.cbuf[$]%Tw]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let X=on1-1;X>=W90;X--){let Q=Math.floor($/Tw),G=($-Q*Tw)*K90+Z,J=Math.floor(G/Tw),K=G-J*Tw;this.buf[X]=Pd0[K],$=Q,Z=J}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=K90)this.seqLo-=K90,this.seqHi+=1;if(this.seqHi>vm||this.seqHi===vm&&this.seqLo>=jd0)this.setPre(),this.initSeqAndInc();this.fillSeq();let $=this.buf;return String.fromCharCode($[0],$[1],$[2],$[3],$[4],$[5],$[6],$[7],$[8],$[9],$[10],$[11],$[12],$[13],$[14],$[15],$[16],$[17],$[18],$[19],$[20],$[21])}reset(){this.init()}}sn1.NuidImpl=Ad0;sn1.nuid=new Ad0});var Yp1=_((Xp1)=>{Object.defineProperty(Xp1,"__esModule",{value:!0});Xp1.nuid=Xp1.Nuid=void 0;var Zp1=$p1();Xp1.Nuid=Zp1.NuidImpl;Xp1.nuid=Zp1.nuid});var N90=_((H90)=>{Object.defineProperty(H90,"__esModule",{value:!0});H90.nuid=H90.Nuid=void 0;var Gp1=Yp1();Object.defineProperty(H90,"Nuid",{enumerable:!0,get:function(){return Gp1.Nuid}});Object.defineProperty(H90,"nuid",{enumerable:!0,get:function(){return Gp1.nuid}})});var Rw=_((Jp1)=>{Object.defineProperty(Jp1,"__esModule",{value:!0});Jp1.DEFAULT_HOST=Jp1.DEFAULT_PORT=Jp1.Match=void 0;Jp1.syncIterator=Md6;Jp1.createInbox=kd6;var Id6=N90(),qd6=mY();Jp1.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function Md6($){let Z=$[Symbol.asyncIterator]();return{async next(){let X=await Z.next();if(X.done)return Promise.resolve(null);return Promise.resolve(X.value)}}}function kd6($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw qd6.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${Id6.nuid.next()}`}Jp1.DEFAULT_PORT=4222;Jp1.DEFAULT_HOST="127.0.0.1"});var xm=_((Np1)=>{Object.defineProperty(Np1,"__esModule",{value:!0});Np1.DataBuffer=void 0;var Wp1=dY();class Hp1{buffers;byteLength;constructor(){this.buffers=[],this.byteLength=0}static concat(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}static fromAscii($){if(!$)$="";return Wp1.TE.encode($)}static toAscii($){return Wp1.TD.decode($)}reset(){this.buffers.length=0,this.byteLength=0}pack(){if(this.buffers.length>1){let $=new Uint8Array(this.byteLength),Z=0;for(let X=0;X<this.buffers.length;X++)$.set(this.buffers[X],Z),Z+=this.buffers[X].length;this.buffers.length=0,this.buffers.push($)}}shift(){if(this.buffers.length){let $=this.buffers.shift();if($)return this.byteLength-=$.length,$}return new Uint8Array(0)}drain($){if(this.buffers.length){this.pack();let Z=this.buffers.pop();if(Z){let X=this.byteLength;if($===void 0||$>X)$=X;let Q=Z.subarray(0,$);if(X>$)this.buffers.push(Z.subarray($));return this.byteLength=X-$,Q}}return new Uint8Array(0)}fill($,...Z){if($)this.buffers.push($),this.byteLength+=$.length;for(let X=0;X<Z.length;X++)if(Z[X]&&Z[X].length)this.buffers.push(Z[X]),this.byteLength+=Z[X].length}peek(){if(this.buffers.length)return this.pack(),this.buffers[0];return new Uint8Array(0)}size(){return this.byteLength}length(){return this.buffers.length}}Np1.DataBuffer=Hp1});var eD=_((wp1)=>{Object.defineProperty(wp1,"__esModule",{value:!0});wp1.LF=wp1.CR=wp1.CRLF=wp1.CR_LF_LEN=wp1.CR_LF=void 0;wp1.setTransportFactory=bd6;wp1.defaultPort=yd6;wp1.getUrlParseFn=gd6;wp1.newTransport=hd6;wp1.getResolveFn=ud6;wp1.protoLen=Fp1;wp1.extractProtocolMessage=cd6;var vd6=dY(),xd6=Rw(),fd6=xm(),iY;function bd6($){iY=$}function yd6(){return iY!==void 0&&iY.defaultPort!==void 0?iY.defaultPort:xd6.DEFAULT_PORT}function gd6(){return iY!==void 0&&iY.urlParseFn?iY.urlParseFn:void 0}function hd6(){if(!iY||typeof iY.factory!=="function")throw Error("transport fn is not set");return iY.factory()}function ud6(){return iY!==void 0&&iY.dnsResolveFn?iY.dnsResolveFn:void 0}wp1.CR_LF=`\r
|
|
1336
1336
|
`;wp1.CR_LF_LEN=wp1.CR_LF.length;wp1.CRLF=fd6.DataBuffer.fromAscii(wp1.CR_LF);wp1.CR=new Uint8Array(wp1.CRLF)[0];wp1.LF=new Uint8Array(wp1.CRLF)[1];function Fp1($){for(let Z=0;Z<$.length;Z++){let X=Z+1;if($.byteLength>X&&$[Z]===wp1.CR&&$[X]===wp1.LF)return X+1}return 0}function cd6($){let Z=Fp1($);if(Z>0){let Q=new Uint8Array($).slice(0,Z);return vd6.TD.decode(Q)}return""}});var Md0=_((Pp1)=>{Object.defineProperty(Pp1,"__esModule",{value:!0});Pp1.ipV4=Ep1;Pp1.isIP=sd6;Pp1.parseIP=zp1;var fm=4,$E=16,U90=48,Dp1=57,Op1=65,rd6=70,Lp1=97,ad6=102,qd0=16777215;function Ep1($,Z,X,Q){let Y=new Uint8Array($E);return[0,0,0,0,0,0,0,0,0,0,255,255].forEach((J,K)=>{Y[K]=J}),Y[12]=$,Y[13]=Z,Y[14]=X,Y[15]=Q,Y}function sd6($){return zp1($)!==void 0}function zp1($){for(let Z=0;Z<$.length;Z++)switch($[Z]){case".":return jp1($);case":":return ed6($)}return}function jp1($){let Z=new Uint8Array(fm);for(let X=0;X<fm;X++){if($.length===0)return;if(X>0){if($[0]!==".")return;$=$.substring(1)}let{n:Q,c:Y,ok:G}=$m6($);if(!G||Q>255)return;$=$.substring(Y),Z[X]=Q}return Ep1(Z[0],Z[1],Z[2],Z[3])}function ed6($){let Z=new Uint8Array($E),X=-1;if($.length>=2&&$[0]===":"&&$[1]===":"){if(X=0,$=$.substring(2),$.length===0)return Z}let Q=0;while(Q<$E){let{n:Y,c:G,ok:J}=Zm6($);if(!J||Y>65535)return;if(G<$.length&&$[G]==="."){if(X<0&&Q!=$E-fm)return;if(Q+fm>$E)return;let K=jp1($);if(K===void 0)return;Z[Q]=K[12],Z[Q+1]=K[13],Z[Q+2]=K[14],Z[Q+3]=K[15],$="",Q+=fm;break}if(Z[Q]=Y>>8,Z[Q+1]=Y,Q+=2,$=$.substring(G),$.length===0)break;if($[0]!==":"||$.length==1)return;if($=$.substring(1),$[0]===":"){if(X>=0)return;if(X=Q,$=$.substring(1),$.length===0)break}}if($.length!==0)return;if(Q<$E){if(X<0)return;let Y=$E-Q;for(let G=Q-1;G>=X;G--)Z[G+Y]=Z[G];for(let G=X+Y-1;G>=X;G--)Z[G]=0}else if(X>=0)return;return Z}function $m6($){let Z=0,X=0;for(Z=0;Z<$.length&&U90<=$.charCodeAt(Z)&&$.charCodeAt(Z)<=Dp1;Z++)if(X=X*10+($.charCodeAt(Z)-U90),X>=qd0)return{n:qd0,c:Z,ok:!1};if(Z===0)return{n:0,c:0,ok:!1};return{n:X,c:Z,ok:!0}}function Zm6($){let Z=0,X=0;for(X=0;X<$.length;X++){if(U90<=$.charCodeAt(X)&&$.charCodeAt(X)<=Dp1)Z*=16,Z+=$.charCodeAt(X)-U90;else if(Lp1<=$.charCodeAt(X)&&$.charCodeAt(X)<=ad6)Z*=16,Z+=$.charCodeAt(X)-Lp1+10;else if(Op1<=$.charCodeAt(X)&&$.charCodeAt(X)<=rd6)Z*=16,Z+=$.charCodeAt(X)-Op1+10;else break;if(Z>=qd0)return{n:0,c:X,ok:!1}}if(X===0)return{n:0,c:X,ok:!1};return{n:Z,c:X,ok:!0}}});var vd0=_((Tp1)=>{Object.defineProperty(Tp1,"__esModule",{value:!0});Tp1.Servers=Tp1.ServerImpl=void 0;Tp1.isIPV4OrHostname=Ap1;Tp1.hostPort=_d0;var kd0=eD(),Vd0=LJ(),Sd0=Md0(),Gm6=Rw(),Jm6=mY();function Ap1($){if($.indexOf("[")!==-1||$.indexOf("::")!==-1)return!1;if($.indexOf(".")!==-1)return!0;if($.split(":").length<=2)return!0;return!1}function Cd0($){return!Ap1($)}function Km6($){let X=$.toUpperCase().indexOf("::FFFF:");if(X!==-1&&$.indexOf(".")!==-1){let Q=$.substring(X+7);return Q=Q.replace("[",""),Q.replace("]","")}return $}function _d0($){if($=$.trim(),$.match(/^(.*:\/\/)(.*)/m))$=$.replace(/^(.*:\/\/)(.*)/gm,"$2");if($=Km6($),Cd0($)&&$.indexOf("[")===-1)$=`[${$}]`;let Z=Cd0($)?$.match(/(]:)(\d+)/):$.match(/(:)(\d+)/),X=Z&&Z.length===3&&Z[1]&&Z[2]?parseInt(Z[2]):Gm6.DEFAULT_PORT,Y=new URL(`${X===80?"https":"http"}://${$}`);Y.port=`${X}`;let G=Y.hostname;if(G.charAt(0)==="[")G=G.substring(1,G.length-1);return{listen:Y.host,hostname:G,port:X}}class Gb{src;listen;hostname;port;didConnect;reconnects;lastConnect;gossiped;tlsName;resolves;constructor($,Z=!1){this.src=$,this.tlsName="";let X=_d0($);this.listen=X.listen,this.hostname=X.hostname,this.port=X.port,this.didConnect=!1,this.reconnects=0,this.lastConnect=0,this.gossiped=Z}toString(){return this.listen}async resolve($){if(!$.fn||$.resolve===!1)return[this];let Z=[];if((0,Sd0.isIP)(this.hostname))return[this];else{let X=await $.fn(this.hostname);if($.debug)console.log(`resolve ${this.hostname} = ${X.join(",")}`);for(let Q of X){let Y=this.port===80?"https":"http",G=new URL(`${Y}://${Cd0(Q)?"["+Q+"]":Q}`);G.port=`${this.port}`;let J=new Gb(G.host,!1);J.tlsName=this.hostname,Z.push(J)}}if($.randomize)(0,Vd0.shuffle)(Z);return this.resolves=Z,Z}}Tp1.ServerImpl=Gb;class F90{firstSelect;servers;currentServer;tlsName;randomize;constructor($={}){this.firstSelect=!0,this.servers=[],this.tlsName="",this.randomize=$.randomize||!1}setServers($){if(!Array.isArray($)||$.length===0)throw Jm6.InvalidArgumentError.format("servers","cannot be empty");let Z=(0,kd0.getUrlParseFn)(),X=new Map;for(let Y of this.servers)X.set(Y.listen,Y);let Q=[];for(let Y of $){Y=Z?Z(Y):Y;let{listen:G}=_d0(Y),J=X.get(G);if(J)J.gossiped=!1,Q.push(J);else Q.push(new Gb(Y))}if(this.randomize)(0,Vd0.shuffle)(Q);if(this.servers=Q,this.currentServer===void 0||!Q.includes(this.currentServer))this.currentServer=Q[0],this.firstSelect=!0}clear(){this.servers.length=0}updateTLSName(){let $=this.getCurrentServer();if(!(0,Sd0.isIP)($.hostname))this.tlsName=$.hostname,this.servers.forEach((Z)=>{if(Z.gossiped)Z.tlsName=this.tlsName})}getCurrentServer(){return this.currentServer}addServer($,Z=!1){let X=(0,kd0.getUrlParseFn)();$=X?X($):$;let Q=new Gb($,Z);if((0,Sd0.isIP)(Q.hostname))Q.tlsName=this.tlsName;this.servers.push(Q)}selectServer(){if(this.firstSelect)return this.firstSelect=!1,this.currentServer;let $=this.servers.shift();if($)this.servers.push($),this.currentServer=$;return $}removeCurrentServer(){this.removeServer(this.currentServer)}removeServer($){if($){let Z=this.servers.indexOf($);this.servers.splice(Z,1)}}snapshot(){return F90.freezeAll(this.servers)}snapshotForHandler(){let $=this.currentServer;if(!$)return this.snapshot();let Z=this.servers.indexOf($);if(Z<=0)return this.snapshot();return F90.freezeAll([$,...this.servers.slice(0,Z),...this.servers.slice(Z+1)])}static freezeAll($){return $.map((Z)=>Object.freeze({hostname:Z.hostname,port:Z.port,listen:Z.listen,src:Z.src,tlsName:Z.tlsName,reconnects:Z.reconnects,lastConnect:Z.lastConnect,gossiped:Z.gossiped,didConnect:Z.didConnect}))}find($){return this.servers.find((Z)=>Z.listen===$.listen)}setCurrent($){this.currentServer=$}length(){return this.servers.length}next(){return this.servers.length?this.servers[0]:void 0}getServers(){return this.servers}update($,Z){let X=[],Q=[],Y=(0,kd0.getUrlParseFn)(),G=new Map;if($.connect_urls&&$.connect_urls.length>0)$.connect_urls.forEach((K)=>{K=Y?Y(K,Z):K;let W=new Gb(K,!0);G.set(K,W)});let J=[];if(this.servers.forEach((K,W)=>{let H=K.listen;if(K.gossiped&&this.currentServer.listen!==H&&G.get(H)===void 0)J.push(W);G.delete(H)}),J.reverse(),J.forEach((K)=>{let W=this.servers.splice(K,1);Q=Q.concat(W[0].listen)}),G.forEach((K,W)=>{this.servers.push(K),X.push(W)}),this.randomize&&X.length>0){let K=this.currentServer,W=this.servers.filter((H)=>H!==K);(0,Vd0.shuffle)(W),this.servers=K?[K,...W]:W}return{added:X,deleted:Q}}}Tp1.Servers=F90});var w90=_((Mp1)=>{Object.defineProperty(Mp1,"__esModule",{value:!0});Mp1.QueuedIteratorImpl=void 0;var xd0=LJ(),Ip1=mY();class qp1{inflight;processed;received;noIterator;iterClosed;done;signal;yields;filtered;pendingFiltered;ctx;_data;err;time;profile;yielding;didBreak;constructor(){this.inflight=0,this.filtered=0,this.pendingFiltered=0,this.processed=0,this.received=0,this.noIterator=!1,this.done=!1,this.signal=(0,xd0.deferred)(),this.yields=[],this.iterClosed=(0,xd0.deferred)(),this.time=0,this.yielding=!1,this.didBreak=!1,this.profile=!1}[Symbol.asyncIterator](){return this.iterate()}push($){if(this.done)return;if(this.didBreak){if(typeof $==="function"){let Z=$;try{Z()}catch(X){}}return}if(typeof $==="function")this.pendingFiltered++;this.yields.push($),this.signal.resolve()}async*iterate(){if(this.noIterator)throw new Ip1.InvalidOperationError("iterator cannot be used when a callback is registered");if(this.yielding)throw new Ip1.InvalidOperationError("iterator is already yielding");this.yielding=!0;try{while(!0){if(this.yields.length===0)await this.signal;if(this.err)throw this.err;let $=this.yields;this.inflight=$.length,this.yields=[];for(let Z=0;Z<$.length;Z++){if(typeof $[Z]==="function"){this.pendingFiltered--;let Q=$[Z];try{Q()}catch(Y){throw Y}if(this.err)throw this.err;continue}this.processed++,this.inflight--;let X=this.profile?Date.now():0;yield $[Z],this.time=this.profile?Date.now()-X:0}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,xd0.deferred)()}}finally{this.didBreak=!0,this.stop()}}stop($){if(this.done)return;this.err=$,this.done=!0,this.signal.resolve(),this.iterClosed.resolve($)}getProcessed(){return this.noIterator?this.received:this.processed}getPending(){return this.yields.length+this.inflight-this.pendingFiltered}getReceived(){return this.received-this.filtered}}Mp1.QueuedIteratorImpl=qp1});var fd0=_((Cp1)=>{Object.defineProperty(Cp1,"__esModule",{value:!0});Cp1.MuxSubscription=void 0;var Um6=Rw(),Vp1=mY();class Sp1{baseInbox;reqs;constructor(){this.reqs=new Map}size(){return this.reqs.size}init($){return this.baseInbox=`${(0,Um6.createInbox)($)}.`,this.baseInbox}add($){if(!isNaN($.received))$.received=0;this.reqs.set($.token,$)}get($){return this.reqs.get($)}cancel($){this.reqs.delete($.token)}getToken($){let Z=$.subject||"";if(Z.indexOf(this.baseInbox)===0)return Z.substring(this.baseInbox.length);return null}all(){return Array.from(this.reqs.values())}handleError($,Z){if($)return this.all().forEach((X)=>{X.resolver(Z,{})}),!0;if(Z.operation==="publish"){let X=this.all().find((Q)=>{return Q.requestSubject===Z.subject});if(X)return X.resolver(Z,{}),!0}return!1}dispatcher(){return($,Z)=>{let X=this.getToken(Z);if(X){let Q=this.get(X);if(Q){if($===null)$=Z?.data?.length===0&&Z.headers?.code===503?new Vp1.NoRespondersError(Q.requestSubject):null;Q.resolver($,Z)}}}}close(){let $=new Vp1.RequestError("connection closed");this.reqs.forEach((Z)=>{Z.resolver($,{})})}}Cp1.MuxSubscription=Sp1});var bd0=_((xp1)=>{Object.defineProperty(xp1,"__esModule",{value:!0});xp1.Heartbeat=void 0;var Fm6=LJ();class vp1{ph;interval;maxOut;timer;pendings;constructor($,Z,X){this.ph=$,this.interval=Z,this.maxOut=X,this.pendings=[]}start(){this.cancel(),this._schedule()}cancel($){if(this.timer)clearTimeout(this.timer),this.timer=void 0;if(this._reset(),$)this.ph.disconnect()}_schedule(){this.timer=setTimeout(()=>{if(this.ph.dispatchStatus({type:"ping",pendingPings:this.pendings.length+1}),this.pendings.length===this.maxOut){this.cancel(!0);return}let $=(0,Fm6.deferred)();this.ph.flush($).then(()=>{this._reset()}).catch(()=>{this.cancel()}),this.pendings.push($),this._schedule()},this.interval)}_reset(){this.pendings=this.pendings.filter(($)=>{return $.resolve(),!1})}}xp1.Heartbeat=vp1});var hd0=_((hp1)=>{Object.defineProperty(hp1,"__esModule",{value:!0});hp1.DenoBuffer=hp1.MAX_SIZE=hp1.AssertionError=void 0;hp1.assert=yp1;hp1.concat=gp1;hp1.append=Bm6;hp1.readAll=Om6;hp1.writeAll=Lm6;var wm6=dY();class yd0 extends Error{constructor($){super($);this.name="AssertionError"}}hp1.AssertionError=yd0;function yp1($,Z="Assertion failed."){if(!$)throw new yd0(Z)}var bp1=32768;hp1.MAX_SIZE=4294967294;function B90($,Z,X=0){let Q=Z.byteLength-X;if($.byteLength>Q)$=$.subarray(0,Q);return Z.set($,X),$.byteLength}function gp1($,Z){if($===void 0&&Z===void 0)return new Uint8Array(0);if($===void 0)return Z;if(Z===void 0)return $;let X=new Uint8Array($.length+Z.length);return X.set($,0),X.set(Z,$.length),X}function Bm6($,Z){return gp1($,Uint8Array.of(Z))}class gd0{_buf;_off;constructor($){if(this._off=0,$==null){this._buf=new Uint8Array(0);return}this._buf=new Uint8Array($)}bytes($={copy:!0}){if($.copy===!1)return this._buf.subarray(this._off);return this._buf.slice(this._off)}empty(){return this._buf.byteLength<=this._off}get length(){return this._buf.byteLength-this._off}get capacity(){return this._buf.buffer.byteLength}truncate($){if($===0){this.reset();return}if($<0||$>this.length)throw Error("bytes.Buffer: truncation out of range");this._reslice(this._off+$)}reset(){this._reslice(0),this._off=0}_tryGrowByReslice($){let Z=this._buf.byteLength;if($<=this.capacity-Z)return this._reslice(Z+$),Z;return-1}_reslice($){yp1($<=this._buf.buffer.byteLength),this._buf=new Uint8Array(this._buf.buffer,0,$)}readByte(){let $=new Uint8Array(1);if(this.read($))return $[0];return null}read($){if(this.empty()){if(this.reset(),$.byteLength===0)return 0;return null}let Z=B90(this._buf.subarray(this._off),$);return this._off+=Z,Z}writeByte($){return this.write(Uint8Array.of($))}writeString($){return this.write(wm6.TE.encode($))}write($){let Z=this._grow($.byteLength);return B90($,this._buf,Z)}_grow($){let Z=this.length;if(Z===0&&this._off!==0)this.reset();let X=this._tryGrowByReslice($);if(X>=0)return X;let Q=this.capacity;if($<=Math.floor(Q/2)-Z)B90(this._buf.subarray(this._off),this._buf);else if(Q+$>hp1.MAX_SIZE)throw Error("The buffer cannot be grown beyond the maximum size.");else{let Y=new Uint8Array(Math.min(2*Q+$,hp1.MAX_SIZE));B90(this._buf.subarray(this._off),Y),this._buf=Y}return this._off=0,this._reslice(Math.min(Z+$,hp1.MAX_SIZE)),Z}grow($){if($<0)throw Error("Buffer._grow: negative count");let Z=this._grow($);this._reslice(Z)}readFrom($){let Z=0,X=new Uint8Array(bp1);while(!0){let Q=this.capacity-this.length<bp1,Y=Q?X:new Uint8Array(this._buf.buffer,this.length),G=$.read(Y);if(G===null)return Z;if(Q)this.write(Y.subarray(0,G));else this._reslice(this.length+G);Z+=G}}}hp1.DenoBuffer=gd0;function Om6($){let Z=new gd0;return Z.readFrom($),Z.bytes()}function Lm6($,Z){let X=0;while(X<Z.length)X+=$.write(Z.subarray(X))}});var ld0=_((mp1)=>{Object.defineProperty(mp1,"__esModule",{value:!0});mp1.cc=mp1.State=mp1.Parser=mp1.Kind=void 0;mp1.describe=Tm6;var ud0=hd0(),cd0=dY();mp1.Kind={OK:0,ERR:1,MSG:2,INFO:3,PING:4,PONG:5};function Tm6($){let Z,X="";switch($.kind){case mp1.Kind.MSG:Z="MSG";break;case mp1.Kind.OK:Z="OK";break;case mp1.Kind.ERR:Z="ERR",X=cd0.TD.decode($.data);break;case mp1.Kind.PING:Z="PING";break;case mp1.Kind.PONG:Z="PONG";break;case mp1.Kind.INFO:Z="INFO",X=cd0.TD.decode($.data)}return`${Z}: ${X}`}function cp1(){let $={};return $.sid=-1,$.hdr=-1,$.size=-1,$}var lp1=48,Rm6=57,Jb=67108864;class dp1{dispatcher;state;as;drop;hdr;ma;argBuf;msgBuf;constructor($){this.dispatcher=$,this.state=mp1.State.OP_START,this.as=0,this.drop=0,this.hdr=0}parse($){let Z;for(Z=0;Z<$.length;Z++){let X=$[Z];switch(this.state){case mp1.State.OP_START:switch(X){case mp1.cc.M:case mp1.cc.m:this.state=mp1.State.OP_M,this.hdr=-1,this.ma=cp1();break;case mp1.cc.H:case mp1.cc.h:this.state=mp1.State.OP_H,this.hdr=0,this.ma=cp1();break;case mp1.cc.P:case mp1.cc.p:this.state=mp1.State.OP_P;break;case mp1.cc.PLUS:this.state=mp1.State.OP_PLUS;break;case mp1.cc.MINUS:this.state=mp1.State.OP_MINUS;break;case mp1.cc.I:case mp1.cc.i:this.state=mp1.State.OP_I;break;default:throw this.fail($.subarray(Z))}break;case mp1.State.OP_H:switch(X){case mp1.cc.M:case mp1.cc.m:this.state=mp1.State.OP_M;break;default:throw this.fail($.subarray(Z))}break;case mp1.State.OP_M:switch(X){case mp1.cc.S:case mp1.cc.s:this.state=mp1.State.OP_MS;break;default:throw this.fail($.subarray(Z))}break;case mp1.State.OP_MS:switch(X){case mp1.cc.G:case mp1.cc.g:this.state=mp1.State.OP_MSG;break;default:throw this.fail($.subarray(Z))}break;case mp1.State.OP_MSG:switch(X){case mp1.cc.SPACE:case mp1.cc.TAB:this.state=mp1.State.OP_MSG_SPC;break;default:throw this.fail($.subarray(Z))}break;case mp1.State.OP_MSG_SPC:switch(X){case mp1.cc.SPACE:case mp1.cc.TAB:continue;default:this.state=mp1.State.MSG_ARG,this.as=Z}break;case mp1.State.MSG_ARG:switch(X){case mp1.cc.CR:this.drop=1;break;case mp1.cc.NL:{let Q=this.argBuf?this.argBuf.bytes():$.subarray(this.as,Z-this.drop);this.processMsgArgs(Q),this.drop=0,this.as=Z+1,this.state=mp1.State.MSG_PAYLOAD,Z=this.as+this.ma.size-1;break}default:if(this.argBuf)this.argBuf.writeByte(X)}break;case mp1.State.MSG_PAYLOAD:if(this.msgBuf)if(this.msgBuf.length>=this.ma.size){let Q=this.msgBuf.bytes({copy:!1});this.dispatcher.push({kind:mp1.Kind.MSG,msg:this.ma,data:Q}),this.argBuf=void 0,this.msgBuf=void 0,this.state=mp1.State.MSG_END}else{let Q=this.ma.size-this.msgBuf.length,Y=$.length-Z;if(Y<Q)Q=Y;if(Q>0)this.msgBuf.write($.subarray(Z,Z+Q)),Z=Z+Q-1;else this.msgBuf.writeByte(X)}else if(Z-this.as>=this.ma.size)this.dispatcher.push({kind:mp1.Kind.MSG,msg:this.ma,data:$.subarray(this.as,Z)}),this.argBuf=void 0,this.msgBuf=void 0,this.state=mp1.State.MSG_END;break;case mp1.State.MSG_END:switch(X){case mp1.cc.NL:this.drop=0,this.as=Z+1,this.state=mp1.State.OP_START;break;default:continue}break;case mp1.State.OP_PLUS:switch(X){case mp1.cc.O:case mp1.cc.o:this.state=mp1.State.OP_PLUS_O;break;default:throw this.fail($.subarray(Z))}break;case mp1.State.OP_PLUS_O:switch(X){case mp1.cc.K:case mp1.cc.k:this.state=mp1.State.OP_PLUS_OK;break;default:throw this.fail($.subarray(Z))}break;case mp1.State.OP_PLUS_OK:switch(X){case mp1.cc.NL:this.dispatcher.push({kind:mp1.Kind.OK}),this.drop=0,this.state=mp1.State.OP_START;break}break;case mp1.State.OP_MINUS:switch(X){case mp1.cc.E:case mp1.cc.e:this.state=mp1.State.OP_MINUS_E;break;default:throw this.fail($.subarray(Z))}break;case mp1.State.OP_MINUS_E:switch(X){case mp1.cc.R:case mp1.cc.r:this.state=mp1.State.OP_MINUS_ER;break;default:throw this.fail($.subarray(Z))}break;case mp1.State.OP_MINUS_ER:switch(X){case mp1.cc.R:case mp1.cc.r:this.state=mp1.State.OP_MINUS_ERR;break;default:throw this.fail($.subarray(Z))}break;case mp1.State.OP_MINUS_ERR:switch(X){case mp1.cc.SPACE:case mp1.cc.TAB:this.state=mp1.State.OP_MINUS_ERR_SPC;break;default:throw this.fail($.subarray(Z))}break;case mp1.State.OP_MINUS_ERR_SPC:switch(X){case mp1.cc.SPACE:case mp1.cc.TAB:continue;default:this.state=mp1.State.MINUS_ERR_ARG,this.as=Z}break;case mp1.State.MINUS_ERR_ARG:switch(X){case mp1.cc.CR:this.drop=1;break;case mp1.cc.NL:{let Q;if(this.argBuf)Q=this.argBuf.bytes(),this.argBuf=void 0;else Q=$.subarray(this.as,Z-this.drop);this.dispatcher.push({kind:mp1.Kind.ERR,data:Q}),this.drop=0,this.as=Z+1,this.state=mp1.State.OP_START;break}default:if(this.argBuf)this.argBuf.write(Uint8Array.of(X))}break;case mp1.State.OP_P:switch(X){case mp1.cc.I:case mp1.cc.i:this.state=mp1.State.OP_PI;break;case mp1.cc.O:case mp1.cc.o:this.state=mp1.State.OP_PO;break;default:throw this.fail($.subarray(Z))}break;case mp1.State.OP_PO:switch(X){case mp1.cc.N:case mp1.cc.n:this.state=mp1.State.OP_PON;break;default:throw this.fail($.subarray(Z))}break;case mp1.State.OP_PON:switch(X){case mp1.cc.G:case mp1.cc.g:this.state=mp1.State.OP_PONG;break;default:throw this.fail($.subarray(Z))}break;case mp1.State.OP_PONG:switch(X){case mp1.cc.NL:this.dispatcher.push({kind:mp1.Kind.PONG}),this.drop=0,this.state=mp1.State.OP_START;break}break;case mp1.State.OP_PI:switch(X){case mp1.cc.N:case mp1.cc.n:this.state=mp1.State.OP_PIN;break;default:throw this.fail($.subarray(Z))}break;case mp1.State.OP_PIN:switch(X){case mp1.cc.G:case mp1.cc.g:this.state=mp1.State.OP_PING;break;default:throw this.fail($.subarray(Z))}break;case mp1.State.OP_PING:switch(X){case mp1.cc.NL:this.dispatcher.push({kind:mp1.Kind.PING}),this.drop=0,this.state=mp1.State.OP_START;break}break;case mp1.State.OP_I:switch(X){case mp1.cc.N:case mp1.cc.n:this.state=mp1.State.OP_IN;break;default:throw this.fail($.subarray(Z))}break;case mp1.State.OP_IN:switch(X){case mp1.cc.F:case mp1.cc.f:this.state=mp1.State.OP_INF;break;default:throw this.fail($.subarray(Z))}break;case mp1.State.OP_INF:switch(X){case mp1.cc.O:case mp1.cc.o:this.state=mp1.State.OP_INFO;break;default:throw this.fail($.subarray(Z))}break;case mp1.State.OP_INFO:switch(X){case mp1.cc.SPACE:case mp1.cc.TAB:this.state=mp1.State.OP_INFO_SPC;break;default:throw this.fail($.subarray(Z))}break;case mp1.State.OP_INFO_SPC:switch(X){case mp1.cc.SPACE:case mp1.cc.TAB:continue;default:this.state=mp1.State.INFO_ARG,this.as=Z}break;case mp1.State.INFO_ARG:switch(X){case mp1.cc.CR:this.drop=1;break;case mp1.cc.NL:{let Q;if(this.argBuf)Q=this.argBuf.bytes(),this.argBuf=void 0;else Q=$.subarray(this.as,Z-this.drop);this.dispatcher.push({kind:mp1.Kind.INFO,data:Q}),this.drop=0,this.as=Z+1,this.state=mp1.State.OP_START;break}default:if(this.argBuf)this.argBuf.writeByte(X)}break;default:throw this.fail($.subarray(Z))}}if((this.state===mp1.State.MSG_ARG||this.state===mp1.State.MINUS_ERR_ARG||this.state===mp1.State.INFO_ARG)&&!this.argBuf)this.argBuf=new ud0.DenoBuffer($.subarray(this.as,Z-this.drop));if(this.state===mp1.State.MSG_PAYLOAD&&!this.msgBuf){if(!this.argBuf)this.cloneMsgArg();this.msgBuf=new ud0.DenoBuffer($.subarray(this.as))}}cloneMsgArg(){let $=this.ma.subject.length,Z=this.ma.reply?this.ma.reply.length:0,X=new Uint8Array($+Z);if(X.set(this.ma.subject),this.ma.reply)X.set(this.ma.reply,$);if(this.argBuf=new ud0.DenoBuffer(X),this.ma.subject=X.subarray(0,$),this.ma.reply)this.ma.reply=X.subarray($)}processMsgArgs($){if(this.hdr>=0)return this.processHeaderMsgArgs($);let Z=[],X=-1;for(let Q=0;Q<$.length;Q++)switch($[Q]){case mp1.cc.SPACE:case mp1.cc.TAB:case mp1.cc.CR:case mp1.cc.NL:if(X>=0)Z.push($.subarray(X,Q)),X=-1;break;default:if(X<0)X=Q}if(X>=0)Z.push($.subarray(X));switch(Z.length){case 3:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=void 0,this.ma.size=this.protoParseInt(Z[2],Jb);break;case 4:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=Z[2],this.ma.size=this.protoParseInt(Z[3],Jb);break;default:throw this.fail($,"processMsgArgs Parse Error")}if(this.ma.sid<0)throw this.fail($,"processMsgArgs Bad or Missing Sid Error");if(this.ma.size<0)throw this.fail($,"processMsgArgs Bad or Missing Size Error")}fail($,Z=""){if(!Z)Z=`parse error [${this.state}]`;else Z=`${Z} [${this.state}]`;return Error(`${Z}: ${cd0.TD.decode($)}`)}processHeaderMsgArgs($){let Z=[],X=-1;for(let Q=0;Q<$.length;Q++)switch($[Q]){case mp1.cc.SPACE:case mp1.cc.TAB:case mp1.cc.CR:case mp1.cc.NL:if(X>=0)Z.push($.subarray(X,Q)),X=-1;break;default:if(X<0)X=Q}if(X>=0)Z.push($.subarray(X));switch(Z.length){case 4:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=void 0,this.ma.hdr=this.protoParseInt(Z[2],Jb),this.ma.size=this.protoParseInt(Z[3],Jb);break;case 5:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=Z[2],this.ma.hdr=this.protoParseInt(Z[3],Jb),this.ma.size=this.protoParseInt(Z[4],Jb);break;default:throw this.fail($,"processHeaderMsgArgs Parse Error")}if(this.ma.sid<0)throw this.fail($,"processHeaderMsgArgs Bad or Missing Sid Error");if(this.ma.hdr<0||this.ma.hdr>this.ma.size)throw this.fail($,"processHeaderMsgArgs Bad or Missing Header Size Error");if(this.ma.size<0)throw this.fail($,"processHeaderMsgArgs Bad or Missing Size Error")}protoParseInt($,Z){if($.length===0||$.length>15)return-1;let X=0;for(let Q=0;Q<$.length;Q++){if($[Q]<lp1||$[Q]>Rm6)return-1;X=X*10+($[Q]-lp1)}return Z!==void 0&&X>Z?-1:X}}mp1.Parser=dp1;mp1.State={OP_START:0,OP_PLUS:1,OP_PLUS_O:2,OP_PLUS_OK:3,OP_MINUS:4,OP_MINUS_E:5,OP_MINUS_ER:6,OP_MINUS_ERR:7,OP_MINUS_ERR_SPC:8,MINUS_ERR_ARG:9,OP_M:10,OP_MS:11,OP_MSG:12,OP_MSG_SPC:13,MSG_ARG:14,MSG_PAYLOAD:15,MSG_END:16,OP_H:17,OP_P:18,OP_PI:19,OP_PIN:20,OP_PING:21,OP_PO:22,OP_PON:23,OP_PONG:24,OP_I:25,OP_IN:26,OP_INF:27,OP_INFO:28,OP_INFO_SPC:29,INFO_ARG:30};mp1.cc={CR:13,E:69,e:101,F:70,f:102,G:71,g:103,H:72,h:104,I:73,i:105,K:75,k:107,M:77,m:109,MINUS:45,N:78,n:110,NL:10,O:79,o:111,P:80,p:112,PLUS:43,R:82,r:114,S:83,s:115,SPACE:32,TAB:9}});var D90=_((np1)=>{Object.defineProperty(np1,"__esModule",{value:!0});np1.MsgHdrsImpl=void 0;np1.canonicalMIMEHeaderKey=md0;np1.headers=Mm6;var ip1=dY(),DJ=Rw(),L90=mY();function md0($){let N=!0,U=Array($.length);for(let F=0;F<$.length;F++){let w=$.charCodeAt(F);if(w===58||w<33||w>126)throw L90.InvalidArgumentError.format("header",`'${$[F]}' is not a valid character in a header name`);if(N&&97<=w&&w<=122)w-=32;else if(!N&&65<=w&&w<=90)w+=32;U[F]=w,N=w==45}return String.fromCharCode(...U)}function Mm6($=0,Z=""){if($===0&&Z!=="")throw L90.InvalidArgumentError.format("code","is required");else if($>0&&Z==="")throw L90.InvalidArgumentError.format("description","is required");return new Kb($,Z)}var dd0="NATS/1.0";class Kb{_code;headers;_description;constructor($=0,Z=""){this._code=$,this._description=Z,this.headers=new Map}[Symbol.iterator](){return this.headers.entries()}size(){return this.headers.size}equals($){if($&&this.headers.size===$.headers.size&&this._code===$._code){for(let[Z,X]of this.headers){let Q=$.values(Z);if(X.length!==Q.length)return!1;let Y=[...X].sort(),G=[...Q].sort();for(let J=0;J<Y.length;J++)if(Y[J]!==G[J])return!1}return!0}return!1}static decode($){let Z=new Kb,Q=ip1.TD.decode($).split(`\r
|
|
1337
1337
|
`),Y=Q[0];if(Y!==dd0){let G=Y.replace(dd0,"").trim();if(G.length>0){if(Z._code=parseInt(G,10),isNaN(Z._code))Z._code=0;let J=Z._code.toString();G=G.replace(J,""),Z._description=G.trim()}}if(Q.length>=1)Q.slice(1).map((G)=>{if(G){let J=G.indexOf(":");if(J>-1){let K=G.slice(0,J),W=G.slice(J+1).trim();Z.append(K,W)}}});return Z}toString(){if(this.headers.size===0&&this._code===0)return"";let $=dd0;if(this._code>0&&this._description!=="")$+=` ${this._code} ${this._description}`;for(let[Z,X]of this.headers)for(let Q=0;Q<X.length;Q++)$=`${$}\r
|
|
1338
1338
|
${Z}: ${X[Q]}`;return`${$}\r
|
package/dist/server/server.js
CHANGED
|
@@ -2726,7 +2726,7 @@ Do NOT require review (requiresReview = false) when the changes are low-risk, su
|
|
|
2726
2726
|
|
|
2727
2727
|
When unsure between the two, lean toward NOT requiring review for small frontend-only diffs, and toward requiring it for anything backend or large.
|
|
2728
2728
|
|
|
2729
|
-
Respond with the structured verdict and a short reason.`,a_$;var e_$=B(()=>{k4();mw();Q41();g86=G41.object({requiresReview:G41.boolean().describe("true if the changes should go through pull-request review"),reason:G41.string().describe("One short sentence explaining the decision (max ~120 chars)")});a_$={requiresReview:!1,reason:""}});function l86($){if(!$||$.includes(".."))return!1;return c86.test($)}function $v$($){let Z=typeof $.__resolveType==="string"?$.__resolveType:null;if(!Z||!l86(Z))return null;let{__resolveType:X,...Q}=$;return{resolveType:Z,payload:Q}}function Zv$($,Z){return`${$.replace(/\/+$/,"")}/deco/invoke/${Z}`}var c86;var Xv$=B(()=>{c86=/^[\w./@-]+$/});function Y41($){let Z;try{Z=new URL($)}catch{return null}if(!Z.hostname.endsWith(".localhost"))return null;let X=Z.host;return Z.hostname="127.0.0.1",{url:Z.toString(),hostHeader:X}}function Qv$($,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 Gv$($,Z,X,Q){if(!Q.connectionId)throw new ig("Push requires a connected GitHub account. Connect mcp-github for this project and restart the sandbox.");let G=$.organization?.id;if(!G)throw new ig(d7);await Rw({ctx:$,connectionId:Q.connectionId,organizationId:G,forceRefresh:!0,onLegacyMintError:(N)=>{let F=N instanceof Error?N.message:d7;throw new ig(F)}});let{cloneUrl:Y,gitUserName:J,gitUserEmail:W}=await Iw(Q.connectionId,Q.owner,Q.name,$.db,$.vault),K=zj0($),H=await Z.proxyDaemonRequest(X,"/_sandbox/config",{method:"PUT",headers:new Headers({"content-type":"application/json"}),body:JSON.stringify({git:{repository:{cloneUrl:Y},identity:{userName:J,userEmail:W}},...K?{operator:K}:{}})});if(!H.ok){let N=await lw(H,d86).catch(()=>H.statusText);throw Error(`Failed to refresh sandbox git credentials (${H.status}): ${N}`)}}var d86=10485760,ig;var Yv$=B(()=>{YN();r81();bi();rf();ig=class ig extends Error{constructor($){super($);this.name="GitPushAuthError"}}});function i86($){let Z=$.startsWith("thread:")?$.slice(7):$;if(!Z||Z.length>255||Z.includes("..")||Z.startsWith("/")||Z.endsWith("/")||Z.endsWith(".lock")||!m86.test(Z))throw Error(`Invalid branch name: ${$}`)}function lC($){return AbortSignal.any([$.req.raw.signal,AbortSignal.timeout(p86)])}function dC($){let{runner:Z}=$.get("vmClaim");if(!Z)return $.json({error:"No sandbox runner configured"},503);return Z}function J41($,Z){let Q=(Pj0.get($)??Promise.resolve()).catch(()=>{}).then(Z),G=Q.catch(()=>{});return Pj0.set($,G),G.finally(()=>{if(Pj0.get($)===G)Pj0.delete($)}),Q}async function fZ($,Z,X){let Q=dC($);if(Q instanceof Response)return Q;let{claimName:G,userId:Y,projectRef:J}=$.get("vmClaim"),W=X?.method??"POST",K=null,H=new Headers;if(X?.jsonBody!==void 0)K=X.jsonBody,H.set("content-type","application/json");else if(X?.forwardJsonBody)K=await $.req.text(),H.set("content-type","application/json");let N=X?.signal,F={method:W,headers:H,body:K,...N?{signal:N}:{}},U=async()=>{let w=await Q.proxyDaemonRequest(G,Z,F);if(X?.map404to410&&w.status===404){try{await w.body?.cancel()}catch{}if(await Q.adoptLiveClaim?.({userId:Y,projectRef:J},G))w=await Q.proxyDaemonRequest(G,Z,F);if(w.status===404){try{await w.body?.cancel()}catch{}return new Response(JSON.stringify({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."}),{status:410,headers:{"content-type":"application/json",...cG}})}}let O=await w.text(),D=X?.redactRepoDirUnlessDesktop&&Q.kind!=="user-desktop"?o86(O):O,L=w.headers.get("content-type")??"application/json";return new Response(D,{status:w.status,headers:{"content-type":L,...cG}})};try{if(N){let w=U();return w.catch(()=>{}),await Promise.race([w,new Promise((D,L)=>{if(N.aborted)return L(N.reason);N.addEventListener("abort",()=>L(N.reason),{once:!0})})])}return await U()}catch(w){let O=w instanceof Error?w.message:String(w);return $.json({error:`Daemon unreachable: ${O}`},502)}}function o86($){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 Aj0($,Z,X,Q="GET",G){let Y=await $.proxyDaemonRequest(Z,X,{method:Q,headers:new Headers,body:null});if(Y.status===404&&G){try{await Y.body?.cancel()}catch{}if(await $.adoptLiveClaim?.(G,Z))Y=await $.proxyDaemonRequest(Z,X,{method:Q,headers:new Headers,body:null})}if(Y.status===404){try{await Y.body?.cancel()}catch{}throw Error("SANDBOX_GONE")}let J=await Y.text();if(!Y.ok){let W=`Daemon error (${Y.status})`;try{W=JSON.parse(J).error??W}catch{}throw Error(W)}return JSON.parse(J)}function r86($){return Kv$.includes($)}var m86,Jv$=524288,n86=65536,p86=1e4,Wv$=2000,t86,Pj0,cG,Kv$,Hv$=()=>{let $=new B1;return $.use("/:virtualMcpId/:branch/*",t86),$.post("/:virtualMcpId/:branch/write",(Z)=>fZ(Z,"/_sandbox/write",{forwardJsonBody:!0,signal:lC(Z)})),$.post("/:virtualMcpId/:branch/unlink",(Z)=>fZ(Z,"/_sandbox/unlink",{forwardJsonBody:!0,signal:lC(Z)})),$.post("/:virtualMcpId/:branch/mkdir",(Z)=>fZ(Z,"/_sandbox/mkdir",{forwardJsonBody:!0,signal:lC(Z)})),$.post("/:virtualMcpId/:branch/rename",(Z)=>fZ(Z,"/_sandbox/rename",{forwardJsonBody:!0,signal:lC(Z)})),$.post("/:virtualMcpId/:branch/read",(Z)=>fZ(Z,"/_sandbox/read",{forwardJsonBody:!0,signal:lC(Z)})),$.post("/:virtualMcpId/:branch/glob",(Z)=>fZ(Z,"/_sandbox/glob",{forwardJsonBody:!0,signal:lC(Z)})),$.post("/:virtualMcpId/:branch/grep",(Z)=>fZ(Z,"/_sandbox/grep",{forwardJsonBody:!0,signal:lC(Z)})),$.post("/:virtualMcpId/:branch/exec/:script",async(Z)=>{let X=Z.req.param("script");if(!X)return Z.json({error:"missing script name"},400);return fZ(Z,`/_sandbox/exec/${encodeURIComponent(X)}`)}),$.post("/:virtualMcpId/:branch/exec/:script/kill",async(Z)=>{let X=Z.req.param("script");if(!X)return Z.json({error:"missing script name"},400);return fZ(Z,`/_sandbox/exec/${encodeURIComponent(X)}/kill`)}),$.get("/:virtualMcpId/:branch/config",(Z)=>fZ(Z,"/_sandbox/config",{method:"GET",map404to410:!0,redactRepoDirUnlessDesktop:!0})),$.put("/:virtualMcpId/:branch/config",(Z)=>fZ(Z,"/_sandbox/config",{method:"PUT",forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/setup/:step",async(Z)=>{let X=Z.req.param("step");if(!X||!r86(X))return Z.json({error:`step must be one of: ${Kv$.join(", ")}`},400);if(X==="start"){let Q=Z.get("vmClaim");if(Q.runner){let G=r(Z.var.studioContext),Y=rF0(Q.virtualMcpMetadata);try{await sF0({ctx:Z.var.studioContext,runner:Q.runner,handle:Q.claimName,orgId:G.id,userId:Q.callerUserId,entries:Y})}catch(J){let W=J instanceof Error?J.message:String(J);return Z.json({error:`Failed to push env to daemon: ${W}`},502)}}}return fZ(Z,`/_sandbox/setup/${X}`,{signal:Z.req.raw.signal,map404to410:!0})}),$.get("/:virtualMcpId/:branch/events",(Z)=>{let X=Z.get("vmClaim");if(!X.runner)return QF(Z,async(Q)=>{await Q.writeSSE({event:"phase",data:JSON.stringify({kind:"failed",reason:"unknown",message:"No sandbox runner configured on this studio instance."})})});return i_$(Z,{ctx:Z.var.studioContext,claimName:X.claimName,runner:X.runner,virtualMcpId:X.virtualMcpId,branch:X.branch,userId:X.userId,projectRef:X.projectRef,virtualMcpMetadata:X.virtualMcpMetadata})}),$.get("/:virtualMcpId/:branch/git/status",(Z)=>fZ(Z,"/_sandbox/git/status",{method:"GET",map404to410:!0,signal:AbortSignal.any([Z.req.raw.signal,AbortSignal.timeout(Wv$)])})),$.post("/:virtualMcpId/:branch/git/status",(Z)=>fZ(Z,"/_sandbox/git/status",{map404to410:!0,signal:AbortSignal.any([Z.req.raw.signal,AbortSignal.timeout(Wv$)])})),$.post("/:virtualMcpId/:branch/git/diff",(Z)=>fZ(Z,"/_sandbox/git/diff",{forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/git/publish",async(Z)=>{let X=dC(Z);if(X instanceof Response)return X;let{claimName:Q,virtualMcpMetadata:G,connectionIds:Y}=Z.get("vmClaim"),J=Z.var.studioContext;return J41(Q,async()=>{try{await a81(J,X,Q);let W=Qv$(G,Y);if(W)await Gv$(J,X,Q,W)}catch(W){if(W instanceof ig)return Z.json({error:W.message},403,cG);let K=W instanceof Error?W.message:String(W);return Z.json({error:K},502,cG)}return fZ(Z,"/_sandbox/git/publish",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/discard",(Z)=>{let{claimName:X}=Z.get("vmClaim");return J41(X,()=>fZ(Z,"/_sandbox/git/discard",{forwardJsonBody:!0,map404to410:!0}))}),$.post("/:virtualMcpId/:branch/git/rebase",async(Z)=>{let X=dC(Z);if(X instanceof Response)return X;let{claimName:Q}=Z.get("vmClaim"),G=Z.var.studioContext;return J41(Q,async()=>{try{await a81(G,X,Q)}catch(Y){let J=Y instanceof Error?Y.message:String(Y);return Z.json({error:J},502,cG)}return fZ(Z,"/_sandbox/git/rebase",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/suggest-commit",HZ({maxSize:Jv$,onError:(Z)=>Z.json({error:"Payload too large"},413,cG)}),async(Z)=>{let X=dC(Z);if(X instanceof Response)return X;let{claimName:Q,userId:G,projectRef:Y}=Z.get("vmClaim"),J=Z.var.studioContext;try{let W=await Z.req.json().catch(()=>({})),K=W.status,H=W.diff,N=H!=null&&typeof H.diffs==="object"&&H.diffs!==null,[F,U]=$41(K)&&N?[K,H]:await Promise.all([Aj0(X,Q,"/_sandbox/git/status","GET",{userId:G,projectRef:Y}),Aj0(X,Q,"/_sandbox/git/diff","GET",{userId:G,projectRef:Y})]),w=await r_$(J,F,U);return Z.json(w,200,cG)}catch(W){let K=W instanceof Error?W.message:String(W);if(K==="SANDBOX_GONE")return Z.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,cG);return Z.json({error:K},502,cG)}}),$.post("/:virtualMcpId/:branch/git/judge-review",HZ({maxSize:Jv$,onError:(Z)=>Z.json({error:"Payload too large"},413,cG)}),async(Z)=>{let X=dC(Z);if(X instanceof Response)return X;let{claimName:Q,userId:G,projectRef:Y}=Z.get("vmClaim"),J=Z.var.studioContext;try{let W=await Z.req.json().catch(()=>({})),K=W.status,H=W.diff,N=H!=null&&typeof H.diffs==="object"&&H.diffs!==null,[F,U]=$41(K)&&N?[K,H]:await Promise.all([Aj0(X,Q,"/_sandbox/git/status","GET",{userId:G,projectRef:Y}),Aj0(X,Q,"/_sandbox/git/diff","GET",{userId:G,projectRef:Y})]),w=await s_$(J,F,U,typeof W.language==="string"?W.language:void 0);return Z.json(w,200,cG)}catch(W){let K=W instanceof Error?W.message:String(W);if(K==="SANDBOX_GONE")return Z.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,cG);return Z.json({error:K},502,cG)}}),$.get("/:virtualMcpId/:branch/preview-fetch",async(Z)=>{let X=dC(Z);if(X instanceof Response)return X;let{claimName:Q}=Z.get("vmClaim"),G=Z.req.query("path");if(!G||!G.startsWith("/")||G.startsWith("//")||G.includes("..")||G.includes("\\"))return Z.json({error:"Path not allowed"},403);let Y;try{Y=await X.getPreviewUrl(Q)}catch{return Z.json({error:"Preview not available"},502)}if(!Y)return Z.json({error:"Preview not available"},502);let J=Y.replace(/\/+$/,""),W=Y41(`${J}${G}`),K;try{K=await fetch(W?.url??`${J}${G}`,{...W?{headers:{host:W.hostHeader}}:{}})}catch{return Z.json({error:"Preview unreachable"},502)}let H;try{H=await K.text()}catch{return Z.json({error:"Preview unreachable"},502)}return new Response(H,{status:K.status,headers:{"content-type":K.headers.get("content-type")??"application/json"}})}),$.post("/:virtualMcpId/:branch/preview-invoke",HZ({maxSize:n86,onError:(Z)=>Z.json({error:"Payload too large"},413)}),async(Z)=>{let X=dC(Z);if(X instanceof Response)return X;let{claimName:Q}=Z.get("vmClaim"),G;try{G=await X.getPreviewUrl(Q)}catch{return Z.json({error:"Preview not available"},502)}if(!G)return Z.json({error:"Preview not available"},502);let Y;try{Y=await Z.req.json()}catch{return Z.json({error:"Invalid JSON body"},400)}if(!Y||typeof Y!=="object"||Array.isArray(Y))return Z.json({error:"Invalid JSON body"},400);let J=$v$(Y);if(!J)return Z.json({error:"Invalid or missing __resolveType"},400);let W=Zv$(G,J.resolveType),K=Y41(W),H;try{H=await fetch(K?.url??W,{method:"POST",headers:{"content-type":"application/json",...K?{host:K.hostHeader}:{}},body:JSON.stringify(J.payload),signal:AbortSignal.timeout(30000)})}catch{return Z.json({error:"Preview unreachable"},502)}let N;try{N=await H.text()}catch{return Z.json({error:"Preview unreachable"},502)}return new Response(N,{status:H.status,headers:{"content-type":H.headers.get("content-type")??"application/json"}})}),$};var Nv$=B(()=>{y8();mO();mg();c_$();GN();d_$();j3();gw();m_$();n_$();vd0();_i();Q41();e_$();Xv$();Yv$();m86=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;t86=u_$(async($,Z)=>{let X=$.var.studioContext;try{Z0(X)}catch{return $.json({error:"Unauthorized"},401)}let Q=W1(X);if(!Q)return $.json({error:"Unauthorized"},401);let G;try{G=r(X)}catch{return $.json({error:"Organization scope required"},403)}let Y=$.req.param("virtualMcpId"),J=$.req.param("branch");if(!Y||!J)return $.json({error:"virtualMcpId and branch are required"},400);try{i86(J)}catch(w){let O=w instanceof Error?w.message:String(w);return $.json({error:O},400)}let W=await X.storage.virtualMcps.findById(Y);if(!W||W.organization_id!==G.id)return $.json({error:"Virtual MCP not found"},404);let K=em({orgId:G.id,virtualMcpId:Y,branch:J}),H=await ON(X,J,Q),N=l_$({userId:H,projectRef:K}),F=W.metadata??null,U;try{U=(await uX(X,{userId:H,branch:J,virtualMcpMetadata:F})).provider}catch{U=null}if(!U)return $.json({error:"No sandbox runner found"},404);return $.set("vmClaim",{claimName:N,callerUserId:Q,runner:U,virtualMcpId:Y,branch:J,userId:H,projectRef:K,virtualMcpMetadata:F,connectionIds:W.connections?.map((w)=>w.connection_id)??[]}),Z()});Pj0=new Map;cG={"Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache"};Kv$=["clone","install","start"]});var Fv$=($)=>{let Z=new B1;if(Z.use("*",vC),Z.route("/",yE0()),Z.route("/",RS$()),Z.route("/",M_$()),Z.route("/",R_$()),Z.route("/",Lj0()),Z.route("/tools",b_$()),Z.route("/",C_$()),Z.route("/",J_$({kvStorage:$.kvStorage})),Z.route("/",G_$()),Z.route("/fs",L_$({getConnection:$.getNatsConnection})),Z.route("/sandbox",Hv$()),Z.route("/",P_$()),Z.route("/deco-sites",hE0()),Z.route("/sso",CE0()),Z.route("/",Ej0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",DS$()),$.mountDevAssets)Z.route("/dev-assets",uE0({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("/",OM$()),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",j_$()),Z.route("/mcp",$O0()),Z.route("/mcp/self",Dj0()),Z.route("/mcp",QO0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var Uv$=B(()=>{y8();L$1();LS$();A$1();cE0();Ho();B$1();Y_$();W_$();E_$();Pn();W$1();GO0();d81();z_$();A_$();I_$();k_$();__$();i81();f_$();n81();ZO0();Nv$()});function s86($){return $.filter((Z)=>Z.vendors?.alias).map((Z)=>({name:Z.name,title:Z.title,description:Z.description,logo:Z.logo,category:Z.category,vendor:{alias:Z.vendors.alias,url:Z.vendors.url}}))}async function e86($,Z){let X=await fetch(`${$}/rest/v1/apps?select=name,title,description,logo,category,vendors(alias,url)`,{headers:{apikey:Z,Authorization:`Bearer ${Z}`,Accept:"application/json"},signal:AbortSignal.timeout(a86)});if(!X.ok){let Q=await X.text().catch(()=>X.statusText);throw console.error(`[deco-apps] Supabase error (${X.status}): ${Q.slice(0,200)}`),Error(`External service error (${X.status})`)}return await X.json()}var a86=1e4,$46=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},wv$=()=>{let $=new B1;return $.use("*",$46),$.get("/",async(Z)=>{let X=c0(),Q=X.decoSupabaseUrl,G=X.decoSupabaseServiceKey;if(!Q||!G)return Z.json({apps:[]});try{let Y=await e86(Q,G);return Z.json({apps:s86(Y)})}catch(Y){return console.error("[deco-apps] GET error:",Y),Z.json({error:"Failed to fetch apps"},502)}}),$};var Ov$=B(()=>{y8();S$()});import{z as M1}from"zod";function cK($,Z="invalid_request_error",X=null,Q=null){return{error:{message:$,type:Z,param:X,code:Q}}}function N46($){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 F46($,Z,X){try{return JSON.parse($)}catch{throw new Lv$(`Invalid JSON in tool call arguments for function '${X}' (tool_call_id: ${Z}): ${$}`)}}function U46($){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((G)=>{if(G.type==="text")return{type:"text",text:G.text};return{type:"image",image:G.image_url.url}})};case"assistant":if(X.tool_calls&&X.tool_calls.length>0)return{role:"assistant",content:X.tool_calls.map((G)=>({type:"tool-call",toolCallId:G.id,toolName:G.function.name,input:F46(G.function.arguments,G.id,G.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 w46($){let Z=$.map((X)=>{let Q=X.function.parameters?PG(X.function.parameters):PG({type:"object",properties:{}});return[X.function.name,_$({description:X.function.description,inputSchema:Q})]});return Object.fromEntries(Z)}function O46($){if(!$)return;return{openai:{response_format:$}}}function B46(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function Bv$($,Z,X,Q,G,Y){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:Y};return G?{...J,providerOptions:G}:J}function Dv$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var Z46=256,X46,Q46,G46,Y46,J46,W46,K46,H46,Lv$,Ev$,jv$;var zv$=B(()=>{k4();y8();mg();xN();X46=M1.object({type:M1.literal("function"),function:M1.object({name:M1.string(),description:M1.string().optional(),parameters:M1.record(M1.string(),M1.unknown()).optional()})}),Q46=M1.object({id:M1.string(),type:M1.literal("function"),function:M1.object({name:M1.string(),arguments:M1.string()})}),G46=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(Q46).optional()}),M1.object({role:M1.literal("tool"),content:M1.string(),tool_call_id:M1.string()})]),Y46=M1.object({type:M1.literal("text")}),J46=M1.object({type:M1.literal("json_object")}),W46=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()})}),K46=M1.union([Y46,J46,W46]),H46=M1.object({model:M1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:M1.array(G46),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(X46).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:K46.optional(),user:M1.string().optional()});Lv$=class Lv$ extends Error{constructor($){super($);this.name="MessageConversionError"}};Ev$=new B1;Ev$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),X=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(cK("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(cK("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(cK("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Q=await $.req.json(),G=H46.safeParse(Q);if(!G.success){let L=G.error.issues[0]??{message:"Invalid request",path:[]};return $.json(cK(`Invalid request: ${L.message}`,"invalid_request_error",L.path.length>0?L.path.join("."):null),400)}let Y=G.data,J=N46(Y.model);if(!J)return $.json(cK("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)=>QD(j.providerId));if(!E)return $.json(cK("No AI provider credentials configured for this organization. Add a credential in settings or specify one explicitly via 'credential_id:model_id'.","invalid_request_error","model"),400);W=E.id}let H;try{H=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json(cK(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let N=H.aiSdk.languageModel(K),F=U46(Y.messages),U=Y.tools?w46(Y.tools):void 0,w=O46(Y.response_format),O=B46(),D=Math.floor(Date.now()/1000);if(Y.stream)return QF($,async(L)=>{let E=Bv$(N,F,U,Y,w,$.req.raw.signal);try{let j=Aw(E),z=!1,A=0,P="",M=async()=>{if(P.length===0)return;let k=P;P="",await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:Y.model,choices:[{index:0,delta:{content:k},finish_reason:null}]})})};for await(let k of j.fullStream){if(!z&&(k.type==="text-delta"||k.type==="tool-call"))await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:Y.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),z=!0;if(k.type==="text-delta"){if(P+=k.text,P.length>=Z46)await M()}else if(k.type==="tool-call"){await M();let q=A++;await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:Y.model,choices:[{index:0,delta:{tool_calls:[{index:q,id:k.toolCallId,type:"function",function:{name:k.toolName,arguments:JSON.stringify(k.input)}}]},finish_reason:null}]})})}else if(k.type==="finish")await M(),await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:Y.model,choices:[{index:0,delta:{},finish_reason:Dv$(k.finishReason)}],usage:k.totalUsage?{prompt_tokens:k.totalUsage.inputTokens??0,completion_tokens:k.totalUsage.outputTokens??0,total_tokens:k.totalUsage.totalTokens??0}:void 0})})}await M(),await L.writeSSE({data:"[DONE]"})}catch(j){let z=j;console.error("[openai-compat:stream] Error:",z.message),await L.writeSSE({data:JSON.stringify({error:{message:z.message,type:"server_error"}})})}});else{let L=Bv$(N,F,U,Y,w,$.req.raw.signal),E=await zw(L),j={role:"assistant",content:E.text||null};if(E.toolCalls&&E.toolCalls.length>0)j.tool_calls=E.toolCalls.map((z)=>({id:z.toolCallId,type:"function",function:{name:z.toolName,arguments:JSON.stringify("input"in z?z.input:{})}})),j.content=null;return $.json({id:O,object:"chat.completion",created:D,model:Y.model,choices:[{index:0,message:j,finish_reason:Dv$(E.finishReason)}],usage:{prompt_tokens:E.usage?.inputTokens??0,completion_tokens:E.usage?.outputTokens??0,total_tokens:E.usage?.totalTokens??0}})}}catch(Q){let G=Q;if(G.name==="AbortError")return $.json(cK("Request aborted","invalid_request_error"),400);if(G.name==="MessageConversionError")return $.json(cK(G.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",G.message,G.stack),$.json(cK(G.message,"server_error"),500)}});jv$=Ev$});var Av$;var Pv$=B(()=>{Av$={name:"decocms",version:"4.204.8",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@nats-io/jwt":"0.0.10-5","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});function E46(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??L46}}var Tv$,L46="https://ph.studio.decocms.com",Rv$;var Iv$=B(()=>{y8();hx0();MV();jZ();S$();X$1();Pv$();Tv$=new B1;Tv$.get("/",($)=>{let Z={version:Av$.version,theme:Gu1(),...pD().logo&&{logo:pD().logo},...UK()&&{internalUrl:vq1()},...c0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!c0().firecrawlApiKey,auth:bk$(),posthog:E46(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:!UK()&&c0().sandboxProviderKind==="agent-sandbox"}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});Rv$=Tv$});function ng($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function W41($){return(ng($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((X)=>X.charAt(0).toUpperCase()+X.slice(1)).join(" ")}function Mv$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(ng($))}&sz=${Z}`}function qv$($,Z){let X=$.trim();if(X.length<=Z)return X;let Q=X.slice(0,Z-1),G=Q.lastIndexOf(" ");return`${(G>Z*0.6?Q.slice(0,G):Q).trimEnd()}\u2026`}function kv$($){let{brand:Z,domain:X,score:Q,verdict:G}=$,Y=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=G?.trim()?qv$(`${G.trim().replace(/\s+/g," ")} \u2014 ${J}`,200):qv$(`How does ${X} really perform? ${J}`,200);return{title:Y,description:W}}import{z as l0}from"zod";var mC,j46,z46,P46,A46,Sv$;var Vv$=B(()=>{mC=l0.enum(["good","bad","neutral"]),j46=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:mC.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 $})),z46=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(j46)),P46={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()},A46=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:mC.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:mC.optional()}),l0.object({template:l0.literal("stats"),stats:l0.array(l0.object({value:l0.coerce.string(),label:l0.coerce.string(),tone:mC.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:mC.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(z46).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:mC.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:mC.optional()})).min(1)})]),Sv$=l0.object({...P46,template:A46})});function Tj0($){let Z=[],X=[...$.sections].sort((G,Y)=>G.position-Y.position).map((G)=>{let Y=Sv$.safeParse(G.props);if(Y.success)return Y.data;let J=Y.error.issues[0];return Z.push({section_type:G.section_type,position:G.position,reason:J?`${J.path.join(".")||"(root)"}: ${J.message}`:"contract violation"}),null}).filter((G)=>G!==null),Q=X.filter((G)=>G.template.template!=="cover"&&G.template.template!=="cta").map((G)=>({key:G.key,title:G.title}));return{deck:{meta:{...$.meta,scores:$.summary?.scores,scannedAt:$.scanned_at,toc:Q},slides:X},drops:Z}}var K41=B(()=>{Vv$()});import{join as Cv$}from"path";async function R46($){try{let Z=await fetch(`${xW({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(T46)});if(!Z.ok)return null;let X=await Z.json(),{deck:Q}=Tj0(X);if(!Q.slides.length)return null;let G=Q.slides.find((W)=>W.template.template==="cover"),Y=G?.template,J=Y&&Y.template==="cover"?Y:void 0;return{brand:Q.meta.brand?.trim()||W41($),score:Q.meta.scores?.cover??J?.score?.value,verdict:G?.annotation?.trim()||G?.headline?.trim()||void 0}}catch{return null}}function lG($){return $.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""")}function I46($,Z){let X=ng($),Q=Z?.brand?.trim()||W41(X),G=Mv$(X,128),J=`${(c0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(X)}`,{title:W,description:K}=kv$({brand:Q,domain:X,score:Z?.score,verdict:Z?.verdict}),H=`${J}/og.png`,N=`${Q} commerce report by decocms`;return[`<title>${lG(W)}</title>`,`<meta name="description" content="${lG(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="${lG(W)}" />`,`<meta property="og:description" content="${lG(K)}" />`,`<meta property="og:url" content="${lG(J)}" />`,`<meta property="og:image" content="${lG(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${lG(N)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${lG(W)}" />`,`<meta name="twitter:description" content="${lG(K)}" />`,`<meta name="twitter:image" content="${lG(H)}" />`,`<meta name="twitter:image:alt" content="${lG(N)}" />`,`<link rel="canonical" href="${lG(J)}" />`,`<link rel="icon" href="${lG(G)}" sizes="any" />`].join(`
|
|
2729
|
+
Respond with the structured verdict and a short reason.`,a_$;var e_$=B(()=>{k4();mw();Q41();g86=G41.object({requiresReview:G41.boolean().describe("true if the changes should go through pull-request review"),reason:G41.string().describe("One short sentence explaining the decision (max ~120 chars)")});a_$={requiresReview:!1,reason:""}});function l86($){if(!$||$.includes(".."))return!1;return c86.test($)}function $v$($){let Z=typeof $.__resolveType==="string"?$.__resolveType:null;if(!Z||!l86(Z))return null;let{__resolveType:X,...Q}=$;return{resolveType:Z,payload:Q}}function Zv$($,Z){return`${$.replace(/\/+$/,"")}/deco/invoke/${Z}`}var c86;var Xv$=B(()=>{c86=/^[\w./@-]+$/});function Y41($){let Z;try{Z=new URL($)}catch{return null}if(!Z.hostname.endsWith(".localhost"))return null;let X=Z.host;return Z.hostname="127.0.0.1",{url:Z.toString(),hostHeader:X}}function Qv$($,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 Gv$($,Z,X,Q){if(!Q.connectionId)throw new ig("Push requires a connected GitHub account. Connect mcp-github for this project and restart the sandbox.");let G=$.organization?.id;if(!G)throw new ig(d7);await Rw({ctx:$,connectionId:Q.connectionId,organizationId:G,forceRefresh:!0,onLegacyMintError:(N)=>{let F=N instanceof Error?N.message:d7;throw new ig(F)}});let{cloneUrl:Y,gitUserName:J,gitUserEmail:W}=await Iw(Q.connectionId,Q.owner,Q.name,$.db,$.vault),K=zj0($),H=await Z.proxyDaemonRequest(X,"/_sandbox/config",{method:"PUT",headers:new Headers({"content-type":"application/json"}),body:JSON.stringify({git:{repository:{cloneUrl:Y},identity:{userName:J,userEmail:W}},...K?{operator:K}:{}})});if(!H.ok){let N=await lw(H,d86).catch(()=>H.statusText);throw Error(`Failed to refresh sandbox git credentials (${H.status}): ${N}`)}}var d86=10485760,ig;var Yv$=B(()=>{YN();r81();bi();rf();ig=class ig extends Error{constructor($){super($);this.name="GitPushAuthError"}}});function i86($){let Z=$.startsWith("thread:")?$.slice(7):$;if(!Z||Z.length>255||Z.includes("..")||Z.startsWith("/")||Z.endsWith("/")||Z.endsWith(".lock")||!m86.test(Z))throw Error(`Invalid branch name: ${$}`)}function lC($){return AbortSignal.any([$.req.raw.signal,AbortSignal.timeout(p86)])}function dC($){let{runner:Z}=$.get("vmClaim");if(!Z)return $.json({error:"No sandbox runner configured"},503);return Z}function J41($,Z){let Q=(Pj0.get($)??Promise.resolve()).catch(()=>{}).then(Z),G=Q.catch(()=>{});return Pj0.set($,G),G.finally(()=>{if(Pj0.get($)===G)Pj0.delete($)}),Q}async function fZ($,Z,X){let Q=dC($);if(Q instanceof Response)return Q;let{claimName:G,userId:Y,projectRef:J}=$.get("vmClaim"),W=X?.method??"POST",K=null,H=new Headers;if(X?.jsonBody!==void 0)K=X.jsonBody,H.set("content-type","application/json");else if(X?.forwardJsonBody)K=await $.req.text(),H.set("content-type","application/json");let N=X?.signal,F={method:W,headers:H,body:K,...N?{signal:N}:{}},U=async()=>{let w=await Q.proxyDaemonRequest(G,Z,F);if(X?.map404to410&&w.status===404){try{await w.body?.cancel()}catch{}if(await Q.adoptLiveClaim?.({userId:Y,projectRef:J},G))w=await Q.proxyDaemonRequest(G,Z,F);if(w.status===404){try{await w.body?.cancel()}catch{}return new Response(JSON.stringify({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."}),{status:410,headers:{"content-type":"application/json",...cG}})}}let O=await w.text(),D=X?.redactRepoDirUnlessDesktop&&Q.kind!=="user-desktop"?o86(O):O,L=w.headers.get("content-type")??"application/json";return new Response(D,{status:w.status,headers:{"content-type":L,...cG}})};try{if(N){let w=U();return w.catch(()=>{}),await Promise.race([w,new Promise((D,L)=>{if(N.aborted)return L(N.reason);N.addEventListener("abort",()=>L(N.reason),{once:!0})})])}return await U()}catch(w){let O=w instanceof Error?w.message:String(w);return $.json({error:`Daemon unreachable: ${O}`},502)}}function o86($){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 Aj0($,Z,X,Q="GET",G){let Y=await $.proxyDaemonRequest(Z,X,{method:Q,headers:new Headers,body:null});if(Y.status===404&&G){try{await Y.body?.cancel()}catch{}if(await $.adoptLiveClaim?.(G,Z))Y=await $.proxyDaemonRequest(Z,X,{method:Q,headers:new Headers,body:null})}if(Y.status===404){try{await Y.body?.cancel()}catch{}throw Error("SANDBOX_GONE")}let J=await Y.text();if(!Y.ok){let W=`Daemon error (${Y.status})`;try{W=JSON.parse(J).error??W}catch{}throw Error(W)}return JSON.parse(J)}function r86($){return Kv$.includes($)}var m86,Jv$=524288,n86=65536,p86=1e4,Wv$=2000,t86,Pj0,cG,Kv$,Hv$=()=>{let $=new B1;return $.use("/:virtualMcpId/:branch/*",t86),$.post("/:virtualMcpId/:branch/write",(Z)=>fZ(Z,"/_sandbox/write",{forwardJsonBody:!0,signal:lC(Z)})),$.post("/:virtualMcpId/:branch/unlink",(Z)=>fZ(Z,"/_sandbox/unlink",{forwardJsonBody:!0,signal:lC(Z)})),$.post("/:virtualMcpId/:branch/mkdir",(Z)=>fZ(Z,"/_sandbox/mkdir",{forwardJsonBody:!0,signal:lC(Z)})),$.post("/:virtualMcpId/:branch/rename",(Z)=>fZ(Z,"/_sandbox/rename",{forwardJsonBody:!0,signal:lC(Z)})),$.post("/:virtualMcpId/:branch/read",(Z)=>fZ(Z,"/_sandbox/read",{forwardJsonBody:!0,signal:lC(Z)})),$.post("/:virtualMcpId/:branch/glob",(Z)=>fZ(Z,"/_sandbox/glob",{forwardJsonBody:!0,signal:lC(Z)})),$.post("/:virtualMcpId/:branch/grep",(Z)=>fZ(Z,"/_sandbox/grep",{forwardJsonBody:!0,signal:lC(Z)})),$.post("/:virtualMcpId/:branch/exec/:script",async(Z)=>{let X=Z.req.param("script");if(!X)return Z.json({error:"missing script name"},400);return fZ(Z,`/_sandbox/exec/${encodeURIComponent(X)}`)}),$.post("/:virtualMcpId/:branch/exec/:script/kill",async(Z)=>{let X=Z.req.param("script");if(!X)return Z.json({error:"missing script name"},400);return fZ(Z,`/_sandbox/exec/${encodeURIComponent(X)}/kill`)}),$.get("/:virtualMcpId/:branch/config",(Z)=>fZ(Z,"/_sandbox/config",{method:"GET",map404to410:!0,redactRepoDirUnlessDesktop:!0})),$.put("/:virtualMcpId/:branch/config",(Z)=>fZ(Z,"/_sandbox/config",{method:"PUT",forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/setup/:step",async(Z)=>{let X=Z.req.param("step");if(!X||!r86(X))return Z.json({error:`step must be one of: ${Kv$.join(", ")}`},400);if(X==="start"){let Q=Z.get("vmClaim");if(Q.runner){let G=r(Z.var.studioContext),Y=rF0(Q.virtualMcpMetadata);try{await sF0({ctx:Z.var.studioContext,runner:Q.runner,handle:Q.claimName,orgId:G.id,userId:Q.callerUserId,entries:Y})}catch(J){let W=J instanceof Error?J.message:String(J);return Z.json({error:`Failed to push env to daemon: ${W}`},502)}}}return fZ(Z,`/_sandbox/setup/${X}`,{signal:Z.req.raw.signal,map404to410:!0})}),$.get("/:virtualMcpId/:branch/events",(Z)=>{let X=Z.get("vmClaim");if(!X.runner)return QF(Z,async(Q)=>{await Q.writeSSE({event:"phase",data:JSON.stringify({kind:"failed",reason:"unknown",message:"No sandbox runner configured on this studio instance."})})});return i_$(Z,{ctx:Z.var.studioContext,claimName:X.claimName,runner:X.runner,virtualMcpId:X.virtualMcpId,branch:X.branch,userId:X.userId,projectRef:X.projectRef,virtualMcpMetadata:X.virtualMcpMetadata})}),$.get("/:virtualMcpId/:branch/git/status",(Z)=>fZ(Z,"/_sandbox/git/status",{method:"GET",map404to410:!0,signal:AbortSignal.any([Z.req.raw.signal,AbortSignal.timeout(Wv$)])})),$.post("/:virtualMcpId/:branch/git/status",(Z)=>fZ(Z,"/_sandbox/git/status",{map404to410:!0,signal:AbortSignal.any([Z.req.raw.signal,AbortSignal.timeout(Wv$)])})),$.post("/:virtualMcpId/:branch/git/diff",(Z)=>fZ(Z,"/_sandbox/git/diff",{forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/git/publish",async(Z)=>{let X=dC(Z);if(X instanceof Response)return X;let{claimName:Q,virtualMcpMetadata:G,connectionIds:Y}=Z.get("vmClaim"),J=Z.var.studioContext;return J41(Q,async()=>{try{await a81(J,X,Q);let W=Qv$(G,Y);if(W)await Gv$(J,X,Q,W)}catch(W){if(W instanceof ig)return Z.json({error:W.message},403,cG);let K=W instanceof Error?W.message:String(W);return Z.json({error:K},502,cG)}return fZ(Z,"/_sandbox/git/publish",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/discard",(Z)=>{let{claimName:X}=Z.get("vmClaim");return J41(X,()=>fZ(Z,"/_sandbox/git/discard",{forwardJsonBody:!0,map404to410:!0}))}),$.post("/:virtualMcpId/:branch/git/rebase",async(Z)=>{let X=dC(Z);if(X instanceof Response)return X;let{claimName:Q}=Z.get("vmClaim"),G=Z.var.studioContext;return J41(Q,async()=>{try{await a81(G,X,Q)}catch(Y){let J=Y instanceof Error?Y.message:String(Y);return Z.json({error:J},502,cG)}return fZ(Z,"/_sandbox/git/rebase",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/suggest-commit",HZ({maxSize:Jv$,onError:(Z)=>Z.json({error:"Payload too large"},413,cG)}),async(Z)=>{let X=dC(Z);if(X instanceof Response)return X;let{claimName:Q,userId:G,projectRef:Y}=Z.get("vmClaim"),J=Z.var.studioContext;try{let W=await Z.req.json().catch(()=>({})),K=W.status,H=W.diff,N=H!=null&&typeof H.diffs==="object"&&H.diffs!==null,[F,U]=$41(K)&&N?[K,H]:await Promise.all([Aj0(X,Q,"/_sandbox/git/status","GET",{userId:G,projectRef:Y}),Aj0(X,Q,"/_sandbox/git/diff","GET",{userId:G,projectRef:Y})]),w=await r_$(J,F,U);return Z.json(w,200,cG)}catch(W){let K=W instanceof Error?W.message:String(W);if(K==="SANDBOX_GONE")return Z.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,cG);return Z.json({error:K},502,cG)}}),$.post("/:virtualMcpId/:branch/git/judge-review",HZ({maxSize:Jv$,onError:(Z)=>Z.json({error:"Payload too large"},413,cG)}),async(Z)=>{let X=dC(Z);if(X instanceof Response)return X;let{claimName:Q,userId:G,projectRef:Y}=Z.get("vmClaim"),J=Z.var.studioContext;try{let W=await Z.req.json().catch(()=>({})),K=W.status,H=W.diff,N=H!=null&&typeof H.diffs==="object"&&H.diffs!==null,[F,U]=$41(K)&&N?[K,H]:await Promise.all([Aj0(X,Q,"/_sandbox/git/status","GET",{userId:G,projectRef:Y}),Aj0(X,Q,"/_sandbox/git/diff","GET",{userId:G,projectRef:Y})]),w=await s_$(J,F,U,typeof W.language==="string"?W.language:void 0);return Z.json(w,200,cG)}catch(W){let K=W instanceof Error?W.message:String(W);if(K==="SANDBOX_GONE")return Z.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,cG);return Z.json({error:K},502,cG)}}),$.get("/:virtualMcpId/:branch/preview-fetch",async(Z)=>{let X=dC(Z);if(X instanceof Response)return X;let{claimName:Q}=Z.get("vmClaim"),G=Z.req.query("path");if(!G||!G.startsWith("/")||G.startsWith("//")||G.includes("..")||G.includes("\\"))return Z.json({error:"Path not allowed"},403);let Y;try{Y=await X.getPreviewUrl(Q)}catch{return Z.json({error:"Preview not available"},502)}if(!Y)return Z.json({error:"Preview not available"},502);let J=Y.replace(/\/+$/,""),W=Y41(`${J}${G}`),K;try{K=await fetch(W?.url??`${J}${G}`,{...W?{headers:{host:W.hostHeader}}:{}})}catch{return Z.json({error:"Preview unreachable"},502)}let H;try{H=await K.text()}catch{return Z.json({error:"Preview unreachable"},502)}return new Response(H,{status:K.status,headers:{"content-type":K.headers.get("content-type")??"application/json"}})}),$.post("/:virtualMcpId/:branch/preview-invoke",HZ({maxSize:n86,onError:(Z)=>Z.json({error:"Payload too large"},413)}),async(Z)=>{let X=dC(Z);if(X instanceof Response)return X;let{claimName:Q}=Z.get("vmClaim"),G;try{G=await X.getPreviewUrl(Q)}catch{return Z.json({error:"Preview not available"},502)}if(!G)return Z.json({error:"Preview not available"},502);let Y;try{Y=await Z.req.json()}catch{return Z.json({error:"Invalid JSON body"},400)}if(!Y||typeof Y!=="object"||Array.isArray(Y))return Z.json({error:"Invalid JSON body"},400);let J=$v$(Y);if(!J)return Z.json({error:"Invalid or missing __resolveType"},400);let W=Zv$(G,J.resolveType),K=Y41(W),H;try{H=await fetch(K?.url??W,{method:"POST",headers:{"content-type":"application/json",...K?{host:K.hostHeader}:{}},body:JSON.stringify(J.payload),signal:AbortSignal.timeout(30000)})}catch{return Z.json({error:"Preview unreachable"},502)}let N;try{N=await H.text()}catch{return Z.json({error:"Preview unreachable"},502)}return new Response(N,{status:H.status,headers:{"content-type":H.headers.get("content-type")??"application/json"}})}),$};var Nv$=B(()=>{y8();mO();mg();c_$();GN();d_$();j3();gw();m_$();n_$();vd0();_i();Q41();e_$();Xv$();Yv$();m86=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;t86=u_$(async($,Z)=>{let X=$.var.studioContext;try{Z0(X)}catch{return $.json({error:"Unauthorized"},401)}let Q=W1(X);if(!Q)return $.json({error:"Unauthorized"},401);let G;try{G=r(X)}catch{return $.json({error:"Organization scope required"},403)}let Y=$.req.param("virtualMcpId"),J=$.req.param("branch");if(!Y||!J)return $.json({error:"virtualMcpId and branch are required"},400);try{i86(J)}catch(w){let O=w instanceof Error?w.message:String(w);return $.json({error:O},400)}let W=await X.storage.virtualMcps.findById(Y);if(!W||W.organization_id!==G.id)return $.json({error:"Virtual MCP not found"},404);let K=em({orgId:G.id,virtualMcpId:Y,branch:J}),H=await ON(X,J,Q),N=l_$({userId:H,projectRef:K}),F=W.metadata??null,U;try{U=(await uX(X,{userId:H,branch:J,virtualMcpMetadata:F})).provider}catch{U=null}if(!U)return $.json({error:"No sandbox runner found"},404);return $.set("vmClaim",{claimName:N,callerUserId:Q,runner:U,virtualMcpId:Y,branch:J,userId:H,projectRef:K,virtualMcpMetadata:F,connectionIds:W.connections?.map((w)=>w.connection_id)??[]}),Z()});Pj0=new Map;cG={"Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache"};Kv$=["clone","install","start"]});var Fv$=($)=>{let Z=new B1;if(Z.use("*",vC),Z.route("/",yE0()),Z.route("/",RS$()),Z.route("/",M_$()),Z.route("/",R_$()),Z.route("/",Lj0()),Z.route("/tools",b_$()),Z.route("/",C_$()),Z.route("/",J_$({kvStorage:$.kvStorage})),Z.route("/",G_$()),Z.route("/fs",L_$({getConnection:$.getNatsConnection})),Z.route("/sandbox",Hv$()),Z.route("/",P_$()),Z.route("/deco-sites",hE0()),Z.route("/sso",CE0()),Z.route("/",Ej0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",DS$()),$.mountDevAssets)Z.route("/dev-assets",uE0({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("/",OM$()),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",j_$()),Z.route("/mcp",$O0()),Z.route("/mcp/self",Dj0()),Z.route("/mcp",QO0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var Uv$=B(()=>{y8();L$1();LS$();A$1();cE0();Ho();B$1();Y_$();W_$();E_$();Pn();W$1();GO0();d81();z_$();A_$();I_$();k_$();__$();i81();f_$();n81();ZO0();Nv$()});function s86($){return $.filter((Z)=>Z.vendors?.alias).map((Z)=>({name:Z.name,title:Z.title,description:Z.description,logo:Z.logo,category:Z.category,vendor:{alias:Z.vendors.alias,url:Z.vendors.url}}))}async function e86($,Z){let X=await fetch(`${$}/rest/v1/apps?select=name,title,description,logo,category,vendors(alias,url)`,{headers:{apikey:Z,Authorization:`Bearer ${Z}`,Accept:"application/json"},signal:AbortSignal.timeout(a86)});if(!X.ok){let Q=await X.text().catch(()=>X.statusText);throw console.error(`[deco-apps] Supabase error (${X.status}): ${Q.slice(0,200)}`),Error(`External service error (${X.status})`)}return await X.json()}var a86=1e4,$46=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},wv$=()=>{let $=new B1;return $.use("*",$46),$.get("/",async(Z)=>{let X=c0(),Q=X.decoSupabaseUrl,G=X.decoSupabaseServiceKey;if(!Q||!G)return Z.json({apps:[]});try{let Y=await e86(Q,G);return Z.json({apps:s86(Y)})}catch(Y){return console.error("[deco-apps] GET error:",Y),Z.json({error:"Failed to fetch apps"},502)}}),$};var Ov$=B(()=>{y8();S$()});import{z as M1}from"zod";function cK($,Z="invalid_request_error",X=null,Q=null){return{error:{message:$,type:Z,param:X,code:Q}}}function N46($){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 F46($,Z,X){try{return JSON.parse($)}catch{throw new Lv$(`Invalid JSON in tool call arguments for function '${X}' (tool_call_id: ${Z}): ${$}`)}}function U46($){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((G)=>{if(G.type==="text")return{type:"text",text:G.text};return{type:"image",image:G.image_url.url}})};case"assistant":if(X.tool_calls&&X.tool_calls.length>0)return{role:"assistant",content:X.tool_calls.map((G)=>({type:"tool-call",toolCallId:G.id,toolName:G.function.name,input:F46(G.function.arguments,G.id,G.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 w46($){let Z=$.map((X)=>{let Q=X.function.parameters?PG(X.function.parameters):PG({type:"object",properties:{}});return[X.function.name,_$({description:X.function.description,inputSchema:Q})]});return Object.fromEntries(Z)}function O46($){if(!$)return;return{openai:{response_format:$}}}function B46(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function Bv$($,Z,X,Q,G,Y){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:Y};return G?{...J,providerOptions:G}:J}function Dv$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var Z46=256,X46,Q46,G46,Y46,J46,W46,K46,H46,Lv$,Ev$,jv$;var zv$=B(()=>{k4();y8();mg();xN();X46=M1.object({type:M1.literal("function"),function:M1.object({name:M1.string(),description:M1.string().optional(),parameters:M1.record(M1.string(),M1.unknown()).optional()})}),Q46=M1.object({id:M1.string(),type:M1.literal("function"),function:M1.object({name:M1.string(),arguments:M1.string()})}),G46=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(Q46).optional()}),M1.object({role:M1.literal("tool"),content:M1.string(),tool_call_id:M1.string()})]),Y46=M1.object({type:M1.literal("text")}),J46=M1.object({type:M1.literal("json_object")}),W46=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()})}),K46=M1.union([Y46,J46,W46]),H46=M1.object({model:M1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:M1.array(G46),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(X46).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:K46.optional(),user:M1.string().optional()});Lv$=class Lv$ extends Error{constructor($){super($);this.name="MessageConversionError"}};Ev$=new B1;Ev$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),X=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(cK("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(cK("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(cK("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Q=await $.req.json(),G=H46.safeParse(Q);if(!G.success){let L=G.error.issues[0]??{message:"Invalid request",path:[]};return $.json(cK(`Invalid request: ${L.message}`,"invalid_request_error",L.path.length>0?L.path.join("."):null),400)}let Y=G.data,J=N46(Y.model);if(!J)return $.json(cK("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)=>QD(j.providerId));if(!E)return $.json(cK("No AI provider credentials configured for this organization. Add a credential in settings or specify one explicitly via 'credential_id:model_id'.","invalid_request_error","model"),400);W=E.id}let H;try{H=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json(cK(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let N=H.aiSdk.languageModel(K),F=U46(Y.messages),U=Y.tools?w46(Y.tools):void 0,w=O46(Y.response_format),O=B46(),D=Math.floor(Date.now()/1000);if(Y.stream)return QF($,async(L)=>{let E=Bv$(N,F,U,Y,w,$.req.raw.signal);try{let j=Aw(E),z=!1,A=0,P="",M=async()=>{if(P.length===0)return;let k=P;P="",await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:Y.model,choices:[{index:0,delta:{content:k},finish_reason:null}]})})};for await(let k of j.fullStream){if(!z&&(k.type==="text-delta"||k.type==="tool-call"))await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:Y.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),z=!0;if(k.type==="text-delta"){if(P+=k.text,P.length>=Z46)await M()}else if(k.type==="tool-call"){await M();let q=A++;await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:Y.model,choices:[{index:0,delta:{tool_calls:[{index:q,id:k.toolCallId,type:"function",function:{name:k.toolName,arguments:JSON.stringify(k.input)}}]},finish_reason:null}]})})}else if(k.type==="finish")await M(),await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:Y.model,choices:[{index:0,delta:{},finish_reason:Dv$(k.finishReason)}],usage:k.totalUsage?{prompt_tokens:k.totalUsage.inputTokens??0,completion_tokens:k.totalUsage.outputTokens??0,total_tokens:k.totalUsage.totalTokens??0}:void 0})})}await M(),await L.writeSSE({data:"[DONE]"})}catch(j){let z=j;console.error("[openai-compat:stream] Error:",z.message),await L.writeSSE({data:JSON.stringify({error:{message:z.message,type:"server_error"}})})}});else{let L=Bv$(N,F,U,Y,w,$.req.raw.signal),E=await zw(L),j={role:"assistant",content:E.text||null};if(E.toolCalls&&E.toolCalls.length>0)j.tool_calls=E.toolCalls.map((z)=>({id:z.toolCallId,type:"function",function:{name:z.toolName,arguments:JSON.stringify("input"in z?z.input:{})}})),j.content=null;return $.json({id:O,object:"chat.completion",created:D,model:Y.model,choices:[{index:0,message:j,finish_reason:Dv$(E.finishReason)}],usage:{prompt_tokens:E.usage?.inputTokens??0,completion_tokens:E.usage?.outputTokens??0,total_tokens:E.usage?.totalTokens??0}})}}catch(Q){let G=Q;if(G.name==="AbortError")return $.json(cK("Request aborted","invalid_request_error"),400);if(G.name==="MessageConversionError")return $.json(cK(G.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",G.message,G.stack),$.json(cK(G.message,"server_error"),500)}});jv$=Ev$});var Av$;var Pv$=B(()=>{Av$={name:"decocms",version:"4.204.10",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@nats-io/jwt":"0.0.10-5","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});function E46(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??L46}}var Tv$,L46="https://ph.studio.decocms.com",Rv$;var Iv$=B(()=>{y8();hx0();MV();jZ();S$();X$1();Pv$();Tv$=new B1;Tv$.get("/",($)=>{let Z={version:Av$.version,theme:Gu1(),...pD().logo&&{logo:pD().logo},...UK()&&{internalUrl:vq1()},...c0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!c0().firecrawlApiKey,auth:bk$(),posthog:E46(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:!UK()&&c0().sandboxProviderKind==="agent-sandbox"}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});Rv$=Tv$});function ng($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function W41($){return(ng($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((X)=>X.charAt(0).toUpperCase()+X.slice(1)).join(" ")}function Mv$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(ng($))}&sz=${Z}`}function qv$($,Z){let X=$.trim();if(X.length<=Z)return X;let Q=X.slice(0,Z-1),G=Q.lastIndexOf(" ");return`${(G>Z*0.6?Q.slice(0,G):Q).trimEnd()}\u2026`}function kv$($){let{brand:Z,domain:X,score:Q,verdict:G}=$,Y=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=G?.trim()?qv$(`${G.trim().replace(/\s+/g," ")} \u2014 ${J}`,200):qv$(`How does ${X} really perform? ${J}`,200);return{title:Y,description:W}}import{z as l0}from"zod";var mC,j46,z46,P46,A46,Sv$;var Vv$=B(()=>{mC=l0.enum(["good","bad","neutral"]),j46=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:mC.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 $})),z46=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(j46)),P46={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()},A46=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:mC.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:mC.optional()}),l0.object({template:l0.literal("stats"),stats:l0.array(l0.object({value:l0.coerce.string(),label:l0.coerce.string(),tone:mC.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:mC.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(z46).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:mC.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:mC.optional()})).min(1)})]),Sv$=l0.object({...P46,template:A46})});function Tj0($){let Z=[],X=[...$.sections].sort((G,Y)=>G.position-Y.position).map((G)=>{let Y=Sv$.safeParse(G.props);if(Y.success)return Y.data;let J=Y.error.issues[0];return Z.push({section_type:G.section_type,position:G.position,reason:J?`${J.path.join(".")||"(root)"}: ${J.message}`:"contract violation"}),null}).filter((G)=>G!==null),Q=X.filter((G)=>G.template.template!=="cover"&&G.template.template!=="cta").map((G)=>({key:G.key,title:G.title}));return{deck:{meta:{...$.meta,scores:$.summary?.scores,scannedAt:$.scanned_at,toc:Q},slides:X},drops:Z}}var K41=B(()=>{Vv$()});import{join as Cv$}from"path";async function R46($){try{let Z=await fetch(`${xW({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(T46)});if(!Z.ok)return null;let X=await Z.json(),{deck:Q}=Tj0(X);if(!Q.slides.length)return null;let G=Q.slides.find((W)=>W.template.template==="cover"),Y=G?.template,J=Y&&Y.template==="cover"?Y:void 0;return{brand:Q.meta.brand?.trim()||W41($),score:Q.meta.scores?.cover??J?.score?.value,verdict:G?.annotation?.trim()||G?.headline?.trim()||void 0}}catch{return null}}function lG($){return $.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""")}function I46($,Z){let X=ng($),Q=Z?.brand?.trim()||W41(X),G=Mv$(X,128),J=`${(c0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(X)}`,{title:W,description:K}=kv$({brand:Q,domain:X,score:Z?.score,verdict:Z?.verdict}),H=`${J}/og.png`,N=`${Q} commerce report by decocms`;return[`<title>${lG(W)}</title>`,`<meta name="description" content="${lG(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="${lG(W)}" />`,`<meta property="og:description" content="${lG(K)}" />`,`<meta property="og:url" content="${lG(J)}" />`,`<meta property="og:image" content="${lG(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${lG(N)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${lG(W)}" />`,`<meta name="twitter:description" content="${lG(K)}" />`,`<meta name="twitter:image" content="${lG(H)}" />`,`<meta name="twitter:image:alt" content="${lG(N)}" />`,`<link rel="canonical" href="${lG(J)}" />`,`<link rel="icon" href="${lG(G)}" sizes="any" />`].join(`
|
|
2730
2730
|
`)}function q46($,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}
|
|
2731
2731
|
</head>`)}function _v$($){let Z=new B1;return Z.get("/:domain/og.png",async(X)=>{let Q=ng(X.req.param("domain")),G=async()=>{let Y=$?Bun.file(Cv$($,"report-og-fallback.png")):null;if(!Y||!await Y.exists())return X.notFound();return X.body(new Uint8Array(await Y.arrayBuffer()),200,{"Content-Type":"image/png","Cache-Control":"public, max-age=0, s-maxage=3600"})};try{let Y=await fetch(`${xW({})}/api/v2/public/diagnostics/${encodeURIComponent(Q)}/og.png`,{signal:AbortSignal.timeout(M46)}),J=Y.headers.get("content-type")??"";if(!Y.ok||!J.startsWith("image/")||!Y.body)return G();return X.body(Y.body,200,{"Content-Type":J,"Cache-Control":"public, max-age=0, s-maxage=604800"})}catch{return G()}}),Z.get("/:domain",async(X)=>{let Q=X.req.param("domain"),G=$?Cv$($,"index.html"):null,Y=G?Bun.file(G):null;if(!Y||!await Y.exists())return X.notFound();let J=await Y.text();try{let W=await R46(ng(Q)),K=I46(Q,W);return X.html(q46(J,K),200,{"Cache-Control":"public, max-age=0, s-maxage=300"})}catch{return X.html(J)}}),Z}var T46=2500,M46=1e4;var vv$=B(()=>{y8();K41();WL();S$()});function xo($,Z){return fetch(`${xW({})}${$}`,Z)}async function k46($,Z,X){let Q=new URLSearchParams;if(Z)Q.set("pw",Z);if(X)Q.set("lang",X);let G=Q.toString()?`?${Q.toString()}`:"",Y=await xo(`/api/v2/public/diagnostics/${encodeURIComponent($)}${G}`,{headers:{Accept:"application/json"}});if(Y.status===404)return{status:"not_found",deck:null,scanned_at:null,drops:[]};if(!Y.ok)throw Error(`report read HTTP ${Y.status}`);let J=await Y.json(),{deck:W,drops:K}=Tj0(J);return{status:W.slides.length?"ready":"empty",deck:W,scanned_at:J.scanned_at,drops:K}}var S46,i3,Rj0=async($,Z)=>{if(!$.get("reportUser"))return $.json({error:"Authentication required"},401);await Z();return},bv$;var fv$=B(()=>{y8();IY();WL();K41();S46=new Set(["complete","errored","terminated","unknown"]),i3=new B1;i3.use("*",async($,Z)=>{let X=await j8.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});i3.use("/run",Rj0);i3.use("/status",Rj0);i3.use("/link-token/*",Rj0);i3.use("/suggest",Rj0);i3.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,G=$.req.query("lang")?.trim()||void 0;try{let Y=await k46(Z,Q,G);if($.header("Cache-Control","private, no-store"),X||!Y.deck)return $.json(Y);return $.json({...Y,deck:{...Y.deck,slides:Y.deck.slides.slice(0,1)},truncated:Y.status==="ready"})}catch{return $.json({error:"report read failed"},502)}});i3.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 G=Z.email,Y=typeof X.distinctId==="string"&&X.distinctId.trim()&&X.distinctId.length<=200?X.distinctId.trim():void 0;try{let J=await xo("/api/v2/diagnostics/run",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${JL({})}`},body:JSON.stringify({url:Q,email:G,distinct_id:Y})});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)}});i3.get("/status",async($)=>{let Z=$.req.query("id");if(!Z)return $.json({error:"id is required"},400);try{let X=await xo(`/api/v2/diagnostics/status?id=${encodeURIComponent(Z)}`,{headers:{Authorization:`Bearer ${JL({})}`}});if(!X.ok)return $.json({error:`status HTTP ${X.status}`},502);let G=(await X.json()).status??"unknown",Y={done:S46.has(G),status:G};return $.json(Y)}catch{return $.json({error:"status failed"},502)}});i3.get("/link-token/:id",async($)=>{let Z=$.req.param("id");try{let X=await xo(`/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)}});i3.get("/suggest",async($)=>{let Z=($.req.query("q")??"").trim().slice(0,64);if(Z.length<2)return $.json({suggestions:[]});try{let X=await xo(`/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:[]})}});bv$=i3});import{createHmac as V46,timingSafeEqual as C46}from"crypto";function yv$($,Z,X,Q=Date.now()){if(!Z||!X)return!1;let G,Y=[];for(let H of Z.split(",")){let N=H.indexOf("=");if(N<=0)continue;let F=H.slice(0,N).trim(),U=H.slice(N+1).trim();if(F==="t")G=U;else if(F==="v1")Y.push(U)}if(!G||Y.length===0)return!1;let J=Number(G);if(!Number.isFinite(J)||Math.abs(Q/1000-J)>_46)return!1;let W=V46("sha256",X).update(`${G}.${$}`).digest("hex"),K=Buffer.from(W,"hex");return Y.some((H)=>{let N=Buffer.from(H,"hex");return K.length===N.length&&C46(K,N)})}function gv$($){let Z;try{Z=JSON.parse($)}catch{return null}let X=QJ(Z),Q=QJ(QJ(X?.data)?.object);if(!X||typeof X.type!=="string"||!Q)return null;return{id:lK(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 hv$($){switch($){case"active":case"trialing":return"active";case"past_due":return"past_due";default:return"canceled"}}function lK($){return typeof $==="string"?$:void 0}function QJ($){return typeof $==="object"&&$!==null?$:void 0}function Ij0($){return typeof $==="number"?new Date($*1000):null}function F41($){return lK($)??lK(QJ($)?.id)}function v46($){return F41($.subscription)??lK(QJ(QJ($.parent)?.subscription_details)?.subscription)}function b46($){let Z=Ij0($.current_period_end);if(Z)return Z;let X=QJ($.items)?.data;if(!Array.isArray(X))return null;let Q=0;for(let G of X){let Y=QJ(G)?.current_period_end;if(typeof Y==="number"&&Y>Q)Q=Y}return Q>0?new Date(Q*1000):null}function H41($,Z){let X=Ij0($.created);return!!X&&!!Z.lastStripeEventAt&&X<Z.lastStripeEventAt}function N41($,Z){let X=Ij0($.created);if(!X)return;return Z.lastStripeEventAt&&Z.lastStripeEventAt>X?void 0:X}async function f46($,Z){let X=Z.data.object;switch(Z.type){case"checkout.session.completed":case"checkout.session.async_payment_succeeded":{let Q=lK(QJ(X.metadata)?.orgId);if(!Q)return{handled:!1,reason:"no orgId"};if(lK(QJ(X.metadata)?.kind)==="topup"){if(X.mode!=="payment")return{handled:!1,reason:"topup with wrong mode"};if(lK(X.payment_status)!=="paid")return{handled:!1,reason:"payment not confirmed"};let J=lK(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(QJ(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:QJ(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(lK(X.payment_status)!=="paid")return{handled:!1,reason:"payment not confirmed"};let G=await $.getBilling(Q);if(!G)return{handled:!1,reason:"unknown org"};let Y=F41(X.subscription);if(G.stripeSubscriptionId&&Y&&G.stripeSubscriptionId!==Y)return console.error("stripe webhook: refused checkout rebind",{organizationId:Q,eventId:Z.id}),{handled:!1,reason:"org already bound to another subscription",orphanSubscriptionId:Y};if(H41(Z,G))return{handled:!1,reason:"stale event"};return await $.updateStripeState(Q,{stripeCustomerId:F41(X.customer),stripeSubscriptionId:Y,status:"active",lastStripeEventAt:N41(Z,G)}),{handled:!0,organizationId:Q}}case"customer.subscription.updated":case"customer.subscription.deleted":{let Q=lK(X.id);if(!Q)return{handled:!1,reason:"no sub id"};let G=await $.getBillingByStripeSubscriptionId(Q);if(!G)return{handled:!1,reason:"unknown subscription"};let Y=Z.type==="customer.subscription.deleted";if(!Y&&H41(Z,G))return{handled:!1,reason:"stale event"};let J=Y?"canceled":hv$(X.status);return await $.updateStripeState(G.organizationId,{status:J,currentPeriodEnd:b46(X),...Y&&{stripeSubscriptionId:null},lastStripeEventAt:N41(Z,G)}),{handled:!0,organizationId:G.organizationId}}case"invoice.paid":{let Q=v46(X);if(!Q)return{handled:!1,reason:"no sub id"};let G=await $.getBillingByStripeSubscriptionId(Q);if(!G)return{handled:!1,reason:"unknown subscription"};if(H41(Z,G))return{handled:!1,reason:"stale event"};return await $.updateStripeState(G.organizationId,{status:"active",currentPeriodEnd:Ij0(X.period_end),lastStripeEventAt:N41(Z,G)}),{handled:!0,organizationId:G.organizationId}}default:return{handled:!1,reason:`unhandled event ${Z.type}`}}}function x46($,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:hv$(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 xv$($,Z){let X=x46($,Z);if(!X)return;nJ({event:X.name,organizationId:X.organizationId,...$.id?{uuid:Ul1(`stripe:${$.id}:${X.name}`)}:{},...$.created?{timestamp:new Date($.created*1000)}:{},properties:X.properties})}async function uv$($){let Z=new _W(m8().db),X=await f46(Z,$);if(!(X.handled&&X.topUp))xv$($,X);if(X.handled&&X.topUp)await jF$({organizationId:X.organizationId,amountCents:X.topUp.creditCents,referenceId:X.topUp.referenceId}),xv$($,X);if(!X.handled&&X.orphanSubscriptionId)try{await Mt1(X.orphanSubscriptionId),console.error("stripe webhook: canceled orphan subscription",{subscriptionId:X.orphanSubscriptionId,eventId:$.id})}catch(Q){if(!(Q instanceof X3&&(Q.status===400||Q.status===404)))throw Q}return X}var _46=300;var cv$=B(()=>{LY();f4();h80();km();ao0()});var y46=1048576,U41;var lv$=B(()=>{y8();mO();S$();cv$();U41=new B1;U41.post("/webhook",HZ({maxSize:y46,onError:($)=>$.json({error:"payload too large"},413)}),async($)=>{let Z=c0().stripeWebhookSecret;if(!Z)return $.json({error:"stripe billing not configured"},503);let X=await $.req.text();if(!yv$(X,$.req.header("stripe-signature"),Z))return $.json({error:"invalid signature"},400);let G=gv$(X);if(!G)return $.json({error:"invalid payload"},400);let Y=await uv$(G);return console.log("stripe webhook",{eventId:G.id,type:G.type,livemode:G.livemode,...Y}),$.json({received:!0})})});import{timingSafeEqual as g46}from"crypto";function u46($,Z,X){if(!Z?.startsWith("sha256="))return!1;let Q=new Bun.CryptoHasher("sha256",X).update($).digest("hex"),G=Z.slice(7);if(G.length!==Q.length)return!1;return g46(Buffer.from(G),Buffer.from(Q))}var h46=5242880,w41;var dv$=B(()=>{y8();mO();Si();w41=new B1;w41.post("/webhook",HZ({maxSize:h46,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(!u46(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 G=Q.ref,Y=Q.repository?.full_name;if(!G||!Y)return $.json({ok:!0,ignored:"shape"});let W=(await Md0())?.markTenantPoolsDirty(Y,G)??[];return $.json({ok:!0,pools:W})})});function mv$($,Z){if(Z.startsWith("text/html")||Z.startsWith("image/svg"))$.set("Content-Security-Policy","sandbox allow-scripts allow-modals allow-same-origin")}var iv$,c46,l46,nv$;var pv$=B(()=>{y8();iJ();qx();Sf();iv$=new B1,c46=["range","if-none-match","if-modified-since"],l46=["content-type","content-length","content-range","accept-ranges","etag","last-modified"];iv$.get("/:org/files/*",async($)=>{let Z=$.get("studioContext"),X=Z.organization?.id;if(!Z.auth?.user?.id){if(Ig($))return $.redirect(`/login?next=${encodeURIComponent($.req.path)}`,302);throw new Q$(401,{message:"Authentication required"})}if(!X)throw new Q$(401,{message:"Organization context required"});let Q=$.req.path.replace(/^.*\/files\//,"");if(!Q)throw new Q$(400,{message:"Missing file key"});let G=await Yn(Q,Z);if(!G)throw new Q$(503,{message:"Object storage not configured"});if(G.startsWith("data:")&&aJ()){let K=G.match(/^data:([^;]+);base64,(.+)$/s);if(!K)throw new Q$(500,{message:"Invalid data URL from storage"});let[,H,N]=K,F=Buffer.from(N,"base64"),U=new Headers({"Content-Type":H,"Cache-Control":"private, max-age=86400"});return mv$(U,H),new Response(F,{status:200,headers:U})}let Y=new Headers;for(let K of c46){let H=$.req.header(K);if(H)Y.set(K,H)}let J=await fetch(G,{headers:Y});if(J.status===403||J.status===404)throw new Q$(404,{message:"File not found"});if(!J.ok&&J.status!==304&&J.status!==416)throw console.error(`[files] upstream storage error ${J.status} for key:`,Q),new Q$(502,{message:"Upstream storage error"});let W=new Headers;for(let K of l46){let H=J.headers.get(K);if(H)W.set(K,H)}return W.set("Cache-Control","private, max-age=86400"),mv$(W,W.get("content-type")??""),new Response(J.body,{status:J.status,headers:W})});nv$=iv$});var yo=C((iC)=>{var d46=iC&&iC.__createBinding||(Object.create?function($,Z,X,Q){if(Q===void 0)Q=X;var G=Object.getOwnPropertyDescriptor(Z,X);if(!G||("get"in G?!Z.__esModule:G.writable||G.configurable))G={enumerable:!0,get:function(){return Z[X]}};Object.defineProperty($,Q,G)}:function($,Z,X,Q){if(Q===void 0)Q=X;$[Q]=Z[X]}),m46=iC&&iC.__exportStar||function($,Z){for(var X in $)if(X!=="default"&&!Object.prototype.hasOwnProperty.call(Z,X))d46(Z,$,X)};Object.defineProperty(iC,"__esModule",{value:!0});m46($G(),iC)});var rv$=C((tv$)=>{Object.defineProperty(tv$,"__esModule",{value:!0});tv$.version=void 0;tv$.version="3.4.0"});var ev$=C((dK)=>{var i46=dK&&dK.__importDefault||function($){return $&&$.__esModule?$:{default:$}};Object.defineProperty(dK,"__esModule",{value:!0});dK.NodeTransport=dK.VERSION=void 0;dK.nodeResolveHost=a46;var d6=yo(),n46=z0("net"),O41=z0("tls"),p46=z0("path"),av$=z0("fs"),t46=i46(z0("dns")),o46=rv$();dK.VERSION=o46.version;var r46="nats.js";class sv${socket;version;lang;yields=[];signal=(0,d6.deferred)();closedNotification=(0,d6.deferred)();options;connected=!1;tlsName="";done=!1;closeError;constructor(){this.lang=r46,this.version=dK.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 G=await this.peekInfo();(0,d6.checkOptions)(G,Z);let{tls_required:Y,tls_available:J}=G,W=J===!0&&Z.tls!==null;if(!Q&&(Y||W))this.socket=await this.startTLS();if(this.done)this.socket?.destroy();if(Y&&this.socket.encrypted!==!0)throw d6.errors.InvalidArgumentError.format("tls","is not available on this server");return this.connected=!0,this.setupHandlers(),this.signal.resolve(),Promise.resolve()}catch(G){let Y=G;if(!Y)Y=new d6.errors.ConnectionError("error connecting - node provided an undefined error");let{code:J}=Y,W=J==="ECONNREFUSED"?new d6.errors.ConnectionError("connection refused",{cause:Y}):Y;throw this.socket?.destroy(),W}}dial($){let Z=(0,d6.deferred)(),X,Q=(0,n46.createConnection)($.port,$.hostname,()=>{Z.resolve(Q),Q.removeAllListeners()});return Q.on("error",(G)=>{X=G}),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,d6.deferred)(),Z;return this.socket.on("data",(X)=>{this.yields.push(X);let Q=d6.DataBuffer.concat(...this.yields),G=(0,d6.extractProtocolMessage)(Q);if(G!=="")try{let Y=d6.INFO.exec(G);if(!Y)throw Error("unexpected response from server");let J=JSON.parse(Y[1]);$.resolve(J)}catch(Y){$.reject(Y)}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,d6.deferred)();try{if($=(0,p46.resolve)($),!(0,av$.existsSync)($))Z.reject(Error(`${$} doesn't exist`));(0,av$.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:G,keyFile:Y,key:J}=this.options.tls;try{if(Z){let W=await this.loadFile(Z);if(W)$.cert=W}else if(X)$.cert=X;if(Y){let W=await this.loadFile(Y);if(W)$.key=W}else if(J)$.key=J;if(Q){let W=await this.loadFile(Q);if(W)$.ca=[W]}else if(G)$.ca=G;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 G=await this.loadClientCerts()||{};X=(0,d6.extend)(X,this.options.tls,G)}catch(G){return Promise.reject(new d6.errors.ConnectionError(G.message,{cause:G}))}let Q=(0,d6.deferred)();try{let G=(0,O41.connect)($.port,$.hostname,X,()=>{G.removeAllListeners(),Q.resolve(G)});G.on("error",(Y)=>{Z=Y}),G.on("secureConnect",()=>{if(X.rejectUnauthorized===!1)return;if(!G.authorized)throw G.authorizationError}),G.on("close",()=>{Q.reject(Z),G.removeAllListeners()}),G.setNoDelay(!0)}catch(G){Q.reject(new d6.errors.ConnectionError(G.message,{cause:G}))}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,d6.extend)(Z,this.options.tls,Q)}catch(Q){return Promise.reject(new d6.errors.ConnectionError(Q.message,{cause:Q}))}let X=(0,d6.deferred)();try{let Q=(0,O41.connect)(Z,()=>{Q.removeAllListeners(),X.resolve(Q)});Q.on("error",(G)=>{$=G}),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 d6.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,d6.render)($[Z])}`);yield $[Z]}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,d6.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 O41.TLSSocket}_send($){if(this.isClosed||this.socket===void 0)return Promise.resolve();if(this.options.debug)console.info(`< ${(0,d6.render)($)}`);let Z=(0,d6.deferred)();try{this.socket.write($,(X)=>{if(X){if(this.options.debug)console.error(`!!! ${(0,d6.render)($)}: ${X}`);return Z.reject(X)}return Z.resolve()})}catch(X){if(this.options.debug)console.error(`!!! ${(0,d6.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}}dK.NodeTransport=sv$;function a46($){let Z=(0,d6.deferred)();return t46.default.lookup($,{all:!0},(X,Q)=>{if(X){Z.reject(X);return}let G=[];for(let Y of Q)G.push(Y.address);if(G.length===0)G.push($);Z.resolve(G)}),Z}});var Gb$=C((Qb$)=>{Object.defineProperty(Qb$,"__esModule",{value:!0});Qb$.connect=s46;var $b$=ev$(),Zb$=yo(),Xb$=yo();function s46($={}){if((0,Xb$.hasWsProtocol)($))return Promise.reject(Xb$.errors.InvalidArgumentError.format("servers","node client doesn't support websockets, use the 'wsconnect' function instead"));return(0,Zb$.setTransportFactory)({factory:()=>{return new $b$.NodeTransport},dnsResolveFn:$b$.nodeResolveHost}),Zb$.NatsConnectionImpl.connect($)}});var Yb$=C((GF)=>{var $66=GF&&GF.__createBinding||(Object.create?function($,Z,X,Q){if(Q===void 0)Q=X;var G=Object.getOwnPropertyDescriptor(Z,X);if(!G||("get"in G?!Z.__esModule:G.writable||G.configurable))G={enumerable:!0,get:function(){return Z[X]}};Object.defineProperty($,Q,G)}:function($,Z,X,Q){if(Q===void 0)Q=X;$[Q]=Z[X]}),Z66=GF&&GF.__exportStar||function($,Z){for(var X in $)if(X!=="default"&&!Object.prototype.hasOwnProperty.call(Z,X))$66(Z,$,X)};Object.defineProperty(GF,"__esModule",{value:!0});GF.connect=void 0;var X66=Gb$();Object.defineProperty(GF,"connect",{enumerable:!0,get:function(){return X66.connect}});Z66(yo(),GF)});function Hb$($){let Z=$?.connectFn??J66,X=null,Q=null,G=!1,Y=!1,J=!1,W=[];function K(){return X!==null&&!X.isClosed()&&!X.isDraining()&&!J}function H(){console.log(`[NatsProvider] fireReady: ${W.length} callbacks`);for(let U of W)try{U()}catch{}}function N(U){(async()=>{for await(let w of U.status())if(w.type==="disconnect")console.log("[NatsProvider] Disconnected"),J=!0;else if(w.type==="reconnect")console.log("[NatsProvider] Reconnected, re-firing ready callbacks"),J=!1,Q=null,H()})().catch(()=>{})}async function F(U,w){let O=0;while(!Y)try{X=await Z({servers:U,timeout:Y66,reconnect:!0,maxReconnectAttempts:-1,...w?{authenticator:w}:{}}),console.log(`[NatsProvider] Connected to ${X.getServer()} after ${O} attempt(s)`),Q=null,J=!1,N(X),H();return}catch{O++;let D=HX(G66,Q66,O-1,2,0.5);await y$(D)}}return{init(U,w){if(G)return;G=!0,Y=!1;let O=w?.creds?Jb$.credsAuthenticator(new TextEncoder().encode(w.creds)):void 0;F(U,O).catch(()=>{})},isConnected(){return K()},getConnection(){return K()?X:null},getJetStream(){if(!K())return null;if(!Q)Q=Kb$.jetstream(X);return Q},onReady(U){if(W.push(U),K())try{U()}catch{}},async drain(){if(Y=!0,G=!1,Q=null,J=!1,X){let U=X;X=null,await U.drain().catch(()=>{})}}}}function J66($){return Wb$.connect($)}var Jb$,Wb$,Kb$,Q66=100,G66=3000,Y66=3000;var Nb$=B(()=>{E6();Jb$=S(Eh(),1),Wb$=S(Yb$(),1),Kb$=S(FB(),1)});function B41($,Z){return`${$}.${Z}`}class D41{cache;constructor($){this.cache=Fg({ttlMs:$?.ttlMs??W66,maxSize:$?.maxSize??K66})}async get($,Z){return this.cache.get(B41($,Z))??null}async set($,Z,X){this.cache.set(B41($,Z),X)}async invalidate($,Z){this.cache.delete(B41($,Z))}teardown(){this.cache.clear()}}var W66=600000,K66=5000;var Fb$=()=>{};function qj0($,Z){return`${$}:${Z}`}function L41($){let Z=Fg({ttlMs:$?.ttlMs??H66,maxSize:$?.maxSize??N66}),X=$?.getConnection,Q=crypto.randomUUID(),G=new TextEncoder,Y=new TextDecoder,J=null;function W(K,H){let N=X?.();if(!N)return;try{N.publish(Ub$,G.encode(JSON.stringify({organizationId:K,keyId:H,originId:Q})))}catch(F){console.warn("[ProviderKeyCache] Publish failed (non-critical):",F)}}return{get(K,H){return Z.get(qj0(K,H))},set(K,H,N){Z.set(qj0(K,H),N)},invalidate(K,H){Z.delete(qj0(K,H)),W(K,H)},start(){if(J)return;let K=X?.();if(!K)return;J=K.subscribe(Ub$),(async()=>{for await(let H of J)try{let N=JSON.parse(Y.decode(H.data));if(N.originId===Q)continue;Z.delete(qj0(N.organizationId,N.keyId))}catch{}})().catch(console.error)},teardown(){J?.unsubscribe(),J=null,Z.clear()}}}var Ub$="studio.ai-provider-keys.invalidate",H66=30000,N66=5000;var wb$=()=>{};class E41{options;subscriptions=[];onCancel=null;encoder=new TextEncoder;originId=crypto.randomUUID();seenMessageIds=new Set;constructor($){this.options=$}async start($){if($)this.onCancel=$;if(this.subscriptions.length>0)return;if(!this.onCancel)return;let Z=this.options.getConnection();if(!Z)return;let X=new TextDecoder;this.subscriptions=Ob$.map((Q)=>Z.subscribe(Q));for(let Q of this.subscriptions)(async()=>{for await(let G of Q)try{let Y=JSON.parse(X.decode(G.data));if(Y.originId===this.originId)continue;if(Y.messageId&&this.hasSeen(Y.messageId))continue;this.onCancel?.(Y.taskId)}catch{}})().catch(console.error)}broadcast($){if(/[.*>\s]/.test($)){console.warn("[NatsCancelBroadcast] Invalid threadId, skipping broadcast");return}this.onCancel?.($);try{let Z=this.options.getConnection();if(!Z)return;let X=this.encoder.encode(JSON.stringify({taskId:$,originId:this.originId,messageId:crypto.randomUUID()}));for(let Q of Ob$)Z.publish(Q,X)}catch(Z){console.warn("[NatsCancelBroadcast] Publish failed (non-critical):",Z)}}publishControlFrame($,Z){}async stop(){for(let $ of this.subscriptions)$.unsubscribe();this.subscriptions=[],this.seenMessageIds.clear(),this.onCancel=null}hasSeen($){if(this.seenMessageIds.has($))return!0;if(this.seenMessageIds.add($),this.seenMessageIds.size>1000){let Z=this.seenMessageIds.values().next().value;if(Z)this.seenMessageIds.delete(Z)}return!1}}var Ob$;var Bb$=B(()=>{Ob$=["studio.decopilot.cancel","mesh.decopilot.cancel"]});var Db$=($)=>{let Z;return()=>Z??=$()},j41,z41;var Lb$=B(()=>{Z5();j41=Db$(()=>K8.createHistogram("decopilot.stream.encode_ms",{description:"Per-chunk JSON.stringify+encode time for decopilot stream",unit:"ms"})),z41=Db$(()=>K8.createCounter("decopilot.stream.published_chunks",{description:"Logical decopilot stream chunks published to JetStream",unit:"{chunks}"}))});function L66(){return{name:IN,subjects:[`${Pw0}.>`],storage:n3.StorageType.File,max_age:w66,max_bytes:B66,max_msgs_per_subject:D66,discard:n3.DiscardPolicy.Old,retention:n3.RetentionPolicy.Limits,duplicate_window:O66,num_replicas:1}}class zb${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 Eb$($){let Z=jb$.headers();for(let[X,Q]of Object.entries($))Z.set(X,Q);return Z}function P66($,Z){let X=0;return{publish(Q,G,Y,J){Q.publish(G,Y,J?{headers:J}:void 0).catch((W)=>{if(X++,U66().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 A66($){if(!($ instanceof Error))return!1;if($.name==="TimeoutError")return!0;return/timeout|no responders|503/i.test($.message)}class P41{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=L66(),X=await gZ(async()=>{let Q=this.options.getJetStreamManager?await this.options.getJetStreamManager():await n3.jetstreamManager($);try{await Q.streams.info(IN),await Q.streams.update(IN,Z)}catch(G){if(G instanceof Error&&G.message.includes("stream not found"))await Q.streams.add(Z);else if(G instanceof Error&&/can ?not change.*storage|storage type/i.test(G.message))await Q.streams.delete(IN),await Q.streams.add(Z);else throw G}return Q},{maxAttempts:5,minTimeout:250,maxTimeout:4000,jitter:0.5,isRetriable:A66});this.js=this.options.getJetStream(),this.jsm=X,console.log(`[Decopilot] StreamBuffer.init ${this.js?"ready":"degraded (js=null)"}`)}pump($,Z,X,Q){let G=this.js;if(!G)return console.warn(`[Decopilot] pump: JetStream client unavailable for thread ${Z}; chunks NOT published to NATS`),Promise.resolve();let Y=P66(Z,Q),J=!1,W=()=>{if(J)return;J=!0;let H=G3$(Z);G.publish(H.subject,H.data).catch(()=>{})};X.addEventListener("abort",W,{once:!0});let K=(H)=>{let N=performance.now(),F=oi0(H,{runId:Z}),U=performance.now()-N;if(j41().record(U),z41().add(1,{"org.id":Q??"unknown"}),z66?.record(U,F.reduce((w,O)=>w+O.data.length,0)),F.length===0){console.warn(`[Decopilot] dropping oversized stream chunk for thread ${Z}`);return}for(let w of F)Y.publish(G,w.subject,w.data,w.headers?Eb$(w.headers):void 0)};return(async()=>{let H=$.getReader(),N=0,F=0,U;try{while(!0){let{done:w,value:O}=await H.read();if(w)break;if(K(O),F++,++N>=64)N=0,await new Promise((D)=>setImmediate(D))}}catch(w){U=w,console.warn(`[Decopilot] stream pump error for thread ${Z}:`,w?.message??w)}finally{if(H.releaseLock(),W(),j66)console.warn(JSON.stringify({msg:"decopilot-stream-diag",event:"pump-done",taskId:Z,publishedChunks:F,publishErrors:Y.errorCount}))}if(U!==void 0)throw U})()}async publishRawChunk($,Z,X){let Q=this.js;if(!Q)return!1;let G=performance.now(),Y=oi0(Z,{runId:$,dedup:X});if(j41().record(performance.now()-G),z41().add(1),Y.length===0)return console.warn(`[Decopilot] dropping oversized raw chunk for thread ${$} (> MAX_CHUNKED_BYTES)`),!0;for(let J of Y)await Q.publish(J.subject,J.data,{...J.headers?{headers:Eb$(J.headers)}:{},...J.msgId?{msgID:J.msgId}:{}});return!0}async publishDone($,Z,X){let Q=this.js;if(!Q)return!1;let G=Q3$({runId:$,fenceToken:Z,finalSeq:X});return await Q.publish(G.subject,G.data,{msgID:G.msgId}),!0}async createTailStream($,Z,X){let Q=this.js;if(!Q)return console.warn(`[Decopilot] createTailStream: JetStream client unavailable for thread ${$}; no live tail`),null;let G=X?.deliverPolicy==="new"?n3.DeliverPolicy.New:n3.DeliverPolicy.All,Y=X?.closeOnDone??!1,J=GO($),W;try{W=await(await Q.consumers.get(IN,{filter_subjects:J,deliver_policy:G})).consume()}catch(D){return console.warn("[Decopilot] JetStream tail unavailable (non-critical):",D?.message??D),null}let N=qw0({messages:async function*(){try{for await(let D of W)yield{subject:D.subject,data:D.data,headers:D.headers}}finally{W.stop()}}(),onCancel:()=>W.stop()}).pipeThrough(Aw0()).pipeThrough(Tw0()).getReader(),F=!1,U=()=>{if(F)return;F=!0;try{N.releaseLock()}catch{}},w=!1,O=()=>{if(w)return;w=!0,W.stop(),N.cancel().catch(()=>{}),U()};return Z?.addEventListener("abort",O,{once:!0}),new ReadableStream({async pull(D){for(;;){let{done:L,value:E}=await N.read();if(L){O(),D.close();return}let j=E;if(j.kind==="done"){if(Y){O(),D.close();return}continue}D.enqueue(j.chunk);return}},cancel(){O()}})}purge($){if(!this.jsm)return;this.jsm.streams.purge(IN,{filter:GO($)}).catch(()=>{})}teardown(){this.js=null,this.jsm=null}}var n3,jb$,F66=($)=>{let Z;return()=>Z??=$()},U66,w66=86400000000000,O66=120000000000,B66=4294967296,D66=500000,E66,j66,z66;var Pb$=B(()=>{E6();ri0();Mw0();Rw0();Z5();Lb$();n3=S(FB(),1),jb$=S(Eh(),1),U66=F66(()=>K8.createCounter("decopilot.stream.publish_errors",{description:"Number of JetStream publish failures for decopilot stream chunks",unit:"{errors}"}));E66=process.env.STREAM_ENCODE_TRACE==="1",j66=process.env.DECOPILOT_STREAM_TRACE==="1";z66=E66?new zb$:null});function Mj0($,Z,X,Q){if(!Q)return!1;return $.emit(Z,BW(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 Ab$=B(()=>{L8()});class A41{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}}function k66($){return $ instanceof LQ}class T41{taskBoard;contextFactory;options;timer=null;running=!1;cursor=null;constructor($,Z,X={}){this.taskBoard=$;this.contextFactory=Z;this.options=X}start(){if(this.timer)return;let $=this.options.intervalMs??T66;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??I66,X=this.options.itemIntervalMs??R66,Q=await this.taskBoard.listItemsPendingReview(Z,this.cursor,new Date(Date.now()-X)),G=Q.at(-1);this.cursor=Q.length===Z&&G?{updatedAt:G.updatedAt,id:G.id}:null;for(let{id:Y,organizationId:J}of Q)try{if(await this.reconcileItem(Y,J))$++}catch(W){console.error(`[task-board-review-sweeper] ${Y} failed`,W)}await this.reapNeverStartedThreads(Z),$+=await this.dispatchDueRetries(Z),await this.reactToUnhandledFailures(Z)}catch(Z){console.error("[task-board-review-sweeper] sweep failed",Z)}finally{this.running=!1}return $}async reapNeverStartedThreads($){try{let Z=await this.taskBoard.failNeverStartedLinkedThreads($,new Date(Date.now()-$Y$),Vn0);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()-M66));for(let{id:X,organizationId:Q,threadId:G}of Z)try{console.warn(`[task-board-review-sweeper] reacting to an unhandled failure on ${X}`),await ji0(this.taskBoard,G,Q)}catch(Y){console.error(`[task-board-review-sweeper] unhandled-failure reaction for ${X} failed`,Y)}}async dispatchDueRetries($){let Z=0,X=await this.taskBoard.listItemsDueForRetry($,new Date);for(let{id:Q,organizationId:G,attempts:Y}of X)try{if(!await this.taskBoard.claimDueRetry(Q,G,new Date))continue;let J=await this.taskBoard.getById(Q,G);if(!J||J.status!=="in_progress"||J.assigneeId!==d4)continue;let W=await this.contextFactory(G,J.assignedBy??J.createdBy);if(!W)continue;await qN(W,J,{runClass:"retry"}),Z++,console.warn(`[task-board-review-sweeper] re-dispatched ${Q} after a failure (attempt ${Y})`)}catch(J){if(console.error(`[task-board-review-sweeper] retry dispatch for ${Q} failed`,J),k66(J)){await this.returnToTodo(Q,G,J instanceof Error?J.message:String(J));continue}await this.taskBoard.scheduleRunRetry(Q,G,Y,new Date(Date.now()+q66)).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 G=await this.taskBoard.returnToTodoAfterFailure($,Z,Q.updatedBy);if(!G)return;await this.taskBoard.recordActivity({taskBoardItemId:$,action:"status_changed",actorId:null,data:{from:"in_progress",to:"todo",reason:X}}).catch(()=>{}),x4(Z,G)}catch(Q){console.error(`[task-board-review-sweeper] returning ${$} to todo failed`,Q)}}async reconcileItem($,Z){let X=await this.taskBoard.getById($,Z);if(!X)return!1;if(X.status!=="in_review"||X.assigneeId!==d4)return!1;await this.taskBoard.markSwept($,Z);let Q=await this.taskBoard.listPrs($,Z);if(Q.length===0)return!1;let G=await this.contextFactory(Z,X.assignedBy??X.createdBy);if(!G)return!1;if(await FW$(G,X))return!0;let Y=await Promise.all(Q.map(async(J)=>({...J,...await Mn0(G,Z,J)})));if(Y.every((J)=>J.state===null))console.warn(`[task-board-review-sweeper] ${$}: no live PR state from GitHub (${Y.length} PR(s)) \u2014 proceeding on unknown`);if(!qn0(Y))return!1;return await vw0(G,X),!0}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}var T66=60000,R66=300000,I66=50,q66=60000,M66=120000;var Tb$=B(()=>{qZ();jn0();YO();cw0();e9();G3();Cn0();yx()});import{readdir as S66,rm as kj0}from"fs/promises";import{join as Sj0}from"path";async function Vj0($){let Z=new Date;Z.setUTCDate(Z.getUTCDate()-V66),Z.setUTCHours(0,0,0,0);let X=0;try{let Q=await nC($);for(let G of Q)if(/^\d{4}$/.test(G))X+=await Rb$($,G,Z);else if(!G.startsWith(".")){let Y=Sj0($,G),J=await nC(Y);for(let K of J){if(!/^\d{4}$/.test(K))continue;X+=await Rb$(Y,K,Z)}if((await nC(Y)).length===0)await kj0(Y,{recursive:!0,force:!0})}}catch(Q){console.warn("monitoring retention cleanup failed:",Q)}return X}async function Rb$($,Z,X){let Q=0,G=Sj0($,Z),Y=await nC(G);for(let W of Y){if(!/^\d{2}$/.test(W))continue;let K=Sj0(G,W),H=await nC(K);for(let F of H){if(!/^\d{2}$/.test(F))continue;let U=new Date(`${Z}-${W}-${F}T00:00:00Z`);if(isNaN(U.getTime()))continue;if(U<X){let w=Sj0(K,F);await kj0(w,{recursive:!0,force:!0}),Q++}}if((await nC(K)).length===0)await kj0(K,{recursive:!0,force:!0})}if((await nC(G)).length===0)await kj0(G,{recursive:!0,force:!0});return Q}async function nC($){try{return(await S66($)).filter((X)=>!X.startsWith("."))}catch{return[]}}var V66=30;var R41=()=>{};import{DBOS as I41,SchedulerMode as C66}from"@dbos-inc/dbos-sdk";async function v66(){let $=[KJ(),pC(),iK()],Z=0;for(let X of $)try{Z+=await Vj0(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 b66($,Z){await I41.runStep(()=>v66(),{name:"monitoringRetention"})}function qb$(){if(Ib$)return;Ib$=!0;let $=I41.registerWorkflow(b66,{name:"monitoringRetentionWorkflow"});I41.registerScheduled($,{name:"monitoringRetentionWorkflow",crontab:_66,mode:C66.ExactlyOncePerIntervalWhenActive})}var _66="23 4 * * *",Ib$=!1;var Mb$=B(()=>{rQ();R41()});function kb$($){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 G=await xK.create();G.auth.user={id:X,role:Q.role},G.organization={id:Q.orgId,slug:Q.orgSlug,name:Q.orgName};let Y=await d11($.db,Z,Q.role);return G.boundAuth=l11({auth:G.authInstance,headers:new Headers,role:Q.role,permissions:Y,userId:X}),G.access=new dD(X,void 0,G.boundAuth,Q.role,"self"),Tg(G,{id:Q.orgId,slug:Q.orgSlug}),G}}var Sb$=B(()=>{mD();Dg()});function f66(){return{services:[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}],migrationsStatus:"pending",serverUrl:null,logs:[]}}function y66(){for(let $ of x66)$()}function Vb$($){let Z=[...q41.logs,$];q41={...q41,logs:Z.length>500?Z.slice(-500):Z},y66()}function M41(){return g66}var q41,x66,g66=!1;var k41=B(()=>{q41=f66(),x66=new Set});import{EventEmitter as h66}from"events";var S41;var Cb$=B(()=>{k41();S41=new h66;S41.on("request",($)=>{Vb$($)})});function _b$(){return async($,Z)=>{let X=Date.now(),Q=$.req.method,G=$.req.path;if(G==="/api/auth/get-session"||G.includes("favicon")){await Z();return}let Y="",J=!1;if(G.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 w=pg(U.params.name),O=U.params.arguments||{},D=Object.keys(O).map((E)=>pg(E)),L=D.length>0?D.slice(0,3).join(",")+(D.length>3?"\u2026":""):"";Y=`${e6.tool}${w}${e6.dim}(${L})${e6.reset}`}else if(U.method)Y=`${e6.dim}${pg(U.method)}${e6.reset}`}}catch{}}let W=pg(G);if(G.startsWith("/mcp/conn_")){let N=G.split("/")[2]??"";W=`/mcp/${e6.mcp}${pg(N.slice(0,12))}\u2026${e6.reset}`}else if(G==="/mcp")W=`${e6.mcp}/mcp${e6.reset}`;else if(G==="/mcp/registry")W=`${e6.mcp}/mcp/registry${e6.reset}`;let K=c66(Q),H=J?"\u25C0":"\u2190";if(!M41())console.log(`${e6.dim}${H}${e6.reset} ${K}${Q}${e6.reset} ${W}${Y?` ${Y}`:""}`);try{await Z()}finally{let N=Date.now()-X,F=$.res.status,U=u66(F),w=N<1000?`${N}ms`:`${(N/1000).toFixed(1)}s`,O=J?"\u25B6":"\u2192";if(!M41())console.log(`${e6.dim}${O}${e6.reset} ${K}${Q}${e6.reset} ${W}${Y?` ${Y}`:""} ${U}${F}${e6.reset} ${e6.duration}${w}${e6.reset}`);S41.emit("request",{method:Q,path:pg(G),status:F,duration:N,timestamp:new Date})}}}var e6,u66=($)=>{if($>=500)return e6.serverError;if($>=400)return e6.clientError;if($>=300)return e6.redirect;return e6.ok},c66=($)=>{return e6[$]||e6.reset},pg=($)=>{return $.replace(/\r/g,"").replace(/\n/g,"").replace(/\x1b\[[0-9;]*m/g,"").replace(/[\x00-\x1f\x7f-\x9f]/g,"")};var vb$=B(()=>{k41();Cb$();e6={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 yb$}from"crypto";import{mkdir as l66,readdir as d66,rm as bb$,stat as gb$}from"fs/promises";import{join as C41,relative as m66}from"path";import{z as E$}from"zod";function ub$($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return C41(i66,Z)}function cb$($){return $.replace(/^\/+/,"").replace(/\.\./g,"")}function V41($,Z){let X=ub$($),Q=cb$(Z);return C41(X,Q)}function n66($,Z,X,Q){let G=c0().encryptionKey||"dev-secret",Y=`${$}:${Z}:${X}:${Q}`;return yb$("sha256",G).update(Y).digest("hex")}function xb$($,Z,X,Q,G){let Y=Math.floor(Date.now()/1000)+Q,J=n66(Z,X,Y,G),W=new URL(`/api/dev-assets/${Z}/${cb$(X)}`,$);return W.searchParams.set("expires",Y.toString()),W.searchParams.set("signature",J),W.searchParams.set("method",G),W.toString()}function lb$($,Z,X){let Q=`${$}:${Z.getTime()}:${X}`;return`"${yb$("md5","etag").update(Q).digest("hex")}"`}async function db$($,Z,X,Q,G){try{let Y=await d66($,{withFileTypes:!0});for(let J of Y){let W=C41($,J.name),H=m66(Z,W).replace(/\\/g,"/");if(X&&!H.startsWith(X))continue;if(J.isDirectory())if(Q){let N=H+"/";if(!X||N.startsWith(X)){if(!(X?H.slice(X.length):H).includes("/"))G.commonPrefixes.add(N)}}else await db$(W,Z,X,Q,G);else if(J.isFile()){if(Q&&X){let N=H.slice(X.length);if(N.includes(Q)){let F=N.indexOf(Q),U=X+N.slice(0,F+1);G.commonPrefixes.add(U);continue}}try{let N=await gb$(W);G.objects.push({key:H,size:N.size,lastModified:N.mtime.toISOString(),etag:lb$(W,N.mtime,N.size)})}catch{}}}}catch{}}function mb$($,Z){let Q=r($).id;return[{name:"LIST_OBJECTS",description:"List objects in the local assets directory with pagination support",inputSchema:E$.object({prefix:E$.string().optional(),maxKeys:E$.number().optional().default(1000),continuationToken:E$.string().optional(),delimiter:E$.string().optional()}),outputSchema:E$.object({objects:E$.array(E$.object({key:E$.string(),size:E$.number(),lastModified:E$.string(),etag:E$.string()})),nextContinuationToken:E$.string().optional(),isTruncated:E$.boolean(),commonPrefixes:E$.array(E$.string()).optional()}),handler:async(G)=>{let Y=G,J=Y.prefix||"",W=Y.maxKeys??1000,K=Y.delimiter,H=Y.continuationToken,N=ub$(Q);await l66(N,{recursive:!0});let F={objects:[],commonPrefixes:new Set};await db$(N,N,J,K,F),F.objects.sort((L,E)=>L.key.localeCompare(E.key));let U=0;if(H){if(U=F.objects.findIndex((L)=>L.key>H),U===-1)U=F.objects.length}let w=F.objects.slice(U,U+W),O=U+W<F.objects.length,D=O?w[w.length-1]?.key:void 0;return{objects:w,isTruncated:O,nextContinuationToken:D,commonPrefixes:Array.from(F.commonPrefixes).sort()}}},{name:"GET_OBJECT_METADATA",description:"Get metadata for a file in the local assets directory",inputSchema:E$.object({key:E$.string()}),outputSchema:E$.object({contentType:E$.string().optional(),contentLength:E$.number(),lastModified:E$.string(),etag:E$.string(),metadata:E$.record(E$.string(),E$.string()).optional()}),handler:async(G)=>{let Y=G,J=V41(Q,Y.key),W=await gb$(J);return{contentType:R$1(Y.key),contentLength:W.size,lastModified:W.mtime.toISOString(),etag:lb$(J,W.mtime,W.size)}}},{name:"GET_PRESIGNED_URL",description:"Generate a presigned URL for downloading a file from local storage",inputSchema:E$.object({key:E$.string(),expiresIn:E$.number().optional()}),outputSchema:E$.object({url:E$.string(),expiresIn:E$.number()}),handler:async(G)=>{let Y=G,J=Y.expiresIn??fb$;return{url:xb$(Z,Q,Y.key,J,"GET"),expiresIn:J}}},{name:"PUT_PRESIGNED_URL",description:"Generate a presigned URL for uploading a file to local storage",inputSchema:E$.object({key:E$.string(),expiresIn:E$.number().optional(),contentType:E$.string().optional()}),outputSchema:E$.object({url:E$.string(),expiresIn:E$.number()}),handler:async(G)=>{let Y=G,J=Y.expiresIn??fb$;return{url:xb$(Z,Q,Y.key,J,"PUT"),expiresIn:J}}},{name:"DELETE_OBJECT",description:"Delete a single file from local storage",inputSchema:E$.object({key:E$.string()}),outputSchema:E$.object({success:E$.boolean(),key:E$.string()}),handler:async(G)=>{let Y=G,J=V41(Q,Y.key);try{return await bb$(J),{success:!0,key:Y.key}}catch{return{success:!1,key:Y.key}}}},{name:"DELETE_OBJECTS",description:"Delete multiple files from local storage",inputSchema:E$.object({keys:E$.array(E$.string()).max(1000)}),outputSchema:E$.object({deleted:E$.array(E$.string()),errors:E$.array(E$.object({key:E$.string(),message:E$.string()}))}),handler:async(G)=>{let Y=G,J=[],W=[];return await Promise.all(Y.keys.map(async(K)=>{let H=V41(Q,K);try{await bb$(H),J.push(K)}catch(N){W.push({key:K,message:N instanceof Error?N.message:"Unknown error"})}})),{deleted:J,errors:W}}}]}async function _41($,Z,X){let Q=mb$(Z,X),G=new AW({name:"dev-assets-mcp",version:"1.0.0"},{capabilities:{tools:{}},jsonSchemaValidator:Y5});for(let J of Q){let W="shape"in J.inputSchema?J.inputSchema.shape:E$.object({}).shape,K=J.outputSchema&&"shape"in J.outputSchema?J.outputSchema.shape:E$.object({}).shape;G.registerTool(J.name,{description:J.description??"",inputSchema:W,outputSchema:K,annotations:J.annotations,_meta:J._meta},async(H)=>{try{let N=await J.handler(H);return{content:[{type:"text",text:JSON.stringify(N)}],structuredContent:N}}catch(N){return{content:[{type:"text",text:`Error: ${N.message}`}],isError:!0}}})}let Y=new lX({enableJsonResponse:$.headers.get("Accept")?.includes("application/json")??!1});return await G.connect(Y),lY(G,Y,$,"mcp:dev-assets")}async function ib$($,Z,X,Q){let Y=mb$(X,Q).find((J)=>J.name===$);if(!Y)return{content:[{type:"text",text:`Tool not found: ${$}`}],isError:!0};try{let J=await Y.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 i66="./data/assets",fb$=3600,hb$,nb$;var pb$=B(()=>{S$();lx();y8();dc();bV();RX();cE0();hb$=new B1;hb$.all("/",async($)=>{let Z=$.get("studioContext"),X=new URL($.req.url),Q=`${X.protocol}//${X.host}`;return _41($.req.raw,Z,Q)});nb$=hb$});var tb$={};N4(tb$,{mountDevRoutes:()=>p66});function p66($,Z){$.all("/mcp/:connectionId{.*_dev-assets$}",Z,async(Q)=>{let G=Q.get("studioContext"),Y=new URL(Q.req.url),J=`${Y.protocol}//${Y.host}`;return _41(Q.req.raw,G,J)}),$.all("/mcp/:connectionId{.*_dev-assets$}/call-tool/:toolName",Z,async(Q)=>{let G=Q.get("studioContext"),Y=new URL(Q.req.url),J=`${Y.protocol}//${Y.host}`,W=Q.req.param("toolName");if(!W)return Q.json({error:"Missing tool name"},400);let K=await Q.req.json(),H=await ib$(W,K,G,J);if(H.isError)return Q.json(H.content,500);return Q.json(H.content)}),$.use("/mcp/dev-assets",Z),$.route("/mcp/dev-assets",nb$);let X=new B1;X.use("*",d3({mountPath:"/api/dev-assets"})),X.route("/",uE0({orgFromPath:!1})),$.route("/api/dev-assets",X)}var ob$=B(()=>{y8();D$1();cE0();pb$()});import{sql as t66}from"kysely";import{randomUUID as rb$}from"crypto";import{z as o66}from"zod";async function a66($){let Z=new Date().toISOString(),X=rb$(),Q=h4.SELF($.organizationId),G="registry.publish_request.created",Y={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(Y),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:rb$(),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 t66`SELECT
|
|
2732
2732
|
pg_notify('studio_events', ${X}),
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as S,F as K,b7 as Q,K as H,b as q,m as $,j as x}from"./index-DMVkFPM-.js";import{u as G}from"./use-registry-connections-DqFzJwgz.js";import{f as U}from"./use-organization-settings-CmVnQrE1.js";import{S as k,n as V}from"./use-mcp-client-B8LG6Bji.js";import{u as X}from"./useInfiniteQuery-CtOu1pb4.js";import{i as Y,f as z}from"./extract-connection-data-DCq0f1yL.js";import{r as B,R as W}from"./retry-CErkP7V6.js";import{g as A}from"./connection-slug-eyAPH6o3.js";import{C as Z}from"./card-CpzI55XY.js";import{I as J}from"./integration-icon-Bht6F7tI.js";function ye(){const s=S.c(6),e=G(),t=U(),n=K().project.enabledPlugins??[];let o;if(s[0]!==n||s[1]!==t||s[2]!==e){let c;s[4]!==t?(c=r=>t(r.id),s[4]=t,s[5]=c):c=s[5],o=e.filter(c).map(O),n.includes("private-registry")&&t(k)&&o.push({id:k,title:"Private Registry",icon:null}),s[0]=n,s[1]=t,s[2]=e,s[3]=o}else o=s[3];return o}function O(s){return{id:s.id,title:s.title,icon:s.icon}}const ee=24,L=3;function F(s){return s.id.includes("community-registry")}function te(s){const e=s?.trim().split(/\s+/).filter(Boolean)??[];if(e.length===0)return;const t=[["title"],["description"],["name"],["server","title"]];return{operator:"or",conditions:e.flatMap(n=>t.map(o=>({field:o,operator:"contains",value:n})))}}function D(s,e,t,n,o){const c=s.map(a=>a.id).sort().join(","),r=te(o),{data:p,fetchNextPage:d,hasNextPage:f,isFetchingNextPage:g,isLoading:C}=X({queryKey:H.storeDiscovery(e,`${c}:${o??""}`),queryFn:async({pageParam:a})=>{const l=a??{};return await Promise.all(s.map(async i=>{const y=l[i.id];if(y==="EXHAUSTED")return{registryId:i.id,registryTitle:i.title,registryIcon:i.icon,items:[]};const b=Y(i.id,e);try{return await B(async()=>{let u=null;try{u=await V({connectionId:i.id,orgId:e,orgSlug:t});const h={limit:ee};y&&(h.cursor=y),r&&(h.where=r);const N=await u.callTool({name:b,arguments:h}),v=N.structuredContent??N,P=v.nextCursor||v.cursor||void 0,j=z(v?[v]:[]);return{registryId:i.id,registryTitle:i.title,registryIcon:i.icon,items:j,nextCursor:P}}finally{await u?.close().catch(()=>{})}},{maxAttempts:L,minTimeout:0,maxTimeout:1e3,jitter:0})}catch(u){return console.warn(`[useMergedStoreDiscovery] Registry "${i.title}" (${i.id}) failed after ${L} attempts:`,u instanceof W?u.cause:u),{registryId:i.id,registryTitle:i.title,registryIcon:i.icon,items:[]}}}))},initialPageParam:{},getNextPageParam:a=>{const l={};let m=!1;for(const i of a)i.registryId&&(i.nextCursor?(l[i.registryId]=i.nextCursor,m=!0):l[i.registryId]="EXHAUSTED");return m?l:void 0},staleTime:3600*1e3,placeholderData:Q,retry:!1,enabled:s.length>0}),I=[];if(p?.pages)for(const a of p.pages)for(const l of a)for(const m of l.items)I.push({...m,_sourceName:m._sourceName??l.registryTitle,_sourceIcon:m._sourceIcon??l.registryIcon,_registryId:m._registryId??l.registryId});return{items:I,hasMore:f??!1,isLoadingMore:g,isInitialLoading:C,fetchNextPage:()=>{f&&!g&&d()}}}function he(s,e){const t=S.c(16),{org:n}=K();let o;t[0]!==s?(o=s.filter(ie),t[0]=s,t[1]=o):o=t[1];const c=o;let r;t[2]!==s?(r=s.filter(se),t[2]=s,t[3]=r):r=t[3];const p=r,d=D(c,n.id,n.slug,!0,e),f=D(p,n.id,n.slug,!0,e);let g;if(t[4]!==f.items||t[5]!==d.items){const y=new Set;g=[];const b=[...d.items,...f.items];for(const u of b){const h=`${u._registryId}:${u.id}`;y.has(h)||(y.add(h),g.push(u))}t[4]=f.items,t[5]=d.items,t[6]=g}else g=t[6];const C=d.isInitialLoading||f.isInitialLoading,I=d.isLoadingMore||f.isLoadingMore,a=d.hasMore||f.hasMore;let l;t[7]!==f||t[8]!==d?(l=()=>{d.hasMore&&d.fetchNextPage(),f.hasMore&&f.fetchNextPage()},t[7]=f,t[8]=d,t[9]=l):l=t[9];const m=l;let i;return t[10]!==a||t[11]!==C||t[12]!==I||t[13]!==g||t[14]!==m?(i={items:g,hasMore:a,isLoadingMore:I,isInitialLoading:C,loadMore:m},t[10]=a,t[11]=C,t[12]=I,t[13]=g,t[14]=m,t[15]=i):i=t[15],i}function se(s){return F(s)}function ie(s){return!F(s)}function xe(s){const e=new Map;for(const o of s){const c=A(o),r=e.get(c);r?r.push(o):e.set(c,[o])}const t=[],n=new Set;for(const o of s){const c=A(o);if(n.has(c))continue;n.add(c);const r=e.get(c),p=r[0];r.length===1?t.push({type:"single",connection:p}):t.push({type:"group",key:c,icon:p.icon,title:p.app_name?p.title.replace(/\s*\(\d+\)\s*$/,""):p.title,connections:r})}return t}function ve(s){const e=S.c(45),{connection:t,onClick:n,headerActions:o,headerActionsAlwaysVisible:c,body:r,footer:p,className:d,fallbackIcon:f}=s,g=c===void 0?!1:c,C=q(),I=n&&"hover:bg-muted/50";let a;e[0]!==d||e[1]!==I?(a=$("cursor-pointer transition-colors group overflow-hidden flex flex-col h-full",I,d),e[0]=d,e[1]=I,e[2]=a):a=e[2];const l=n?"button":void 0,m=n?0:void 0;let i;e[3]!==n?(i=n?_=>{(_.key==="Enter"||_.key===" ")&&(_.preventDefault(),n())}:void 0,e[3]=n,e[4]=i):i=e[4];let y;e[5]!==t.icon||e[6]!==t.title||e[7]!==f?(y=x.jsx(J,{icon:t.icon,name:t.title,size:"sm",className:"shrink-0 shadow-sm",fallbackIcon:f}),e[5]=t.icon,e[6]=t.title,e[7]=f,e[8]=y):y=e[8];let b;e[9]!==o||e[10]!==g?(b=o&&x.jsx("div",{className:$("transition-opacity",!g&&"sm:opacity-0 sm:group-hover:opacity-100"),onClick:ne,children:o}),e[9]=o,e[10]=g,e[11]=b):b=e[11];let u;e[12]!==b?(u=x.jsx("div",{className:"relative",children:b}),e[12]=b,e[13]=u):u=e[13];let h;e[14]!==y||e[15]!==u?(h=x.jsxs("div",{className:"flex items-start justify-between",children:[y,u]}),e[14]=y,e[15]=u,e[16]=h):h=e[16];let N;e[17]!==t.title?(N=x.jsx("h3",{className:"text-sm font-medium text-foreground truncate",children:t.title}),e[17]=t.title,e[18]=N):N=e[18];let v;e[19]!==t.description||e[20]!==C?(v=t.description||C("connections.connectionCard.noDescription"),e[19]=t.description,e[20]=C,e[21]=v):v=e[21];let P;e[22]!==v?(P=x.jsx("p",{className:"text-sm text-muted-foreground line-clamp-2",children:v}),e[22]=v,e[23]=P):P=e[23];let j;e[24]!==N||e[25]!==P?(j=x.jsxs("div",{className:"flex flex-col gap-1",children:[N,P]}),e[24]=N,e[25]=P,e[26]=j):j=e[26];let R;e[27]!==r?(R=r&&x.jsx("div",{children:r}),e[27]=r,e[28]=R):R=e[28];let M;e[29]!==h||e[30]!==j||e[31]!==R?(M=x.jsxs("div",{className:"flex flex-col gap-3 p-4.5",children:[h,j,R]}),e[29]=h,e[30]=j,e[31]=R,e[32]=M):M=e[32];let w;e[33]!==p?(w=p&&x.jsx("div",{className:"border-t border-border mt-auto",children:x.jsx("div",{className:"h-14 flex items-center p-4.5",onClick:oe,children:p})}),e[33]=p,e[34]=w):w=e[34];let E;e[35]!==M||e[36]!==w?(E=x.jsxs("div",{className:"flex flex-col flex-1",children:[M,w]}),e[35]=M,e[36]=w,e[37]=E):E=e[37];let T;return e[38]!==n||e[39]!==E||e[40]!==a||e[41]!==l||e[42]!==m||e[43]!==i?(T=x.jsx(Z,{className:a,onClick:n,role:l,tabIndex:m,onKeyDown:i,children:E}),e[38]=n,e[39]=E,e[40]=a,e[41]=l,e[42]=m,e[43]=i,e[44]=T):T=e[44],T}function oe(s){return s.stopPropagation()}function ne(s){return s.stopPropagation()}export{ve as C,he as a,xe as g,ye as u};
|