decocms 3.34.0 → 3.34.2
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-CZCJdLyi.js → AlertCircle-CQgcG-Ae.js} +1 -1
- package/dist/client/assets/{ArrowUpRight-CHxGqtjn.js → ArrowUpRight-D0znd3JO.js} +1 -1
- package/dist/client/assets/{Check-DZFgb4Aq.js → Check-BUKt5vhH.js} +1 -1
- package/dist/client/assets/{CheckCircle-CG-wMven.js → CheckCircle-x4whH3Qn.js} +1 -1
- package/dist/client/assets/{ChevronDown-B7QgMo_j.js → ChevronDown-C6ULHnU-.js} +1 -1
- package/dist/client/assets/{ChevronLeft-TMVSDJlu.js → ChevronLeft-Btt_21CS.js} +1 -1
- package/dist/client/assets/{ChevronRight-BZDLAZs0.js → ChevronRight-glzdqN1s.js} +1 -1
- package/dist/client/assets/{ChevronUp-D4NcsGJa.js → ChevronUp-C5QGzLz6.js} +1 -1
- package/dist/client/assets/{Container-CIoK_JLI.js → Container-RGkdLpnR.js} +1 -1
- package/dist/client/assets/{DotsVertical-BTWgDSCZ.js → DotsVertical-BrpflBsP.js} +1 -1
- package/dist/client/assets/{Eye-BaBZSaML.js → Eye-Bk7j3Cz0.js} +1 -1
- package/dist/client/assets/{FilterLines-CuEfbFlC.js → FilterLines-xOxNVJBa.js} +1 -1
- package/dist/client/assets/{Globe01-Bu-3l6NI.js → Globe01-C8CeCAhz.js} +1 -1
- package/dist/client/assets/{HardDrive-FmjuSfEd.js → HardDrive-Czbw3MRd.js} +1 -1
- package/dist/client/assets/{Key01-Bnc16AFY.js → Key01-ChQ6WmeN.js} +1 -1
- package/dist/client/assets/{LayoutLeft-D2epCZ9e.js → LayoutLeft-D3sIkDa-.js} +1 -1
- package/dist/client/assets/{LinkExternal01-il-vFJO5.js → LinkExternal01-DNf7UuUK.js} +1 -1
- package/dist/client/assets/{Monitor01-s9F0MGZm.js → Monitor01-BzTgEIFJ.js} +1 -1
- package/dist/client/assets/{Palette-BXG1B7a_.js → Palette-DwfZnoA5.js} +1 -1
- package/dist/client/assets/{Play-CArhP18b.js → Play-BXW8gJMz.js} +1 -1
- package/dist/client/assets/{Plus-BMFN7EYn.js → Plus-CugY_4xX.js} +1 -1
- package/dist/client/assets/{RefreshCcw01-CKC-7KpZ.js → RefreshCcw01-DiPX3Tzc.js} +1 -1
- package/dist/client/assets/{SearchMd-Cp07lkq4.js → SearchMd-DltTVRsJ.js} +1 -1
- package/dist/client/assets/{Settings02-D4_HBk9b.js → Settings02-sAiuI7qb.js} +1 -1
- package/dist/client/assets/{Shield01-C5CB9ixt.js → Shield01-C-4y3Jk3.js} +1 -1
- package/dist/client/assets/{Star01-B5uhWV3B.js → Star01-D8Xy046a.js} +1 -1
- package/dist/client/assets/{Stars01-Bbj7Y0Z1.js → Stars01-BPnYJgb7.js} +1 -1
- package/dist/client/assets/{Stars02-KpOwsvid.js → Stars02-CP1Go7Ud.js} +1 -1
- package/dist/client/assets/{Sun-BAloSVhR.js → Sun-BsWLyXgw.js} +1 -1
- package/dist/client/assets/{SwitchHorizontal01-Cu45oyoo.js → SwitchHorizontal01-MAz-yRbe.js} +1 -1
- package/dist/client/assets/{Tool01-41oNA8tk.js → Tool01-Cjstio7H.js} +1 -1
- package/dist/client/assets/{Trash01-BxDpcA3C.js → Trash01-BJ6_IzkG.js} +1 -1
- package/dist/client/assets/{Upload01-D32r7qgX.js → Upload01-C2pjhIpk.js} +1 -1
- package/dist/client/assets/{User01-jR83WsDH.js → User01-D2zO49mC.js} +1 -1
- package/dist/client/assets/{Users01-BBxMW_TC.js → Users01-ubeIr2qn.js} +1 -1
- package/dist/client/assets/{Users03-BLIawTyD.js → Users03-BqYE15gt.js} +1 -1
- package/dist/client/assets/{X-D5a6VwmP.js → X-BQX3Zy-X.js} +1 -1
- package/dist/client/assets/{XCircle-uxFEtClP.js → XCircle-D9dvtOsK.js} +1 -1
- package/dist/client/assets/{XClose-DutYcJf9.js → XClose-DaB-YREn.js} +1 -1
- package/dist/client/assets/{Zap-Dn5qc0WK.js → Zap-j4DAJVgz.js} +1 -1
- package/dist/client/assets/{ZapSquare-rlEq1cG8.js → ZapSquare-cM9Cdjuc.js} +1 -1
- package/dist/client/assets/{ZoomOut-BVY1Bb5M.js → ZoomOut-DVfZ-43U.js} +1 -1
- package/dist/client/assets/{access-gate-BG1y9Hug.js → access-gate-DZ_2pDdY.js} +1 -1
- package/dist/client/assets/{accordion-Dzk41U9r.js → accordion-BISd33DR.js} +1 -1
- package/dist/client/assets/{add-section-modal-DsL7vxG4.js → add-section-modal-DIOLC-ZF.js} +1 -1
- package/dist/client/assets/agent-capabilities-CVYxQ4uK.js +3 -0
- package/dist/client/assets/{agent-icon-eJeBIKuQ.js → agent-icon-BgD5mt7Y.js} +1 -1
- package/dist/client/assets/{agent-icons-BQS7GC08.js → agent-icons-DmQcPkq-.js} +1 -1
- package/dist/client/assets/{agents-list-BuzrDWIw.js → agents-list-h30K61d9.js} +1 -1
- package/dist/client/assets/{ai-providers-CVvDeHAY.js → ai-providers-CEnY5BL7.js} +1 -1
- package/dist/client/assets/{alert-B7wpmBJc.js → alert-C7cWRVuG.js} +1 -1
- package/dist/client/assets/{alert-dialog-D0THW25_.js → alert-dialog-qtdXP2aD.js} +1 -1
- package/dist/client/assets/app-editor-B4mTx3Hz.js +1 -0
- package/dist/client/assets/{auth-catchall-B9qDAn3E.js → auth-catchall-CuT4FTL1.js} +1 -1
- package/dist/client/assets/{auth-split-layout-B_xfyQiq.js → auth-split-layout-BDEnOc9x.js} +1 -1
- package/dist/client/assets/{automation-list-row-D582neu3.js → automation-list-row-BW5rM44g.js} +1 -1
- package/dist/client/assets/{automation-runs-Bbg-0UVN.js → automation-runs-BUOdfMri.js} +1 -1
- package/dist/client/assets/{automations-CocDDisF.js → automations-ClItqGDn.js} +1 -1
- package/dist/client/assets/{avatar-BWTRU-cH.js → avatar-DYsooxxy.js} +1 -1
- package/dist/client/assets/{badge-DAzOgiKc.js → badge-CTK5gX_I.js} +1 -1
- package/dist/client/assets/{brand-context-BxzBhuxy.js → brand-context-CtcRGgwt.js} +1 -1
- package/dist/client/assets/{buckets-OgmEkXt4.js → buckets-BPPYI6Ll.js} +1 -1
- package/dist/client/assets/{calendar-CTsGuWmk.js → calendar-DMziTV2J.js} +1 -1
- package/dist/client/assets/{capability-load-error-B6TBCUEJ.js → capability-load-error-BTLQ23rW.js} +1 -1
- package/dist/client/assets/{card-D4pgDcd2.js → card-DGQIgBVW.js} +1 -1
- package/dist/client/assets/{chat-context-DLsfZ4X8.js → chat-context-BwBc2M6a.js} +1 -1
- package/dist/client/assets/{checkbox-NCgkpQdG.js → checkbox-B-MHp2m4.js} +1 -1
- package/dist/client/assets/{cli-auth-success-Cg7MVUxb.js → cli-auth-success-CPZJCSmX.js} +1 -1
- package/dist/client/assets/{collection-detail-BTIBM7UV.js → collection-detail-AQZQR51q.js} +1 -1
- package/dist/client/assets/{collection-display-button-BD_cZwBu.js → collection-display-button-Df3MeS7W.js} +1 -1
- package/dist/client/assets/{collection-search-FDG1Rlpn.js → collection-search-BiQg9L4B.js} +1 -1
- package/dist/client/assets/{collection-table-wrapper-CLs6D3Gl.js → collection-table-wrapper-DEwd3fgl.js} +1 -1
- package/dist/client/assets/{collection-tabs-pv_RnATY.js → collection-tabs-CcnS0Il2.js} +1 -1
- package/dist/client/assets/{collections-2LTOAuNh.js → collections-BnzTAqxJ.js} +1 -1
- package/dist/client/assets/{command-Eg_TSNDN.js → command-DNZKPE8c.js} +1 -1
- package/dist/client/assets/{connect-desktop-dialog-BfZ9n3Q0.js → connect-desktop-dialog-Cu6gQanY.js} +1 -1
- package/dist/client/assets/{connection-card-CBcUqWOS.js → connection-card-CwL_Gtb4.js} +1 -1
- package/dist/client/assets/{connection-detail-CLOt0X5i.js → connection-detail-DTp8ff1l.js} +1 -1
- package/dist/client/assets/{connection-form-helpers-DQ1R8Rbb.js → connection-form-helpers-Bm0LSgZq.js} +1 -1
- package/dist/client/assets/{connections-anSV4FAS.js → connections-j-HJQpSe.js} +1 -1
- package/dist/client/assets/decopilot-sse-pool-COADWaXW.js +1 -0
- package/dist/client/assets/{dialog-GbkSCCDE.js → dialog-BVuxcsVk.js} +1 -1
- package/dist/client/assets/{domain-settings-CfTQTVXk.js → domain-settings-DKOBo5cc.js} +1 -1
- package/dist/client/assets/{drawer-CDEJbPQ_.js → drawer-DXb-AEyv.js} +1 -1
- package/dist/client/assets/{dropdown-menu-Bp4U1b45.js → dropdown-menu-B8jiZxwT.js} +1 -1
- package/dist/client/assets/{dynamic-plugin-layout-BwhGs18I.js → dynamic-plugin-layout-DYfQLQqA.js} +1 -1
- package/dist/client/assets/{empty-state-v8piTmBi.js → empty-state-D5f29Xcz.js} +1 -1
- package/dist/client/assets/{empty-state-B8atRyt1.js → empty-state-DIMjTOGF.js} +1 -1
- package/dist/client/assets/{extract-connection-data-CWzL0whb.js → extract-connection-data-BJtaRoQB.js} +1 -1
- package/dist/client/assets/{features-DqRtKUxF.js → features-Baf8n_se.js} +1 -1
- package/dist/client/assets/{file-explorer-COzE78zi.js → file-explorer-BB5qrAiH.js} +1 -1
- package/dist/client/assets/{file-type-icon-CrGaQHZH.js → file-type-icon-9GbQJJla.js} +1 -1
- package/dist/client/assets/{files-DcXaeN54.js → files-BDf63K2h.js} +1 -1
- package/dist/client/assets/{form-Ct1q5ZTT.js → form-D5zHXlMU.js} +1 -1
- package/dist/client/assets/{general-6k9CLiVk.js → general-t5ylGzhM.js} +1 -1
- package/dist/client/assets/{generate-id-Ck2Vi4il.js → generate-id-16rt0unc.js} +1 -1
- package/dist/client/assets/{github-repo-picker-Dh-z3MS6.js → github-repo-picker-D0jgVOhB.js} +1 -1
- package/dist/client/assets/{header-tab-button-TaP3yUvX.js → header-tab-button-B7JCdtgi.js} +1 -1
- package/dist/client/assets/{hover-card-DUG7qFNS.js → hover-card-BAzXpmKd.js} +1 -1
- package/dist/client/assets/{image-field-BvfbFQCq.js → image-field-Ysc9gjw_.js} +1 -1
- package/dist/client/assets/{index-C99xN5mu.js → index-BFPk_Xc8.js} +1 -1
- package/dist/client/assets/{index-CH5_jbBh.js → index-BPCEqCH8.js} +1 -1
- package/dist/client/assets/{index-Bg77DGkv.js → index-BZGVDk3g.js} +1 -1
- package/dist/client/assets/{index-DUFETPUS.js → index-Bb8K2DUU.js} +1 -1
- package/dist/client/assets/{index-BG09-Pj6.js → index-C5DGaDTE.js} +1 -1
- package/dist/client/assets/{index-C4S4NH7_.js → index-C_RnYmCN.js} +1 -1
- package/dist/client/assets/{index-Bo0y-IeN.js → index-CbN9kYHB.js} +1 -1
- package/dist/client/assets/{index-DvjfZyh_.js → index-Cbngzld3.js} +3 -3
- package/dist/client/assets/{index-BwfKFYWi.js → index-DES0wLPI.js} +12 -12
- package/dist/client/assets/{index-EWthEHT2.js → index-DEkPGwPd.js} +1 -1
- package/dist/client/assets/{index-Ca_51Bdz.js → index-DdEtGRBb.js} +1 -1
- package/dist/client/assets/{index-2GwD8zs9.js → index-Drq6TCfC.js} +1 -1
- package/dist/client/assets/{index-D7JjC_Ha.js → index-PadxIFkt.js} +1 -1
- package/dist/client/assets/{index-DrZPYOCw.js → index-kU5u3aEQ.js} +1 -1
- package/dist/client/assets/{index-redirect-BQdYxzJo.js → index-redirect-BVfzEM-2.js} +1 -1
- package/dist/client/assets/{index-BQjtT112.js → index-vM9scTJV.js} +1 -1
- package/dist/client/assets/{input-irp5a6Ig.js → input-CxWmKS03.js} +1 -1
- package/dist/client/assets/{integration-icon-FcIrg4H7.js → integration-icon-C8l8gk56.js} +1 -1
- package/dist/client/assets/{label-BjwEjfOc.js → label-BUOqnJ7l.js} +1 -1
- package/dist/client/assets/{layout-s4c1VBr3.js → layout-BXEq9Lt0.js} +1 -1
- package/dist/client/assets/{login-DvesO_NT.js → login-79jBd8dT.js} +1 -1
- package/dist/client/assets/{members-C60Aey5n.js → members-4ZcflmV4.js} +1 -1
- package/dist/client/assets/{monaco-editor-CIyIIOLP.js → monaco-editor-CwH2NVur.js} +1 -1
- package/dist/client/assets/{monitoring-stats-row-B8f5t9as.js → monitoring-stats-row-_N9Geab-.js} +1 -1
- package/dist/client/assets/{oauth-callback-BHpZxMn4.js → oauth-callback-UYq6rKIp.js} +1 -1
- package/dist/client/assets/{oauth-callback-ai-provider-BsfNZx3Q.js → oauth-callback-ai-provider-CcTTT6yu.js} +1 -1
- package/dist/client/assets/{onboarding-B2qJIBXT.js → onboarding-DM9L8yF1.js} +1 -1
- package/dist/client/assets/{org-install-D8vuUVF_.js → org-install-BKkCtJoj.js} +1 -1
- package/dist/client/assets/{org-layout-BlXjXW59.js → org-layout-CeAaKEeN.js} +1 -1
- package/dist/client/assets/{org-plugin-layout-CX3CIxiU.js → org-plugin-layout-B_8XF5xC.js} +1 -1
- package/dist/client/assets/{page-seo-form-Bj1ei9Gv.js → page-seo-form-c-iWMPRU.js} +1 -1
- package/dist/client/assets/page-seo-sheet-DEsc0wUy.js +1 -0
- package/dist/client/assets/{pair-QNI_4vE-.js → pair-DGfi0DYT.js} +1 -1
- package/dist/client/assets/{plugin-empty-state-BxAyfpRL.js → plugin-empty-state-DhzIqwYl.js} +1 -1
- package/dist/client/assets/{plugin-header-BmTvDEmx.js → plugin-header-Nu37D2e7.js} +1 -1
- package/dist/client/assets/{plugin-layout-AAC2IROJ.js → plugin-layout-DS-45rI5.js} +1 -1
- package/dist/client/assets/{popover-DKADBzsx.js → popover-DIhiGQZO.js} +1 -1
- package/dist/client/assets/{post-editor-Dkob_Nf9.js → post-editor-BhTIGX9u.js} +1 -1
- package/dist/client/assets/{primitives-BD_skIF2.js → primitives-D3OiaA1o.js} +1 -1
- package/dist/client/assets/{profile-B7jiHx0p.js → profile-BOnhq-U1.js} +1 -1
- package/dist/client/assets/project-app-view-B6XESkOH.js +1 -0
- package/dist/client/assets/record-editor-DDxQqS5k.js +1 -0
- package/dist/client/assets/registry-AsFW8yYm.js +2 -0
- package/dist/client/assets/{registry-layout-CyYeZQFC.js → registry-layout-CkNttCUh.js} +1 -1
- package/dist/client/assets/{require-capability-D2k7Kzha.js → require-capability-Cm5KwYyo.js} +1 -1
- package/dist/client/assets/{required-auth-layout-Dlm8pGwG.js → required-auth-layout-C2qJiXM7.js} +1 -1
- package/dist/client/assets/{reset-password-Bj1irBT9.js → reset-password-iw6TtkA7.js} +1 -1
- package/dist/client/assets/{resizable-CflvFHn-.js → resizable-DOED-lqJ.js} +1 -1
- package/dist/client/assets/{roles-C-0y_YIa.js → roles-DpYb1zXX.js} +1 -1
- package/dist/client/assets/save-referenced-block-aVkQu985.js +1 -0
- package/dist/client/assets/{save-status-BT2K7vMi.js → save-status-NiMLdA_E.js} +1 -1
- package/dist/client/assets/{schema-form-BmsIuFe9.js → schema-form-BMMNRxMa.js} +1 -1
- package/dist/client/assets/{scroll-area-Bcd6M0ah.js → scroll-area-BCusTvyt.js} +1 -1
- package/dist/client/assets/{search-input-DMce5FEj.js → search-input-BlmktcqH.js} +1 -1
- package/dist/client/assets/{secrets-DFqTlIhT.js → secrets-Kx-u37G9.js} +1 -1
- package/dist/client/assets/{sections-editor-DPjqmRcC.js → sections-editor-Btt2eICm.js} +1 -1
- package/dist/client/assets/{select-DBJdJQxs.js → select-DJ-jQ95-.js} +1 -1
- package/dist/client/assets/{select-model-C6zKg0NG.js → select-model-CuVna3TI.js} +1 -1
- package/dist/client/assets/{seo-editor-70uW1Cgu.js → seo-editor-CpGzaUnY.js} +1 -1
- package/dist/client/assets/{settings-layout-BL3d6TJ_.js → settings-layout-CUxOF-JB.js} +1 -1
- package/dist/client/assets/{settings-section-C7OUTn7i.js → settings-section-Bs7s9mU1.js} +1 -1
- package/dist/client/assets/{sheet-BwH8pS-i.js → sheet-4VDYc-Lf.js} +1 -1
- package/dist/client/assets/{shell-controls-CMgf8y54.js → shell-controls-D0MQ2JKg.js} +1 -1
- package/dist/client/assets/{shell-layout-C6cd7iM5.js → shell-layout-BtNaHUcu.js} +1 -1
- package/dist/client/assets/shell-route-loading-Dy64K_ax.js +1 -0
- package/dist/client/assets/{sidebar-TMNnGTum.js → sidebar-DeB8mcen.js} +1 -1
- package/dist/client/assets/{skeleton-l4y2bxXO.js → skeleton-Cuoq2c8E.js} +1 -1
- package/dist/client/assets/sortable.esm-4pxxx_ZW.js +5 -0
- package/dist/client/assets/{spinner-BtGInCsG.js → spinner-Dar3jTAz.js} +1 -1
- package/dist/client/assets/{sso-BGAtG4Za.js → sso-C0PJx8_v.js} +1 -1
- package/dist/client/assets/{store-C3y6O23u.js → store-XNFzt3Sr.js} +1 -1
- package/dist/client/assets/store-registry-D3KY8zoe.js +2 -0
- package/dist/client/assets/{studio-tools-B1Ixjcw5.js → studio-tools-B99HmIGq.js} +1 -1
- package/dist/client/assets/{switch-BFEJpvlr.js → switch-jfclxkGe.js} +1 -1
- package/dist/client/assets/{tab-id-t-YFcZzw.js → tab-id-C7uvN0td.js} +1 -1
- package/dist/client/assets/{table-M2WJKO5P.js → table-DEsh_yYm.js} +1 -1
- package/dist/client/assets/{tabs-w6d9uq3S.js → tabs-tr2cYDEl.js} +1 -1
- package/dist/client/assets/{task-status-CfFWQAcK.js → task-status-Ds87FkqY.js} +1 -1
- package/dist/client/assets/{textarea-BGXAM3FF.js → textarea-uwm8kgXD.js} +1 -1
- package/dist/client/assets/{toggle-group-C4U40EOv.js → toggle-group-BDjNDkJX.js} +1 -1
- package/dist/client/assets/{toolbar-C2En0zPi.js → toolbar-BIItBzPS.js} +1 -1
- package/dist/client/assets/{tools-list-CCVW8omn.js → tools-list-BQc1il3V.js} +1 -1
- package/dist/client/assets/{tooltip-6LKHApWj.js → tooltip--aN5hOmO.js} +1 -1
- package/dist/client/assets/{types-CoBpfu3U.js → types-BqoD-In5.js} +1 -1
- package/dist/client/assets/{use-ai-providers-Dph4wlM9.js → use-ai-providers-CdyP1ECQ.js} +1 -1
- package/dist/client/assets/{use-automations-DV8VwbjR.js → use-automations-CtzZDGfB.js} +1 -1
- package/dist/client/assets/{use-capability-CRrm1ogD.js → use-capability-KB17PgvY.js} +1 -1
- package/dist/client/assets/{use-clock-tick-CyQ108_a.js → use-clock-tick-CbDuKmI6.js} +1 -1
- package/dist/client/assets/{use-collections-MWh87Qf9.js → use-collections-shQIB33q.js} +1 -1
- package/dist/client/assets/{use-connection-BwjVlVqI.js → use-connection-Zog2j0WA.js} +1 -1
- package/dist/client/assets/{use-copy-BDBsQ8lw.js → use-copy-CZHdrpQ2.js} +1 -1
- package/dist/client/assets/{use-create-virtual-mcp--Yql-2p8.js → use-create-virtual-mcp-aKZM7QuJ.js} +1 -1
- package/dist/client/assets/{use-debounced-autosave-B6SxjuaG.js → use-debounced-autosave-CLmefNH1.js} +1 -1
- package/dist/client/assets/{use-delete-connection-CE3T6gZf.js → use-delete-connection-DXPW2vzV.js} +1 -1
- package/dist/client/assets/{use-file-configs-WBUPEX1z.js → use-file-configs-vUZ85Q5v.js} +1 -1
- package/dist/client/assets/{use-infinite-scroll-C_ORywxv.js → use-infinite-scroll-RcbuivWg.js} +1 -1
- package/dist/client/assets/{use-list-state-ZUm8O0U3.js → use-list-state-D4jM3-Gj.js} +1 -1
- package/dist/client/assets/{use-mcp-client-kBcr-yIi.js → use-mcp-client-BNpG-Sq-.js} +1 -1
- package/dist/client/assets/{use-mcp-prompts-Cu_s_Tgp.js → use-mcp-prompts-DXY1goeC.js} +1 -1
- package/dist/client/assets/{use-mcp-tools-BVCosz4Y.js → use-mcp-tools-BIWz7WmP.js} +1 -1
- package/dist/client/assets/{use-members-CQwZpJh1.js → use-members--qC59KQg.js} +1 -1
- package/dist/client/assets/{use-navigate-to-agent-Dqwftn0z.js → use-navigate-to-agent-nRLYSeRD.js} +1 -1
- package/dist/client/assets/{use-org-auth-client-CKzivxvb.js → use-org-auth-client-vlAtiOoY.js} +1 -1
- package/dist/client/assets/{use-org-sso-CizTzcrl.js → use-org-sso-D9s0K3D9.js} +1 -1
- package/dist/client/assets/{use-organization-roles-DFIysUWU.js → use-organization-roles-DfHQwz_9.js} +1 -1
- package/dist/client/assets/{use-organization-settings-C83zobOQ.js → use-organization-settings-BYRiagaB.js} +1 -1
- package/dist/client/assets/{use-registry-connections-D2z51tYu.js → use-registry-connections-2J71KvqA.js} +1 -1
- package/dist/client/assets/{use-secrets-DuBDIHg_.js → use-secrets-CqzR66gk.js} +1 -1
- package/dist/client/assets/{use-status-sounds-C1N5nKtC.js → use-status-sounds-Ce0VEQki.js} +1 -1
- package/dist/client/assets/{use-view-mode-CdGJFg5T.js → use-view-mode-rJzWSnvR.js} +1 -1
- package/dist/client/assets/{use-virtual-mcp-BH7eFRNT.js → use-virtual-mcp-CfnJ2csQ.js} +1 -1
- package/dist/client/assets/useInfiniteQuery-g2cikAaR.js +1 -0
- package/dist/client/assets/{useRouterState-mLoytFp1.js → useRouterState-somQ9b5z.js} +1 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-ZAutmGB6.js +1 -0
- package/dist/client/assets/{user-Bu_LWzDf.js → user-Bku5ElcW.js} +1 -1
- package/dist/client/assets/{view-mode-toggle-BFVBLid1.js → view-mode-toggle-DV5nhx4X.js} +1 -1
- package/dist/client/assets/{watch-sse-pool-PpWWHENZ.js → watch-sse-pool-CzyBkAGb.js} +1 -1
- package/dist/client/assets/{workflow-mBb6h1mU.js → workflow-BPCoD875.js} +1 -1
- package/dist/client/assets/workflow-detail-DWZIWF6w.js +1 -0
- package/dist/client/index.html +1 -1
- package/dist/server/cli.js +2 -2
- package/dist/server/server.js +1 -1
- package/package.json +1 -1
- package/dist/client/assets/agent-capabilities-BTQpzJzY.js +0 -3
- package/dist/client/assets/app-editor-mnWJa4OB.js +0 -1
- package/dist/client/assets/decopilot-sse-pool-J9IBtPGQ.js +0 -1
- package/dist/client/assets/page-seo-sheet-CAj4OnGN.js +0 -1
- package/dist/client/assets/project-app-view-Bxi1-sx3.js +0 -1
- package/dist/client/assets/record-editor-DhS1gQiJ.js +0 -1
- package/dist/client/assets/registry-CLfDV8ZJ.js +0 -2
- package/dist/client/assets/save-referenced-block-Dm8Vu_wn.js +0 -1
- package/dist/client/assets/shell-route-loading-C_Trke1w.js +0 -1
- package/dist/client/assets/sortable.esm-DzvMqAvs.js +0 -5
- package/dist/client/assets/store-registry-CTUY1_0P.js +0 -2
- package/dist/client/assets/useInfiniteQuery-DCizzYPk.js +0 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-BlGj7aqQ.js +0 -1
- package/dist/client/assets/workflow-detail-GZhsuAzj.js +0 -1
package/dist/server/cli.js
CHANGED
|
@@ -143,7 +143,7 @@ Reference: https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sso.ht
|
|
|
143
143
|
All managed services stopped.`)}async function vxl(i){let t=[],u=X_(i,"postgres");if(u!==null&&bc(u.pid))t.push({name:"PostgreSQL",state:"running",pid:u.pid,port:u.port,owner:"managed"});else{if(u!==null)await Wf(i,"postgres");t.push({name:"PostgreSQL",state:"stopped",pid:null,port:0,owner:"none"})}let l=X_(i,"nats");if(l!==null&&bc(l.pid))t.push({name:"NATS",state:"running",pid:l.pid,port:l.port,owner:"managed"});else{if(l!==null)await Wf(i,"nats");t.push({name:"NATS",state:"stopped",pid:null,port:0,owner:"none"})}let n=X_(i,"minio");if(n!==null&&bc(n.pid))t.push({name:"MinIO",state:"running",pid:n.pid,port:n.port,owner:"managed"});else{if(n!==null)await Wf(i,"minio");t.push({name:"MinIO",state:"stopped",pid:null,port:0,owner:"none"})}let f=X_(i,"link");if(f!==null&&bc(f.pid))t.push({name:"Link",state:"running",pid:f.pid,port:f.port,owner:"managed"});else{if(f!==null)await Wf(i,"link");t.push({name:"Link",state:"stopped",pid:null,port:0,owner:"none"})}return t}function wxl(i){console.log("Service State PID Port Owner"),console.log("---------- ---------- ----- ----- ----------");for(let l of i){let n=l.name.padEnd(10),f=l.state.padEnd(10),c=(l.pid?.toString()??"-").padEnd(5),$=(l.port?String(l.port):"-").padEnd(5),d=l.owner;console.log(`${n} ${f} ${c} ${$} ${d}`)}}var jGi="postgres",SGi="postgres",BYt="postgres",YYt="v2.10.24",zGi="minioadmin",bGi="minioadmin",PYt="studio-dev",Hwl=9000,mg,KGi,WGi="cli.ts link",fxl=500,cxl=30000,$xl=30000;var B8=x(()=>{H1();mg=Aui()==="win32",KGi=mg?".exe":""});var SYt={};Pi(SYt,{servicesCommand:()=>xxl});function jYt(i){if(!i)return null;try{let u=new URL(i).hostname;if(u==="localhost"||u==="127.0.0.1"||u==="::1")return null;return i}catch{return null}}async function xxl(i){let{subcommand:t,home:u}=i,{ensureServices:l,stopServices:n,getStatus:f,printTable:c}=await Promise.resolve().then(() => (B8(),Q8));switch(t){case"up":{await l({home:u,externalDatabaseUrl:jYt(process.env.DATABASE_URL),externalNatsUrl:jYt(process.env.NATS_URL)});break}case"down":{await n(u);break}case"status":{let $=await f(u);c($);break}default:console.error(`Unknown services subcommand: ${t}
|
|
144
144
|
Usage: deco services <up|down|status>`),process.exit(1)}}import{homedir as rxl}from"os";function Oxl(i){let t=(i??"").trim();return Dxl.has(t)?t:"all"}function QH(i){return i==="true"||i==="1"}function yxl(i,t){if(i===void 0||i==="")return t;return i==="true"||i==="1"}function zYt(i){if(!i)return null;try{let u=new URL(i).hostname;if(u==="localhost"||u==="127.0.0.1"||u==="::1")return null;return i}catch{return null}}function Nxl(i){let t=i&&i.length>0?i:"user-desktop";if(t==="cluster")return"agent-sandbox";if(!Xxl.has(t))throw Error(`Unknown STUDIO_SANDBOX_PROVIDER="${i}" \u2014 expected "agent-sandbox", legacy "cluster", or "user-desktop".`);return t}function zui(i,t){let u=i.home||t.DATA_DIR||t.DECOCMS_HOME||`${rxl()}/deco`,l=i.localMode,n=i.nodeEnv||t.NODE_ENV||"development",f=t.NATS_URL||"nats://localhost:4222";return{settings:{nodeEnv:n,port:Number(i.port)||Number(t.PORT)||3000,baseUrl:i.baseUrl||t.BASE_URL,dataDir:u,databasePgSsl:QH(t.DATABASE_PG_SSL),databasePoolMax:Number(t.DATABASE_POOL_MAX)||5,betterAuthSecret:t.BETTER_AUTH_SECRET||"",encryptionKey:t.ENCRYPTION_KEY||"",meshJwtSecret:t.MESH_JWT_SECRET,localMode:l,disableRateLimit:QH(t.DISABLE_RATE_LIMIT),studioProvisionSecretKey:t.STUDIO_PROVISION_SECRET_KEY,clickhouseUrl:t.CLICKHOUSE_URL,clickhouseMaxMemoryUsage:Number(t.CLICKHOUSE_MAX_MEMORY_USAGE)||void 0,monitoringOtlpEndpoint:t.MONITORING_OTLP_ENDPOINT,otelServiceName:t.OTEL_SERVICE_NAME||"studio",configPath:t.CONFIG_PATH||"./config.json",aiGatewayEnabled:QH(t.DECO_AI_GATEWAY_ENABLED),aiGatewayUrl:t.DECO_AI_GATEWAY_URL||"https://ai-site.deco.site",enableDecoImport:QH(t.ENABLE_DECO_IMPORT),mcpCacheEnabled:yxl(t.MCP_CACHE_ENABLED,n!=="development"),orgFsPublicSetsJson:t.ORGFS_PUBLIC_SETS,orgFsMountsDisabled:QH(t.DISABLE_ORGFS_MOUNTS),s3Endpoint:t.S3_ENDPOINT,s3Bucket:t.S3_BUCKET,s3Region:t.S3_REGION||"auto",s3AccessKeyId:t.S3_ACCESS_KEY_ID,s3SecretAccessKey:t.S3_SECRET_ACCESS_KEY,s3ForcePathStyle:t.S3_FORCE_PATH_STYLE===void 0||t.S3_FORCE_PATH_STYLE===""||t.S3_FORCE_PATH_STYLE==="true"||t.S3_FORCE_PATH_STYLE==="1",monitoringS3Bucket:t.MONITORING_S3_BUCKET,monitoringS3Endpoint:t.MONITORING_S3_ENDPOINT,monitoringS3Region:t.MONITORING_S3_REGION,monitoringS3AccessKeyId:t.MONITORING_S3_ACCESS_KEY_ID,monitoringS3SecretAccessKey:t.MONITORING_S3_SECRET_ACCESS_KEY,monitoringS3Prefix:t.MONITORING_S3_PREFIX,duckdbExtensionDirectory:t.DUCKDB_EXTENSION_DIRECTORY||"/opt/duckdb/extensions",duckdbMemoryLimit:t.DUCKDB_MEMORY_LIMIT||void 0,duckdbThreads:t.DUCKDB_THREADS?Number(t.DUCKDB_THREADS):void 0,isCli:!0,noTui:i.noTui===!0,podName:t.POD_NAME??crypto.randomUUID(),dispatchRole:Oxl(t.MESH_DISPATCH_ROLE),sandboxProviderKind:Nxl(t.STUDIO_SANDBOX_PROVIDER),decoSupabaseUrl:t.DECO_SUPABASE_URL,decoSupabaseServiceKey:t.DECO_SUPABASE_SERVICE_KEY,firecrawlApiKey:t.FIRECRAWL_API_KEY},externalDatabaseUrl:zYt(t.DATABASE_URL),externalNatsUrl:zYt(f),skipMigrations:i.skipMigrations}}var Dxl,Xxl;var LGi=x(()=>{Dxl=new Set(["all","worker","api"]);Xxl=new Set(["agent-sandbox","user-desktop"])});function bYt(i){BH=Object.freeze(i)}function jt(){if(!BH)Jxl();return BH}function Jxl(){if(BH)return;let i={...process.env},t=zui({port:i.PORT||"3000",home:i.DATA_DIR||i.DECOCMS_HOME||"",localMode:i.DECOCMS_LOCAL_MODE==="true",skipMigrations:!0,noTui:i.DECO_NO_TUI==="true",vitePort:i.VITE_PORT,baseUrl:i.BASE_URL},i);BH=Object.freeze({...t.settings,databaseUrl:i.DATABASE_URL??"postgresql://postgres:postgres@localhost:5432/postgres",natsUrls:(i.NATS_URL||"nats://localhost:4222").split(",").map((u)=>u.trim()).filter(Boolean)})}var BH=null;var tn=x(()=>{LGi()});import{context as Uxl,propagation as Fxl,SpanKind as Zxl,SpanStatusCode as RGi}from"@opentelemetry/api";function Ixl(i,t){let u=i instanceof Error?i.name:void 0;if(u==="TimeoutError")return"timeout";if(u==="AbortError")return"cancelled";if(t?.aborted)return"cancelled";return null}function Qxl(i,t){if(t.startsWith("/_sandbox/")){if(i===404)return"daemon_gone";if(i===409)return"daemon_not_ready"}if(i===404&&t.includes("/sandboxclaims/"))return"claim_gone";return null}function Bxl(i,t){if(i===404&&(t==="/.decofile"||t==="/live/_meta"))return"not_a_deco_site";return null}function Yxl(i){if(!(i instanceof Error))return!1;if(i.message.includes("socket connection was closed"))return!0;let t=i.code;return t==="ECONNRESET"||t==="EPIPE"}async function Pxl(i,t){let u,l;if(i instanceof Request)u=new URL(i.url),l=t?.method??i.method;else if(i instanceof URL)u=i,l=t?.method??"GET";else u=new URL(i),l=t?.method??"GET";let n=`${l} ${u.host}`;return Gx.startActiveSpan(n,{kind:Zxl.CLIENT,attributes:{"http.request.method":l,"url.full":u.href,"url.scheme":u.protocol.replace(":",""),"url.path":u.pathname,"url.query":u.search||void 0,"server.address":u.hostname,"server.port":u.port?Number(u.port):void 0}},async(f)=>{try{let c=new Headers(t?.headers??(i instanceof Request?i.headers:{}));Fxl.inject(Uxl.active(),c,{set:(E,v,w)=>E.set(v,w)});let $={...t,headers:c},d=await Txl(i,$);f.setAttribute("http.response.status_code",d.status);let _=d.status===405&&l==="GET"&&(c.get("accept")??"").includes("text/event-stream"),g=d.status>=400?Qxl(d.status,u.pathname):null,h=d.status>=400?Bxl(d.status,u.pathname):null;if(d.status>=400&&!_&&!g&&!h)f.setStatus({code:RGi.ERROR,message:`HTTP ${d.status}`});else{if(g)f.setAttribute("sandbox.lifecycle",g);if(h)f.setAttribute("preview.probe",h);f.setStatus({code:RGi.OK})}return d}catch(c){let $=t?.signal??(i instanceof Request?i.signal:void 0),d=Ixl(c,$??void 0);if(d)f.setAttribute("abort.reason",d);else if(Yxl(c)&&u.pathname.startsWith("/_sandbox/"))f.setAttribute("sandbox.lifecycle","connection_closed");else f.recordException(c),f.setStatus({code:RGi.ERROR,message:c instanceof Error?c.message:"Fetch failed"});throw c}finally{f.end()}})}function KYt(){globalThis.fetch=Pxl}var Txl;var HYt=x(()=>{pf();Txl=globalThis.fetch});import{join as eGi}from"path";function og(){return eGi(jt().dataDir,"logs")}function fA(){return eGi(jt().dataDir,"traces")}function a3(){return eGi(jt().dataDir,"metrics")}function Wx(i,t){let u=i[t];return u!=null?String(u):""}function YH(i,t){let u=i[t];return u!=null&&u!==""?String(u):null}function LYt(i){let{attributes:t}=i,u=t[G0.IS_ERROR],l=t[G0.DURATION_MS];return{v:1,id:i.id,type:Wx(t,G0.TYPE)||PH,organization_id:Wx(t,G0.ORGANIZATION_ID),connection_id:Wx(t,G0.CONNECTION_ID),connection_title:Wx(t,G0.CONNECTION_TITLE),tool_name:Wx(t,G0.TOOL_NAME),input:Wx(t,G0.INPUT),output:Wx(t,G0.OUTPUT),is_error:u===!0||u===1||u==="true"?1:0,error_message:YH(t,G0.ERROR_MESSAGE),duration_ms:typeof l==="number"?l:Number(l)||0,timestamp:new Date(Number(i.timestampNano/1000000n)).toISOString(),user_id:YH(t,G0.USER_ID),request_id:Wx(t,G0.REQUEST_ID),user_agent:YH(t,G0.USER_AGENT),virtual_mcp_id:YH(t,G0.VIRTUAL_MCP_ID),properties:YH(t,G0.PROPERTIES)}}function Kui(i){return i[0]*1000+i[1]/1e6}function $A(i){return new Date(Kui(i)).toISOString()}var CGi="mcp.proxy.callTool",G0,PH="tool_call",cA="llm_call",bui="decopilot";var J_=x(()=>{tn();G0={TYPE:"studio.monitoring.type",ORGANIZATION_ID:"studio.monitoring.organization_id",CONNECTION_ID:"studio.monitoring.connection_id",CONNECTION_TITLE:"studio.monitoring.connection_title",TOOL_NAME:"studio.monitoring.tool_name",INPUT:"studio.monitoring.input",OUTPUT:"studio.monitoring.output",IS_ERROR:"studio.monitoring.is_error",ERROR_MESSAGE:"studio.monitoring.error_message",DURATION_MS:"studio.monitoring.duration_ms",USER_ID:"studio.monitoring.user_id",REQUEST_ID:"studio.monitoring.request_id",USER_AGENT:"studio.monitoring.user_agent",VIRTUAL_MCP_ID:"studio.monitoring.virtual_mcp_id",PROPERTIES:"studio.monitoring.properties"}});import{ExportResultCode as Hui}from"@opentelemetry/core";import{mkdir as Gxl,rename as Wxl,writeFile as Axl}from"fs/promises";import{join as Lui}from"path";class Y8{bufferItems=[];bufferBytes=0;flushTimer=null;flushQueue=Promise.resolve();basePath;flushThreshold;maxBufferBytes;isShutdown=!1;knownDirs=new Set;partitionKey;constructor(i){this.basePath=i.basePath,this.flushThreshold=i.flushThreshold??1000,this.maxBufferBytes=i.maxBufferBytes??10485760,this.partitionKey=i.partitionKey;let t=i.flushIntervalMs??60000;if(t>0&&t<3600000){if(this.flushTimer=setInterval(()=>{this.flush().catch((u)=>{console.error("[NDJSONExporter] Timer flush failed:",u)})},t),this.flushTimer&&typeof this.flushTimer==="object"&&"unref"in this.flushTimer)this.flushTimer.unref()}}exportRows(i){if(this.isShutdown)return Promise.resolve({code:Hui.FAILED});for(let t of i){let u=JSON.stringify(t),l=this.partitionKey?this.partitionKey(t):"";this.bufferItems.push({partition:l,json:u}),this.bufferBytes+=Buffer.byteLength(u,"utf8")+1}if(this.bufferItems.length>=this.flushThreshold||this.bufferBytes>=this.maxBufferBytes)return this.flush().then(()=>({code:Hui.SUCCESS})).catch((t)=>{return console.error("[NDJSONExporter] Flush failed:",t),{code:Hui.FAILED}});return Promise.resolve({code:Hui.SUCCESS})}async shutdown(){if(this.isShutdown=!0,this.flushTimer)clearInterval(this.flushTimer),this.flushTimer=null;try{await this.flushQueue}catch{}if(this.bufferItems.length>0)await this.flush()}async forceFlush(){try{await this.flushQueue}catch{}if(this.bufferItems.length>0)await this.flush()}flush(){let t=this.flushQueue.catch(()=>{}).then(()=>this.doFlush());return this.flushQueue=t,t}async doFlush(){if(this.bufferItems.length===0)return;let i=this.bufferItems;this.bufferItems=[],this.bufferBytes=0;let t=new Map;for(let n of i){let f=t.get(n.partition);if(!f)f=[],t.set(n.partition,f);f.push(n.json)}let u=await Promise.allSettled(Array.from(t.entries()).map(([n,f])=>this.writeNDJSON(f,n).then(()=>n))),l=u.find((n)=>n.status==="rejected");if(l){let n=new Set;for(let c of u)if(c.status==="fulfilled")n.add(c.value);let f=i.filter((c)=>!n.has(c.partition));this.bufferItems=f.concat(this.bufferItems),this.bufferBytes=0;for(let c of this.bufferItems)this.bufferBytes+=Buffer.byteLength(c.json,"utf8")+1;throw l.reason}}async writeNDJSON(i,t){let u=new Date,l=[String(u.getUTCFullYear()),String(u.getUTCMonth()+1).padStart(2,"0"),String(u.getUTCDate()).padStart(2,"0"),String(u.getUTCHours()).padStart(2,"0")],n=t?Lui(this.basePath,t,...l):Lui(this.basePath,...l);if(!this.knownDirs.has(n))await Gxl(n,{recursive:!0,mode:448}),this.knownDirs.add(n);let f=`${crypto.randomUUID()}.ndjson`,c=Lui(n,`.${f}.tmp`),$=Lui(n,f),d=i.join(`
|
|
145
145
|
`)+`
|
|
146
|
-
`;await Axl(c,d,{mode:384}),await Wxl(c,$)}}var Rui=()=>{};import{ExportResultCode as kxl}from"@opentelemetry/core";class MGi{inner;constructor(i){this.inner=new Y8({...i,partitionKey:(t)=>t.organization_id})}export(i,t){let u=[];for(let l of i){if(!jxl.has(l.attributes[G0.TYPE]))continue;let n={};for(let[d,_]of Object.entries(l.attributes))if(typeof _==="string"||typeof _==="number"||typeof _==="boolean")n[d]=_;let f=l.spanContext?.spanId??crypto.randomUUID(),c=l.hrTime,$=BigInt(c[0])*1000000000n+BigInt(c[1]);u.push(LYt({id:f,timestampNano:$,attributes:n}))}this.inner.exportRows(u).then((l)=>t(l)).catch(()=>t({code:kxl.FAILED}))}async shutdown(){await this.inner.shutdown()}async forceFlush(){await this.inner.forceFlush()}}var jxl;var RYt=x(()=>{J_();Rui();jxl=new Set([PH,cA])});import{ExportResultCode as Sxl}from"@opentelemetry/core";import{AggregationTemporality as zxl,DataPointType as CYt}from"@opentelemetry/sdk-metrics";class qGi{inner;constructor(i){this.inner=new Y8({...i,partitionKey:(t)=>t.organization_id})}selectAggregationTemporality(i){return zxl.DELTA}export(i,t){let u=[];for(let l of i.scopeMetrics)for(let n of l.metrics){let{descriptor:f,dataPointType:c}=n;if(c===CYt.SUM)for(let $ of n.dataPoints){let d=$.attributes;u.push({v:1,name:f.name,type:"sum",unit:f.unit,timestamp:$A($.endTime),organization_id:String(d["organization.id"]??""),connection_id:String(d["connection.id"]??""),tool_name:String(d["tool.name"]??""),status:String(d.status??""),error_type:String(d["error.type"]??""),value:$.value,hist_count:0,hist_sum:0,hist_min:0,hist_max:0,hist_boundaries:"[]",hist_bucket_counts:"[]"})}else if(c===CYt.HISTOGRAM)for(let $ of n.dataPoints){let{attributes:d,value:_}=$;u.push({v:1,name:f.name,type:"histogram",unit:f.unit,timestamp:$A($.endTime),organization_id:String(d["organization.id"]??""),connection_id:String(d["connection.id"]??""),tool_name:String(d["tool.name"]??""),status:String(d.status??""),error_type:String(d["error.type"]??""),value:_.count,hist_count:_.count,hist_sum:_.sum??0,hist_min:_.min??0,hist_max:_.max??0,hist_boundaries:JSON.stringify(_.buckets.boundaries),hist_bucket_counts:JSON.stringify(_.buckets.counts)})}}this.inner.exportRows(u).then((l)=>t(l)).catch(()=>t({code:Sxl.FAILED}))}async shutdown(){await this.inner.shutdown()}async forceFlush(){await this.inner.forceFlush()}}var eYt=x(()=>{J_();Rui()});import{ExportResultCode as bxl}from"@opentelemetry/core";function Kxl(i){let t=i.resource,u=t.attributes["service.name"]??"unknown";return{v:1,trace_id:i.spanContext().traceId,span_id:i.spanContext().spanId,parent_span_id:i.parentSpanContext?.spanId||null,name:i.name,kind:i.kind,status:i.status.code,status_message:i.status.message||null,start_time:$A(i.startTime),end_time:$A(i.endTime),duration_ms:Kui(i.endTime)-Kui(i.startTime),service_name:u,attributes:JSON.stringify(i.attributes),events:JSON.stringify(i.events),links:JSON.stringify(i.links),resource:JSON.stringify(t.attributes)}}class VGi{inner;constructor(i){this.inner=new Y8(i)}export(i,t){let u=i.map(Kxl);this.inner.exportRows(u).then((l)=>t(l)).catch(()=>t({code:bxl.FAILED}))}async shutdown(){await this.inner.shutdown()}async forceFlush(){await this.inner.forceFlush()}}var MYt=x(()=>{J_();Rui()});function dA(i,t=65536){if(i.length<=t&&Buffer.byteLength(i,"utf8")<=t)return i;let u=t-Hxl;if(u<=0)return"... [TRUNCATED]".slice(0,t);let l=0,n=0;for(let f of i){let c=f.charCodeAt(0)<=127?1:Buffer.byteLength(f,"utf8");if(l+c>u)break;l+=c,n+=f.length}return i.slice(0,n)+"... [TRUNCATED]"}var Hxl;var aGi=x(()=>{Hxl=Buffer.byteLength("... [TRUNCATED]","utf8")});import{NOOP_LOGGER as Lxl}from"@opentelemetry/api-logs";function VYt(i){qYt=i.getLogger(Rxl,Cxl)}function aYt(){return qYt}var Rxl="studio.monitoring",Cxl="1.0.0",qYt;var mGi=x(()=>{qYt=Lxl});var sYt={};Pi(sYt,{shouldSkipStudioContext:()=>oGi,isServerPath:()=>Mxl,isHealthPath:()=>GH,SYSTEM_PATHS:()=>U_});function GH(i){return i===U_.HEALTH||i===U_.HEALTH_LIVE||i===U_.HEALTH_READY}function mYt(i){return i===U_.HEALTH||i===U_.HEALTH_LIVE||i===U_.HEALTH_READY||i===U_.METRICS||i.startsWith(_A.WELL_KNOWN)}function oYt(i){return i.startsWith(_A.API)}function Mxl(i){return oYt(i)||i==="/mcp"||i.startsWith(_A.MCP)||i.startsWith(_A.OAUTH_PROXY)||i.startsWith(_A.ORG)||mYt(i)}function oGi(i){return i==="/"||i.startsWith(_A.API_AUTH)||i==="/api/trigger-callback"||mYt(i)||!oYt(i)&&exl.test(i)}var U_,_A,exl;var Cui=x(()=>{U_={HEALTH:"/health",HEALTH_LIVE:"/health/live",HEALTH_READY:"/health/ready",METRICS:"/metrics"},_A={API:"/api/",API_AUTH:"/api/auth/",MCP:"/mcp/",OAUTH_PROXY:"/oauth-proxy/",WELL_KNOWN:"/.well-known",ORG:"/org/"},exl=/\.(html|css|js|ico|svg|png|jpg|jpeg|gif|webp|woff|woff2)$/});import{SpanStatusCode as sGi}from"@opentelemetry/api";var qxl,Vxl=()=>qxl??=Qn.createHistogram("http.server.request.duration",{description:"Duration of inbound HTTP requests handled by the API.",unit:"s"}),pGi=async(i,t)=>{if(GH(i.req.path))return t();let u=i.req.raw,l=new URL(u.url),n=performance.now(),f=tPt(u),c=iWi(u),$={"http.request.url":u.url,"http.request.method":u.method,"http.request.body.size":u.headers.get("content-length")??void 0,"url.scheme":l.protocol.replace(":",""),"server.address":l.host,"url.query":l.search||void 0,"url.path":l.pathname,"user_agent.original":u.headers.get("user-agent")??void 0,"request.internal":u.headers.has("traceparent"),...c?{"trace.debug.id":c}:{}};await Gx.startActiveSpan(`${u.method} ${l.pathname}`,{attributes:$},f,async(d)=>{i.set("rootSpan",d);try{await t()}catch(_){d.recordException(_),d.setStatus({code:sGi.ERROR});let g=typeof _==="object"&&_&&"message"in _?String(_.message):JSON.stringify(_);throw console.error("error: ",g,$),_}finally{let _=i.res?.status??500,g=_>=500;d.setStatus({code:g?sGi.ERROR:sGi.OK}),d.setAttribute("http.response.status_code",_);let h=i.get("meshContext");if(h){if(h.auth.user?.id)d.setAttribute("studio.user.id",h.auth.user.id);if(h.auth.apiKey?.id)d.setAttribute("studio.api_key.id",h.auth.apiKey.id);if(h.organization?.id)d.setAttribute("studio.organization.id",h.organization.id)}if(c)iPt(i.res.headers,c);Vxl().record((performance.now()-n)/1000,{"http.request.method":u.method,"http.route":i.req.routePath,"http.response.status_code":_}),d.end()}})};var pYt=x(()=>{pf();Cui()});import{createContextKey as axl,metrics as dPt,propagation as mxl,ROOT_CONTEXT as oxl,SpanStatusCode as uPt,trace as uWi}from"@opentelemetry/api";import{logs as _Pt,SeverityNumber as zH}from"@opentelemetry/api-logs";import{OTLPLogExporter as lPt}from"@opentelemetry/exporter-logs-otlp-proto";import{PrometheusExporter as sxl}from"@opentelemetry/exporter-prometheus";import{OTLPTraceExporter as pxl}from"@opentelemetry/exporter-trace-otlp-proto";import{RuntimeNodeInstrumentation as irl}from"@opentelemetry/instrumentation-runtime-node";import{BatchLogRecordProcessor as tWi,LoggerProvider as nPt}from"@opentelemetry/sdk-logs";import{detectResources as trl,envDetector as url,hostDetector as lrl,osDetector as nrl,processDetector as frl,resourceFromAttributes as fPt}from"@opentelemetry/resources";import{PeriodicExportingMetricReader as crl}from"@opentelemetry/sdk-metrics";import{NodeSDK as $rl}from"@opentelemetry/sdk-node";import{BatchSpanProcessor as cPt,SamplingDecision as gA}from"@opentelemetry/sdk-trace-base";class hPt{inner;ratio;constructor(i,t){this.inner=i;this.ratio=t}onEmit(i,t){if(i.severityNumber!==void 0&&i.severityNumber>=zH.ERROR||Math.random()<this.ratio)this.inner.onEmit(i,t)}forceFlush(){return this.inner.forceFlush()}shutdown(){return this.inner.shutdown()}}class EPt{inner;maxBytes;constructor(i,t){this.inner=i;this.maxBytes=t}onEmit(i,t){let u=G0.OUTPUT,l=i.attributes?.[u];if(typeof l==="string"&&l.length>this.maxBytes){let n=dA(l,this.maxBytes);this.inner.onEmit({...i,attributes:{...i.attributes,[u]:n}},t)}else this.inner.onEmit(i,t)}forceFlush(){return this.inner.forceFlush()}shutdown(){return this.inner.shutdown()}}class vPt{inner;constructor(i){this.inner=i}shouldSample(i,t,u,l,n,f){let c=i.getValue(gPt);if(!c){if(this.inner)return this.inner.shouldSample(i,t,u,l,n,f);return{decision:gA.RECORD_AND_SAMPLED}}let $=iWi(c);if($)return{decision:gA.RECORD_AND_SAMPLED,attributes:{"trace.debug.id":$}};if(this.inner){let d=this.inner.shouldSample(i,t,u,l,n,f);if(d.decision===gA.RECORD_AND_SAMPLED){let _=crypto.randomUUID();d.attributes={...d.attributes??{},"trace.debug.id":_}}return d}return{decision:gA.NOT_RECORD}}toString(){return"DebugSampler"}}class wPt{ratio;constructor(i){this.ratio=i}shouldSample(){if(Math.random()<this.ratio)return{decision:gA.RECORD_AND_SAMPLED};return{decision:gA.NOT_RECORD}}toString(){return`RatioSampler(${this.ratio})`}}function xPt(){if($Pt)return;let i=jt(),t=!!process.env.OTEL_EXPORTER_OTLP_ENDPOINT,u=t?new pxl:void 0;WH=i.nodeEnv==="test"?null:new MGi({basePath:og()}),AH=i.nodeEnv==="test"?null:new VGi({basePath:fA()}),kH=i.nodeEnv==="test"?null:new qGi({basePath:a3()}),jH=kH?new crl({exporter:kH,exportIntervalMillis:60000}):null;let l=process.env.STUDIO_ENV??"production"??"unknown",n={};if(!process.env.OTEL_RESOURCE_ATTRIBUTES?.includes("deployment.environment"))n["deployment.environment"]=l;new $rl({serviceName:i.otelServiceName,resource:fPt(n),metricReaders:[lWi,...jH?[jH]:[]],sampler:grl,spanProcessors:[...u?[new cPt(u,{scheduledDelayMillis:60000,maxExportBatchSize:1000})]:[],...AH?[new cPt(AH,{scheduledDelayMillis:60000,maxExportBatchSize:1000})]:[]],instrumentations:[new irl]}).start(),Qn=dPt.getMeter("studio","1.0.0"),Gx=uWi.getTracer("studio","1.0.0");let c=trl({detectors:[url,lrl,nrl,frl]}).merge(fPt({"service.name":i.otelServiceName,...n})),$=[];if(t){let h=l==="prod"||l==="production"?1:0.1,E=process.env.INFRA_LOG_SAMPLE_RATIO,v=h;if(E!==void 0){let w=Number(E);if(Number.isFinite(w)&&w>=0&&w<=1)v=w;else console.warn(`[observability] Ignoring invalid INFRA_LOG_SAMPLE_RATIO="${E}" (expected 0..1); using ${h}`)}$.push(new hPt(new tWi(new lPt),v))}SH=new nPt({resource:c,processors:$}),_Pt.setGlobalLoggerProvider(SH),rPt=SH.getLogger("studio","1.0.0");let d=i.monitoringOtlpEndpoint??process.env.OTEL_EXPORTER_OTLP_ENDPOINT,_=[];if(d){let g=d.replace(/\/$/,""),h=g.endsWith("/v1/logs")?g:`${g}/v1/logs`;_.push(new EPt(new tWi(new lPt({url:h})),8000))}if(WH)_.push(new tWi(WH,{scheduledDelayMillis:60000,maxExportBatchSize:250}));eui=new nPt({resource:c,processors:_}),VYt(eui),KYt(),$Pt=!0}async function j6(){let t=(await Promise.allSettled([SH?SH.forceFlush():Promise.resolve(),(async()=>{if(eui)await eui.forceFlush();if(WH)await WH.forceFlush()})(),(async()=>{let u=uWi.getTracerProvider();if("forceFlush"in u)await u.forceFlush();if(AH)await AH.forceFlush()})(),(async()=>{if(jH)await jH.forceFlush();if(kH)await kH.forceFlush()})()])).find((u)=>u.status==="rejected");if(t)throw t.reason}function cWi(i,t,u){return Gx.startActiveSpan(i,{attributes:u},async(l)=>{try{let n=await t(l);return l.setStatus({code:uPt.OK}),n}catch(n){let f=n instanceof Error?n:Error(String(n??"unknown"));throw l.setStatus({code:uPt.ERROR,message:f.message}),l.recordException(f),n}finally{l.end()}})}var drl="__d",gPt,_rl=1,iWi=(i)=>{let u=new URL(i.url).searchParams.get(drl);if(u==="")return crypto.randomUUID();if(!u)u=i.headers.get("x-trace-debug-id");return u},iPt=(i,t)=>{try{i.set("x-trace-debug-id",t)}catch{}},lWi,grl,WH=null,AH=null,kH=null,jH=null,SH=null,eui=null,$Pt=!1,Gx,Qn,rPt,nWi=(i,t,u)=>{let l={},n=u,f=u[u.length-1];if(f!==null&&typeof f==="object"&&!Array.isArray(f)&&!(f instanceof Error)&&Object.getPrototypeOf(f)===Object.prototype)l=f,n=u.slice(0,-1);let c=n.map(($)=>{if($ instanceof Error)return`${$.name}: ${$.message}`;if(typeof $==="object")try{return JSON.stringify($)}catch{return"[Object]"}return String($)}).join(" ");rPt.emit({severityNumber:i,severityText:t,body:c,attributes:{"log.source":"console",...l}})},fWi,tPt=(i)=>{return mxl.extract(oxl,i.headers,{get:(u,l)=>u.get(l)??void 0,keys:(u)=>[...u.keys()]}).setValue(gPt,i)};var pf=x(()=>{HYt();RYt();eYt();MYt();J_();aGi();tn();mGi();pYt();gPt=axl("Current request");lWi=new sxl({preventServerStart:!0}),grl=new vPt(new wPt(_rl));Gx=uWi.getTracer("studio","1.0.0"),Qn=dPt.getMeter("studio","1.0.0"),rPt=_Pt.getLogger("studio","1.0.0"),fWi={error:console.error.bind(console),warn:console.warn.bind(console),debug:console.debug.bind(console)};console.error=(...i)=>{nWi(zH.ERROR,"ERROR",i),fWi.error(...i)};console.warn=(...i)=>{nWi(zH.WARN,"WARN",i),fWi.warn(...i)};console.debug=(...i)=>{nWi(zH.DEBUG,"DEBUG",i),fWi.debug(...i)}});function P8(){try{return process.memoryUsage()}catch{return null}}function OPt(){if($Wi)return;let i=performance.now()+dWi;$Wi=setInterval(()=>{let t=performance.now();DPt=Math.max(0,t-i),i=t+dWi},dWi),$Wi.unref?.()}function yPt(){return OPt(),DPt}function XPt(){if(OPt(),process.env.EVENT_LOOP_MONITOR!=="1")return()=>{};let i=Number(process.env.EVENT_LOOP_INTERVAL_MS??250),t=Number(process.env.EVENT_LOOP_SPIKE_MS??100),u=Qn.createHistogram("eventloop.delay",{description:"Event-loop lag measured as timer scheduling drift",unit:"ms"}),l=performance.now()+i;return Mui=setInterval(()=>{let n=performance.now(),f=Math.max(0,n-l);if(l=n+i,u.record(f),f>t){let c=P8();console.warn(JSON.stringify({msg:"event-loop-stall",ts:new Date().toISOString(),lagMs:Math.round(f),rss:c?.rss,heapUsed:c?.heapUsed,heapTotal:c?.heapTotal,external:c?.external}))}},i),Mui.unref?.(),()=>{if(Mui)clearInterval(Mui)}}var Mui,$Wi,DPt=0,dWi=500;var _Wi=x(()=>{pf()});var QPt={};Pi(QPt,{getDbDialect:()=>KH,getDb:()=>N0,getDatabaseUrl:()=>Ax,createDatabase:()=>IPt,closeDatabase:()=>kx});import{Kysely as hrl,PostgresDialect as UPt}from"kysely";import{Pool as FPt}from"pg";function xrl(i){let t=i.connect.bind(i);return i.connect=(u)=>{if(typeof u==="function")return t(u);let l=performance.now(),n=qui(),f=i.idleCount===0&&i.totalCount>=n,c=i.idleCount;return t().then(($)=>{let d=performance.now()-l;if(NPt().record(d,{"db.pool.outcome":f?"contended":"available"}),d>vrl)if(f)console.error("Slow db pool acquire \u2014 pool saturated:",{waitMs:d,total:i.totalCount,idle:i.idleCount,waiting:i.waitingCount,max:n});else console.warn("Slow db pool acquire \u2014 event-loop lag (not pool):",{waitMs:d,idleAtStart:c,total:i.totalCount,max:n});return $},($)=>{throw NPt().record(performance.now()-l,{"db.pool.outcome":"error"}),$})},i}function TPt(){try{return jt().databasePgSsl}catch{return!1}}function qui(){try{return jt().databasePoolMax}catch{return 10}}function rrl(i){let t=xrl(new FPt({connectionString:i,max:qui(),ssl:TPt(),...ZPt})),u=new UPt({pool:t});return{type:"postgres",db:new hrl({dialect:u,log:wrl(t)}),pool:t}}function Ax(){return jt().databaseUrl}function KH(i){let t=i||Ax();return new UPt({pool:new FPt({connectionString:t,max:qui(),ssl:TPt(),...ZPt})})}function IPt(i){let t=i||Ax();return rrl(t)}async function kx(i){if(await i.db.destroy(),!i.pool.ended)await i.pool.end();if(i===bH)bH=null}function N0(){if(!bH)bH=IPt(Ax());return bH}var Erl=()=>Qn.createHistogram("db.query.duration",{description:"Database query execution duration in milliseconds",unit:"ms"}),NPt=()=>Qn.createHistogram("db.pool.acquire.duration",{description:"Time spent waiting to acquire a connection from the pool",unit:"ms"}),JPt=400,vrl=100,wrl=(i)=>(t)=>{let u={"db.statement":t.query.sql,"db.status":t.level==="error"?"error":"success"};if(t.queryDurationMillis>JPt){let l=yPt(),n=l>JPt/2;console.error(n?"Slow query measurement \u2014 likely event-loop lag, not slow SQL:":"Slow query detected:",{durationMs:t.queryDurationMillis,eventLoopLagMs:Math.round(l),sql:t.query.sql,pool:{total:i.totalCount,idle:i.idleCount,waiting:i.waitingCount,max:qui()}})}if(Erl().record(t.queryDurationMillis,u),t.level==="error")console.error("Query failed:",{durationMs:t.queryDurationMillis,error:t.error,sql:t.query.sql})},ZPt,bH=null;var j$=x(()=>{tn();pf();_Wi();ZPt={keepAlive:!0,keepAliveInitialDelayMillis:1e4,idleTimeoutMillis:300000,connectionTimeoutMillis:30000,allowExitOnIdle:!0}});function YPt(i){let{port:t,query:u}=i,{protocol:l,path:n,hostname:f}=i;if(l&&l.slice(-1)!==":")l+=":";if(t)f+=`:${t}`;if(n&&n.charAt(0)!=="/")n=`/${n}`;let c=u?BPt.buildQueryString(u):"";if(c&&c[0]!=="?")c=`?${c}`;let $="";if(i.username!=null||i.password!=null){let _=i.username??"",g=i.password??"";$=`${_}:${g}@`}let d="";if(i.fragment)d=`#${i.fragment}`;return`${l}//${$}${f}${n}${c}${d}`}var BPt;var PPt=x(()=>{BPt=z(ko(),1)});var GPt="UNSIGNED-PAYLOAD",WPt="X-Amz-Content-Sha256";class Vui{signer;constructor(i){let t={service:i.signingName||i.service||"s3",uriEscapePath:i.uriEscapePath||!1,applyChecksum:i.applyChecksum||!1,...i};this.signer=new APt.SignatureV4MultiRegion(t)}presign(i,{unsignableHeaders:t=new Set,hoistableHeaders:u=new Set,unhoistableHeaders:l=new Set,...n}={}){return this.prepareRequest(i,{unsignableHeaders:t,unhoistableHeaders:l,hoistableHeaders:u}),this.signer.presign(i,{expiresIn:900,unsignableHeaders:t,unhoistableHeaders:l,...n})}presignWithCredentials(i,t,{unsignableHeaders:u=new Set,hoistableHeaders:l=new Set,unhoistableHeaders:n=new Set,...f}={}){return this.prepareRequest(i,{unsignableHeaders:u,unhoistableHeaders:n,hoistableHeaders:l}),this.signer.presignWithCredentials(i,t,{expiresIn:900,unsignableHeaders:u,unhoistableHeaders:n,...f})}prepareRequest(i,{unsignableHeaders:t=new Set,unhoistableHeaders:u=new Set,hoistableHeaders:l=new Set}={}){t.add("content-type"),Object.keys(i.headers).map(($)=>$.toLowerCase()).filter(($)=>$.startsWith("x-amz-server-side-encryption")).forEach(($)=>{if(!l.has($))u.add($)}),i.headers[WPt]=GPt;let n=i.headers.host,f=i.port,c=`${i.hostname}${i.port!=null?":"+f:""}`;if(!n||n===i.hostname&&i.port!=null)i.headers.host=c}}var APt;var gWi=x(()=>{APt=z(ZW(),1)});var kPt,jPt,aui=async(i,t,u={})=>{let l,n;if(typeof i.config.endpointProvider==="function"){let E=(await kPt.getEndpointFromInstructions(t.input,t.constructor,i.config)).properties?.authSchemes?.[0];if(E?.name==="sigv4a")n=E?.signingRegionSet?.join(",");else n=E?.signingRegion;l=new Vui({...i.config,signingName:E?.signingName,region:async()=>n})}else l=new Vui(i.config);let f=(h,E)=>async(v)=>{let{request:w}=v;if(!jPt.HttpRequest.isInstance(w))throw Error("Request to be presigned is not an valid HTTP request.");delete w.headers["amz-sdk-invocation-id"],delete w.headers["amz-sdk-request"],delete w.headers["x-amz-user-agent"];let r,O={...u,signingRegion:u.signingRegion??E.signing_region??n,signingService:u.signingService??E.signing_service};if(E.s3ExpressIdentity)r=await l.presignWithCredentials(w,E.s3ExpressIdentity,O);else r=await l.presign(w,O);return{response:{},output:{$metadata:{httpStatusCode:200},presigned:r}}},c="presignInterceptMiddleware",$=i.middlewareStack.clone();$.addRelativeTo(f,{name:c,relation:"before",toMiddleware:"awsAuthMiddleware",override:!0});let d=t.resolveMiddleware($,i.config,{}),{output:_}=await d({input:t.input}),{presigned:g}=_;return YPt(g)};var SPt=x(()=>{PPt();gWi();kPt=z(ft(),1),jPt=z(h1(),1)});var zPt=x(()=>{SPt();gWi()});import{extname as Drl}from"path";function QE(i){let t;try{t=decodeURIComponent(i)}catch{t=i}let l=t.replace(/\0/g,"").replace(/[\x00-\x1f\x7f]/g,"").replace(/\\/g,"/").split("/"),n=[];for(let f of l)if(f==="..")n.pop();else if(f!=="."&&f!=="")n.push(f);return n.join("/")}function jx(i,t){let u=QE(t);if(!u)throw Error("Key is empty after sanitization");return`${i}/${u}`}function bPt(i,t){if(!t)return`${i}/`;let u=QE(t);return`${i}/${u}${u.endsWith("/")?"":"/"}`}function hA(i,t,u){let l=u.split("/").map(encodeURIComponent).join("/");return`${i}/api/${encodeURIComponent(t)}/files/${l}`}function hWi(i,t){let u=`${i}/`;if(t.startsWith(u))return t.slice(u.length);return t}function Kc(i){let t=Drl(i).toLowerCase();return Orl[t]??"application/octet-stream"}function mui(i){let t=i.split(";")[0].trim();if(yrl.has(t))return!0;if(t.startsWith("text/"))return!0;return!1}var Orl,yrl;var BE=x(()=>{Orl={".json":"application/json",".html":"text/html",".htm":"text/html",".css":"text/css",".js":"application/javascript",".mjs":"application/javascript",".ts":"text/typescript",".txt":"text/plain",".md":"text/markdown",".csv":"text/csv",".xml":"application/xml",".svg":"image/svg+xml",".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".gif":"image/gif",".webp":"image/webp",".pdf":"application/pdf",".zip":"application/zip",".gz":"application/gzip",".tar":"application/x-tar",".wasm":"application/wasm",".yaml":"application/yaml",".yml":"application/yaml",".toml":"application/toml"};yrl=new Set(["application/json","text/html","text/css","application/javascript","text/typescript","text/plain","text/markdown","text/csv","application/xml","image/svg+xml","application/yaml","application/toml"])});class EWi{client;bucket;constructor(i){this.bucket=i.bucket,this.client=new zc({endpoint:i.endpoint,region:i.region,credentials:{accessKeyId:i.accessKeyId,secretAccessKey:i.secretAccessKey},forcePathStyle:i.forcePathStyle})}async getBytesOrPresign(i,t,u){let l=jx(i,t),n=await this.client.send(new ag({Bucket:this.bucket,Key:l})),f=n.ContentLength??0,c=n.ContentType??Kc(t);if(f>u.presignWhenLargerThan){let g=await aui(this.client,new V3({Bucket:this.bucket,Key:l}),{expiresIn:u.presignExpiresIn??3600});return{error:"FILE_TOO_LARGE",size:f,maxInlineSize:u.presignWhenLargerThan,presignedUrl:g,contentType:c}}let d=await(await this.client.send(new V3({Bucket:this.bucket,Key:l}))).Body.transformToByteArray(),_=mui(c);return{content:_?new TextDecoder().decode(d):Buffer.from(d).toString("base64"),contentType:c,encoding:_?"utf-8":"base64",size:f,lastModified:n.LastModified,etag:n.ETag}}async getBytes(i,t){let u=jx(i,t);return(await this.client.send(new V3({Bucket:this.bucket,Key:u}))).Body.transformToByteArray()}async put(i,t,u,l){let n=jx(i,t),f=l?.contentType??Kc(t);return{etag:(await this.client.send(new IE({Bucket:this.bucket,Key:n,Body:typeof u==="string"?Buffer.from(u,"utf-8"):u,ContentType:f}))).ETag,key:t}}async list(i,t){let u=bPt(i,t?.prefix),l=await this.client.send(new A6({Bucket:this.bucket,Prefix:u,MaxKeys:t?.maxKeys??1000,ContinuationToken:t?.continuationToken,Delimiter:t?.delimiter})),n=l.CommonPrefixes?.map((f)=>hWi(i,f.Prefix??"")).filter(Boolean);return{objects:(l.Contents??[]).map((f)=>({key:hWi(i,f.Key??""),size:f.Size??0,lastModified:f.LastModified,etag:f.ETag})),isTruncated:l.IsTruncated??!1,nextContinuationToken:l.NextContinuationToken,commonPrefixes:n&&n.length>0?n:void 0}}async delete(i,t){let u=jx(i,t);await this.client.send(new oW({Bucket:this.bucket,Key:u}))}async head(i,t){let u=jx(i,t),l=await this.client.send(new ag({Bucket:this.bucket,Key:u}));return{contentType:l.ContentType??Kc(t),size:l.ContentLength??0,lastModified:l.LastModified,etag:l.ETag}}async presignedGetUrl(i,t,u=3600,l){let n=jx(i,t);return aui(this.client,new V3({Bucket:this.bucket,Key:n}),{expiresIn:u})}async presignedPutUrl(i,t,u=3600,l){let n=jx(i,t);return aui(this.client,new IE({Bucket:this.bucket,Key:n,ContentType:l}),{expiresIn:u})}}var KPt=x(()=>{nA();zPt();BE()});function Xrl(){let i=jt();return!!(i.s3Endpoint&&i.s3Bucket&&i.s3AccessKeyId&&i.s3SecretAccessKey)}function F_(){if(HH!==void 0)return HH;if(!Xrl())return HH=null,null;let i=jt();return HH=new EWi({endpoint:i.s3Endpoint,bucket:i.s3Bucket,region:i.s3Region,accessKeyId:i.s3AccessKeyId,secretAccessKey:i.s3SecretAccessKey,forcePathStyle:i.s3ForcePathStyle}),HH}var HH;var G8=x(()=>{tn();KPt()});function sg(i,t){return{getBytesOrPresign:(u,l)=>i.getBytesOrPresign(t,u,l),getBytes:(u)=>i.getBytes(t,u),put:(u,l,n)=>i.put(t,u,l,n),list:(u)=>i.list(t,u),delete:(u)=>i.delete(t,u),head:(u)=>i.head(t,u),presignedGetUrl:(u,l,n)=>i.presignedGetUrl(t,u,l,n),presignedPutUrl:(u,l,n)=>i.presignedPutUrl(t,u,l,n)}}import{createHash as Nrl}from"crypto";function oui(i){let t=i;while(t?.[LH])t=t[LH];return t}function vA(i){let{objectStorage:t,baseUrl:u,orgSlug:l,prefix:n="connection-icons",maxBytes:f=Url,dryRun:c=!1}=i;return async($)=>{if(typeof $!=="string")return $;let d=$.match(Jrl);if(!d)return $;if(!t||!l)return $;let[,_,g]=d,h=_.toLowerCase(),E=Zrl[h];if(!E)return $;if(Math.floor(g.length*3/4)>f)return console.warn(`[asset-hoister] asset exceeds ${f} bytes, keeping inline`),$;let v=Buffer.from(g,"base64"),w=Nrl("sha256").update(v).digest("hex"),r=`${n}/${w}.${E}`;if(c)return hA(u,l,r);try{return await t.put(r,v,{contentType:h}),hA(u,l,r)}catch(O){return console.error("[asset-hoister] upload failed, keeping inline asset:",O),$}}}async function EA(i,t,u=0){if(u>Frl)return i;if(typeof i==="string")return await t(i)??i;if(Array.isArray(i)){let l=await Promise.all(i.map((n)=>EA(n,t,u+1)));return l.some((n,f)=>n!==i[f])?l:i}if(i!==null&&typeof i==="object"){let l=Object.entries(i),n=await Promise.all(l.map(([,$])=>EA($,t,u+1))),f=!1,c={};return l.forEach(([$,d],_)=>{if(c[$]=n[_],n[_]!==d)f=!0}),f?c:i}return i}function pui(i,t){return EA(i,t)}async function sui(i,t){let u={...i};if(typeof u.icon==="string")u.icon=await t(u.icon);if(u.metadata!==null&&typeof u.metadata==="object")u.metadata=await EA(u.metadata,t);return u}function Trl(i,t){return new Proxy(i,{get(u,l,n){if(l===LH)return u;if(l==="create")return async(c)=>u.create(await sui(c,t));if(l==="update")return async(c,$)=>u.update(c,await sui($,t));let f=Reflect.get(u,l,n);return typeof f==="function"?f.bind(u):f}})}function Irl(i,t){return new Proxy(i,{get(u,l,n){if(l===LH)return u;if(l==="create")return async(c,$,d,_)=>u.create(c,$,await sui(d,t),_);if(l==="update")return async(c,$,d)=>u.update(c,$,await sui(d,t));let f=Reflect.get(u,l,n);return typeof f==="function"?f.bind(u):f}})}async function Qrl(i,t){let u=await EA(i.parts,t),l=await EA(i.metadata,t);if(u===i.parts&&l===i.metadata)return i;return{...i,parts:u,metadata:l}}function Brl(i,t){return new Proxy(i,{get(u,l,n){if(l===LH)return u;if(l==="saveMessages")return async(c)=>{let $=await Promise.all(c.map((d)=>Qrl(d,t)));return u.saveMessages($)};let f=Reflect.get(u,l,n);return typeof f==="function"?f.bind(u):f}})}function Yrl(i,t){return Brl(oui(i),vA({...t,prefix:"thread-assets"}))}function wWi(i,t){let u=vA(t);if(vWi(i.connections))i.connections=Trl(oui(i.connections),u);if(vWi(i.virtualMcps))i.virtualMcps=Irl(oui(i.virtualMcps),u);if(vWi(i.threads))i.threads=Yrl(oui(i.threads),t)}function vWi(i){return i!==null&&typeof i==="object"}var Jrl,Url=5242880,Frl=64,LH,Zrl;var ili=x(()=>{BE();Jrl=/^data:((?:image|audio|video)\/[^;,]+)(?:;[^,]+)?;base64,(.+)$/is,LH=Symbol("assetHoistingTarget"),Zrl={"image/png":"png","image/jpeg":"jpg","image/gif":"gif","image/webp":"webp","image/x-icon":"ico","image/vnd.microsoft.icon":"ico","audio/mpeg":"mp3","audio/mp4":"m4a","audio/wav":"wav","audio/x-wav":"wav","audio/ogg":"ogg","audio/webm":"weba","audio/aac":"aac","video/mp4":"mp4","video/webm":"webm","video/ogg":"ogv","video/quicktime":"mov"}});function Hc(){let i=jt();if(i.baseUrl)return i.baseUrl;return`http://localhost:${i.port??3000}`}function tli(){return`http://localhost:${jt().port??3000}`}function YE(){return process.env.MESH_PUBLIC_URL??Hc()}var Jd=x(()=>{tn()});var HPt={};Pi(HPt,{backfillThreadAssetsCommand:()=>Prl});import{sql as xWi}from"kysely";async function Prl(i){let{dryRun:t,batch:u}=i,l=i.baseUrl??Hc(),n=F_();if(!n)return console.error("[backfill-assets] Object storage (S3) is not configured \u2014 cannot hoist "+"inline media. Set S3_ENDPOINT/S3_BUCKET/S3_ACCESS_KEY_ID/S3_SECRET_ACCESS_KEY and retry."),1;if(/^https?:\/\/localhost(:|\/|$)/.test(l))console.warn(`[backfill-assets] base URL resolves to "${l}" \u2014 set BASE_URL `+"(or pass --base-url) to the public origin, or stored media URLs will be wrong.");let f=N0(),{db:c}=f,$;if(i.org){let r=await c.selectFrom("organization").select(["id","slug"]).where((O)=>O.or([O("id","=",i.org),O("slug","=",i.org)])).executeTakeFirst();if(!r)return console.error(`[backfill-assets] org "${i.org}" not found (slug or id).`),await kx(f).catch(()=>{}),1;$=r.id,console.log(`[backfill-assets] scoped to org ${r.slug??r.id} (${r.id})`)}console.log(`[backfill-assets] starting${t?" (dry-run)":""} \u2014 target=${i.target} baseUrl=${l} batch=${u}${i.limit?` limit=${i.limit}`:""}`);let d=new Map,_=(r,O,y)=>{let X=`${y}\x00${r}`,N=d.get(X);if(N)return N;let U=vA({objectStorage:sg(n,r),baseUrl:l,orgSlug:O??void 0,prefix:y,dryRun:t});return d.set(X,U),U},g=async(r,O,y,X)=>{let N="";for(;;){let U=i.limit?i.limit-y.scanned:1/0;if(U<=0)break;let J=await r(N,Math.min(u,U));if(J.length===0)break;for(let Z of J)N=Z.id,y.scanned++,await O(Z);console.log(`[backfill-assets] ${X}: scanned=${y.scanned} ${t?"would-change":"changed"}=${y.changed} errors=${y.errors} cursor=${N}`)}},h={scanned:0,changed:0,errors:0},E={scanned:0,changed:0,errors:0},v={scanned:0,changed:0,errors:0};try{if(i.target==="all"||i.target==="threads")await g((r,O)=>c.selectFrom("thread_messages as tm").innerJoin("threads as t","t.id","tm.thread_id").innerJoin("organization as o","o.id","t.organization_id").select(["tm.id as id",xWi`tm.parts`.as("parts"),xWi`tm.metadata`.as("metadata"),"t.organization_id as orgId","o.slug as orgSlug"]).where("tm.id",">",r).$if(!!$,(y)=>y.where("t.organization_id","=",$)).orderBy("tm.id","asc").limit(O).execute(),async(r)=>{try{if(!RH(r.parts)&&!RH(r.metadata))return;let O=_(r.orgId,r.orgSlug,"thread-assets"),y=JSON.parse(r.parts),X=await pui(y,O),N=X!==y,U=r.metadata!==null?JSON.parse(r.metadata):null,J=await pui(U,O),Z=J!==U;if(!N&&!Z)return;if(h.changed++,t)return;await c.updateTable("thread_messages").set({parts:N?JSON.stringify(X):r.parts,metadata:Z?JSON.stringify(J):r.metadata}).where("id","=",r.id).execute()}catch(O){h.errors++,console.error(`[backfill-assets] thread_message ${r.id} failed, skipping:`,O)}},h,"threads");if(i.target==="all"||i.target==="connections")await g((r,O)=>c.selectFrom("connections as c").innerJoin("organization as o","o.id","c.organization_id").select(["c.id as id","c.icon as icon",xWi`c.metadata`.as("metadata"),"c.organization_id as orgId","o.slug as orgSlug"]).where("c.id",">",r).$if(!!$,(y)=>y.where("c.organization_id","=",$)).orderBy("c.id","asc").limit(O).execute(),async(r)=>{try{if(!RH(r.icon)&&!RH(r.metadata))return;let O=_(r.orgId,r.orgSlug,"connection-icons"),y=r.icon!==null?await O(r.icon):r.icon,X=y!==r.icon,N=r.metadata!==null?JSON.parse(r.metadata):null,U=await pui(N,O),J=U!==N;if(!X&&!J)return;if(E.changed++,t)return;await c.updateTable("connections").set({icon:X?y??null:r.icon,metadata:J?JSON.stringify(U):r.metadata}).where("id","=",r.id).execute()}catch(O){E.errors++,console.error(`[backfill-assets] connection ${r.id} failed, skipping:`,O)}},E,"connections");if(i.target==="all"||i.target==="organizations")await g((r,O)=>c.selectFrom("organization as o").select(["o.id as id","o.logo as logo","o.slug as orgSlug"]).where("o.id",">",r).$if(!!$,(y)=>y.where("o.id","=",$)).orderBy("o.id","asc").limit(O).execute(),async(r)=>{try{if(!RH(r.logo))return;let y=await _(r.id,r.orgSlug,"org-logos")(r.logo);if(y===r.logo)return;if(v.changed++,t)return;await c.updateTable("organization").set({logo:y??null}).where("id","=",r.id).execute()}catch(O){v.errors++,console.error(`[backfill-assets] organization ${r.id} failed, skipping:`,O)}},v,"organizations")}finally{await kx(f).catch(()=>{})}let w=t?"would-change":"changed";return console.log("[backfill-assets] done \u2014 "+`threads(scanned=${h.scanned} ${w}=${h.changed} errors=${h.errors}) connections(scanned=${E.scanned} ${w}=${E.changed} errors=${E.errors}) organizations(scanned=${v.scanned} ${w}=${v.changed} errors=${v.errors})`),h.errors+E.errors+v.errors>0?1:0}var RH=(i)=>i!==null&&(i.includes("data:image/")||i.includes("data:audio/")||i.includes("data:video/"));var LPt=x(()=>{j$();G8();ili();Jd()});async function RPt(i){let t,u,l=new Promise((c,$)=>{t=c,u=$});l.catch(()=>{});let n=!1,f=Bun.serve({port:i.port??0,hostname:"127.0.0.1",fetch(c){if(n)return new Response("",{status:204});let $=new URL(c.url),d=$.searchParams.get("code");if($.searchParams.get("state")!==i.expectedState)return n=!0,u(Error("OAuth state mismatch")),new Response("State mismatch \u2014 close this tab.",{status:400});if(!d)return n=!0,u(Error("OAuth callback missing code")),new Response("Missing code \u2014 close this tab.",{status:400});return n=!0,t({code:d}),new Response(null,{status:302,headers:{location:i.successRedirectUrl}})}});return{url:`http://127.0.0.1:${f.port}`,waitForCallback:()=>l,close:()=>f.stop(!0)}}import{createHash as Grl,randomBytes as Wrl}from"crypto";function ePt(){let i=CPt(Wrl(32)),t=CPt(Grl("sha256").update(i).digest());return{verifier:i,challenge:t}}function CPt(i){return i.toString("base64").replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}var MPt=()=>{};import{chmod as Arl,mkdir as krl,readdir as jrl,readFile as Srl,rename as zrl,rm as qPt,writeFile as brl}from"fs/promises";import{dirname as Krl,join as DWi}from"path";function uli(i,t){if(!t)return DWi(i,"session.json");return DWi(i,`session.${Hrl(t)}.json`)}function Hrl(i){let t=i;try{t=new URL(i).host}catch{}return t.replace(/[^a-zA-Z0-9.-]/g,"_")||"default"}async function rWi(i){try{let t=await Srl(i,"utf8"),u=JSON.parse(t);if(!Lrl(u))return null;return u}catch{return null}}async function VPt(i){try{return(await jrl(i)).filter((u)=>/^session(\..+)?\.json$/.test(u)).map((u)=>DWi(i,u))}catch{return[]}}async function lli(i,t){let u=await rWi(uli(i,t));if(u)return u;if(t)return rWi(uli(i));for(let l of await VPt(i)){let n=await rWi(l);if(n)return n}return null}async function wA(i,t){let u=uli(i,t.target);await krl(Krl(u),{recursive:!0});let l=`${u}.tmp`;await brl(l,JSON.stringify(t,null,2),{mode:384}),await Arl(l,384),await zrl(l,u)}async function aPt(i,t){if(t){await qPt(uli(i,t),{force:!0});return}for(let u of await VPt(i))await qPt(u,{force:!0})}function Lrl(i){if(!i||typeof i!=="object")return!1;let t=i;if(typeof t.target!=="string"||typeof t.clientId!=="string"||typeof t.accessToken!=="string"||typeof t.createdAt!=="string")return!1;if(!t.user||typeof t.user!=="object")return!1;if(typeof t.user.sub!=="string")return!1;return!0}var CH=()=>{};var mPt={};Pi(mPt,{performInteractiveLogin:()=>nli,loginCommand:()=>qrl});import{spawn as Rrl}from"child_process";import{randomUUID as Crl}from"crypto";async function nli(i={}){let t=(i.target??erl).replace(/\/$/,""),u=i.fetch??fetch,l=i.openBrowser??orl,n=Crl(),f=ePt(),c=await RPt({expectedState:n,successRedirectUrl:`${t}/cli/auth-success`});try{let $=`${c.url}/`,d=await Vrl(u,t,$),_=new URLSearchParams({client_id:d,redirect_uri:$,response_type:"code",state:n,scope:Mrl,code_challenge:f.challenge,code_challenge_method:"S256"}),g=`${t}/login?${_.toString()}`;console.log(`Opening ${g} in your browser...`),await l(g);let{code:h}=await c.waitForCallback(),E=await arl(u,t,d,h,$,f.verifier);if(!E.id_token)throw Error("Token endpoint returned no id_token");let v=mrl(E.id_token);return{target:t,clientId:d,user:{sub:v.sub,email:v.email,name:v.name},accessToken:E.access_token,refreshToken:E.refresh_token,expiresAt:E.expires_in?Math.floor(Date.now()/1000)+E.expires_in:void 0,createdAt:new Date().toISOString()}}finally{c.close()}}async function qrl(i){try{let t=await nli({target:i.target,openBrowser:i.openBrowser,fetch:i.fetch});return await wA(i.dataDir,t),console.log(`Logged in as ${t.user.email??t.user.sub}.`),0}catch(t){return console.error(`Login failed: ${t instanceof Error?t.message:String(t)}`),1}}async function Vrl(i,t,u){let l=await i(`${t}/api/auth/mcp/register`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({client_name:"decocms-cli",redirect_uris:[u],grant_types:["authorization_code","refresh_token"],response_types:["code"],token_endpoint_auth_method:"none",application_type:"native"})});if(!l.ok)throw Error(`Client registration failed: HTTP ${l.status} ${await l.text().catch(()=>"")}`);let n=await l.json();if(typeof n?.client_id!=="string")throw Error("Client registration returned no client_id");return n.client_id}async function arl(i,t,u,l,n,f){let c=new URLSearchParams({grant_type:"authorization_code",code:l,redirect_uri:n,client_id:u,code_verifier:f}),$=await i(`${t}/api/auth/mcp/token`,{method:"POST",headers:{"content-type":"application/x-www-form-urlencoded"},body:c.toString()});if(!$.ok)throw Error(`Token exchange failed: HTTP ${$.status} ${await $.text().catch(()=>"")}`);let d=await $.json();if(typeof d?.access_token!=="string")throw Error("Token endpoint returned no access_token");return d}function mrl(i){let t=i.split(".");if(t.length!==3||!t[1])throw Error("id_token is not a valid JWT");let u=JSON.parse(Buffer.from(t[1],"base64url").toString("utf8"));if(typeof u.sub!=="string")throw Error("id_token has no sub claim");return{sub:u.sub,email:typeof u.email==="string"?u.email:void 0,name:typeof u.name==="string"?u.name:void 0}}async function orl(i){let t,u;switch(process.platform){case"darwin":t="open",u=[i];break;case"win32":t="cmd",u=["/c","start","",i];break;default:t="xdg-open",u=[i];break}await new Promise((l)=>{let n=Rrl(t,u,{stdio:"ignore",detached:!0});n.on("error",()=>{console.log(`Could not open browser automatically. Please open this URL manually:
|
|
146
|
+
`;await Axl(c,d,{mode:384}),await Wxl(c,$)}}var Rui=()=>{};import{ExportResultCode as kxl}from"@opentelemetry/core";class MGi{inner;constructor(i){this.inner=new Y8({...i,partitionKey:(t)=>t.organization_id})}export(i,t){let u=[];for(let l of i){if(!jxl.has(l.attributes[G0.TYPE]))continue;let n={};for(let[d,_]of Object.entries(l.attributes))if(typeof _==="string"||typeof _==="number"||typeof _==="boolean")n[d]=_;let f=l.spanContext?.spanId??crypto.randomUUID(),c=l.hrTime,$=BigInt(c[0])*1000000000n+BigInt(c[1]);u.push(LYt({id:f,timestampNano:$,attributes:n}))}this.inner.exportRows(u).then((l)=>t(l)).catch(()=>t({code:kxl.FAILED}))}async shutdown(){await this.inner.shutdown()}async forceFlush(){await this.inner.forceFlush()}}var jxl;var RYt=x(()=>{J_();Rui();jxl=new Set([PH,cA])});import{ExportResultCode as Sxl}from"@opentelemetry/core";import{AggregationTemporality as zxl,DataPointType as CYt}from"@opentelemetry/sdk-metrics";class qGi{inner;constructor(i){this.inner=new Y8({...i,partitionKey:(t)=>t.organization_id})}selectAggregationTemporality(i){return zxl.DELTA}export(i,t){let u=[];for(let l of i.scopeMetrics)for(let n of l.metrics){let{descriptor:f,dataPointType:c}=n;if(c===CYt.SUM)for(let $ of n.dataPoints){let d=$.attributes;u.push({v:1,name:f.name,type:"sum",unit:f.unit,timestamp:$A($.endTime),organization_id:String(d["organization.id"]??""),connection_id:String(d["connection.id"]??""),tool_name:String(d["tool.name"]??""),status:String(d.status??""),error_type:String(d["error.type"]??""),value:$.value,hist_count:0,hist_sum:0,hist_min:0,hist_max:0,hist_boundaries:"[]",hist_bucket_counts:"[]"})}else if(c===CYt.HISTOGRAM)for(let $ of n.dataPoints){let{attributes:d,value:_}=$;u.push({v:1,name:f.name,type:"histogram",unit:f.unit,timestamp:$A($.endTime),organization_id:String(d["organization.id"]??""),connection_id:String(d["connection.id"]??""),tool_name:String(d["tool.name"]??""),status:String(d.status??""),error_type:String(d["error.type"]??""),value:_.count,hist_count:_.count,hist_sum:_.sum??0,hist_min:_.min??0,hist_max:_.max??0,hist_boundaries:JSON.stringify(_.buckets.boundaries),hist_bucket_counts:JSON.stringify(_.buckets.counts)})}}this.inner.exportRows(u).then((l)=>t(l)).catch(()=>t({code:Sxl.FAILED}))}async shutdown(){await this.inner.shutdown()}async forceFlush(){await this.inner.forceFlush()}}var eYt=x(()=>{J_();Rui()});import{ExportResultCode as bxl}from"@opentelemetry/core";function Kxl(i){let t=i.resource,u=t.attributes["service.name"]??"unknown";return{v:1,trace_id:i.spanContext().traceId,span_id:i.spanContext().spanId,parent_span_id:i.parentSpanContext?.spanId||null,name:i.name,kind:i.kind,status:i.status.code,status_message:i.status.message||null,start_time:$A(i.startTime),end_time:$A(i.endTime),duration_ms:Kui(i.endTime)-Kui(i.startTime),service_name:u,attributes:JSON.stringify(i.attributes),events:JSON.stringify(i.events),links:JSON.stringify(i.links),resource:JSON.stringify(t.attributes)}}class VGi{inner;constructor(i){this.inner=new Y8(i)}export(i,t){let u=i.map(Kxl);this.inner.exportRows(u).then((l)=>t(l)).catch(()=>t({code:bxl.FAILED}))}async shutdown(){await this.inner.shutdown()}async forceFlush(){await this.inner.forceFlush()}}var MYt=x(()=>{J_();Rui()});function dA(i,t=65536){if(i.length<=t&&Buffer.byteLength(i,"utf8")<=t)return i;let u=t-Hxl;if(u<=0)return"... [TRUNCATED]".slice(0,t);let l=0,n=0;for(let f of i){let c=f.charCodeAt(0)<=127?1:Buffer.byteLength(f,"utf8");if(l+c>u)break;l+=c,n+=f.length}return i.slice(0,n)+"... [TRUNCATED]"}var Hxl;var aGi=x(()=>{Hxl=Buffer.byteLength("... [TRUNCATED]","utf8")});import{NOOP_LOGGER as Lxl}from"@opentelemetry/api-logs";function VYt(i){qYt=i.getLogger(Rxl,Cxl)}function aYt(){return qYt}var Rxl="studio.monitoring",Cxl="1.0.0",qYt;var mGi=x(()=>{qYt=Lxl});var sYt={};Pi(sYt,{shouldSkipStudioContext:()=>oGi,isServerPath:()=>Mxl,isHealthPath:()=>GH,SYSTEM_PATHS:()=>U_});function GH(i){return i===U_.HEALTH||i===U_.HEALTH_LIVE||i===U_.HEALTH_READY}function mYt(i){return i===U_.HEALTH||i===U_.HEALTH_LIVE||i===U_.HEALTH_READY||i===U_.METRICS||i.startsWith(_A.WELL_KNOWN)}function oYt(i){return i.startsWith(_A.API)}function Mxl(i){return oYt(i)||i==="/mcp"||i.startsWith(_A.MCP)||i.startsWith(_A.OAUTH_PROXY)||i.startsWith(_A.ORG)||mYt(i)}function oGi(i){return i==="/"||i.startsWith(_A.API_AUTH)||i==="/api/trigger-callback"||mYt(i)||!oYt(i)&&exl.test(i)}var U_,_A,exl;var Cui=x(()=>{U_={HEALTH:"/health",HEALTH_LIVE:"/health/live",HEALTH_READY:"/health/ready",METRICS:"/metrics"},_A={API:"/api/",API_AUTH:"/api/auth/",MCP:"/mcp/",OAUTH_PROXY:"/oauth-proxy/",WELL_KNOWN:"/.well-known",ORG:"/org/"},exl=/\.(html|css|js|ico|svg|png|jpg|jpeg|gif|webp|woff|woff2)$/});import{SpanStatusCode as sGi}from"@opentelemetry/api";var qxl,Vxl=()=>qxl??=Qn.createHistogram("http.server.request.duration",{description:"Duration of inbound HTTP requests handled by the API.",unit:"s",advice:{explicitBucketBoundaries:[0.005,0.01,0.025,0.05,0.075,0.1,0.25,0.5,0.75,1,2.5,5,7.5,10]}}),pGi=async(i,t)=>{if(GH(i.req.path))return t();let u=i.req.raw,l=new URL(u.url),n=performance.now(),f=tPt(u),c=iWi(u),$={"http.request.url":u.url,"http.request.method":u.method,"http.request.body.size":u.headers.get("content-length")??void 0,"url.scheme":l.protocol.replace(":",""),"server.address":l.host,"url.query":l.search||void 0,"url.path":l.pathname,"user_agent.original":u.headers.get("user-agent")??void 0,"request.internal":u.headers.has("traceparent"),...c?{"trace.debug.id":c}:{}};await Gx.startActiveSpan(`${u.method} ${l.pathname}`,{attributes:$},f,async(d)=>{i.set("rootSpan",d);try{await t()}catch(_){d.recordException(_),d.setStatus({code:sGi.ERROR});let g=typeof _==="object"&&_&&"message"in _?String(_.message):JSON.stringify(_);throw console.error("error: ",g,$),_}finally{let _=i.res?.status??500,g=_>=500;d.setStatus({code:g?sGi.ERROR:sGi.OK}),d.setAttribute("http.response.status_code",_);let h=i.get("meshContext");if(h){if(h.auth.user?.id)d.setAttribute("studio.user.id",h.auth.user.id);if(h.auth.apiKey?.id)d.setAttribute("studio.api_key.id",h.auth.apiKey.id);if(h.organization?.id)d.setAttribute("studio.organization.id",h.organization.id)}if(c)iPt(i.res.headers,c);Vxl().record((performance.now()-n)/1000,{"http.request.method":u.method,"http.route":i.req.routePath,"http.response.status_code":_}),d.end()}})};var pYt=x(()=>{pf();Cui()});import{createContextKey as axl,metrics as dPt,propagation as mxl,ROOT_CONTEXT as oxl,SpanStatusCode as uPt,trace as uWi}from"@opentelemetry/api";import{logs as _Pt,SeverityNumber as zH}from"@opentelemetry/api-logs";import{OTLPLogExporter as lPt}from"@opentelemetry/exporter-logs-otlp-proto";import{PrometheusExporter as sxl}from"@opentelemetry/exporter-prometheus";import{OTLPTraceExporter as pxl}from"@opentelemetry/exporter-trace-otlp-proto";import{RuntimeNodeInstrumentation as irl}from"@opentelemetry/instrumentation-runtime-node";import{BatchLogRecordProcessor as tWi,LoggerProvider as nPt}from"@opentelemetry/sdk-logs";import{detectResources as trl,envDetector as url,hostDetector as lrl,osDetector as nrl,processDetector as frl,resourceFromAttributes as fPt}from"@opentelemetry/resources";import{PeriodicExportingMetricReader as crl}from"@opentelemetry/sdk-metrics";import{NodeSDK as $rl}from"@opentelemetry/sdk-node";import{BatchSpanProcessor as cPt,SamplingDecision as gA}from"@opentelemetry/sdk-trace-base";class hPt{inner;ratio;constructor(i,t){this.inner=i;this.ratio=t}onEmit(i,t){if(i.severityNumber!==void 0&&i.severityNumber>=zH.ERROR||Math.random()<this.ratio)this.inner.onEmit(i,t)}forceFlush(){return this.inner.forceFlush()}shutdown(){return this.inner.shutdown()}}class EPt{inner;maxBytes;constructor(i,t){this.inner=i;this.maxBytes=t}onEmit(i,t){let u=G0.OUTPUT,l=i.attributes?.[u];if(typeof l==="string"&&l.length>this.maxBytes){let n=dA(l,this.maxBytes);this.inner.onEmit({...i,attributes:{...i.attributes,[u]:n}},t)}else this.inner.onEmit(i,t)}forceFlush(){return this.inner.forceFlush()}shutdown(){return this.inner.shutdown()}}class vPt{inner;constructor(i){this.inner=i}shouldSample(i,t,u,l,n,f){let c=i.getValue(gPt);if(!c){if(this.inner)return this.inner.shouldSample(i,t,u,l,n,f);return{decision:gA.RECORD_AND_SAMPLED}}let $=iWi(c);if($)return{decision:gA.RECORD_AND_SAMPLED,attributes:{"trace.debug.id":$}};if(this.inner){let d=this.inner.shouldSample(i,t,u,l,n,f);if(d.decision===gA.RECORD_AND_SAMPLED){let _=crypto.randomUUID();d.attributes={...d.attributes??{},"trace.debug.id":_}}return d}return{decision:gA.NOT_RECORD}}toString(){return"DebugSampler"}}class wPt{ratio;constructor(i){this.ratio=i}shouldSample(){if(Math.random()<this.ratio)return{decision:gA.RECORD_AND_SAMPLED};return{decision:gA.NOT_RECORD}}toString(){return`RatioSampler(${this.ratio})`}}function xPt(){if($Pt)return;let i=jt(),t=!!process.env.OTEL_EXPORTER_OTLP_ENDPOINT,u=t?new pxl:void 0;WH=i.nodeEnv==="test"?null:new MGi({basePath:og()}),AH=i.nodeEnv==="test"?null:new VGi({basePath:fA()}),kH=i.nodeEnv==="test"?null:new qGi({basePath:a3()}),jH=kH?new crl({exporter:kH,exportIntervalMillis:60000}):null;let l=process.env.STUDIO_ENV??"production"??"unknown",n={};if(!process.env.OTEL_RESOURCE_ATTRIBUTES?.includes("deployment.environment"))n["deployment.environment"]=l;new $rl({serviceName:i.otelServiceName,resource:fPt(n),metricReaders:[lWi,...jH?[jH]:[]],sampler:grl,spanProcessors:[...u?[new cPt(u,{scheduledDelayMillis:60000,maxExportBatchSize:1000})]:[],...AH?[new cPt(AH,{scheduledDelayMillis:60000,maxExportBatchSize:1000})]:[]],instrumentations:[new irl]}).start(),Qn=dPt.getMeter("studio","1.0.0"),Gx=uWi.getTracer("studio","1.0.0");let c=trl({detectors:[url,lrl,nrl,frl]}).merge(fPt({"service.name":i.otelServiceName,...n})),$=[];if(t){let h=l==="prod"||l==="production"?1:0.1,E=process.env.INFRA_LOG_SAMPLE_RATIO,v=h;if(E!==void 0){let w=Number(E);if(Number.isFinite(w)&&w>=0&&w<=1)v=w;else console.warn(`[observability] Ignoring invalid INFRA_LOG_SAMPLE_RATIO="${E}" (expected 0..1); using ${h}`)}$.push(new hPt(new tWi(new lPt),v))}SH=new nPt({resource:c,processors:$}),_Pt.setGlobalLoggerProvider(SH),rPt=SH.getLogger("studio","1.0.0");let d=i.monitoringOtlpEndpoint??process.env.OTEL_EXPORTER_OTLP_ENDPOINT,_=[];if(d){let g=d.replace(/\/$/,""),h=g.endsWith("/v1/logs")?g:`${g}/v1/logs`;_.push(new EPt(new tWi(new lPt({url:h})),8000))}if(WH)_.push(new tWi(WH,{scheduledDelayMillis:60000,maxExportBatchSize:250}));eui=new nPt({resource:c,processors:_}),VYt(eui),KYt(),$Pt=!0}async function j6(){let t=(await Promise.allSettled([SH?SH.forceFlush():Promise.resolve(),(async()=>{if(eui)await eui.forceFlush();if(WH)await WH.forceFlush()})(),(async()=>{let u=uWi.getTracerProvider();if("forceFlush"in u)await u.forceFlush();if(AH)await AH.forceFlush()})(),(async()=>{if(jH)await jH.forceFlush();if(kH)await kH.forceFlush()})()])).find((u)=>u.status==="rejected");if(t)throw t.reason}function cWi(i,t,u){return Gx.startActiveSpan(i,{attributes:u},async(l)=>{try{let n=await t(l);return l.setStatus({code:uPt.OK}),n}catch(n){let f=n instanceof Error?n:Error(String(n??"unknown"));throw l.setStatus({code:uPt.ERROR,message:f.message}),l.recordException(f),n}finally{l.end()}})}var drl="__d",gPt,_rl=1,iWi=(i)=>{let u=new URL(i.url).searchParams.get(drl);if(u==="")return crypto.randomUUID();if(!u)u=i.headers.get("x-trace-debug-id");return u},iPt=(i,t)=>{try{i.set("x-trace-debug-id",t)}catch{}},lWi,grl,WH=null,AH=null,kH=null,jH=null,SH=null,eui=null,$Pt=!1,Gx,Qn,rPt,nWi=(i,t,u)=>{let l={},n=u,f=u[u.length-1];if(f!==null&&typeof f==="object"&&!Array.isArray(f)&&!(f instanceof Error)&&Object.getPrototypeOf(f)===Object.prototype)l=f,n=u.slice(0,-1);let c=n.map(($)=>{if($ instanceof Error)return`${$.name}: ${$.message}`;if(typeof $==="object")try{return JSON.stringify($)}catch{return"[Object]"}return String($)}).join(" ");rPt.emit({severityNumber:i,severityText:t,body:c,attributes:{"log.source":"console",...l}})},fWi,tPt=(i)=>{return mxl.extract(oxl,i.headers,{get:(u,l)=>u.get(l)??void 0,keys:(u)=>[...u.keys()]}).setValue(gPt,i)};var pf=x(()=>{HYt();RYt();eYt();MYt();J_();aGi();tn();mGi();pYt();gPt=axl("Current request");lWi=new sxl({preventServerStart:!0}),grl=new vPt(new wPt(_rl));Gx=uWi.getTracer("studio","1.0.0"),Qn=dPt.getMeter("studio","1.0.0"),rPt=_Pt.getLogger("studio","1.0.0"),fWi={error:console.error.bind(console),warn:console.warn.bind(console),debug:console.debug.bind(console)};console.error=(...i)=>{nWi(zH.ERROR,"ERROR",i),fWi.error(...i)};console.warn=(...i)=>{nWi(zH.WARN,"WARN",i),fWi.warn(...i)};console.debug=(...i)=>{nWi(zH.DEBUG,"DEBUG",i),fWi.debug(...i)}});function P8(){try{return process.memoryUsage()}catch{return null}}function OPt(){if($Wi)return;let i=performance.now()+dWi;$Wi=setInterval(()=>{let t=performance.now();DPt=Math.max(0,t-i),i=t+dWi},dWi),$Wi.unref?.()}function yPt(){return OPt(),DPt}function XPt(){if(OPt(),process.env.EVENT_LOOP_MONITOR!=="1")return()=>{};let i=Number(process.env.EVENT_LOOP_INTERVAL_MS??250),t=Number(process.env.EVENT_LOOP_SPIKE_MS??100),u=Qn.createHistogram("eventloop.delay",{description:"Event-loop lag measured as timer scheduling drift",unit:"ms"}),l=performance.now()+i;return Mui=setInterval(()=>{let n=performance.now(),f=Math.max(0,n-l);if(l=n+i,u.record(f),f>t){let c=P8();console.warn(JSON.stringify({msg:"event-loop-stall",ts:new Date().toISOString(),lagMs:Math.round(f),rss:c?.rss,heapUsed:c?.heapUsed,heapTotal:c?.heapTotal,external:c?.external}))}},i),Mui.unref?.(),()=>{if(Mui)clearInterval(Mui)}}var Mui,$Wi,DPt=0,dWi=500;var _Wi=x(()=>{pf()});var QPt={};Pi(QPt,{getDbDialect:()=>KH,getDb:()=>N0,getDatabaseUrl:()=>Ax,createDatabase:()=>IPt,closeDatabase:()=>kx});import{Kysely as hrl,PostgresDialect as UPt}from"kysely";import{Pool as FPt}from"pg";function xrl(i){let t=i.connect.bind(i);return i.connect=(u)=>{if(typeof u==="function")return t(u);let l=performance.now(),n=qui(),f=i.idleCount===0&&i.totalCount>=n,c=i.idleCount;return t().then(($)=>{let d=performance.now()-l;if(NPt().record(d,{"db.pool.outcome":f?"contended":"available"}),d>vrl)if(f)console.error("Slow db pool acquire \u2014 pool saturated:",{waitMs:d,total:i.totalCount,idle:i.idleCount,waiting:i.waitingCount,max:n});else console.warn("Slow db pool acquire \u2014 event-loop lag (not pool):",{waitMs:d,idleAtStart:c,total:i.totalCount,max:n});return $},($)=>{throw NPt().record(performance.now()-l,{"db.pool.outcome":"error"}),$})},i}function TPt(){try{return jt().databasePgSsl}catch{return!1}}function qui(){try{return jt().databasePoolMax}catch{return 10}}function rrl(i){let t=xrl(new FPt({connectionString:i,max:qui(),ssl:TPt(),...ZPt})),u=new UPt({pool:t});return{type:"postgres",db:new hrl({dialect:u,log:wrl(t)}),pool:t}}function Ax(){return jt().databaseUrl}function KH(i){let t=i||Ax();return new UPt({pool:new FPt({connectionString:t,max:qui(),ssl:TPt(),...ZPt})})}function IPt(i){let t=i||Ax();return rrl(t)}async function kx(i){if(await i.db.destroy(),!i.pool.ended)await i.pool.end();if(i===bH)bH=null}function N0(){if(!bH)bH=IPt(Ax());return bH}var Erl=()=>Qn.createHistogram("db.query.duration",{description:"Database query execution duration in milliseconds",unit:"ms"}),NPt=()=>Qn.createHistogram("db.pool.acquire.duration",{description:"Time spent waiting to acquire a connection from the pool",unit:"ms"}),JPt=400,vrl=100,wrl=(i)=>(t)=>{let u={"db.statement":t.query.sql,"db.status":t.level==="error"?"error":"success"};if(t.queryDurationMillis>JPt){let l=yPt(),n=l>JPt/2;console.error(n?"Slow query measurement \u2014 likely event-loop lag, not slow SQL:":"Slow query detected:",{durationMs:t.queryDurationMillis,eventLoopLagMs:Math.round(l),sql:t.query.sql,pool:{total:i.totalCount,idle:i.idleCount,waiting:i.waitingCount,max:qui()}})}if(Erl().record(t.queryDurationMillis,u),t.level==="error")console.error("Query failed:",{durationMs:t.queryDurationMillis,error:t.error,sql:t.query.sql})},ZPt,bH=null;var j$=x(()=>{tn();pf();_Wi();ZPt={keepAlive:!0,keepAliveInitialDelayMillis:1e4,idleTimeoutMillis:300000,connectionTimeoutMillis:30000,allowExitOnIdle:!0}});function YPt(i){let{port:t,query:u}=i,{protocol:l,path:n,hostname:f}=i;if(l&&l.slice(-1)!==":")l+=":";if(t)f+=`:${t}`;if(n&&n.charAt(0)!=="/")n=`/${n}`;let c=u?BPt.buildQueryString(u):"";if(c&&c[0]!=="?")c=`?${c}`;let $="";if(i.username!=null||i.password!=null){let _=i.username??"",g=i.password??"";$=`${_}:${g}@`}let d="";if(i.fragment)d=`#${i.fragment}`;return`${l}//${$}${f}${n}${c}${d}`}var BPt;var PPt=x(()=>{BPt=z(ko(),1)});var GPt="UNSIGNED-PAYLOAD",WPt="X-Amz-Content-Sha256";class Vui{signer;constructor(i){let t={service:i.signingName||i.service||"s3",uriEscapePath:i.uriEscapePath||!1,applyChecksum:i.applyChecksum||!1,...i};this.signer=new APt.SignatureV4MultiRegion(t)}presign(i,{unsignableHeaders:t=new Set,hoistableHeaders:u=new Set,unhoistableHeaders:l=new Set,...n}={}){return this.prepareRequest(i,{unsignableHeaders:t,unhoistableHeaders:l,hoistableHeaders:u}),this.signer.presign(i,{expiresIn:900,unsignableHeaders:t,unhoistableHeaders:l,...n})}presignWithCredentials(i,t,{unsignableHeaders:u=new Set,hoistableHeaders:l=new Set,unhoistableHeaders:n=new Set,...f}={}){return this.prepareRequest(i,{unsignableHeaders:u,unhoistableHeaders:n,hoistableHeaders:l}),this.signer.presignWithCredentials(i,t,{expiresIn:900,unsignableHeaders:u,unhoistableHeaders:n,...f})}prepareRequest(i,{unsignableHeaders:t=new Set,unhoistableHeaders:u=new Set,hoistableHeaders:l=new Set}={}){t.add("content-type"),Object.keys(i.headers).map(($)=>$.toLowerCase()).filter(($)=>$.startsWith("x-amz-server-side-encryption")).forEach(($)=>{if(!l.has($))u.add($)}),i.headers[WPt]=GPt;let n=i.headers.host,f=i.port,c=`${i.hostname}${i.port!=null?":"+f:""}`;if(!n||n===i.hostname&&i.port!=null)i.headers.host=c}}var APt;var gWi=x(()=>{APt=z(ZW(),1)});var kPt,jPt,aui=async(i,t,u={})=>{let l,n;if(typeof i.config.endpointProvider==="function"){let E=(await kPt.getEndpointFromInstructions(t.input,t.constructor,i.config)).properties?.authSchemes?.[0];if(E?.name==="sigv4a")n=E?.signingRegionSet?.join(",");else n=E?.signingRegion;l=new Vui({...i.config,signingName:E?.signingName,region:async()=>n})}else l=new Vui(i.config);let f=(h,E)=>async(v)=>{let{request:w}=v;if(!jPt.HttpRequest.isInstance(w))throw Error("Request to be presigned is not an valid HTTP request.");delete w.headers["amz-sdk-invocation-id"],delete w.headers["amz-sdk-request"],delete w.headers["x-amz-user-agent"];let r,O={...u,signingRegion:u.signingRegion??E.signing_region??n,signingService:u.signingService??E.signing_service};if(E.s3ExpressIdentity)r=await l.presignWithCredentials(w,E.s3ExpressIdentity,O);else r=await l.presign(w,O);return{response:{},output:{$metadata:{httpStatusCode:200},presigned:r}}},c="presignInterceptMiddleware",$=i.middlewareStack.clone();$.addRelativeTo(f,{name:c,relation:"before",toMiddleware:"awsAuthMiddleware",override:!0});let d=t.resolveMiddleware($,i.config,{}),{output:_}=await d({input:t.input}),{presigned:g}=_;return YPt(g)};var SPt=x(()=>{PPt();gWi();kPt=z(ft(),1),jPt=z(h1(),1)});var zPt=x(()=>{SPt();gWi()});import{extname as Drl}from"path";function QE(i){let t;try{t=decodeURIComponent(i)}catch{t=i}let l=t.replace(/\0/g,"").replace(/[\x00-\x1f\x7f]/g,"").replace(/\\/g,"/").split("/"),n=[];for(let f of l)if(f==="..")n.pop();else if(f!=="."&&f!=="")n.push(f);return n.join("/")}function jx(i,t){let u=QE(t);if(!u)throw Error("Key is empty after sanitization");return`${i}/${u}`}function bPt(i,t){if(!t)return`${i}/`;let u=QE(t);return`${i}/${u}${u.endsWith("/")?"":"/"}`}function hA(i,t,u){let l=u.split("/").map(encodeURIComponent).join("/");return`${i}/api/${encodeURIComponent(t)}/files/${l}`}function hWi(i,t){let u=`${i}/`;if(t.startsWith(u))return t.slice(u.length);return t}function Kc(i){let t=Drl(i).toLowerCase();return Orl[t]??"application/octet-stream"}function mui(i){let t=i.split(";")[0].trim();if(yrl.has(t))return!0;if(t.startsWith("text/"))return!0;return!1}var Orl,yrl;var BE=x(()=>{Orl={".json":"application/json",".html":"text/html",".htm":"text/html",".css":"text/css",".js":"application/javascript",".mjs":"application/javascript",".ts":"text/typescript",".txt":"text/plain",".md":"text/markdown",".csv":"text/csv",".xml":"application/xml",".svg":"image/svg+xml",".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".gif":"image/gif",".webp":"image/webp",".pdf":"application/pdf",".zip":"application/zip",".gz":"application/gzip",".tar":"application/x-tar",".wasm":"application/wasm",".yaml":"application/yaml",".yml":"application/yaml",".toml":"application/toml"};yrl=new Set(["application/json","text/html","text/css","application/javascript","text/typescript","text/plain","text/markdown","text/csv","application/xml","image/svg+xml","application/yaml","application/toml"])});class EWi{client;bucket;constructor(i){this.bucket=i.bucket,this.client=new zc({endpoint:i.endpoint,region:i.region,credentials:{accessKeyId:i.accessKeyId,secretAccessKey:i.secretAccessKey},forcePathStyle:i.forcePathStyle})}async getBytesOrPresign(i,t,u){let l=jx(i,t),n=await this.client.send(new ag({Bucket:this.bucket,Key:l})),f=n.ContentLength??0,c=n.ContentType??Kc(t);if(f>u.presignWhenLargerThan){let g=await aui(this.client,new V3({Bucket:this.bucket,Key:l}),{expiresIn:u.presignExpiresIn??3600});return{error:"FILE_TOO_LARGE",size:f,maxInlineSize:u.presignWhenLargerThan,presignedUrl:g,contentType:c}}let d=await(await this.client.send(new V3({Bucket:this.bucket,Key:l}))).Body.transformToByteArray(),_=mui(c);return{content:_?new TextDecoder().decode(d):Buffer.from(d).toString("base64"),contentType:c,encoding:_?"utf-8":"base64",size:f,lastModified:n.LastModified,etag:n.ETag}}async getBytes(i,t){let u=jx(i,t);return(await this.client.send(new V3({Bucket:this.bucket,Key:u}))).Body.transformToByteArray()}async put(i,t,u,l){let n=jx(i,t),f=l?.contentType??Kc(t);return{etag:(await this.client.send(new IE({Bucket:this.bucket,Key:n,Body:typeof u==="string"?Buffer.from(u,"utf-8"):u,ContentType:f}))).ETag,key:t}}async list(i,t){let u=bPt(i,t?.prefix),l=await this.client.send(new A6({Bucket:this.bucket,Prefix:u,MaxKeys:t?.maxKeys??1000,ContinuationToken:t?.continuationToken,Delimiter:t?.delimiter})),n=l.CommonPrefixes?.map((f)=>hWi(i,f.Prefix??"")).filter(Boolean);return{objects:(l.Contents??[]).map((f)=>({key:hWi(i,f.Key??""),size:f.Size??0,lastModified:f.LastModified,etag:f.ETag})),isTruncated:l.IsTruncated??!1,nextContinuationToken:l.NextContinuationToken,commonPrefixes:n&&n.length>0?n:void 0}}async delete(i,t){let u=jx(i,t);await this.client.send(new oW({Bucket:this.bucket,Key:u}))}async head(i,t){let u=jx(i,t),l=await this.client.send(new ag({Bucket:this.bucket,Key:u}));return{contentType:l.ContentType??Kc(t),size:l.ContentLength??0,lastModified:l.LastModified,etag:l.ETag}}async presignedGetUrl(i,t,u=3600,l){let n=jx(i,t);return aui(this.client,new V3({Bucket:this.bucket,Key:n}),{expiresIn:u})}async presignedPutUrl(i,t,u=3600,l){let n=jx(i,t);return aui(this.client,new IE({Bucket:this.bucket,Key:n,ContentType:l}),{expiresIn:u})}}var KPt=x(()=>{nA();zPt();BE()});function Xrl(){let i=jt();return!!(i.s3Endpoint&&i.s3Bucket&&i.s3AccessKeyId&&i.s3SecretAccessKey)}function F_(){if(HH!==void 0)return HH;if(!Xrl())return HH=null,null;let i=jt();return HH=new EWi({endpoint:i.s3Endpoint,bucket:i.s3Bucket,region:i.s3Region,accessKeyId:i.s3AccessKeyId,secretAccessKey:i.s3SecretAccessKey,forcePathStyle:i.s3ForcePathStyle}),HH}var HH;var G8=x(()=>{tn();KPt()});function sg(i,t){return{getBytesOrPresign:(u,l)=>i.getBytesOrPresign(t,u,l),getBytes:(u)=>i.getBytes(t,u),put:(u,l,n)=>i.put(t,u,l,n),list:(u)=>i.list(t,u),delete:(u)=>i.delete(t,u),head:(u)=>i.head(t,u),presignedGetUrl:(u,l,n)=>i.presignedGetUrl(t,u,l,n),presignedPutUrl:(u,l,n)=>i.presignedPutUrl(t,u,l,n)}}import{createHash as Nrl}from"crypto";function oui(i){let t=i;while(t?.[LH])t=t[LH];return t}function vA(i){let{objectStorage:t,baseUrl:u,orgSlug:l,prefix:n="connection-icons",maxBytes:f=Url,dryRun:c=!1}=i;return async($)=>{if(typeof $!=="string")return $;let d=$.match(Jrl);if(!d)return $;if(!t||!l)return $;let[,_,g]=d,h=_.toLowerCase(),E=Zrl[h];if(!E)return $;if(Math.floor(g.length*3/4)>f)return console.warn(`[asset-hoister] asset exceeds ${f} bytes, keeping inline`),$;let v=Buffer.from(g,"base64"),w=Nrl("sha256").update(v).digest("hex"),r=`${n}/${w}.${E}`;if(c)return hA(u,l,r);try{return await t.put(r,v,{contentType:h}),hA(u,l,r)}catch(O){return console.error("[asset-hoister] upload failed, keeping inline asset:",O),$}}}async function EA(i,t,u=0){if(u>Frl)return i;if(typeof i==="string")return await t(i)??i;if(Array.isArray(i)){let l=await Promise.all(i.map((n)=>EA(n,t,u+1)));return l.some((n,f)=>n!==i[f])?l:i}if(i!==null&&typeof i==="object"){let l=Object.entries(i),n=await Promise.all(l.map(([,$])=>EA($,t,u+1))),f=!1,c={};return l.forEach(([$,d],_)=>{if(c[$]=n[_],n[_]!==d)f=!0}),f?c:i}return i}function pui(i,t){return EA(i,t)}async function sui(i,t){let u={...i};if(typeof u.icon==="string")u.icon=await t(u.icon);if(u.metadata!==null&&typeof u.metadata==="object")u.metadata=await EA(u.metadata,t);return u}function Trl(i,t){return new Proxy(i,{get(u,l,n){if(l===LH)return u;if(l==="create")return async(c)=>u.create(await sui(c,t));if(l==="update")return async(c,$)=>u.update(c,await sui($,t));let f=Reflect.get(u,l,n);return typeof f==="function"?f.bind(u):f}})}function Irl(i,t){return new Proxy(i,{get(u,l,n){if(l===LH)return u;if(l==="create")return async(c,$,d,_)=>u.create(c,$,await sui(d,t),_);if(l==="update")return async(c,$,d)=>u.update(c,$,await sui(d,t));let f=Reflect.get(u,l,n);return typeof f==="function"?f.bind(u):f}})}async function Qrl(i,t){let u=await EA(i.parts,t),l=await EA(i.metadata,t);if(u===i.parts&&l===i.metadata)return i;return{...i,parts:u,metadata:l}}function Brl(i,t){return new Proxy(i,{get(u,l,n){if(l===LH)return u;if(l==="saveMessages")return async(c)=>{let $=await Promise.all(c.map((d)=>Qrl(d,t)));return u.saveMessages($)};let f=Reflect.get(u,l,n);return typeof f==="function"?f.bind(u):f}})}function Yrl(i,t){return Brl(oui(i),vA({...t,prefix:"thread-assets"}))}function wWi(i,t){let u=vA(t);if(vWi(i.connections))i.connections=Trl(oui(i.connections),u);if(vWi(i.virtualMcps))i.virtualMcps=Irl(oui(i.virtualMcps),u);if(vWi(i.threads))i.threads=Yrl(oui(i.threads),t)}function vWi(i){return i!==null&&typeof i==="object"}var Jrl,Url=5242880,Frl=64,LH,Zrl;var ili=x(()=>{BE();Jrl=/^data:((?:image|audio|video)\/[^;,]+)(?:;[^,]+)?;base64,(.+)$/is,LH=Symbol("assetHoistingTarget"),Zrl={"image/png":"png","image/jpeg":"jpg","image/gif":"gif","image/webp":"webp","image/x-icon":"ico","image/vnd.microsoft.icon":"ico","audio/mpeg":"mp3","audio/mp4":"m4a","audio/wav":"wav","audio/x-wav":"wav","audio/ogg":"ogg","audio/webm":"weba","audio/aac":"aac","video/mp4":"mp4","video/webm":"webm","video/ogg":"ogv","video/quicktime":"mov"}});function Hc(){let i=jt();if(i.baseUrl)return i.baseUrl;return`http://localhost:${i.port??3000}`}function tli(){return`http://localhost:${jt().port??3000}`}function YE(){return process.env.MESH_PUBLIC_URL??Hc()}var Jd=x(()=>{tn()});var HPt={};Pi(HPt,{backfillThreadAssetsCommand:()=>Prl});import{sql as xWi}from"kysely";async function Prl(i){let{dryRun:t,batch:u}=i,l=i.baseUrl??Hc(),n=F_();if(!n)return console.error("[backfill-assets] Object storage (S3) is not configured \u2014 cannot hoist "+"inline media. Set S3_ENDPOINT/S3_BUCKET/S3_ACCESS_KEY_ID/S3_SECRET_ACCESS_KEY and retry."),1;if(/^https?:\/\/localhost(:|\/|$)/.test(l))console.warn(`[backfill-assets] base URL resolves to "${l}" \u2014 set BASE_URL `+"(or pass --base-url) to the public origin, or stored media URLs will be wrong.");let f=N0(),{db:c}=f,$;if(i.org){let r=await c.selectFrom("organization").select(["id","slug"]).where((O)=>O.or([O("id","=",i.org),O("slug","=",i.org)])).executeTakeFirst();if(!r)return console.error(`[backfill-assets] org "${i.org}" not found (slug or id).`),await kx(f).catch(()=>{}),1;$=r.id,console.log(`[backfill-assets] scoped to org ${r.slug??r.id} (${r.id})`)}console.log(`[backfill-assets] starting${t?" (dry-run)":""} \u2014 target=${i.target} baseUrl=${l} batch=${u}${i.limit?` limit=${i.limit}`:""}`);let d=new Map,_=(r,O,y)=>{let X=`${y}\x00${r}`,N=d.get(X);if(N)return N;let U=vA({objectStorage:sg(n,r),baseUrl:l,orgSlug:O??void 0,prefix:y,dryRun:t});return d.set(X,U),U},g=async(r,O,y,X)=>{let N="";for(;;){let U=i.limit?i.limit-y.scanned:1/0;if(U<=0)break;let J=await r(N,Math.min(u,U));if(J.length===0)break;for(let Z of J)N=Z.id,y.scanned++,await O(Z);console.log(`[backfill-assets] ${X}: scanned=${y.scanned} ${t?"would-change":"changed"}=${y.changed} errors=${y.errors} cursor=${N}`)}},h={scanned:0,changed:0,errors:0},E={scanned:0,changed:0,errors:0},v={scanned:0,changed:0,errors:0};try{if(i.target==="all"||i.target==="threads")await g((r,O)=>c.selectFrom("thread_messages as tm").innerJoin("threads as t","t.id","tm.thread_id").innerJoin("organization as o","o.id","t.organization_id").select(["tm.id as id",xWi`tm.parts`.as("parts"),xWi`tm.metadata`.as("metadata"),"t.organization_id as orgId","o.slug as orgSlug"]).where("tm.id",">",r).$if(!!$,(y)=>y.where("t.organization_id","=",$)).orderBy("tm.id","asc").limit(O).execute(),async(r)=>{try{if(!RH(r.parts)&&!RH(r.metadata))return;let O=_(r.orgId,r.orgSlug,"thread-assets"),y=JSON.parse(r.parts),X=await pui(y,O),N=X!==y,U=r.metadata!==null?JSON.parse(r.metadata):null,J=await pui(U,O),Z=J!==U;if(!N&&!Z)return;if(h.changed++,t)return;await c.updateTable("thread_messages").set({parts:N?JSON.stringify(X):r.parts,metadata:Z?JSON.stringify(J):r.metadata}).where("id","=",r.id).execute()}catch(O){h.errors++,console.error(`[backfill-assets] thread_message ${r.id} failed, skipping:`,O)}},h,"threads");if(i.target==="all"||i.target==="connections")await g((r,O)=>c.selectFrom("connections as c").innerJoin("organization as o","o.id","c.organization_id").select(["c.id as id","c.icon as icon",xWi`c.metadata`.as("metadata"),"c.organization_id as orgId","o.slug as orgSlug"]).where("c.id",">",r).$if(!!$,(y)=>y.where("c.organization_id","=",$)).orderBy("c.id","asc").limit(O).execute(),async(r)=>{try{if(!RH(r.icon)&&!RH(r.metadata))return;let O=_(r.orgId,r.orgSlug,"connection-icons"),y=r.icon!==null?await O(r.icon):r.icon,X=y!==r.icon,N=r.metadata!==null?JSON.parse(r.metadata):null,U=await pui(N,O),J=U!==N;if(!X&&!J)return;if(E.changed++,t)return;await c.updateTable("connections").set({icon:X?y??null:r.icon,metadata:J?JSON.stringify(U):r.metadata}).where("id","=",r.id).execute()}catch(O){E.errors++,console.error(`[backfill-assets] connection ${r.id} failed, skipping:`,O)}},E,"connections");if(i.target==="all"||i.target==="organizations")await g((r,O)=>c.selectFrom("organization as o").select(["o.id as id","o.logo as logo","o.slug as orgSlug"]).where("o.id",">",r).$if(!!$,(y)=>y.where("o.id","=",$)).orderBy("o.id","asc").limit(O).execute(),async(r)=>{try{if(!RH(r.logo))return;let y=await _(r.id,r.orgSlug,"org-logos")(r.logo);if(y===r.logo)return;if(v.changed++,t)return;await c.updateTable("organization").set({logo:y??null}).where("id","=",r.id).execute()}catch(O){v.errors++,console.error(`[backfill-assets] organization ${r.id} failed, skipping:`,O)}},v,"organizations")}finally{await kx(f).catch(()=>{})}let w=t?"would-change":"changed";return console.log("[backfill-assets] done \u2014 "+`threads(scanned=${h.scanned} ${w}=${h.changed} errors=${h.errors}) connections(scanned=${E.scanned} ${w}=${E.changed} errors=${E.errors}) organizations(scanned=${v.scanned} ${w}=${v.changed} errors=${v.errors})`),h.errors+E.errors+v.errors>0?1:0}var RH=(i)=>i!==null&&(i.includes("data:image/")||i.includes("data:audio/")||i.includes("data:video/"));var LPt=x(()=>{j$();G8();ili();Jd()});async function RPt(i){let t,u,l=new Promise((c,$)=>{t=c,u=$});l.catch(()=>{});let n=!1,f=Bun.serve({port:i.port??0,hostname:"127.0.0.1",fetch(c){if(n)return new Response("",{status:204});let $=new URL(c.url),d=$.searchParams.get("code");if($.searchParams.get("state")!==i.expectedState)return n=!0,u(Error("OAuth state mismatch")),new Response("State mismatch \u2014 close this tab.",{status:400});if(!d)return n=!0,u(Error("OAuth callback missing code")),new Response("Missing code \u2014 close this tab.",{status:400});return n=!0,t({code:d}),new Response(null,{status:302,headers:{location:i.successRedirectUrl}})}});return{url:`http://127.0.0.1:${f.port}`,waitForCallback:()=>l,close:()=>f.stop(!0)}}import{createHash as Grl,randomBytes as Wrl}from"crypto";function ePt(){let i=CPt(Wrl(32)),t=CPt(Grl("sha256").update(i).digest());return{verifier:i,challenge:t}}function CPt(i){return i.toString("base64").replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}var MPt=()=>{};import{chmod as Arl,mkdir as krl,readdir as jrl,readFile as Srl,rename as zrl,rm as qPt,writeFile as brl}from"fs/promises";import{dirname as Krl,join as DWi}from"path";function uli(i,t){if(!t)return DWi(i,"session.json");return DWi(i,`session.${Hrl(t)}.json`)}function Hrl(i){let t=i;try{t=new URL(i).host}catch{}return t.replace(/[^a-zA-Z0-9.-]/g,"_")||"default"}async function rWi(i){try{let t=await Srl(i,"utf8"),u=JSON.parse(t);if(!Lrl(u))return null;return u}catch{return null}}async function VPt(i){try{return(await jrl(i)).filter((u)=>/^session(\..+)?\.json$/.test(u)).map((u)=>DWi(i,u))}catch{return[]}}async function lli(i,t){let u=await rWi(uli(i,t));if(u)return u;if(t)return rWi(uli(i));for(let l of await VPt(i)){let n=await rWi(l);if(n)return n}return null}async function wA(i,t){let u=uli(i,t.target);await krl(Krl(u),{recursive:!0});let l=`${u}.tmp`;await brl(l,JSON.stringify(t,null,2),{mode:384}),await Arl(l,384),await zrl(l,u)}async function aPt(i,t){if(t){await qPt(uli(i,t),{force:!0});return}for(let u of await VPt(i))await qPt(u,{force:!0})}function Lrl(i){if(!i||typeof i!=="object")return!1;let t=i;if(typeof t.target!=="string"||typeof t.clientId!=="string"||typeof t.accessToken!=="string"||typeof t.createdAt!=="string")return!1;if(!t.user||typeof t.user!=="object")return!1;if(typeof t.user.sub!=="string")return!1;return!0}var CH=()=>{};var mPt={};Pi(mPt,{performInteractiveLogin:()=>nli,loginCommand:()=>qrl});import{spawn as Rrl}from"child_process";import{randomUUID as Crl}from"crypto";async function nli(i={}){let t=(i.target??erl).replace(/\/$/,""),u=i.fetch??fetch,l=i.openBrowser??orl,n=Crl(),f=ePt(),c=await RPt({expectedState:n,successRedirectUrl:`${t}/cli/auth-success`});try{let $=`${c.url}/`,d=await Vrl(u,t,$),_=new URLSearchParams({client_id:d,redirect_uri:$,response_type:"code",state:n,scope:Mrl,code_challenge:f.challenge,code_challenge_method:"S256"}),g=`${t}/login?${_.toString()}`;console.log(`Opening ${g} in your browser...`),await l(g);let{code:h}=await c.waitForCallback(),E=await arl(u,t,d,h,$,f.verifier);if(!E.id_token)throw Error("Token endpoint returned no id_token");let v=mrl(E.id_token);return{target:t,clientId:d,user:{sub:v.sub,email:v.email,name:v.name},accessToken:E.access_token,refreshToken:E.refresh_token,expiresAt:E.expires_in?Math.floor(Date.now()/1000)+E.expires_in:void 0,createdAt:new Date().toISOString()}}finally{c.close()}}async function qrl(i){try{let t=await nli({target:i.target,openBrowser:i.openBrowser,fetch:i.fetch});return await wA(i.dataDir,t),console.log(`Logged in as ${t.user.email??t.user.sub}.`),0}catch(t){return console.error(`Login failed: ${t instanceof Error?t.message:String(t)}`),1}}async function Vrl(i,t,u){let l=await i(`${t}/api/auth/mcp/register`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({client_name:"decocms-cli",redirect_uris:[u],grant_types:["authorization_code","refresh_token"],response_types:["code"],token_endpoint_auth_method:"none",application_type:"native"})});if(!l.ok)throw Error(`Client registration failed: HTTP ${l.status} ${await l.text().catch(()=>"")}`);let n=await l.json();if(typeof n?.client_id!=="string")throw Error("Client registration returned no client_id");return n.client_id}async function arl(i,t,u,l,n,f){let c=new URLSearchParams({grant_type:"authorization_code",code:l,redirect_uri:n,client_id:u,code_verifier:f}),$=await i(`${t}/api/auth/mcp/token`,{method:"POST",headers:{"content-type":"application/x-www-form-urlencoded"},body:c.toString()});if(!$.ok)throw Error(`Token exchange failed: HTTP ${$.status} ${await $.text().catch(()=>"")}`);let d=await $.json();if(typeof d?.access_token!=="string")throw Error("Token endpoint returned no access_token");return d}function mrl(i){let t=i.split(".");if(t.length!==3||!t[1])throw Error("id_token is not a valid JWT");let u=JSON.parse(Buffer.from(t[1],"base64url").toString("utf8"));if(typeof u.sub!=="string")throw Error("id_token has no sub claim");return{sub:u.sub,email:typeof u.email==="string"?u.email:void 0,name:typeof u.name==="string"?u.name:void 0}}async function orl(i){let t,u;switch(process.platform){case"darwin":t="open",u=[i];break;case"win32":t="cmd",u=["/c","start","",i];break;default:t="xdg-open",u=[i];break}await new Promise((l)=>{let n=Rrl(t,u,{stdio:"ignore",detached:!0});n.on("error",()=>{console.log(`Could not open browser automatically. Please open this URL manually:
|
|
147
147
|
${i}`),l()}),n.on("spawn",()=>{n.unref(),l()})})}var erl="https://studio.decocms.com",Mrl="openid profile email offline_access";var OWi=x(()=>{MPt();CH()});async function oPt(i,t=fetch,u=Date.now){if(!i.refreshToken)throw new S6("invalid_grant","Session has no refresh token");let l=new URLSearchParams({grant_type:"refresh_token",refresh_token:i.refreshToken,client_id:i.clientId}),n;try{n=await t(`${i.target}/api/auth/mcp/token`,{method:"POST",headers:{"content-type":"application/x-www-form-urlencoded"},body:l.toString()})}catch(c){throw new S6("transient",c instanceof Error?c.message:String(c))}if(!n.ok){let c=await n.text().catch(()=>"");if(n.status>=400&&n.status<500)throw new S6("invalid_grant",`HTTP ${n.status} ${c}`);throw new S6("transient",`HTTP ${n.status} ${c}`)}let f=await n.json();if(typeof f.access_token!=="string")throw new S6("transient","Token endpoint returned no access_token");return{...i,accessToken:f.access_token,refreshToken:f.refresh_token??i.refreshToken,expiresAt:f.expires_in?Math.floor(u()/1000)+f.expires_in:i.expiresAt}}var S6;var fli=x(()=>{S6=class S6 extends Error{kind;constructor(i,t){super(t);this.name="RefreshFailedError",this.kind=i}}});async function Sx(i){let t=await lli(i.dataDir,i.target);if(!t)return null;let u=i.now??Date.now;if(!prl(t,u()))return t;try{let l=await oPt(t,i.fetch,u);return await wA(i.dataDir,l),l}catch(l){if(l instanceof S6&&l.kind==="invalid_grant")return null;throw l}}function prl(i,t){if(i.expiresAt===void 0)return!1;let u=Math.floor(t/1000);return i.expiresAt-srl<u}var srl=60;var eH=x(()=>{fli();CH()});var sPt={};Pi(sPt,{whoamiCommand:()=>i5l});async function i5l(i){let t;try{t=await Sx({dataDir:i.dataDir,fetch:i.fetch,now:i.now})}catch(u){if(u instanceof S6&&u.kind==="transient")return console.error(`Could not refresh session: ${u.message}. Run \`decocms auth login\` to authenticate.`),1;throw u}if(!t)return console.error("Not logged in. Run `decocms auth login` to authenticate."),1;return console.log(`Target: ${t.target}`),console.log(`User: ${t.user.email??t.user.sub}`),0}var pPt=x(()=>{eH();fli()});var iGt={};Pi(iGt,{logoutCommand:()=>t5l});async function t5l(i){if(!await lli(i.dataDir))return console.log("Already logged out."),0;return await aPt(i.dataDir),console.log("Logged out."),0}var tGt=x(()=>{CH()});async function cli(i){let t=i.isInteractive??Boolean(process.stdout.isTTY),u;try{u=await Sx({dataDir:i.dataDir,target:i.target,fetch:i.fetch,now:i.now})}catch(n){if(n instanceof S6&&n.kind==="transient")throw Error(`Could not refresh session: ${n.message}. Run \`decocms auth login\` to sign in again.`);throw n}if(u&&i.target&&t&&!u5l(u.target,i.target))u=null;if(u)return u;if(!t)throw Error("No session found. Run `decocms auth login` first, then re-run the command.");console.log(`Not logged in \u2014 opening browser to sign in to ${i.intent}.`);let l=await nli({target:i.target,openBrowser:i.openBrowser,fetch:i.fetch});return await wA(i.dataDir,l),console.log(`Logged in as ${l.user.email??l.user.sub}.`),l}function u5l(i,t){try{return new URL(i).host===new URL(t).host}catch{return i===t}}var yWi=x(()=>{OWi();eH();fli();CH()});function pg(i){let t=i?.userName?.trim();if(!t||uGt.test(t))return null;let u=i?.userEmail?.trim();if(!u||uGt.test(u))return{userName:t};if(!l5l.test(u))return{userName:t};return{userName:t,userEmail:u}}var uGt,l5l;var $li=x(()=>{uGt=/[\r\n<>]/,l5l=/^[^\s@<>]+@[^\s@<>]+\.[^\s@<>]+$/});var MH=x(()=>{H1();$li()});async function _li(i){try{let t=await fetch(`${i}/health`,{signal:AbortSignal.timeout(n5l)});if(!t.ok)return null;let u=await t.json();if(typeof u==="object"&&u!==null&&typeof u.bootId==="string"&&typeof u.ready==="boolean"&&u.setup&&typeof u.setup.running==="boolean"&&typeof u.setup.done==="boolean")return u;return null}catch{return null}}async function gli(i){for(let t=0;t<lGt;t++){if(await _li(i)!==null)return;let u=(Math.random()*2-1)*f5l;await qu(nGt+u)}throw Error(`sandbox daemon at ${i} did not respond on /health within ${lGt*nGt/1000}s`)}async function W8(i,t,u,l,n){return c5l(i,t,"POST",u,l,n)}async function c5l(i,t,u,l,n,f){let c={...l};if(n&&n.rotateToken!==void 0)c.auth=n;let $=await fetch(`${i}/_sandbox/config`,{method:u,headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`},body:JSON.stringify(c),signal:AbortSignal.timeout(f?.timeoutMs??fGt)}),d=await $.text();if(!$.ok)throw new dli($.status,d);return JSON.parse(d)}async function cGt(i,t,u){let l=await fetch(`${i}/_sandbox/orgfs-config`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`},body:u,signal:AbortSignal.timeout(fGt)}),n=await l.text();if(!l.ok)throw Error(`sandbox daemon /_sandbox/orgfs-config returned ${l.status}: ${n}`);return JSON.parse(n)}async function qH(i,t,u,l){let n=new Headers(l.headers);for(let $ of $5l)n.delete($);n.set("authorization",`Bearer ${t}`);let f=l.method!=="GET"&&l.method!=="HEAD",c=`${i}${u.startsWith("/")?u:`/${u}`}`;return fetch(c,{method:l.method,headers:n,body:f?l.body:void 0,redirect:"manual",signal:l.signal,duplex:f?"half":void 0})}var dli,n5l=500,fGt=30000,lGt=25,nGt=200,f5l=50,$5l;var XWi=x(()=>{MH();dli=class dli extends Error{status;constructor(i,t){super(`sandbox daemon /_sandbox/config returned ${i}: ${t}`);this.status=i;this.name="ConfigRequestError"}};$5l=["cookie","host","connection","keep-alive","proxy-authenticate","proxy-authorization","te","trailer","transfer-encoding","accept-encoding","content-length"]});var dGt=`var __create = Object.create;
|
|
148
148
|
var __getProtoOf = Object.getPrototypeOf;
|
|
149
149
|
var __defProp = Object.defineProperty;
|
|
@@ -104771,7 +104771,7 @@ ${c.stack}`;f.reject(d)}else f.resolve(_)}});return $.requestSubject=i,this.prot
|
|
|
104771
104771
|
`);if(g===-1)return;let h=$.subarray(0,g).toString("utf8"),E=$.subarray(g+4),v=h.split(`\r
|
|
104772
104772
|
`,1)[0]??"";if(!/^HTTP\/1\.[01] 101(?:\s|$)/.test(v)){o8(i,1011,t.upstreamErrorReason);try{c.end()}catch{}return}d=!0,i.data.upstream=c;let w=$Nl((r,O)=>{try{if(r===1)i.send(O.toString("utf8"));else if(r===2)i.send(O);else if(r===8){let{code:y,reason:X}=cNl(O);o8(i,y,X);try{c.end()}catch{}}}catch{}});if(c.removeAllListeners("data"),E.length>0)w(E);c.on("data",(r)=>w(r));for(let r of i.data.pending)try{c.write(Zki(r,!0))}catch{}i.data.pending.length=0})}function fNl(i,t){let u=[`GET ${i} HTTP/1.1`];for(let[l,n]of Object.entries(t))u.push(`${l}: ${n}`);return u.push("",""),u.join(`\r
|
|
104773
104773
|
`)}function o8(i,t,u){try{if(t!==void 0)i.close(t,u??"");else i.close()}catch{}}function Zki(i,t,u){let l,n;if(typeof i==="string")l=Buffer.from(i,"utf8"),n=1;else if(i instanceof ArrayBuffer)l=Buffer.from(i),n=2;else if(Buffer.isBuffer(i))l=i,n=2;else l=Buffer.from(i),n=2;let f=u??n,c=l.length,$=[];$.push(128|f&15);let d=t?128:0;if(c<126)$.push(d|c);else if(c<65536)$.push(d|126,c>>8&255,c&255);else $.push(d|127,0,0,0,0),$.push(c>>>24&255,c>>>16&255,c>>>8&255,c&255);let _=t?4:0,g=Buffer.allocUnsafe($.length+_+c),h=0;for(let E=0;E<$.length;E++)g[h++]=$[E];if(t){let E=SSt(4);g[h++]=E[0],g[h++]=E[1],g[h++]=E[2],g[h++]=E[3];for(let v=0;v<c;v++)g[h++]=l[v]^E[v&3]}else l.copy(g,h);return g}function cNl(i){if(i.length<2)return{code:1000,reason:""};return{code:i.readUInt16BE(0),reason:i.subarray(2).toString("utf8")}}function $Nl(i){let t=Buffer.alloc(0);return(u)=>{t=t.length===0?u:Buffer.concat([t,u]);while(!0){if(t.length<2)return;let l=t[0],n=t[1],f=l&15,c=(n&128)!==0,$=n&127,d=2;if($===126){if(t.length<d+2)return;$=t[d]<<8|t[d+1],d+=2}else if($===127){if(t.length<d+8)return;$=t[d+4]*16777216+(t[d+5]<<16|t[d+6]<<8|t[d+7]),d+=8}let _=null;if(c){if(t.length<d+4)return;_=t.subarray(d,d+4),d+=4}if(t.length<d+$)return;let g=t.subarray(d,d+$);if(_){let h=Buffer.alloc($);for(let E=0;E<$;E++)h[E]=g[E]^_[E&3];g=h}t=t.subarray(d+$),i(f,g)}}}var lNl=256;var HSt=x(()=>{jSt()});function LSt(i){if(typeof i!=="string"||i.length===0)return null;let t=i.lastIndexOf(":");if(i.startsWith("["))return null;let l=(t>=0?i.slice(0,t):i).replace(/\.$/,"").toLowerCase(),n=".localhost";if(!l.endsWith(n))return null;let f=l.slice(0,-n.length);if(f.length===0)return null;if(f.includes("."))return null;return f}async function RSt(i){let t=KSt({maxPendingFrames:i.maxPendingWsFrames??dNl,backlogOverflowReason:"ingress backlog overflow"}),u=Bun.serve({port:i.port,hostname:"127.0.0.1",idleTimeout:0,async fetch(l,n){let f=l.headers.get("host"),c=LSt(f);if(!c)return new Response("not found",{status:404});let $=i.lookupSandboxPort(c);if(!$){if(l.headers.get("upgrade")==="websocket")return new Response("unknown handle",{status:404});return new Response(_Nl,{status:503,headers:{"Content-Type":"text/html; charset=utf-8","Cache-Control":"no-store","Retry-After":"1"}})}if(l.headers.get("upgrade")==="websocket"){let h=new URL(l.url);if(!n.upgrade(l,{data:bSt({port:$,pathQuery:`${h.pathname}${h.search}`,protocols:zSt(l.headers)})}))return new Response("ws upgrade failed",{status:400});return}let d=new URL(l.url),_=`http://127.0.0.1:${$}${d.pathname}${d.search}`,g=new Headers(l.headers);return g.set("host",`127.0.0.1:${$}`),fetch(_,{method:l.method,headers:g,body:l.body,redirect:"manual"})},websocket:{open:t.open,message:t.message,close:t.close}});return{port:u.port??0,async stop(){u.stop(!0)}}}var dNl=256,_Nl='<!DOCTYPE html><html><head><meta charset="utf-8"><title>Connecting\u2026</title><style>body{font-family:system-ui,sans-serif;display:flex;align-items:center;justify-content:center;min-height:100vh;margin:0;background:#fafafa;color:#555}div{text-align:center;max-width:420px;padding:24px}h3{margin:0 0 8px}p{margin:0;font-size:14px;color:#999;line-height:1.5}</style></head><body><div><h3>Connecting to sandbox\u2026</h3><p>Waiting for the local sandbox to come online. This page refreshes automatically.</p></div><script>setTimeout(function(){window.location.reload()},1500)</script></body></html>';var CSt=x(()=>{HSt()});async function Tki(i=xNl){let t=["decopilot-sandbox","body-offload"],[u,l]=await Promise.all([i.detectClaudeCode().catch(()=>!1),i.detectCodex().catch(()=>!1)]);if(u)t.push("claude-code");if(l)t.push("codex");return t}function hNl(i){return gNl.filter((t)=>!i.includes(t))}function ENl(i,t){let u=t.filter((l)=>!i.includes(l));return i.push(...u),u}function eSt(i,t={}){let u=t.detect??(()=>Tki()),l=setInterval(()=>{if(hNl(i).length===0)return;u().then((n)=>{let f=ENl(i,n);if(f.length>0)t.onChange?.(f)}).catch(()=>{})},t.intervalMs??60000);return l.unref?.(),()=>clearInterval(l)}async function vNl(){try{let{query:i}=await import("@anthropic-ai/claude-agent-sdk"),t=i({prompt:"",options:{maxTurns:1}}),u=await t.accountInfo();return t.return(void 0),Boolean(u.email)}catch{return!1}}async function wNl(){try{let i=Bun.spawn(["codex","--version"],{stdout:"ignore",stderr:"ignore"}),t=setTimeout(()=>i.kill(),1e4),u=await i.exited;return clearTimeout(t),u===0}catch{return!1}}var gNl,xNl;var MSt=x(()=>{gNl=["claude-code","codex"];xNl={detectClaudeCode:vNl,detectCodex:wNl}});import{randomBytes as rNl}from"crypto";import{mkdir as DNl,readFile as ONl,writeFile as yNl}from"fs/promises";import{dirname as XNl,join as NNl}from"path";function JNl(i){return NNl(i,"machine-id")}async function qSt(i){let t=JNl(i);try{let n=(await ONl(t,"utf8")).trim();if(n)return n}catch{}let u=rNl(16).toString("hex");return await DNl(XNl(t),{recursive:!0}),await yNl(t,u),u}var VSt=()=>{};import{randomBytes as UNl}from"crypto";import{mkdir as FNl}from"fs/promises";import{createServer as ZNl}from"net";import{join as TNl}from"path";function aSt(i,t){return Error(`sandbox failed to start: ${i}`,{cause:t})}function INl(i){if(!(i instanceof Error))return!1;return i.name==="TimeoutError"||/timed out|timeout|operation was aborted|aborted/i.test(i.message)}function QNl(i){if(i instanceof Error){let t=i.cause;if(t instanceof Error&&t.message)return t.message;return i.message}return String(i)}function mSt(i){let t=i.maxSandboxes??20,u=new Map,l=i.pickPort??BNl,n=i.fetchImpl??fetch,f=i.resolvePreviewUrl??((E,v)=>`http://127.0.0.1:${v}`),c=(E)=>{try{i.onEvent?.(E)}catch{}},$=async(E)=>{let v=new AbortController,w=setTimeout(()=>v.abort(),1500);try{let r=await n(`${E}/health`,{signal:v.signal});if(!r.ok)console.warn(`[user-desktop] probe ${E}/health \u2192 ${r.status} (treating as dead)`);return r.ok}catch(r){return console.warn(`[user-desktop] probe ${E}/health failed: ${r instanceof Error?r.message:String(r)} (treating as dead)`),!1}finally{clearTimeout(w)}},d=(E)=>{console.warn(`[user-desktop] evicting dead daemon handle=${E.handle} port=${E.port}`);try{E.process.kill("SIGTERM")}catch{}if(u.get(E.handle)===E)u.delete(E.handle),c({handle:E.handle,phase:"evicted"})},_=new Map;function g(){if(u.size<t)return;let E=[...u.values()].filter((w)=>w.activeDispatchCount===0).sort((w,r)=>w.lastUsedAt-r.lastUsedAt);if(E.length===0){console.warn(`[user-desktop] at cap ${u.size}/${t} but every sandbox is pinned (active dispatch) \u2014 exceeding cap temporarily`);return}let v=E[0];console.log(`[user-desktop] evicting LRU victim handle=${v.handle} port=${v.port} (cap ${t} reached, size=${u.size})`);try{v.process.kill("SIGTERM")}catch{}u.delete(v.handle),c({handle:v.handle,phase:"evicted"})}let h=async(E)=>{c({handle:E.handle,phase:"spawning"}),g();let v=TNl(i.dataDir,"sandboxes",E.handle);await FNl(v,{recursive:!0}),console.log(`[user-desktop] ensure handle=${E.handle} repo=${E.repo?.cloneUrl??"(none)"} branch=${E.repo?.branch??"(none)"} runtime=${E.workload?.runtime??"(autodetect)"} pm=${E.workload?.packageManager??"(autodetect)"}`);let w=UNl(24).toString("hex"),[r,O]=await Promise.all([l(),l()]);console.log(`[user-desktop] spawn handle=${E.handle} port=${r} devPort=${O} workdir=${v}`);let y=await Promise.resolve(i.spawnDaemon({workdir:v,handle:E.handle,port:r,daemonToken:w,offloadAllowedHosts:E.offloadAllowedHosts??[],offloadAllowSameHostDev:E.offloadAllowSameHostDev??!1,orgFsConfigJson:E.orgFsConfigJson}));try{try{await i.waitForHealth(r)}catch(J){throw aSt("the sandbox didn't come online in time",J)}console.log(`[user-desktop] healthy handle=${E.handle} port=${r} \u2014 posting config`);try{await i.postConfig(r,O,{repo:E.repo,workload:E.workload,operator:E.operator},w)}catch(J){throw aSt(INl(J)?"configuration timed out":"the sandbox rejected its configuration",J)}}catch(J){console.error(`[user-desktop] sandbox bring-up failed handle=${E.handle} port=${r} (killing daemon):`,J);try{y.kill("SIGKILL")}catch{}throw c({handle:E.handle,phase:"failed",error:QNl(J)}),J}let X=`http://127.0.0.1:${r}`,N=f(E.handle,r);console.log(`[user-desktop] ready handle=${E.handle} port=${r} sandboxApiUrl=${X} previewUrl=${N}`);let U={handle:E.handle,port:r,process:y,sandboxApiUrl:X,previewUrl:N,lastUsedAt:Date.now(),activeDispatchCount:0,daemonToken:w};if(u.set(E.handle,U),c({handle:E.handle,phase:"ready",port:r,previewUrl:N}),y.exited)y.exited.then(()=>{if(u.get(E.handle)===U)console.warn(`[user-desktop] daemon process exited unexpectedly handle=${E.handle} port=${r} \u2014 removing from cache`),u.delete(E.handle),c({handle:E.handle,phase:"evicted"});else console.log(`[user-desktop] daemon process exited handle=${E.handle} port=${r} (already replaced/removed)`)});return{sandboxApiUrl:X,previewUrl:N,port:r}};return{async ensureSandbox(E){let v=u.get(E.handle);if(v){if(await $(v.sandboxApiUrl))return console.log(`[user-desktop] cache hit handle=${E.handle} port=${v.port} (alive)`),v.lastUsedAt=Date.now(),{sandboxApiUrl:v.sandboxApiUrl,previewUrl:v.previewUrl,port:v.port};console.warn(`[user-desktop] cache stale handle=${E.handle} port=${v.port} \u2014 respawning`),d(v)}let w=_.get(E.handle);if(w)return console.log(`[user-desktop] joining in-flight ensure handle=${E.handle}`),w;let r=h(E).finally(()=>{_.delete(E.handle)});return _.set(E.handle,r),r},proxyPort(E){let v=u.get(E);if(v)v.lastUsedAt=Date.now();return v?.port??null},getDaemonToken(E){return u.get(E)?.daemonToken??null},hasHandle(E){return u.has(E)||_.has(E)},recordHit(E){let v=u.get(E);if(v)v.lastUsedAt=Date.now()},acquireDispatch(E){let v=u.get(E);if(!v)return()=>{};v.activeDispatchCount+=1;let w=!1;return()=>{if(w)return;w=!0;let r=u.get(E);if(r)r.activeDispatchCount=Math.max(0,r.activeDispatchCount-1)}},listSandboxes(){return[...u.values()]},async deleteSandbox(E){let v=u.get(E);if(!v){console.log(`[user-desktop] delete handle=${E} (not found, no-op)`);return}console.log(`[user-desktop] delete handle=${E} port=${v.port}`);try{v.process.kill("SIGTERM")}catch{}u.delete(E),c({handle:E,phase:"deleted"})},async shutdown(){console.log(`[user-desktop] shutdown \u2014 killing ${u.size} sandbox(es)`);for(let E of u.values())try{E.process.kill("SIGTERM")}catch{}u.clear()}}}function BNl(){return new Promise((i,t)=>{let u=ZNl();u.unref(),u.on("error",t),u.listen(0,"127.0.0.1",()=>{let l=u.address();if(l&&typeof l==="object"){let n=l.port;u.close(()=>i(n))}else u.close(()=>t(Error("could not allocate port")))})})}var oSt=()=>{};import{randomUUID as YNl}from"crypto";import{hostname as PNl}from"os";async function sSt(i){let t=PNl()||void 0;i.monitor?.onMachine?.(t??"this machine");let u=vGt(i.dataDir,{outFd:i.logFd,perSandboxLog:i.perSandboxLogs,hotReload:i.hotReload}),l=0,n=mSt({dataDir:i.dataDir,resolvePreviewUrl:(N,U)=>l>0?`http://${N}.localhost:${l}`:`http://127.0.0.1:${U}`,spawnDaemon:async(N)=>{let U={DAEMON_BOOT_ID:YNl(),APP_ROOT:N.workdir,PROXY_PORT:String(N.port),DAEMON_TOKEN:N.daemonToken,OFFLOAD_ALLOWED_HOSTS:N.offloadAllowedHosts.join(","),...N.offloadAllowSameHostDev?{OFFLOAD_ALLOW_SAME_HOST_DEV:"1"}:{}};if(N.orgFsConfigJson){let Z=await DGt(i.dataDir);if(Z)U.ORGFS_CONFIG=N.orgFsConfigJson,U.ORGFS_RCLONE_PATH=Z}let J=await u({workdir:N.workdir,env:U,daemonPort:N.port});return{port:N.port,kill:(Z)=>J.kill(Z),exited:J.exited.then(()=>{return})}},postConfig:async(N,U,J,Z)=>{let B={port:U};if(J.workload)B.runtime=J.workload.runtime,B.packageManager={name:J.workload.packageManager,...J.workload.packageManagerPath?{path:J.workload.packageManagerPath}:{}};let Q={application:B},P=pg(J.operator??null);if(P)Q.operator=P;if(J.repo)Q.git={repository:{cloneUrl:J.repo.cloneUrl,branch:J.repo.branch},...J.repo.userName&&J.repo.userEmail?{identity:{userName:J.repo.userName,userEmail:J.repo.userEmail}}:{}};await W8(`http://127.0.0.1:${N}`,Z,Q)},waitForHealth:async(N)=>{await gli(`http://127.0.0.1:${N}`)},maxSandboxes:20,onEvent:i.monitor?.onEvent}),f=await RSt({port:i.port,lookupSandboxPort:(N)=>n.proxyPort(N)});l=f.port,console.log(`Local ingress listening on http://127.0.0.1:${f.port} (use http://<handle>.localhost:${f.port}/)`),i.monitor?.onIngress?.(f.port);let c=yGt({provider:n}),$=async()=>{let N=await Sx({dataDir:i.dataDir,target:i.clusterBaseUrl});if(!N)throw Object.assign(Error(`Session for ${i.clusterBaseUrl} is no longer valid \u2014 run \`deco auth login --target ${i.clusterBaseUrl}\` and restart \`deco link\`.`),{fatal:!0});return N.accessToken};console.log(`[link-daemon] transport=pull cluster=${i.clusterBaseUrl}`);let d=await qSt(i.dataDir),_=process.env.npm_package_version??"0.0.0",g=await Tki(),h=eSt(g,{onChange:(N)=>{console.log(`[link-daemon] capabilities detected: +${N.join(",")} (now: ${g.join(",")})`)}}),E=Jki({path:`${i.dataDir}/link/outbox.sqlite`}),v=()=>{},w=await PSt({clusterBaseUrl:i.clusterBaseUrl,getAccessToken:$,provider:n,outbox:E,controlHandler:c,capabilities:g,machineId:d,cliVersion:_,previewPort:f.port,onConnected:()=>{i.monitor?.onCluster?.("linked"),console.log(`Linked to ${i.clusterBaseUrl} (pull transport)`)},onShutdown:()=>v()}),r,O=new Promise((N)=>{r=N}),y=!1,X=async()=>{if(y)return;y=!0,console.log(`
|
|
104774
|
-
Shutting down\u2026`),h();try{await w.close()}catch{}try{await f.stop()}catch{}try{await n.shutdown()}catch{}try{E.close()}catch{}r(0)};return process.on("SIGINT",()=>void X()),process.on("SIGTERM",()=>void X()),v=()=>{console.log("Disconnect requested from the Studio web UI \u2014 shutting down. Run `bunx decocms link` to reconnect."),X()},w.closed.then(()=>{if(i.monitor?.onCluster?.("closed"),!y)console.error("Cluster connection closed permanently; exiting."),X()}),{stopped:O,stop:X}}var pSt=x(()=>{XWi();MH();wGt();OGt();XGt();GSt();Uki();CSt();MSt();VSt();eH();oSt()});function Iki(i){return i.map((t)=>typeof t==="string"?t:String(t)).join(" ")}var J0i;var Qki=x(()=>{J0i={name:"decocms",version:"3.34.0",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/mesh"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:'bun run migrate && concurrently "bun run dev:client" "bun run dev:server"',"dev:servers":'concurrently "bun run dev:client" "bun run dev:server"',"dev:client":"vite dev","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts","build:client":"bun --bun vite build","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","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","test:e2e":"playwright test","test:e2e:ui":"playwright test --ui","test:ct":"playwright test -c playwright-ct.config.ts","test:ct:ui":"playwright test -c playwright-ct.config.ts --ui","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts","smoke:link":"bun run scripts/smoke-link.ts",prepublishOnly:"bun run build:client && bun run build:server"},optionalDependencies:{"@anthropic-ai/claude-agent-sdk":"^0.2.141","@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.80","@ai-sdk/google":"^3.0.80","@ai-sdk/openai":"^3.0.65","@anthropic-ai/sdk":"^0.96.0","@aws-sdk/client-s3":"^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.17.6","@dnd-kit/core":"^6.3.1","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@inkjs/ui":"^2.0.0","@modelcontextprotocol/ext-apps":"^1.7.1","@openrouter/ai-sdk-provider":"^2.9.0","@opentelemetry/core":"^2.6.0","@tanstack/react-virtual":"3.13.24","@xterm/addon-fit":"^0.11.0","@xterm/xterm":"^6.0.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12",nats:"^2.29.3","node-pty":"^1.0.0","posthog-js":"^1.371.1","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@ai-sdk/react":"^3.0.193","@better-auth/sso":"1.4.1","@daveyplate/better-auth-ui":"^3.2.7","@deco/ui":"workspace:*","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/harness":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/mesh-sdk":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/std":"workspace:*","@floating-ui/react":"^0.27.16","@happy-dom/global-registrator":"^20.9.0","@hookform/resolvers":"^5.2.2","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@monaco-editor/react":"^4.7.0","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@playwright/experimental-ct-react":"1.59.1","@playwright/test":"^1.58.2","@radix-ui/react-avatar":"^1.1.10","@radix-ui/react-checkbox":"^1.3.3","@radix-ui/react-dialog":"^1.1.15","@radix-ui/react-dropdown-menu":"^2.1.16","@radix-ui/react-label":"^2.1.7","@radix-ui/react-select":"^2.2.6","@radix-ui/react-separator":"^1.1.7","@radix-ui/react-slot":"^1.2.3","@radix-ui/react-tabs":"^1.1.13","@rjsf/core":"^6.1.2","@rjsf/shadcn":"^6.1.2","@rjsf/utils":"^6.1.2","@rjsf/validator-ajv8":"^6.1.2","@tailwindcss/vite":"^4.1.17","@tanstack/react-query":"5.100.10","@tanstack/react-router":"1.169.2","@testing-library/jest-dom":"^6.9.1","@testing-library/react":"^16.3.2","@tiptap/core":"3.20.2","@tiptap/extension-mention":"3.20.2","@tiptap/extension-placeholder":"3.20.2","@tiptap/pm":"3.20.2","@tiptap/react":"3.20.2","@tiptap/starter-kit":"3.20.2","@tiptap/suggestion":"3.20.2","@types/bun":"^1.3.1","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@untitledui/icons":"^0.0.19","@vercel/nft":"^1.1.1","@vitejs/plugin-react":"^5.1.0",ai:"^6.0.191","babel-plugin-react-compiler":"^1.0.0","better-auth":"1.4.22","class-variance-authority":"^0.7.1",clsx:"^2.1.1",concurrently:"^9.2.1",croner:"^9.1.0","date-fns":"^4.1.0",degit:"^2.8.4",hono:"^4.10.7","input-otp":"^1.4.2",jose:"^6.0.11","lucide-react":"^0.468.0",marked:"^15.0.6","mesh-plugin-workflows":"workspace:*",nanoid:"^5.1.6",pg:"^8.16.3",prettier:"^3.4.2","react-hook-form":"^7.66.0","react-markdown":"^10.1.0","react-resizable-panels":"^2.1.7","react-syntax-highlighter":"^15.6.1",recharts:"^3.6.0","rehype-raw":"^7.0.0","remark-gfm":"^4.0.0","sass-embedded":"^1.97.2",sonner:"^2.0.7","tailwind-merge":"^3.3.1",tailwindcss:"^4.1.17",typescript:"^5.9.3",vite:"^7.2.1","vite-tsconfig-paths":"^5.1.4",zod:"^4.0.0",zustand:"^5.0.9"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","mesh","tools"],license:"MIT",publishConfig:{access:"public"}}});var DL={};Pi(DL,{printBanner:()=>ANl,bannerLines:()=>izt,BANNER_LINES:()=>U0i,BANNER_GRADIENT:()=>F0i});function WNl(i){let t=Number.parseInt(i.slice(1),16);return[t>>16&255,t>>8&255,t&255]}function izt(i){let t=U0i.map((u,l)=>{let[n,f,c]=WNl(F0i[l]);return`\x1B[38;2;${n};${f};${c}m${u}\x1B[39m`});if(i!==void 0)t.push(`\x1B[2m v${i}\x1B[22m`);return t}function ANl(i){console.log("");for(let t of izt(i))console.log(t);console.log("")}var U0i,F0i;var jA=x(()=>{U0i=[" \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588 ","\u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588 \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588 "," \u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2588 \u2591 \u2588\u2588\u2588 \u2591\u2591\u2591 \u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2591\u2591\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591 \u2588\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588 "," \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591 ","\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591 "],F0i=["#00ff64","#00ee5e","#00dc56","#00c84e","#00b444","#00a03c","#008832","#006e28"]});import{Box as kNl,Text as tzt}from"ink";import{jsx as jNl,jsxs as uzt}from"react/jsx-runtime";function Z0i({version:i}){return uzt(kNl,{flexDirection:"column",marginTop:1,children:[U0i.map((t,u)=>jNl(tzt,{color:F0i[u],children:t},u)),uzt(tzt,{dimColor:!0,children:[" v",i]})]})}var Bki=x(()=>{jA()});var nzt={};Pi(nzt,{subscribeLinkState:()=>Gki,setMachine:()=>KNl,setLogPath:()=>LNl,setIngress:()=>bNl,setDaemonError:()=>HNl,setClusterUrl:()=>zNl,setCluster:()=>SNl,pushSandboxEvent:()=>RNl,getLinkState:()=>Pki,applySandboxEvent:()=>lzt});function lzt(i,t){let u=new Map(i);if(t.phase==="evicted"||t.phase==="deleted")return u.delete(t.handle),u;let l=u.get(t.handle);return u.set(t.handle,{handle:t.handle,port:t.port??l?.port??null,previewUrl:t.previewUrl??l?.previewUrl??null,status:t.phase,error:t.phase==="failed"?t.error??"failed":null}),u}function s8(){for(let i of Yki)i()}function Pki(){return i$}function Gki(i){return Yki.add(i),()=>Yki.delete(i)}function SNl(i){i$={...i$,cluster:i},s8()}function zNl(i){i$={...i$,clusterUrl:i},s8()}function bNl(i,t){i$={...i$,ingressPort:i,ingressUrl:t},s8()}function KNl(i){i$={...i$,machine:i},s8()}function HNl(i){i$={...i$,daemonError:i},s8()}function LNl(i){i$={...i$,logPath:i},s8()}function RNl(i){i$={...i$,sandboxes:lzt(i$.sandboxes,i)},s8()}var i$,Yki;var Wki=x(()=>{i$={cluster:"connecting",clusterUrl:null,ingressUrl:null,ingressPort:null,machine:null,cap:20,sandboxes:new Map,daemonError:null,logPath:null},Yki=new Set});var fzt={};Pi(fzt,{LinkApp:()=>MNl});import{Box as t$,Text as u$}from"ink";import{useSyncExternalStore as CNl}from"react";import{jsx as $f,jsxs as CE}from"react/jsx-runtime";function eNl(i){if(i.status==="ready")return{color:"green",text:"\u25CF Live"};if(i.status==="spawning")return{color:"yellow",text:"\u25CC Starting\u2026"};return{color:"red",text:`\u2717 Error: ${i.error??""}`}}function MNl(){let i=CNl(Gki,Pki),t=[...i.sandboxes.values()].sort((u,l)=>u.handle.localeCompare(l.handle));return CE(t$,{flexDirection:"column",children:[$f(Z0i,{version:J0i.version}),$f(t$,{marginBottom:1,children:$f(u$,{dimColor:!0,children:"\u2500".repeat(80)})}),$f(t$,{children:i.cluster==="linked"?CE(u$,{color:"green",children:["\u2713 Connected to ",i.clusterUrl??"deco"]}):i.cluster==="connecting"?CE(u$,{color:"yellow",children:["\u25CC Connecting to ",i.clusterUrl??"deco","\u2026"]}):CE(u$,{color:"red",children:["\u2717 Disconnected from ",i.clusterUrl??"deco"]})}),$f(t$,{children:i.ingressUrl?CE(u$,{color:"green",children:["\u2713 Serving at ",i.ingressUrl]}):$f(u$,{dimColor:!0,children:"\u25CC Starting local server\u2026"})}),$f(t$,{marginBottom:1,children:$f(u$,{dimColor:!0,children:`${"Computer".padEnd(16)}${i.machine??"this computer"} \xB7 ${t.length} of ${i.cap} previews`})}),t.length===0?$f(u$,{dimColor:!0,children:"No previews running yet."}):CE(t$,{flexDirection:"column",children:[CE(t$,{children:[$f(t$,{width:T0i.project,flexShrink:0,marginRight:1,children:$f(u$,{dimColor:!0,wrap:"truncate-end",children:"PROJECT"})}),$f(t$,{width:T0i.status,flexShrink:0,marginRight:1,children:$f(u$,{dimColor:!0,wrap:"truncate-end",children:"STATUS"})}),$f(t$,{flexGrow:1,children:$f(u$,{dimColor:!0,wrap:"truncate-end",children:"PREVIEW URL"})})]}),t.map((u)=>{let l=eNl(u);return CE(t$,{children:[$f(t$,{width:T0i.project,flexShrink:0,marginRight:1,children:$f(u$,{wrap:"truncate-end",children:u.handle})}),$f(t$,{width:T0i.status,flexShrink:0,marginRight:1,children:$f(u$,{color:l.color,wrap:"truncate-end",children:l.text})}),$f(t$,{flexGrow:1,children:$f(u$,{dimColor:!0,wrap:"truncate-end",children:u.previewUrl??"\u2014"})})]},u.handle)})]}),i.daemonError?$f(t$,{marginTop:1,children:CE(u$,{color:"red",children:["\u26A0 ",i.daemonError]})}):null,i.logPath?$f(t$,{marginTop:1,children:CE(u$,{dimColor:!0,children:["Logs: ",i.logPath]})}):null]})}var T0i;var czt=x(()=>{Qki();Bki();Wki();T0i={project:18,status:14}});var dzt={};Pi(dzt,{runLinkCommand:()=>iJl});import{closeSync as qNl,mkdirSync as VNl,openSync as aNl,writeSync as mNl}from"fs";import{homedir as oNl}from"os";import{join as $zt}from"path";function sNl(i,t){let u={log:console.log,warn:console.warn,error:console.error},l=(n)=>{if(t===void 0)return;try{mNl(t,`${Iki(n)}
|
|
104774
|
+
Shutting down\u2026`),h();try{await w.close()}catch{}try{await f.stop()}catch{}try{await n.shutdown()}catch{}try{E.close()}catch{}r(0)};return process.on("SIGINT",()=>void X()),process.on("SIGTERM",()=>void X()),v=()=>{console.log("Disconnect requested from the Studio web UI \u2014 shutting down. Run `bunx decocms link` to reconnect."),X()},w.closed.then(()=>{if(i.monitor?.onCluster?.("closed"),!y)console.error("Cluster connection closed permanently; exiting."),X()}),{stopped:O,stop:X}}var pSt=x(()=>{XWi();MH();wGt();OGt();XGt();GSt();Uki();CSt();MSt();VSt();eH();oSt()});function Iki(i){return i.map((t)=>typeof t==="string"?t:String(t)).join(" ")}var J0i;var Qki=x(()=>{J0i={name:"decocms",version:"3.34.2",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/mesh"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:'bun run migrate && concurrently "bun run dev:client" "bun run dev:server"',"dev:servers":'concurrently "bun run dev:client" "bun run dev:server"',"dev:client":"vite dev","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts","build:client":"bun --bun vite build","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","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","test:e2e":"playwright test","test:e2e:ui":"playwright test --ui","test:ct":"playwright test -c playwright-ct.config.ts","test:ct:ui":"playwright test -c playwright-ct.config.ts --ui","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts","smoke:link":"bun run scripts/smoke-link.ts",prepublishOnly:"bun run build:client && bun run build:server"},optionalDependencies:{"@anthropic-ai/claude-agent-sdk":"^0.2.141","@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.80","@ai-sdk/google":"^3.0.80","@ai-sdk/openai":"^3.0.65","@anthropic-ai/sdk":"^0.96.0","@aws-sdk/client-s3":"^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.17.6","@dnd-kit/core":"^6.3.1","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@inkjs/ui":"^2.0.0","@modelcontextprotocol/ext-apps":"^1.7.1","@openrouter/ai-sdk-provider":"^2.9.0","@opentelemetry/core":"^2.6.0","@tanstack/react-virtual":"3.13.24","@xterm/addon-fit":"^0.11.0","@xterm/xterm":"^6.0.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12",nats:"^2.29.3","node-pty":"^1.0.0","posthog-js":"^1.371.1","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@ai-sdk/react":"^3.0.193","@better-auth/sso":"1.4.1","@daveyplate/better-auth-ui":"^3.2.7","@deco/ui":"workspace:*","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/harness":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/mesh-sdk":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/std":"workspace:*","@floating-ui/react":"^0.27.16","@happy-dom/global-registrator":"^20.9.0","@hookform/resolvers":"^5.2.2","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@monaco-editor/react":"^4.7.0","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@playwright/experimental-ct-react":"1.59.1","@playwright/test":"^1.58.2","@radix-ui/react-avatar":"^1.1.10","@radix-ui/react-checkbox":"^1.3.3","@radix-ui/react-dialog":"^1.1.15","@radix-ui/react-dropdown-menu":"^2.1.16","@radix-ui/react-label":"^2.1.7","@radix-ui/react-select":"^2.2.6","@radix-ui/react-separator":"^1.1.7","@radix-ui/react-slot":"^1.2.3","@radix-ui/react-tabs":"^1.1.13","@rjsf/core":"^6.1.2","@rjsf/shadcn":"^6.1.2","@rjsf/utils":"^6.1.2","@rjsf/validator-ajv8":"^6.1.2","@tailwindcss/vite":"^4.1.17","@tanstack/react-query":"5.100.10","@tanstack/react-router":"1.169.2","@testing-library/jest-dom":"^6.9.1","@testing-library/react":"^16.3.2","@tiptap/core":"3.20.2","@tiptap/extension-mention":"3.20.2","@tiptap/extension-placeholder":"3.20.2","@tiptap/pm":"3.20.2","@tiptap/react":"3.20.2","@tiptap/starter-kit":"3.20.2","@tiptap/suggestion":"3.20.2","@types/bun":"^1.3.1","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@untitledui/icons":"^0.0.19","@vercel/nft":"^1.1.1","@vitejs/plugin-react":"^5.1.0",ai:"^6.0.191","babel-plugin-react-compiler":"^1.0.0","better-auth":"1.4.22","class-variance-authority":"^0.7.1",clsx:"^2.1.1",concurrently:"^9.2.1",croner:"^9.1.0","date-fns":"^4.1.0",degit:"^2.8.4",hono:"^4.10.7","input-otp":"^1.4.2",jose:"^6.0.11","lucide-react":"^0.468.0",marked:"^15.0.6","mesh-plugin-workflows":"workspace:*",nanoid:"^5.1.6",pg:"^8.16.3",prettier:"^3.4.2","react-hook-form":"^7.66.0","react-markdown":"^10.1.0","react-resizable-panels":"^2.1.7","react-syntax-highlighter":"^15.6.1",recharts:"^3.6.0","rehype-raw":"^7.0.0","remark-gfm":"^4.0.0","sass-embedded":"^1.97.2",sonner:"^2.0.7","tailwind-merge":"^3.3.1",tailwindcss:"^4.1.17",typescript:"^5.9.3",vite:"^7.2.1","vite-tsconfig-paths":"^5.1.4",zod:"^4.0.0",zustand:"^5.0.9"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","mesh","tools"],license:"MIT",publishConfig:{access:"public"}}});var DL={};Pi(DL,{printBanner:()=>ANl,bannerLines:()=>izt,BANNER_LINES:()=>U0i,BANNER_GRADIENT:()=>F0i});function WNl(i){let t=Number.parseInt(i.slice(1),16);return[t>>16&255,t>>8&255,t&255]}function izt(i){let t=U0i.map((u,l)=>{let[n,f,c]=WNl(F0i[l]);return`\x1B[38;2;${n};${f};${c}m${u}\x1B[39m`});if(i!==void 0)t.push(`\x1B[2m v${i}\x1B[22m`);return t}function ANl(i){console.log("");for(let t of izt(i))console.log(t);console.log("")}var U0i,F0i;var jA=x(()=>{U0i=[" \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588 ","\u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588 \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588 "," \u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2588 \u2591 \u2588\u2588\u2588 \u2591\u2591\u2591 \u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2591\u2591\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591 \u2588\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588 "," \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591 ","\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591 "],F0i=["#00ff64","#00ee5e","#00dc56","#00c84e","#00b444","#00a03c","#008832","#006e28"]});import{Box as kNl,Text as tzt}from"ink";import{jsx as jNl,jsxs as uzt}from"react/jsx-runtime";function Z0i({version:i}){return uzt(kNl,{flexDirection:"column",marginTop:1,children:[U0i.map((t,u)=>jNl(tzt,{color:F0i[u],children:t},u)),uzt(tzt,{dimColor:!0,children:[" v",i]})]})}var Bki=x(()=>{jA()});var nzt={};Pi(nzt,{subscribeLinkState:()=>Gki,setMachine:()=>KNl,setLogPath:()=>LNl,setIngress:()=>bNl,setDaemonError:()=>HNl,setClusterUrl:()=>zNl,setCluster:()=>SNl,pushSandboxEvent:()=>RNl,getLinkState:()=>Pki,applySandboxEvent:()=>lzt});function lzt(i,t){let u=new Map(i);if(t.phase==="evicted"||t.phase==="deleted")return u.delete(t.handle),u;let l=u.get(t.handle);return u.set(t.handle,{handle:t.handle,port:t.port??l?.port??null,previewUrl:t.previewUrl??l?.previewUrl??null,status:t.phase,error:t.phase==="failed"?t.error??"failed":null}),u}function s8(){for(let i of Yki)i()}function Pki(){return i$}function Gki(i){return Yki.add(i),()=>Yki.delete(i)}function SNl(i){i$={...i$,cluster:i},s8()}function zNl(i){i$={...i$,clusterUrl:i},s8()}function bNl(i,t){i$={...i$,ingressPort:i,ingressUrl:t},s8()}function KNl(i){i$={...i$,machine:i},s8()}function HNl(i){i$={...i$,daemonError:i},s8()}function LNl(i){i$={...i$,logPath:i},s8()}function RNl(i){i$={...i$,sandboxes:lzt(i$.sandboxes,i)},s8()}var i$,Yki;var Wki=x(()=>{i$={cluster:"connecting",clusterUrl:null,ingressUrl:null,ingressPort:null,machine:null,cap:20,sandboxes:new Map,daemonError:null,logPath:null},Yki=new Set});var fzt={};Pi(fzt,{LinkApp:()=>MNl});import{Box as t$,Text as u$}from"ink";import{useSyncExternalStore as CNl}from"react";import{jsx as $f,jsxs as CE}from"react/jsx-runtime";function eNl(i){if(i.status==="ready")return{color:"green",text:"\u25CF Live"};if(i.status==="spawning")return{color:"yellow",text:"\u25CC Starting\u2026"};return{color:"red",text:`\u2717 Error: ${i.error??""}`}}function MNl(){let i=CNl(Gki,Pki),t=[...i.sandboxes.values()].sort((u,l)=>u.handle.localeCompare(l.handle));return CE(t$,{flexDirection:"column",children:[$f(Z0i,{version:J0i.version}),$f(t$,{marginBottom:1,children:$f(u$,{dimColor:!0,children:"\u2500".repeat(80)})}),$f(t$,{children:i.cluster==="linked"?CE(u$,{color:"green",children:["\u2713 Connected to ",i.clusterUrl??"deco"]}):i.cluster==="connecting"?CE(u$,{color:"yellow",children:["\u25CC Connecting to ",i.clusterUrl??"deco","\u2026"]}):CE(u$,{color:"red",children:["\u2717 Disconnected from ",i.clusterUrl??"deco"]})}),$f(t$,{children:i.ingressUrl?CE(u$,{color:"green",children:["\u2713 Serving at ",i.ingressUrl]}):$f(u$,{dimColor:!0,children:"\u25CC Starting local server\u2026"})}),$f(t$,{marginBottom:1,children:$f(u$,{dimColor:!0,children:`${"Computer".padEnd(16)}${i.machine??"this computer"} \xB7 ${t.length} of ${i.cap} previews`})}),t.length===0?$f(u$,{dimColor:!0,children:"No previews running yet."}):CE(t$,{flexDirection:"column",children:[CE(t$,{children:[$f(t$,{width:T0i.project,flexShrink:0,marginRight:1,children:$f(u$,{dimColor:!0,wrap:"truncate-end",children:"PROJECT"})}),$f(t$,{width:T0i.status,flexShrink:0,marginRight:1,children:$f(u$,{dimColor:!0,wrap:"truncate-end",children:"STATUS"})}),$f(t$,{flexGrow:1,children:$f(u$,{dimColor:!0,wrap:"truncate-end",children:"PREVIEW URL"})})]}),t.map((u)=>{let l=eNl(u);return CE(t$,{children:[$f(t$,{width:T0i.project,flexShrink:0,marginRight:1,children:$f(u$,{wrap:"truncate-end",children:u.handle})}),$f(t$,{width:T0i.status,flexShrink:0,marginRight:1,children:$f(u$,{color:l.color,wrap:"truncate-end",children:l.text})}),$f(t$,{flexGrow:1,children:$f(u$,{dimColor:!0,wrap:"truncate-end",children:u.previewUrl??"\u2014"})})]},u.handle)})]}),i.daemonError?$f(t$,{marginTop:1,children:CE(u$,{color:"red",children:["\u26A0 ",i.daemonError]})}):null,i.logPath?$f(t$,{marginTop:1,children:CE(u$,{dimColor:!0,children:["Logs: ",i.logPath]})}):null]})}var T0i;var czt=x(()=>{Qki();Bki();Wki();T0i={project:18,status:14}});var dzt={};Pi(dzt,{runLinkCommand:()=>iJl});import{closeSync as qNl,mkdirSync as VNl,openSync as aNl,writeSync as mNl}from"fs";import{homedir as oNl}from"os";import{join as $zt}from"path";function sNl(i,t){let u={log:console.log,warn:console.warn,error:console.error},l=(n)=>{if(t===void 0)return;try{mNl(t,`${Iki(n)}
|
|
104775
104775
|
`)}catch{}};return console.log=(...n)=>l(n),console.warn=(...n)=>l(n),console.error=(...n)=>{l(n),i(Iki(n))},()=>{console.log=u.log,console.warn=u.warn,console.error=u.error}}async function pNl(i,t){let u;try{u=await fetch(`${i}/api/links/me`,{headers:{authorization:`Bearer ${t}`},signal:AbortSignal.timeout(1e4)})}catch{return}if(u.status===401||u.status===403)throw Error(`Authentication rejected by ${i} \u2014 the session token was not accepted. `+`Run \`deco auth login --target ${i}\` and try again.`)}async function iJl(i={}){let t=i.port??5174,u=i.dataDir??process.env.DATA_DIR??process.env.DECOCMS_HOME??$zt(oNl(),"deco"),l=i.clusterBaseUrl??process.env.MESH_CLUSTER_URL??"https://studio.decocms.com",n,f;try{let c=await cli({dataDir:u,intent:"Link",target:l});if(process.env.DECOCMS_LINK_MANAGED!=="1")await pNl(l,c.accessToken);let $;if(i.tui){let{render:g}=await import("ink"),{createElement:h}=await import("react"),{LinkApp:E}=await Promise.resolve().then(() => (czt(),fzt)),{pushSandboxEvent:v,setCluster:w,setClusterUrl:r,setDaemonError:O,setIngress:y,setLogPath:X,setMachine:N}=await Promise.resolve().then(() => (Wki(),nzt));VNl(u,{recursive:!0});let U=$zt(u,"link.log");f=aNl(U,"w"),X(U),r(l),w("connecting"),$={onEvent:(J)=>v(J),onIngress:(J)=>y(J,`http://127.0.0.1:${J}`),onCluster:(J)=>w(J),onMachine:(J)=>N(J)},n=sNl(O,f),g(h(E),{patchConsole:!1})}else if(i.banner!==!1){let{printBanner:g}=await Promise.resolve().then(() => (jA(),DL));g(i.version??"0.0.0")}let d=process.env.DECOCMS_LINK_MANAGED!=="1";return await(await sSt({port:t,clusterBaseUrl:l,dataDir:u,session:c,monitor:$,logFd:f,perSandboxLogs:d,hotReload:i.hotReload})).stopped}catch(c){return n?.(),console.error(c instanceof Error?c.message:String(c)),1}finally{if(n?.(),f!==void 0)try{qNl(f)}catch{}}}var _zt=x(()=>{yWi();pSt()});var bki={};Pi(bki,{resolveDevLinkClusterUrl:()=>nJl,populateDevLinkToxiProxy:()=>xzt,isDevLinkToxiProxyEnabled:()=>lJl,ensureDevLinkToxiProxy:()=>_Jl,buildDevLinkToxiProxyConfig:()=>vzt,DEV_LINK_TOXIPROXY_SERVICE_NAME:()=>hzt,DEV_LINK_TOXIPROXY_PROXY_NAME:()=>Ezt});function lJl(i=process.env){return i.DECO_DEV_LINK_TOXIPROXY==="1"}function Aki(i,t){if(!Number.isInteger(i)||i<1||i>65535)throw Error(`${t} must be an integer port in 1..65535`);return i}function vzt(i){let t=new URL(i.serverUrl);if(t.protocol!=="http:")throw Error("DECO_DEV_LINK_TOXIPROXY only supports http local Studio URLs");let u=Aki(i.apiPort,"apiPort"),l=Aki(i.listenPort,"listenPort");if(t.port.length===0)throw Error("serverUrl must include an explicit valid port");let n=Aki(Number.parseInt(t.port,10),"upstreamPort"),f=`http://127.0.0.1:${n}`,c=`http://127.0.0.1:${l}`;return{serviceName:hzt,proxyName:Ezt,apiUrl:`http://127.0.0.1:${u}`,listen:`0.0.0.0:${l}`,upstream:`host.docker.internal:${n}`,publicTargetUrl:f,clusterUrl:c,logLine:`[dev-link-toxiproxy] ready: ${c} -> ${f}`}}function nJl(i){return i.toxiproxy?.clusterUrl??i.serverUrl}async function kki(i,t,u){if(i.ok)return;let l=await i.text();throw Error(`ToxiProxy ${t} failed for ${u}: status=${i.status} statusText=${i.statusText} body=${l}`)}function zki(i){if(i instanceof Error)return i.name==="Error"?i.message:`${i.name}: ${i.message}`;return String(i)}function wzt(i){if(!(i instanceof Error))return!1;if(i.name==="TimeoutError")return!0;return wzt(i.cause)}async function jki(i,t,u,l){try{return await i(u,l)}catch(n){throw Error(`ToxiProxy ${t} failed for ${u}: ${zki(n)}`,{cause:n})}}async function xzt(i,t=fetch){let u=`${i.apiUrl}/reset`,l=await jki(t,"reset",u,{method:"POST"});await kki(l,"reset",u);let n=`${i.apiUrl}/populate`,f=await jki(t,"populate",n,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify([{name:i.proxyName,listen:i.listen,upstream:i.upstream,enabled:!0}])});await kki(f,"populate",n)}async function fJl(i,t){let u=`${i.apiUrl}/version`;try{await F3(async()=>{let l=await jki(t,"readiness check",u,{method:"GET",signal:AbortSignal.timeout(uJl)});await kki(l,"readiness check",u)},{maxAttempts:tJl,minTimeout:gzt,maxTimeout:gzt,multiplier:1,jitter:0,isRetriable:(l)=>!wzt(l)})}catch(l){let n=l instanceof F6?l.cause:l;throw Error(`ToxiProxy API did not become ready at ${u}: ${zki(n)}`,{cause:n})}}async function cJl(i){if(i===null)return"";return await new Response(i).text()}async function Ski(i,t={}){let u=["docker",...i].join(" "),l=(()=>{try{return Bun.spawn(["docker",...i],{stdout:"ignore",stderr:"pipe"})}catch($){throw Error(`Docker command failed to start (${u}): ${zki($)}`,{cause:$})}})(),[n,f]=await Promise.all([l.exited,cJl(l.stderr)]);if(n===0||t.ignoreFailure===!0)return;let c=f.trim().length>0?`: ${f.trim()}`:"";throw Error(`Docker command failed (${u}) with exit ${n}${c}`)}async function $Jl(i,t){let u=`deco-dev-link-toxiproxy-${i}`;await Ski(["rm","-f",u],{ignoreFailure:!0}),await Ski(["run","--rm","-d","--name",u,"-p",`127.0.0.1:${i}:8474`,"-p",`127.0.0.1:${t}:${t}`,"ghcr.io/shopify/toxiproxy:2.12.0","-host=0.0.0.0"])}async function dJl(i,t){let u=`deco-dev-link-toxiproxy-${i}`;await Ski(["rm","-f",u],{ignoreFailure:!0})}async function _Jl(i){let t=vzt(i),u=i.startDaemon??$Jl,l=i.stopDaemon??(i.startDaemon===void 0?dJl:void 0);await u(i.apiPort,i.listenPort);let n=i.fetchImpl??fetch;try{await fJl(t,n),await xzt(t,n)}catch(f){if(l!==void 0)try{await l(i.apiPort,i.listenPort)}catch{}throw f}return{config:t,stop:async()=>{if(l!==void 0)await l(i.apiPort,i.listenPort)}}}var hzt="ToxiProxy",Ezt="dev_link_studio",tJl=20,gzt=100,uJl=100;var Kki=x(()=>{H1()});var rzt={};Pi(rzt,{migrateBetterAuth:()=>Hki});import{getMigrations as gJl}from"better-auth/db";import{sso as hJl}from"@better-auth/sso";import{organization as EJl}from"@decocms/better-auth/plugins";import{admin as vJl,apiKey as wJl,jwt as xJl,magicLink as rJl,mcp as DJl,openAPI as OJl}from"better-auth/plugins";import{emailOTP as yJl}from"better-auth/plugins/email-otp";async function Hki(i){let u={database:KH(i||Ax()),plugins:[EJl({dynamicAccessControl:{enabled:!0,enableCustomResources:!0}}),vJl(),wJl(),xJl(),OJl(),DJl({loginPage:"/login"}),hJl(),rJl({sendMagicLink:async()=>{}}),yJl({sendVerificationOTP:async()=>{}})]},{toBeAdded:l,toBeCreated:n,runMigrations:f}=await gJl(u);if(!l.length&&!n.length)return"up to date";return await f(),`${n.length+l.length} table(s) migrated`}var Lki=x(()=>{j$()});var Rki={};Pi(Rki,{up:()=>XJl,down:()=>NJl});import{sql as eE}from"kysely";async function XJl(i){await i.schema.createTable("connections").addColumn("id","text",(t)=>t.primaryKey()).addColumn("organizationId","text",(t)=>t.notNull().references("organization.id").onDelete("cascade")).addColumn("createdById","text",(t)=>t.notNull().references("user.id").onDelete("cascade")).addColumn("name","text",(t)=>t.notNull()).addColumn("description","text").addColumn("icon","text").addColumn("appName","text").addColumn("appId","text").addColumn("connectionType","text",(t)=>t.notNull()).addColumn("connectionUrl","text",(t)=>t.notNull()).addColumn("connectionToken","text").addColumn("connectionHeaders","text").addColumn("oauthConfig","text").addColumn("metadata","text").addColumn("tools","text").addColumn("bindings","text").addColumn("status","text",(t)=>t.notNull().defaultTo("active")).addColumn("createdAt","text",(t)=>t.notNull().defaultTo(eE`CURRENT_TIMESTAMP`)).addColumn("updatedAt","text",(t)=>t.notNull().defaultTo(eE`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("api_keys").addColumn("id","text",(t)=>t.primaryKey()).addColumn("userId","text",(t)=>t.notNull().references("user.id").onDelete("cascade")).addColumn("name","text",(t)=>t.notNull()).addColumn("hashedKey","text",(t)=>t.notNull().unique()).addColumn("permissions","text",(t)=>t.notNull()).addColumn("expiresAt","text").addColumn("remaining","integer").addColumn("metadata","text").addColumn("createdAt","text",(t)=>t.notNull().defaultTo(eE`CURRENT_TIMESTAMP`)).addColumn("updatedAt","text",(t)=>t.notNull().defaultTo(eE`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("audit_logs").addColumn("id","text",(t)=>t.primaryKey()).addColumn("organizationId","text").addColumn("userId","text",(t)=>t.references("user.id").onDelete("set null")).addColumn("connectionId","text",(t)=>t.references("connections.id").onDelete("set null")).addColumn("toolName","text",(t)=>t.notNull()).addColumn("allowed","integer",(t)=>t.notNull()).addColumn("duration","integer").addColumn("timestamp","text",(t)=>t.notNull().defaultTo(eE`CURRENT_TIMESTAMP`)).addColumn("requestMetadata","text").execute(),await i.schema.createTable("oauth_clients").addColumn("id","text",(t)=>t.primaryKey()).addColumn("clientId","text",(t)=>t.notNull().unique()).addColumn("clientSecret","text").addColumn("clientName","text",(t)=>t.notNull()).addColumn("redirectUris","text",(t)=>t.notNull()).addColumn("grantTypes","text",(t)=>t.notNull()).addColumn("scope","text").addColumn("clientUri","text").addColumn("logoUri","text").addColumn("createdAt","text",(t)=>t.notNull().defaultTo(eE`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("oauth_authorization_codes").addColumn("code","text",(t)=>t.primaryKey()).addColumn("clientId","text",(t)=>t.notNull().references("oauth_clients.clientId").onDelete("cascade")).addColumn("userId","text",(t)=>t.notNull().references("user.id").onDelete("cascade")).addColumn("redirectUri","text",(t)=>t.notNull()).addColumn("scope","text").addColumn("codeChallenge","text").addColumn("codeChallengeMethod","text").addColumn("expiresAt","text",(t)=>t.notNull()).addColumn("createdAt","text",(t)=>t.notNull().defaultTo(eE`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("oauth_refresh_tokens").addColumn("token","text",(t)=>t.primaryKey()).addColumn("clientId","text",(t)=>t.notNull().references("oauth_clients.clientId").onDelete("cascade")).addColumn("userId","text",(t)=>t.notNull().references("user.id").onDelete("cascade")).addColumn("scope","text").addColumn("expiresAt","text").addColumn("createdAt","text",(t)=>t.notNull().defaultTo(eE`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("downstream_tokens").addColumn("id","text",(t)=>t.primaryKey()).addColumn("connectionId","text",(t)=>t.notNull().references("connections.id").onDelete("cascade")).addColumn("userId","text",(t)=>t.references("user.id").onDelete("cascade")).addColumn("accessToken","text",(t)=>t.notNull()).addColumn("refreshToken","text").addColumn("scope","text").addColumn("expiresAt","text").addColumn("createdAt","text",(t)=>t.notNull().defaultTo(eE`CURRENT_TIMESTAMP`)).addColumn("updatedAt","text",(t)=>t.notNull().defaultTo(eE`CURRENT_TIMESTAMP`)).execute(),await i.schema.createIndex("idx_connections_organizationId").on("connections").column("organizationId").execute(),await i.schema.createIndex("idx_audit_logs_organizationId").on("audit_logs").column("organizationId").execute(),await i.schema.createIndex("idx_audit_logs_userId").on("audit_logs").column("userId").execute(),await i.schema.createIndex("idx_audit_logs_timestamp").on("audit_logs").column("timestamp").execute()}async function NJl(i){await i.schema.dropTable("downstream_tokens").execute(),await i.schema.dropTable("oauth_refresh_tokens").execute(),await i.schema.dropTable("oauth_authorization_codes").execute(),await i.schema.dropTable("oauth_clients").execute(),await i.schema.dropTable("audit_logs").execute(),await i.schema.dropTable("api_keys").execute(),await i.schema.dropTable("connections").execute()}var Dzt=()=>{};var Cki={};Pi(Cki,{up:()=>JJl,down:()=>UJl});import{sql as Ozt}from"kysely";async function JJl(i){await i.schema.createTable("organization_settings").addColumn("organizationId","text",(t)=>t.primaryKey().references("organization.id").onDelete("cascade")).addColumn("modelsBindingConnectionId","text",(t)=>t.references("connections.id").onDelete("set null")).addColumn("createdAt","text",(t)=>t.notNull().defaultTo(Ozt`CURRENT_TIMESTAMP`)).addColumn("updatedAt","text",(t)=>t.notNull().defaultTo(Ozt`CURRENT_TIMESTAMP`)).execute()}async function UJl(i){await i.schema.dropTable("organization_settings").execute()}var yzt=()=>{};var eki={};Pi(eki,{up:()=>FJl,down:()=>ZJl});async function FJl(i){await i.schema.alterTable("connections").renameColumn("name","title").execute(),await i.schema.alterTable("connections").renameColumn("createdById","created_by").execute(),await i.schema.alterTable("connections").renameColumn("createdAt","created_at").execute(),await i.schema.alterTable("connections").renameColumn("updatedAt","updated_at").execute(),await i.schema.alterTable("connections").renameColumn("organizationId","organization_id").execute(),await i.schema.alterTable("connections").renameColumn("connectionType","connection_type").execute(),await i.schema.alterTable("connections").renameColumn("connectionUrl","connection_url").execute(),await i.schema.alterTable("connections").renameColumn("connectionToken","connection_token").execute(),await i.schema.alterTable("connections").renameColumn("connectionHeaders","connection_headers").execute(),await i.schema.alterTable("connections").renameColumn("oauthConfig","oauth_config").execute(),await i.schema.alterTable("connections").renameColumn("appName","app_name").execute(),await i.schema.alterTable("connections").renameColumn("appId","app_id").execute()}async function ZJl(i){await i.schema.alterTable("connections").renameColumn("title","name").execute(),await i.schema.alterTable("connections").renameColumn("created_by","createdById").execute(),await i.schema.alterTable("connections").renameColumn("created_at","createdAt").execute(),await i.schema.alterTable("connections").renameColumn("updated_at","updatedAt").execute(),await i.schema.alterTable("connections").renameColumn("organization_id","organizationId").execute(),await i.schema.alterTable("connections").renameColumn("connection_type","connectionType").execute(),await i.schema.alterTable("connections").renameColumn("connection_url","connectionUrl").execute(),await i.schema.alterTable("connections").renameColumn("connection_token","connectionToken").execute(),await i.schema.alterTable("connections").renameColumn("connection_headers","connectionHeaders").execute(),await i.schema.alterTable("connections").renameColumn("oauth_config","oauthConfig").execute(),await i.schema.alterTable("connections").renameColumn("app_name","appName").execute(),await i.schema.alterTable("connections").renameColumn("app_id","appId").execute()}var Mki={};Pi(Mki,{up:()=>TJl,down:()=>IJl});async function TJl(i){await i.schema.createTable("organization_settings_new").addColumn("organizationId","text",(t)=>t.primaryKey().references("organization.id").onDelete("cascade")).addColumn("createdAt","text",(t)=>t.notNull()).addColumn("updatedAt","text",(t)=>t.notNull()).execute(),await i.insertInto("organization_settings_new").columns(["organizationId","createdAt","updatedAt"]).expression((t)=>t.selectFrom("organization_settings").select(["organizationId","createdAt","updatedAt"])).execute(),await i.schema.dropTable("organization_settings").execute(),await i.schema.alterTable("organization_settings_new").renameTo("organization_settings").execute()}async function IJl(i){await i.schema.createTable("organization_settings_new").addColumn("organizationId","text",(t)=>t.primaryKey().references("organization.id").onDelete("cascade")).addColumn("modelsBindingConnectionId","text",(t)=>t.references("connections.id").onDelete("set null")).addColumn("createdAt","text",(t)=>t.notNull()).addColumn("updatedAt","text",(t)=>t.notNull()).execute(),await i.insertInto("organization_settings_new").columns(["organizationId","modelsBindingConnectionId","createdAt","updatedAt"]).expression((t)=>t.selectFrom("organization_settings").select(["organizationId",t.val(null).as("modelsBindingConnectionId"),"createdAt","updatedAt"])).execute(),await i.schema.dropTable("organization_settings").execute(),await i.schema.alterTable("organization_settings_new").renameTo("organization_settings").execute()}var qki={};Pi(qki,{up:()=>QJl,down:()=>BJl});async function QJl(i){await i.schema.alterTable("connections").addColumn("configuration_state","text").execute(),await i.schema.alterTable("connections").addColumn("configuration_scopes","text").execute()}async function BJl(i){await i.schema.alterTable("connections").dropColumn("configuration_state").execute(),await i.schema.alterTable("connections").dropColumn("configuration_scopes").execute()}var Vki={};Pi(Vki,{up:()=>PJl,down:()=>GJl});import{sql as YJl}from"kysely";async function PJl(i){await i.schema.alterTable("organization_settings").addColumn("sidebar_items",YJl`text`).execute()}async function GJl(i){await i.schema.alterTable("organization_settings").dropColumn("sidebar_items").execute()}var Xzt=()=>{};var aki={};Pi(aki,{up:()=>WJl,down:()=>AJl});async function WJl(i){await i.schema.createTable("monitoring_logs").addColumn("id","text",(t)=>t.primaryKey()).addColumn("organization_id","text",(t)=>t.notNull().references("organization.id").onDelete("cascade")).addColumn("connection_id","text",(t)=>t.notNull().references("connections.id").onDelete("cascade")).addColumn("connection_title","text",(t)=>t.notNull()).addColumn("tool_name","text",(t)=>t.notNull()).addColumn("input","text",(t)=>t.notNull()).addColumn("output","text",(t)=>t.notNull()).addColumn("is_error","integer",(t)=>t.notNull()).addColumn("error_message","text").addColumn("duration_ms","integer",(t)=>t.notNull()).addColumn("timestamp","text",(t)=>t.notNull()).addColumn("user_id","text").addColumn("request_id","text",(t)=>t.notNull()).execute(),await i.schema.createIndex("monitoring_logs_org_timestamp").on("monitoring_logs").columns(["organization_id","timestamp"]).execute(),await i.schema.createIndex("monitoring_logs_connection_timestamp").on("monitoring_logs").columns(["connection_id","timestamp"]).execute(),await i.schema.createIndex("monitoring_logs_is_error").on("monitoring_logs").columns(["organization_id","is_error","timestamp"]).execute()}async function AJl(i){await i.schema.dropIndex("monitoring_logs_is_error").execute(),await i.schema.dropIndex("monitoring_logs_connection_timestamp").execute(),await i.schema.dropIndex("monitoring_logs_org_timestamp").execute(),await i.schema.dropTable("monitoring_logs").execute()}var mki={};Pi(mki,{up:()=>kJl,down:()=>jJl});import{sql as OL}from"kysely";async function kJl(i){await i.schema.createTable("events").addColumn("id","text",(t)=>t.primaryKey()).addColumn("organization_id","text",(t)=>t.notNull().references("organization.id").onDelete("cascade")).addColumn("type","text",(t)=>t.notNull()).addColumn("source","text",(t)=>t.notNull()).addColumn("specversion","text",(t)=>t.notNull().defaultTo("1.0")).addColumn("subject","text").addColumn("time","text",(t)=>t.notNull()).addColumn("datacontenttype","text",(t)=>t.notNull().defaultTo("application/json")).addColumn("dataschema","text").addColumn("data","text").addColumn("cron","varchar(255)").addColumn("status","text",(t)=>t.notNull().defaultTo("pending")).addColumn("attempts","integer",(t)=>t.notNull().defaultTo(0)).addColumn("last_error","text").addColumn("next_retry_at","text").addColumn("created_at","text",(t)=>t.notNull().defaultTo(OL`CURRENT_TIMESTAMP`)).addColumn("updated_at","text",(t)=>t.notNull().defaultTo(OL`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("event_subscriptions").addColumn("id","text",(t)=>t.primaryKey()).addColumn("organization_id","text",(t)=>t.notNull().references("organization.id").onDelete("cascade")).addColumn("connection_id","text",(t)=>t.notNull().references("connections.id").onDelete("cascade")).addColumn("publisher","text").addColumn("event_type","text",(t)=>t.notNull()).addColumn("filter","text").addColumn("enabled","integer",(t)=>t.notNull().defaultTo(1)).addColumn("created_at","text",(t)=>t.notNull().defaultTo(OL`CURRENT_TIMESTAMP`)).addColumn("updated_at","text",(t)=>t.notNull().defaultTo(OL`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("event_deliveries").addColumn("id","text",(t)=>t.primaryKey()).addColumn("event_id","text",(t)=>t.notNull()).addColumn("subscription_id","text",(t)=>t.notNull().references("event_subscriptions.id").onDelete("cascade")).addColumn("status","text",(t)=>t.notNull().defaultTo("pending")).addColumn("attempts","integer",(t)=>t.notNull().defaultTo(0)).addColumn("last_error","text").addColumn("delivered_at","text").addColumn("next_retry_at","text").addColumn("created_at","text",(t)=>t.notNull().defaultTo(OL`CURRENT_TIMESTAMP`)).execute(),await i.schema.createIndex("idx_events_org_status").on("events").columns(["organization_id","status"]).execute(),await i.schema.createIndex("idx_events_source").on("events").columns(["source"]).execute(),await i.schema.createIndex("idx_events_type").on("events").columns(["type"]).execute(),await i.schema.createIndex("idx_events_retry").on("events").columns(["status","next_retry_at"]).execute(),await i.schema.createIndex("idx_subscriptions_connection").on("event_subscriptions").columns(["connection_id"]).execute(),await i.schema.createIndex("idx_subscriptions_type").on("event_subscriptions").columns(["event_type"]).execute(),await i.schema.createIndex("idx_subscriptions_org_enabled").on("event_subscriptions").columns(["organization_id","enabled"]).execute(),await i.schema.createIndex("idx_subscriptions_unique").on("event_subscriptions").columns(["connection_id","event_type","publisher","filter"]).unique().execute(),await i.schema.createIndex("idx_deliveries_event").on("event_deliveries").columns(["event_id"]).execute(),await i.schema.createIndex("idx_deliveries_subscription_status").on("event_deliveries").columns(["subscription_id","status"]).execute(),await i.schema.createIndex("idx_deliveries_retry").on("event_deliveries").columns(["status","next_retry_at"]).execute()}async function jJl(i){await i.schema.dropIndex("idx_deliveries_retry").execute(),await i.schema.dropIndex("idx_deliveries_subscription_status").execute(),await i.schema.dropIndex("idx_deliveries_event").execute(),await i.schema.dropIndex("idx_subscriptions_unique").execute(),await i.schema.dropIndex("idx_subscriptions_org_enabled").execute(),await i.schema.dropIndex("idx_subscriptions_type").execute(),await i.schema.dropIndex("idx_subscriptions_connection").execute(),await i.schema.dropIndex("idx_events_retry").execute(),await i.schema.dropIndex("idx_events_type").execute(),await i.schema.dropIndex("idx_events_source").execute(),await i.schema.dropIndex("idx_events_org_status").execute(),await i.schema.dropTable("event_deliveries").execute(),await i.schema.dropTable("event_subscriptions").execute(),await i.schema.dropTable("events").execute()}var Nzt=()=>{};var oki={};Pi(oki,{up:()=>zJl,down:()=>bJl});import{sql as SJl}from"kysely";async function zJl(i){await i.schema.dropTable("audit_logs").ifExists().execute()}async function bJl(i){await i.schema.createTable("audit_logs").ifNotExists().addColumn("id","text",(t)=>t.primaryKey()).addColumn("organizationId","text").addColumn("userId","text",(t)=>t.references("user.id").onDelete("set null")).addColumn("connectionId","text",(t)=>t.references("connections.id").onDelete("set null")).addColumn("toolName","text",(t)=>t.notNull()).addColumn("allowed","integer",(t)=>t.notNull()).addColumn("duration","integer").addColumn("timestamp","text",(t)=>t.notNull().defaultTo(SJl`CURRENT_TIMESTAMP`)).addColumn("requestMetadata","text").execute(),await i.schema.createIndex("idx_audit_logs_organizationId").on("audit_logs").column("organizationId").execute(),await i.schema.createIndex("idx_audit_logs_userId").on("audit_logs").column("userId").execute(),await i.schema.createIndex("idx_audit_logs_timestamp").on("audit_logs").column("timestamp").execute()}var Jzt=()=>{};var ski={};Pi(ski,{up:()=>KJl,down:()=>HJl});import{sql as I0i}from"kysely";async function KJl(i){await i.schema.createTable("gateways").addColumn("id","text",(t)=>t.primaryKey()).addColumn("organization_id","text",(t)=>t.notNull().references("organization.id").onDelete("cascade")).addColumn("title","text",(t)=>t.notNull()).addColumn("description","text").addColumn("tool_selection_strategy","text").addColumn("status","text",(t)=>t.notNull().defaultTo("active")).addColumn("is_default","integer",(t)=>t.notNull().defaultTo(0)).addColumn("created_at","text",(t)=>t.notNull().defaultTo(I0i`CURRENT_TIMESTAMP`)).addColumn("updated_at","text",(t)=>t.notNull().defaultTo(I0i`CURRENT_TIMESTAMP`)).addColumn("created_by","text",(t)=>t.notNull().references("user.id").onDelete("cascade")).addColumn("updated_by","text").execute(),await i.schema.createTable("gateway_connections").addColumn("id","text",(t)=>t.primaryKey()).addColumn("gateway_id","text",(t)=>t.notNull().references("gateways.id").onDelete("cascade")).addColumn("connection_id","text",(t)=>t.notNull().references("connections.id").onDelete("cascade")).addColumn("selected_tools","text").addColumn("created_at","text",(t)=>t.notNull().defaultTo(I0i`CURRENT_TIMESTAMP`)).execute(),await i.schema.createIndex("idx_gateways_org").on("gateways").columns(["organization_id"]).execute(),await i.schema.createIndex("idx_gateways_org_status").on("gateways").columns(["organization_id","status"]).execute(),await I0i`CREATE UNIQUE INDEX idx_gateways_default_per_org ON gateways (organization_id) WHERE is_default = 1`.execute(i),await i.schema.createIndex("idx_gateway_connections_gateway").on("gateway_connections").columns(["gateway_id"]).execute(),await i.schema.createIndex("idx_gateway_connections_connection").on("gateway_connections").columns(["connection_id"]).execute(),await i.schema.createIndex("idx_gateway_connections_unique").on("gateway_connections").columns(["gateway_id","connection_id"]).unique().execute()}async function HJl(i){await i.schema.dropIndex("idx_gateway_connections_unique").execute(),await i.schema.dropIndex("idx_gateway_connections_connection").execute(),await i.schema.dropIndex("idx_gateway_connections_gateway").execute(),await i.schema.dropIndex("idx_gateways_default_per_org").execute(),await i.schema.dropIndex("idx_gateways_org_status").execute(),await i.schema.dropIndex("idx_gateways_org").execute(),await i.schema.dropTable("gateway_connections").execute(),await i.schema.dropTable("gateways").execute()}var Uzt=()=>{};var pki={};Pi(pki,{up:()=>LJl,down:()=>RJl});async function LJl(i){await i.schema.alterTable("gateways").addColumn("icon","text").execute()}async function RJl(i){await i.schema.alterTable("gateways").dropColumn("icon").execute()}var iji={};Pi(iji,{up:()=>CJl,down:()=>eJl});import{sql as Q0i}from"kysely";async function CJl(i){await i.schema.alterTable("gateways").addColumn("tool_selection_mode","text",(t)=>t.notNull().defaultTo("inclusion")).execute(),await Q0i`
|
|
104776
104776
|
UPDATE gateways
|
|
104777
104777
|
SET tool_selection_mode = CASE
|