decocms 4.319.11 → 4.319.12
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-C8XDzPRu.js → AlertCircle-ClToruK0.js} +1 -1
- package/dist/client/assets/{AreaChart-BFuLhEAJ.js → AreaChart-BfrQSNFq.js} +1 -1
- package/dist/client/assets/{ArrowLeft-CTfYqAeL.js → ArrowLeft-B4E-Sahc.js} +1 -1
- package/dist/client/assets/{ArrowUp-Dndx_psT.js → ArrowUp-CNhm6eFH.js} +1 -1
- package/dist/client/assets/{Check-Bxq3sAMT.js → Check-PMgjjdTe.js} +1 -1
- package/dist/client/assets/{CheckCircle-OPjRGmHJ.js → CheckCircle-RBxlsZl2.js} +1 -1
- package/dist/client/assets/{ChevronDown-B78Z7JhJ.js → ChevronDown-oY26mbX7.js} +1 -1
- package/dist/client/assets/{ChevronRight-DoxpMYgv.js → ChevronRight-BEHZ6NZL.js} +1 -1
- package/dist/client/assets/{ChevronSelectorVertical-CqkEIUhB.js → ChevronSelectorVertical-JcGnBvEL.js} +1 -1
- package/dist/client/assets/{ChevronUp-BLvCCCZc.js → ChevronUp-BZirzRB6.js} +1 -1
- package/dist/client/assets/{Copy01-CS_So4Uz.js → Copy01-B_2vcBlF.js} +1 -1
- package/dist/client/assets/{CreditCard01-CpyYSvQ3.js → CreditCard01-ChimmSCJ.js} +1 -1
- package/dist/client/assets/{DotsVertical-CL1uf5Bu.js → DotsVertical-Cft1i3iA.js} +1 -1
- package/dist/client/assets/{Download01-CxWUyG_X.js → Download01-CA2CYlYl.js} +1 -1
- package/dist/client/assets/{ErrorBarContext-BOZ7dcPi.js → ErrorBarContext-Cm9VzL4a.js} +1 -1
- package/dist/client/assets/{Eye-CmND_DBa.js → Eye-DVnZY3NV.js} +1 -1
- package/dist/client/assets/{FilterLines-CSE_Ogu_.js → FilterLines-DrGmxI0g.js} +1 -1
- package/dist/client/assets/{GitBranch01-D_a1MiQQ.js → GitBranch01-DQckacwW.js} +1 -1
- package/dist/client/assets/{Globe01-Cm4DSICd.js → Globe01-jbXb6ulu.js} +1 -1
- package/dist/client/assets/{Globe04-DbBcV-E2.js → Globe04-xCK3nTmA.js} +1 -1
- package/dist/client/assets/{HardDrive-B4mHXAle.js → HardDrive-C9KdcNlI.js} +1 -1
- package/dist/client/assets/{Image01-DDlYl6aL.js → Image01-CRujAxHg.js} +1 -1
- package/dist/client/assets/{Key01-GYKWVO36.js → Key01-DK8RhZHE.js} +1 -1
- package/dist/client/assets/{LinkExternal01-BiUY26Aw.js → LinkExternal01-BtC-p5Va.js} +1 -1
- package/dist/client/assets/{LockUnlocked01-DDHVAeu0.js → LockUnlocked01-B2L4GLRl.js} +1 -1
- package/dist/client/assets/{LogOut01-L3qCYWBe.js → LogOut01-D5WcJfJs.js} +1 -1
- package/dist/client/assets/{Monitor01-DDDZk1T8.js → Monitor01-CQH6tCva.js} +1 -1
- package/dist/client/assets/{Package-BQ4aGZ5C.js → Package-CORPPwT-.js} +1 -1
- package/dist/client/assets/{Palette-CMzcklHM.js → Palette-dFQD8LKQ.js} +1 -1
- package/dist/client/assets/{Play-DjvcK07v.js → Play-CcGw_Uni.js} +1 -1
- package/dist/client/assets/{Plus-DD6ql5SQ.js → Plus-bwHRKSue.js} +1 -1
- package/dist/client/assets/{SearchLg-DrCbydJX.js → SearchLg-kHGYPtIw.js} +1 -1
- package/dist/client/assets/{SearchMd-CYXNgks8.js → SearchMd-CrM8FgeA.js} +1 -1
- package/dist/client/assets/{Sector-DxIBB5iA.js → Sector-vmxMniJ8.js} +1 -1
- package/dist/client/assets/{Settings02-BkuHKQTT.js → Settings02-gqR-NFC9.js} +1 -1
- package/dist/client/assets/{Share07-DFkS5ZA9.js → Share07-BJMsRk6Q.js} +1 -1
- package/dist/client/assets/{Shield01-BqNKNsE_.js → Shield01-B3IGGfe8.js} +1 -1
- package/dist/client/assets/{Stars01-DLcNnYnQ.js → Stars01-CyIrFIKT.js} +1 -1
- package/dist/client/assets/{Stars02-DpgnX4j3.js → Stars02-CgssSvzZ.js} +1 -1
- package/dist/client/assets/{Sun-Cfdg0-fN.js → Sun-BFVshSLm.js} +1 -1
- package/dist/client/assets/{SwitchHorizontal01-CDfbzUMe.js → SwitchHorizontal01-CmezVjc5.js} +1 -1
- package/dist/client/assets/{Tool01-BkIa9J-T.js → Tool01-DP7l3n3Y.js} +1 -1
- package/dist/client/assets/{Tool02-LyDsiEcj.js → Tool02-BvJSq7kS.js} +1 -1
- package/dist/client/assets/{Trash01-DMEyL-_r.js → Trash01-8aRDtn4y.js} +1 -1
- package/dist/client/assets/{TrendUp01-CRVwTA9x.js → TrendUp01-iZTQHtO4.js} +1 -1
- package/dist/client/assets/{Upload01-BXETp31V.js → Upload01-zJC35Q7D.js} +1 -1
- package/dist/client/assets/{User01--NR0wcxR.js → User01-Cg1rezA0.js} +1 -1
- package/dist/client/assets/{UserSquare-BDMyjzaF.js → UserSquare-Bxd4pDXm.js} +1 -1
- package/dist/client/assets/{Users01-CYdUUADt.js → Users01-BjZALObG.js} +1 -1
- package/dist/client/assets/{Users03-BJfM2ts1.js → Users03-DLm7BQsJ.js} +1 -1
- package/dist/client/assets/{XCircle-D1lTnv45.js → XCircle-DQCubZzT.js} +1 -1
- package/dist/client/assets/{XClose-7CTyOeCs.js → XClose-DAiJgSzs.js} +1 -1
- package/dist/client/assets/{YAxis-BZmDD3lJ.js → YAxis-Dcyix6od.js} +1 -1
- package/dist/client/assets/{Zap-Bzfi7ZdU.js → Zap-DnE9jTWD.js} +1 -1
- package/dist/client/assets/{ZapSquare-C6EnYa3u.js → ZapSquare-CqhgOeLt.js} +1 -1
- package/dist/client/assets/{ZoomOut-BQOaUyto.js → ZoomOut-nXvYYjVw.js} +1 -1
- package/dist/client/assets/{access-gate-3UKF-T20.js → access-gate-_zqgY-K4.js} +1 -1
- package/dist/client/assets/{agent-icon-CEcN5Ilk.js → agent-icon-CqMkVI2H.js} +1 -1
- package/dist/client/assets/{agents-list-DW-wbAoT.js → agents-list-CwEiM3H8.js} +1 -1
- package/dist/client/assets/{ai-providers-CgPv--a3.js → ai-providers-DmcZJOxT.js} +1 -1
- package/dist/client/assets/{alert-DRkYko5H.js → alert-BR-p4tVC.js} +1 -1
- package/dist/client/assets/{alert-dialog-BwmNFu1l.js → alert-dialog-DHosdfGA.js} +1 -1
- package/dist/client/assets/{analytics-tab-D9IxcyEr.js → analytics-tab-HW971fV1.js} +1 -1
- package/dist/client/assets/{api-keys-BHFa04t3.js → api-keys-B2mOY4WU.js} +1 -1
- package/dist/client/assets/{app-editor-DBcySaWI.js → app-editor-CKOBupDJ.js} +1 -1
- package/dist/client/assets/{auth-CJkvZW-k.js → auth-Cdu_Esoc.js} +1 -1
- package/dist/client/assets/{auth-catchall-D5gdcATu.js → auth-catchall-CiyXXkH8.js} +1 -1
- package/dist/client/assets/{auth-entry-Dz_QxirS.js → auth-entry-FfywnvVK.js} +1 -1
- package/dist/client/assets/{auth-split-layout-BzJIXr1y.js → auth-split-layout-F9RN8kfA.js} +1 -1
- package/dist/client/assets/{authenticate-and-persist-oauth-B-zmVWY9.js → authenticate-and-persist-oauth-CxNMau8p.js} +1 -1
- package/dist/client/assets/{automation-list-row-LC7AzU8H.js → automation-list-row-DlhKbcWS.js} +1 -1
- package/dist/client/assets/{automation-runs-DhRngbfS.js → automation-runs-BSZspOPk.js} +1 -1
- package/dist/client/assets/{automations-Dpuh5mTg.js → automations-Bsy1xegM.js} +1 -1
- package/dist/client/assets/{avatar-Be32ceEV.js → avatar-C4y8xmhb.js} +1 -1
- package/dist/client/assets/{badge-DeycDEDa.js → badge-bKgqq_hn.js} +1 -1
- package/dist/client/assets/{block-document-0VJ4mJz2.js → block-document-Cq9xvEs5.js} +1 -1
- package/dist/client/assets/{breadcrumb-BkUUiSOA.js → breadcrumb-BxiaCaRI.js} +1 -1
- package/dist/client/assets/{buckets-DjkxmYYc.js → buckets-D2H9tI7C.js} +1 -1
- package/dist/client/assets/{bulk-category-panel-DITCXe6Q.js → bulk-category-panel-Bs99v8a6.js} +1 -1
- package/dist/client/assets/{capability-load-error-D6ZvKvlf.js → capability-load-error-BMapM_nu.js} +1 -1
- package/dist/client/assets/{cards-odjp1n2S.js → cards-AKnEBiwF.js} +1 -1
- package/dist/client/assets/{category-editor-T2MgeHT9.js → category-editor-CeGZPq10.js} +1 -1
- package/dist/client/assets/{cdn-tab-D-8RFlx4.js → cdn-tab-BkoLgXRq.js} +1 -1
- package/dist/client/assets/{chart-jg4AMjQe.js → chart-DsFfwadF.js} +1 -1
- package/dist/client/assets/{chat-context-VFkTmrKQ.js → chat-context-Bv0NCGao.js} +1 -1
- package/dist/client/assets/{checkbox-5B3Nsb_j.js → checkbox-DC7ImXSU.js} +1 -1
- package/dist/client/assets/{choose-editor-KuVvTNHJ.js → choose-editor-CQ2RdklR.js} +1 -1
- package/dist/client/assets/{cli-auth-success-yOUjDdHq.js → cli-auth-success-C386HV7Q.js} +1 -1
- package/dist/client/assets/{collection-detail-Bn7-81rP.js → collection-detail-BGM1bL7e.js} +1 -1
- package/dist/client/assets/{collection-display-button-DuqsXIIA.js → collection-display-button-Y0tL3jai.js} +1 -1
- package/dist/client/assets/{collection-search-Czd9Mfxw.js → collection-search-BYP7-ZxX.js} +1 -1
- package/dist/client/assets/{collection-table-wrapper-rSXxT4FT.js → collection-table-wrapper-D-Nt7RKb.js} +1 -1
- package/dist/client/assets/{collection-tabs-BjHY3CU9.js → collection-tabs-CL2MtumN.js} +1 -1
- package/dist/client/assets/{command-DIZ2TwJ6.js → command-D92GDJ41.js} +1 -1
- package/dist/client/assets/{commerce-onboarding-CkB2ni0H.js → commerce-onboarding-DH9EqffA.js} +1 -1
- package/dist/client/assets/{config-DlgHqtbo.js → config-uvG_j2hY.js} +1 -1
- package/dist/client/assets/{connect-BCbNCJEo.js → connect-0_8Pifz1.js} +1 -1
- package/dist/client/assets/{connection-iXS4K9V0.js → connection-B4xscr6U.js} +1 -1
- package/dist/client/assets/{connection-card-CxFJyjO4.js → connection-card-Dyoy7mvf.js} +1 -1
- package/dist/client/assets/{connection-detail-B9Zh-X_H.js → connection-detail-ihgx40IB.js} +1 -1
- package/dist/client/assets/{connection-form-helpers-DjjPEqBy.js → connection-form-helpers-B2TmfMw7.js} +1 -1
- package/dist/client/assets/{connections-BqxcXL-b.js → connections-Cl1sPtGg.js} +1 -1
- package/dist/client/assets/{decopilot-sse-pool-C_kQApdo.js → decopilot-sse-pool-ULdMGH4U.js} +1 -1
- package/dist/client/assets/{dialog-DJ6N9l-G.js → dialog-BSQPsnMV.js} +1 -1
- package/dist/client/assets/{domain-settings-5FqfMlZM.js → domain-settings-DzbX9zl8.js} +1 -1
- package/dist/client/assets/{drawer-BYjZcQUP.js → drawer-s9F4KtK0.js} +1 -1
- package/dist/client/assets/{dropdown-menu-BdmGKLTp.js → dropdown-menu-Br5tvBrx.js} +1 -1
- package/dist/client/assets/{e2e-tab-Dmto2BvH.js → e2e-tab-CDsd7wp2.js} +1 -1
- package/dist/client/assets/{editor-RaHtOP3X.js → editor-99Sk7gK7.js} +1 -1
- package/dist/client/assets/{empty-state--CA0lu67.js → empty-state-BzoJWDN3.js} +1 -1
- package/dist/client/assets/{empty-state-DGCuDv4_.js → empty-state-FLuorgA8.js} +1 -1
- package/dist/client/assets/{extract-connection-data-CpinTMij.js → extract-connection-data-DMuGjDrw.js} +1 -1
- package/dist/client/assets/{file-explorer-DC_nRPAI.js → file-explorer-C60EN7cX.js} +1 -1
- package/dist/client/assets/{file-type-icon-C9Vyxyzp.js → file-type-icon-7YC5ilNl.js} +1 -1
- package/dist/client/assets/{folder-icon-Nahco-AM.js → folder-icon-aYJXq_Sg.js} +1 -1
- package/dist/client/assets/{form-TAHU_OLd.js → form-BZ8QASyF.js} +1 -1
- package/dist/client/assets/{general-DoAdvreU.js → general-j2-fP1Wb.js} +1 -1
- package/dist/client/assets/{github-repo-picker-DcDZAelp.js → github-repo-picker-U8Jxu_k4.js} +1 -1
- package/dist/client/assets/{hooks-EhdE0h-7.js → hooks-DwArKZRm.js} +1 -1
- package/dist/client/assets/{hosting-tab-DYQ8Rh0p.js → hosting-tab-BjO3qC08.js} +1 -1
- package/dist/client/assets/{index-DTpUqPGy.js → index-BPjd7Fa5.js} +1 -1
- package/dist/client/assets/{index-BSB_rTjt.js → index-BWlAD4Il.js} +7 -7
- package/dist/client/assets/{index-XxU95hLt.js → index-BhbrnC4j.js} +1 -1
- package/dist/client/assets/{index-B_PnK48y.js → index-BkCEfktg.js} +1 -1
- package/dist/client/assets/{index-DXDhcB-_.js → index-CtR_rkl8.js} +1 -1
- package/dist/client/assets/{index-njvL_iv-.js → index-CuEniakk.js} +5 -5
- package/dist/client/assets/{index-e1yVTHen.js → index-DHli4OJD.js} +1 -1
- package/dist/client/assets/{index-ziMCET_V.js → index-DwFqKD4D.js} +1 -1
- package/dist/client/assets/{index-BnaWJdfu.js → index-eUVJhFEB.js} +1 -1
- package/dist/client/assets/{index-CiP0VfIv.css → index-kzZCkC89.css} +1 -1
- package/dist/client/assets/{index-redirect-DcvvF4me.js → index-redirect-BsHoZbs8.js} +1 -1
- package/dist/client/assets/{infra-billing-zFBwV-Bi.js → infra-billing-CIPoZsfw.js} +1 -1
- package/dist/client/assets/{input-CCmRphpL.js → input-B2d8pbq0.js} +1 -1
- package/dist/client/assets/{integration-icon-CLm79Cz9.js → integration-icon-lEisOJE0.js} +1 -1
- package/dist/client/assets/{invite-member-dialog-BWEp7j-t.js → invite-member-dialog-CAqnpZ1B.js} +1 -1
- package/dist/client/assets/{label-jr1tiCXK.js → label-Dj9n2KWw.js} +1 -1
- package/dist/client/assets/{layout-CuYgYf2e.js → layout-pJ9WPLAN.js} +1 -1
- package/dist/client/assets/{login-BGhHR9SE.js → login-BtEGN9kh.js} +1 -1
- package/dist/client/assets/{markdown-MMd0qT30.js → markdown-BYs65uiN.js} +1 -1
- package/dist/client/assets/{mcp-oauth-B5cJEXYr.js → mcp-oauth-tpftyvwO.js} +1 -1
- package/dist/client/assets/{members-CpLGPdSP.js → members-BTLsFLZ0.js} +1 -1
- package/dist/client/assets/{monaco-editor-C_3KWawd.js → monaco-editor-BiUVO8An.js} +1 -1
- package/dist/client/assets/{monitoring-stats-row-DJlyss5H.js → monitoring-stats-row-DIS2Ng3n.js} +1 -1
- package/dist/client/assets/{multi-select-DFfNcFAX.js → multi-select-CzdqhztJ.js} +1 -1
- package/dist/client/assets/{oauth-callback-DRLYAO9G.js → oauth-callback-DXe8PVwE.js} +1 -1
- package/dist/client/assets/{oauth-callback-ai-provider-Vj5hLNxZ.js → oauth-callback-ai-provider-Bsf8PW_9.js} +1 -1
- package/dist/client/assets/{onboarding-INsGyMnf.js → onboarding-CDgoW0pS.js} +1 -1
- package/dist/client/assets/{org-layout-C86xmjPw.js → org-layout-lclG8H1X.js} +1 -1
- package/dist/client/assets/{organization-choice-BxYiuqxF.js → organization-choice-CCsvXCVj.js} +1 -1
- package/dist/client/assets/{orgs-Bogprpnh.js → orgs-BFtrEspw.js} +1 -1
- package/dist/client/assets/{page-seo-form-B49U1eCV.js → page-seo-form-k3DvmPXi.js} +1 -1
- package/dist/client/assets/{popover-cjpdW0PR.js → popover-BLouf8R5.js} +1 -1
- package/dist/client/assets/{post-calendar-Z98btd7F.js → post-calendar-nMyVgAGR.js} +1 -1
- package/dist/client/assets/{post-editor-RYd6MZIf.js → post-editor-BPKO1Xmm.js} +1 -1
- package/dist/client/assets/{primitives-CYUQQWQi.js → primitives-DIn583iu.js} +1 -1
- package/dist/client/assets/{profile-TFt2hVsu.js → profile-8I31Lkkz.js} +1 -1
- package/dist/client/assets/{project-app-view-BHLllTKH.js → project-app-view-DLbH_B-S.js} +1 -1
- package/dist/client/assets/{prompts-CjUUqHWf.js → prompts-Bexe0hSI.js} +1 -1
- package/dist/client/assets/record-editor-CUEBm5uF.js +1 -0
- package/dist/client/assets/{redirect-editor-BcD4Ju-C.js → redirect-editor-DEIkb4ZD.js} +1 -1
- package/dist/client/assets/registry-C-rbq1xD.js +2 -0
- package/dist/client/assets/{registry-layout-CBdcAHJ8.js → registry-layout-DfnpYXYo.js} +1 -1
- package/dist/client/assets/{reports-BjRZn6gZ.js → reports-C_Iv8HvU.js} +1 -1
- package/dist/client/assets/{require-capability-l2lCTIGp.js → require-capability-DU1QAieO.js} +1 -1
- package/dist/client/assets/{required-auth-layout--fQKy98Q.js → required-auth-layout-XmkPJ52B.js} +1 -1
- package/dist/client/assets/{reset-password-BRKCCVlU.js → reset-password-CWh5Gdcr.js} +1 -1
- package/dist/client/assets/{review-settings-Cyt_g6jL.js → review-settings-B8mMOsOP.js} +1 -1
- package/dist/client/assets/{roles-ByxJJBrB.js → roles-Cw96Wn1G.js} +1 -1
- package/dist/client/assets/{schema-BsZ1HkQH.js → schema-B5fnKlHk.js} +1 -1
- package/dist/client/assets/{scroll-area-jAQrzpp2.js → scroll-area-bf_SAd7o.js} +1 -1
- package/dist/client/assets/{search-input-C15FIKPL.js → search-input-DwyuZ_4a.js} +1 -1
- package/dist/client/assets/{secrets-DyE8liHV.js → secrets-CaLbVXxE.js} +1 -1
- package/dist/client/assets/{sections-editor-Cx_CzMX5.js → sections-editor-DUyabDLF.js} +1 -1
- package/dist/client/assets/{select-Bg-S5PZO.js → select-CmM2ytba.js} +1 -1
- package/dist/client/assets/{select-model-5Xzal1s4.js → select-model-DsvUVXBH.js} +1 -1
- package/dist/client/assets/{self-tool-result-osA4F31H.js → self-tool-result-C0cbe0zd.js} +1 -1
- package/dist/client/assets/{seo-editor-CwIeX_yG.js → seo-editor-nln9KG1F.js} +1 -1
- package/dist/client/assets/{settings-layout-B4n75gy7.js → settings-layout-BnYfqMlI.js} +1 -1
- package/dist/client/assets/{shell-controls-Cn32tr22.js → shell-controls-Bnw3_sbs.js} +1 -1
- package/dist/client/assets/{shell-layout-CoDkvfyR.js → shell-layout-Vi7dV7Tx.js} +1 -1
- package/dist/client/assets/{skill-preview-BpS1_5XY.js → skill-preview-D2ESeOXu.js} +1 -1
- package/dist/client/assets/{skills-8Vq6CVxq.js → skills-Btmp4dlw.js} +1 -1
- package/dist/client/assets/{spinner-D9ug9Q1y.js → spinner-DIj1Go6P.js} +1 -1
- package/dist/client/assets/{sso-CGEpeY_P.js → sso-qzDzZoOE.js} +1 -1
- package/dist/client/assets/{store-6m9JBKBn.js → store-BTrvNs7j.js} +1 -1
- package/dist/client/assets/store-registry-AWG9Gyro.js +2 -0
- package/dist/client/assets/{super-agent-icon-D-3T1HXs.js → super-agent-icon-C7NH1oj0.js} +1 -1
- package/dist/client/assets/{switch-DBban6IE.js → switch-CNDFjuCH.js} +1 -1
- package/dist/client/assets/{synced-repos-H3jyZPic.js → synced-repos-DOekzSvu.js} +1 -1
- package/dist/client/assets/{table-CAOEHHPQ.js → table-uC7dq7Qx.js} +1 -1
- package/dist/client/assets/{tabs-CvrmBfQO.js → tabs-C3hyhgOx.js} +1 -1
- package/dist/client/assets/{task-board-CTg_E5Fs.js → task-board--321T69G.js} +1 -1
- package/dist/client/assets/{tasks-C9kEnEiV.js → tasks-D3pnNEuI.js} +1 -1
- package/dist/client/assets/{textarea-CyDCIDOx.js → textarea-BR3Z3FW5.js} +1 -1
- package/dist/client/assets/{thread-route-COH2-gRV.js → thread-route-CI9Oyaed.js} +1 -1
- package/dist/client/assets/{toggle-group-1Jrd7Xpn.js → toggle-group-BFZvVfAz.js} +1 -1
- package/dist/client/assets/{toolbar-_C8oY14e.js → toolbar-DK9YZczJ.js} +1 -1
- package/dist/client/assets/{track-BK5moGgb.js → track-C2sql3Ri.js} +1 -1
- package/dist/client/assets/{types-FUTmbzUT.js → types-FOnqs_ep.js} +1 -1
- package/dist/client/assets/{use-ai-providers-uMQb3FdW.js → use-ai-providers-Bm-sHcqw.js} +1 -1
- package/dist/client/assets/{use-api-keys-C45qY1K8.js → use-api-keys-FRwuUb-z.js} +1 -1
- package/dist/client/assets/{use-automations-DY5_FOmk.js → use-automations-BBJJLcRi.js} +1 -1
- package/dist/client/assets/{use-autosave-D-GAQv5-.js → use-autosave-D3jq2t0Z.js} +1 -1
- package/dist/client/assets/{use-connection-Dh_bIzzB.js → use-connection-DrhFr-BW.js} +1 -1
- package/dist/client/assets/{use-copy-CmPdqNRj.js → use-copy-Ccsu-LzF.js} +1 -1
- package/dist/client/assets/{use-create-virtual-mcp-Dz8Drv5c.js → use-create-virtual-mcp-C26cIWFm.js} +1 -1
- package/dist/client/assets/{use-debounced-autosave-Dj_RFaNt.js → use-debounced-autosave-bJxU4-DP.js} +1 -1
- package/dist/client/assets/{use-debounced-value-BcvP9lXD.js → use-debounced-value-C-4MWtE7.js} +1 -1
- package/dist/client/assets/{use-decopilot-events-CQuUMu-T.js → use-decopilot-events-AJSxmtjR.js} +1 -1
- package/dist/client/assets/{use-delete-connection-CFL69P-u.js → use-delete-connection-CHfcT2G2.js} +1 -1
- package/dist/client/assets/{use-deployment-admin-DfO6Vw2T.js → use-deployment-admin-LcZqRkfE.js} +1 -1
- package/dist/client/assets/{use-destination-route-B1mohgaf.js → use-destination-route-DDLoaveW.js} +1 -1
- package/dist/client/assets/{use-file-configs-ChX0Q-qZ.js → use-file-configs-6uuFnaeT.js} +1 -1
- package/dist/client/assets/{use-infinite-scroll-C0bcw_ds.js → use-infinite-scroll-DR2K3ike.js} +1 -1
- package/dist/client/assets/{use-join-requests-mjq6Qeh_.js → use-join-requests-BX9Sap62.js} +1 -1
- package/dist/client/assets/{use-mcp-auth-status-CyiJec79.js → use-mcp-auth-status-DEiewDKN.js} +1 -1
- package/dist/client/assets/{use-mcp-client-BPQGAz1L.js → use-mcp-client-BbnLyE8Y.js} +1 -1
- package/dist/client/assets/{use-mcp-tools-B1nBebmG.js → use-mcp-tools-DAOq320g.js} +1 -1
- package/dist/client/assets/{use-members-Dc-_EVO5.js → use-members-ymHQ6DPO.js} +1 -1
- package/dist/client/assets/{use-navigate-to-agent-CfRCE8Wt.js → use-navigate-to-agent-DIKXG43X.js} +1 -1
- package/dist/client/assets/{use-org-auth-client-BG5CQ5ml.js → use-org-auth-client-B2Dtccrj.js} +1 -1
- package/dist/client/assets/{use-org-repo-syncs-Dmq6Cu1Y.js → use-org-repo-syncs-BraC28gq.js} +1 -1
- package/dist/client/assets/{use-org-sso-Du7xcTXp.js → use-org-sso-DqX_yfsK.js} +1 -1
- package/dist/client/assets/{use-organization-roles-GK60Cru6.js → use-organization-roles-BQf6ZfaR.js} +1 -1
- package/dist/client/assets/{use-organization-settings-D4VQHySG.js → use-organization-settings-mos5d4Yb.js} +1 -1
- package/dist/client/assets/{use-panel-navigate-DWQx8OEi.js → use-panel-navigate-Dzed7hXE.js} +1 -1
- package/dist/client/assets/{use-registry-connections-zLS0bbue.js → use-registry-connections-C1MprIyF.js} +1 -1
- package/dist/client/assets/{use-secrets-Bpxg79PA.js → use-secrets-MfuKxy-T.js} +1 -1
- package/dist/client/assets/{use-section-preview-base-ihTnkgdH.js → use-section-preview-base-CJFnX7tM.js} +1 -1
- package/dist/client/assets/{use-status-sounds-CkZXTqrB.js → use-status-sounds-9ZjtdYdG.js} +1 -1
- package/dist/client/assets/{use-tags-Bl8RkIGi.js → use-tags-FMu3sWNF.js} +1 -1
- package/dist/client/assets/{use-view-mode-goCGZ2jO.js → use-view-mode-CB9pJw4V.js} +1 -1
- package/dist/client/assets/{use-virtual-mcp-DOjC0pS0.js → use-virtual-mcp-CUrHAeNi.js} +1 -1
- package/dist/client/assets/useInfiniteQuery-UPxaQjph.js +1 -0
- package/dist/client/assets/useSuspenseInfiniteQuery-91qpgWTX.js +1 -0
- package/dist/client/assets/{users-OV8pJiY0.js → users-mfz705Ex.js} +1 -1
- package/dist/client/assets/{variant-calendar-ChVU0zWF.js → variant-calendar-DNADnJDP.js} +1 -1
- package/dist/client/assets/{view-mode-toggle-02-6otvj.js → view-mode-toggle-CliygtAG.js} +1 -1
- package/dist/client/index.html +1 -1
- package/dist/server/cli.js +2 -2
- package/dist/server/server.js +2 -2
- package/package.json +1 -1
- package/dist/client/assets/record-editor-DD-wTaHw.js +0 -1
- package/dist/client/assets/registry-BLiW5cT7.js +0 -2
- package/dist/client/assets/store-registry-DShejGKc.js +0 -2
- package/dist/client/assets/useInfiniteQuery-DlP2r0mK.js +0 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-By9ZBJLW.js +0 -1
package/dist/client/index.html
CHANGED
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
<meta name="twitter:description" content="Hire specialized agents, give them access to your tools, and let them deliver real projects — with planning, verification, and observability built in." />
|
|
51
51
|
<meta name="twitter:image" content="/og-image.png" />
|
|
52
52
|
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
|
53
|
-
<script type="module" crossorigin src="/assets/index-
|
|
53
|
+
<script type="module" crossorigin src="/assets/index-CuEniakk.js"></script>
|
|
54
54
|
<link rel="stylesheet" crossorigin href="/assets/index-Blq7G79G.css">
|
|
55
55
|
</head>
|
|
56
56
|
<body>
|
package/dist/server/cli.js
CHANGED
|
@@ -1508,7 +1508,7 @@ Usage: deco services <up|down|status>`),process.exit(1)}}var un1=L(()=>{Ub()});f
|
|
|
1508
1508
|
`.execute($);if(Number(W.rows[0]?.cnt)===0){console.warn(`Failed to migrate ${J}/${K}, keeping in old table`);continue}}await by`
|
|
1509
1509
|
DELETE FROM kysely_migration WHERE name = ${X}
|
|
1510
1510
|
`.execute($)}}async function cs1($){await P04($),await A04($);let Z=new hs1({db:$,provider:{getMigrations:()=>Promise.resolve(_n0)}}),{error:X,results:Q}=await Z.migrateToLatest(),Y=0;if(Q?.forEach((G)=>{if(G.status==="Success")Y++;else if(G.status==="Error")console.error(`Failed to execute migration "${G.migrationName}"`)}),X)throw console.error("Failed to migrate"),console.error(X),X;return Y}async function T04($){let{keepOpen:Z=!1,database:X,skipBetterAuth:Q=!1}=$??{},Y="skipped";if(!Q&&!X)Y=await Pm0();let G=X??h$(),J=async()=>{if(!Z&&!X)await BO(G).catch((K)=>{console.warn("Warning: Error closing database:",K)})};try{let K=await cs1(G.db);return await J(),{betterAuth:Y,kysely:K}}catch(K){throw await J(),K}}async function R04(){let $=h$(),Z=new hs1({db:$.db,provider:{getMigrations:()=>Promise.resolve(_n0)}}),{error:X,results:Q}=await Z.migrateDown();if(Q?.forEach((Y)=>{if(Y.status==="Success")console.log(`\u2705 Migration "${Y.migrationName}" rolled back successfully`);else if(Y.status==="Error")console.error(`\u274C Failed to rollback migration "${Y.migrationName}"`)}),X)throw console.error("Failed to rollback migration"),console.error(X),X}var ms1=L(()=>{gs1();Am0();HX()});async function l70($){let Z={...process.env},X=x80($,Z);console.log(lE1(X.settings.encryptionKey));let Q=X.settings.betterAuthSecret||(X.settings.localMode?wo1(X.settings.dataDir):""),{ensureServices:Y}=await Promise.resolve().then(() => (pZ0(),iZ0)),{outputs:G,services:J}=await Y({home:X.settings.dataDir,externalDatabaseUrl:X.externalDatabaseUrl,externalNatsUrl:X.externalNatsUrl});if(!X.skipMigrations){let{migrateBetterAuth:W}=await Promise.resolve().then(() => (Am0(),jo1));await W(G.databaseUrl);let{createDatabase:H}=await Promise.resolve().then(() => (HX(),ft1)),{migrateToLatest:F}=await Promise.resolve().then(() => (ms1(),ls1)),U=H(G.databaseUrl);await F({keepOpen:!0,database:U,skipBetterAuth:!0})}let K={...X.settings,betterAuthSecret:Q,databaseUrl:G.databaseUrl,natsUrls:G.natsUrls,...G.s3?{s3Endpoint:G.s3.endpoint,s3Bucket:G.s3.bucket,s3AccessKeyId:G.s3.accessKeyId,s3SecretAccessKey:G.s3.secretAccessKey,s3ForcePathStyle:G.s3.forcePathStyle}:{}};return cn1(K),{settings:K,services:J.map((W)=>({name:W.name==="PostgreSQL"?"Postgres":W.name,port:W.port})),managedServiceNames:J.filter((W)=>W.owner==="managed").map((W)=>W.name)}}var vn0=L(()=>{Ub();Eo1();P$()});var ns1={};e(ns1,{updateService:()=>Qj,subscribeCliState:()=>bn0,setTuiConsoleIntercepted:()=>m70,setServerUrl:()=>yp,setMigrationsDone:()=>bp,setDevMode:()=>q04,resetCliStateForTests:()=>I04,isTuiConsoleIntercepted:()=>d70,getCliState:()=>fn0,addLogEntry:()=>zO});function ds1(){return[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}]}function is1(){return{services:ds1(),migrationsStatus:"pending",serverUrl:null,logs:[]}}function I04(){tQ=is1()}function fp(){for(let $ of xn0)$()}function fn0(){return tQ}function bn0($){return xn0.add($),()=>xn0.delete($)}function Qj($){tQ={...tQ,services:tQ.services.map((Z)=>Z.name===$.name?$:Z)},fp()}function bp(){tQ={...tQ,migrationsStatus:"done"},fp()}function yp($){tQ={...tQ,serverUrl:$},fp()}function zO($){let Z=[...tQ.logs,$];tQ={...tQ,logs:Z.length>500?Z.slice(-500):Z},fp()}function q04(){tQ={...tQ,services:[...ds1(),{name:"API",status:"pending",port:0},{name:"Vite",status:"pending",port:0}]},fp()}function m70($){ps1=$}function d70(){return ps1}var tQ,xn0,ps1=!1;var Yj=L(()=>{tQ=is1();xn0=new Set});import{createServer as ts1}from"net";function M04($){return new Promise((Z)=>{let X=ts1();X.once("error",()=>Z(!1)),X.listen($,"0.0.0.0",()=>{X.close(()=>Z(!0))})})}async function gp($){if(await M04($))return $;let Z=await new Promise((X,Q)=>{let Y=ts1();Y.once("error",Q),Y.listen(0,"0.0.0.0",()=>{let G=Y.address(),J=typeof G==="object"&&G?G.port:0;Y.close(()=>X(J))})});return console.warn(`Port ${$} is in use, using port ${Z} instead.`),Z}var yn0=()=>{};var hn0={};e(hn0,{startDevServer:()=>k04,pipeToLogStore:()=>gn0});import{join as V04}from"path";function gn0($){let Z=$.getReader(),X=new TextDecoder,Q="";function Y(){let G=Q.split(`
|
|
1511
|
-
`);Q=G.pop()??"";for(let J of G){let K=Bun.stripANSI(J).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;zO({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:K})}}(async()=>{try{for(;;){let{done:G,value:J}=await Z.read();if(G)break;Q+=X.decode(J,{stream:!0}),Y()}}catch{}if(Q.trim()){let G=Bun.stripANSI(Q).replace(/^\[\d+\]\s*/,"").trim();if(G)zO({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:G})}})()}async function k04($){let{baseUrl:Z,noTui:X}=$,Q=process.env.HOST==="0.0.0.0"&&Boolean(process.env.PORT),Y=Q?process.env.PORT:$.vitePort,G=Z||`http://localhost:${Y}`,J=Q?await gp(Number(Y)+1):await gp(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await l70({port:String(J),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let D of W)Qj({name:D.name,status:"ready",port:D.port});bp();let F=V04(import.meta.dir,"..","..","..","..",".."),U=X===!0,N=Bun.spawn(["bun","run","dev:servers"],{cwd:F,env:{...process.env,PORT:String(K.port),VITE_PORT:String(Y),DATABASE_URL:K.databaseUrl,NATS_URL:K.natsUrls.join(","),NODE_ENV:K.nodeEnv,BASE_URL:G,DECOCMS_LOCAL_MODE:String(K.localMode),DECOCMS_HOME:K.dataDir,DATA_DIR:K.dataDir,DECO_CLI:"1",...K.betterAuthSecret?{BETTER_AUTH_SECRET:K.betterAuthSecret}:{},...K.s3Endpoint?{S3_ENDPOINT:K.s3Endpoint,S3_BUCKET:K.s3Bucket??"",S3_ACCESS_KEY_ID:K.s3AccessKeyId??"",S3_SECRET_ACCESS_KEY:K.s3SecretAccessKey??"",S3_FORCE_PATH_STYLE:String(K.s3ForcePathStyle)}:{},...K.natsCredsPath?{NATS_CREDS:K.natsCredsPath}:{}},stdio:["inherit",U?"inherit":"pipe",U?"inherit":"pipe"]});if(!U)gn0(N.stdout),gn0(N.stderr);yp(G),Qj({name:"Vite",status:"ready",port:Number(Y)}),Qj({name:"API",status:"ready",port:Number(K.port)});let O=async(D)=>{if(N.kill(D),await N.exited,H.length>0){let{stopServices:w}=await Promise.resolve().then(() => (pZ0(),iZ0));await w(K.dataDir)}};return process.on("SIGINT",()=>O("SIGINT")),process.on("SIGTERM",()=>O("SIGTERM")),{port:Number(Y),process:N}}var un0=L(()=>{vn0();Yj();yn0()});var i70;var cn0=L(()=>{i70={name:"decocms",version:"4.319.11",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});import{Box as C04,Text as os1}from"ink";import{jsx as _04,jsxs as rs1}from"react/jsx-runtime";function as1({version:$}){return rs1(C04,{flexDirection:"column",marginTop:1,children:[L70.map((Z,X)=>_04(os1,{color:D70[X],children:Z},X)),rs1(os1,{dimColor:!0,children:[" v",$]})]})}var ss1=L(()=>{Tp()});import{Box as Gj,Text as PO}from"ink";import{Spinner as v04}from"@inkjs/ui";import{jsx as BG,jsxs as yy}from"react/jsx-runtime";function es1({status:$}){if($==="pending")return BG(v04,{label:""});return BG(PO,{color:"green",children:"\u2713"})}function x04($){return`${$.name}: ${$.port||"...."}`}function $e1({services:$,migrationsStatus:Z,home:X,serverUrl:Q}){return yy(Gj,{flexDirection:"column",paddingBottom:1,children:[BG(as1,{version:i70.version}),BG(Gj,{marginBottom:1,children:BG(PO,{dimColor:!0,children:"\u2500".repeat(80)})}),BG(Gj,{children:yy(PO,{dimColor:!0,children:["Home: ",X]})}),yy(Gj,{gap:2,children:[$.map((Y)=>yy(Gj,{gap:1,children:[BG(PO,{children:x04(Y)}),BG(es1,{status:Y.status})]},Y.name)),yy(Gj,{gap:1,children:[BG(PO,{children:"Migrations"}),BG(es1,{status:Z})]})]}),BG(Gj,{children:Q?yy(PO,{children:["Open in browser: ",BG(PO,{color:"cyan",children:Q})]}):BG(PO,{dimColor:!0,children:"Starting..."})})]})}var Ze1=L(()=>{cn0();ss1()});import{Box as f04,Text as hp}from"ink";import{jsx as ln0,jsxs as mn0}from"react/jsx-runtime";function b04($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function Xe1({logs:$}){return ln0(f04,{flexDirection:"column",children:$.map((Z,X)=>{if(Z.rawLine)return ln0(hp,{dimColor:!0,children:Z.rawLine},X);let Q=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return mn0(hp,{children:[mn0(hp,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),ln0(hp,{color:b04(Z.status),children:Z.status}),mn0(hp,{dimColor:!0,children:[" ",Q.padStart(8)]})]},X)})})}var Qe1=()=>{};var dn0={};e(dn0,{App:()=>h04});import{Box as y04}from"ink";import{useSyncExternalStore as g04}from"react";import{jsx as Ye1,jsxs as u04}from"react/jsx-runtime";function h04({home:$}){let Z=g04(bn0,fn0);return u04(y04,{flexDirection:"column",children:[Ye1($e1,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),Ye1(Xe1,{logs:Z.logs})]})}var in0=L(()=>{Ze1();Qe1();Yj()});var a3="thread-gate",AU="decopilot-hosted-harness",TU="decopilot-hosted-harness-sandboxed",IJ="automations",AO="background-tools",Jj="task-board-github-reads",RU="jira-push";var Ge1="10";function Je1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:Ge1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var Ke1=()=>{};import c04 from"pg";async function He1($,Z){let{databaseUrl:X,lockTimeoutMs:Q=l04}=$,Y=$.log??((W)=>console.log(W)),G=new c04.Client({connectionString:X});await G.connect();let J=Date.now(),K=!1;try{while(!K){if(K=(await G.query("SELECT pg_try_advisory_lock($1) AS locked",[We1.toString()])).rows[0]?.locked===!0,K)break;if(Date.now()-J>=Q)throw Error(`Timed out after ${Q}ms waiting for the DBOS migration lock. Another process is still migrating the dbos schema; this pod will restart and retry.`);await H$(m04)}let W=Date.now()-J;if(W>1000)Y(`[dbos] waited ${W}ms for the migration lock; another process migrated first`);return await Z()}finally{if(K)try{await G.query("SELECT pg_advisory_unlock($1)",[We1.toString()])}catch{}await G.end().catch(()=>{})}}var We1=8314027461559302n,l04=600000,m04=500;var Fe1=L(()=>{$4()});function d04(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function pn0($,Z){for(let X=0;X<$.length;X++){let Q=$[X];if(Q===void 0)continue;if(Q===Z)return $[X+1];if(Q.startsWith(`${Z}=`))return Q.slice(Z.length+1)}return}function Ue1(){let $=d04();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:pn0($,"--cpu-prof-dir")??process.cwd(),name:pn0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(pn0($,"--cpu-prof-interval")??1000),note:"profile is written on process exit"}));return}if(process.env.CPU_PROFILE)console.warn(JSON.stringify({msg:"cpu-profiling-requested-but-inactive",hint:'CPU profiling is a Bun launch flag. Set BUN_OPTIONS="--cpu-prof --cpu-prof-md --cpu-prof-dir=/tmp" before starting the process.'}))}function Ne1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let X=eE();if(!X)return;let Q={};try{let{heapStats:Y}=await import("bun:jsc"),G=Y(),J=Object.entries(G.objectTypeCounts).sort((K,W)=>W[1]-K[1]).slice(0,20);Q={objectCount:G.objectCount,heapSize:G.heapSize,top:Object.fromEntries(J)}}catch{}console.log(JSON.stringify({msg:"heap-watch",ts:new Date().toISOString(),uptimeS:Math.round(process.uptime()),rss:X.rss,heapUsed:X.heapUsed,heapTotal:X.heapTotal,external:X.external,arrayBuffers:X.arrayBuffers,...Q}))};return Z().catch(()=>{}),p70=setInterval(()=>void Z().catch(()=>{}),$),p70.unref?.(),process.on("SIGUSR2",()=>{try{let X=Bun.generateHeapSnapshot("v8"),Q=typeof X==="string"?X:JSON.stringify(X),Y=`/tmp/heap-${process.pid}-${Date.now()}.heapsnapshot`;Bun.write(Y,Q),console.log(JSON.stringify({msg:"heap-snapshot-written",path:Y}))}catch(X){console.error("[heap-watch] snapshot failed:",X)}}),()=>{if(p70)clearInterval(p70)}}var p70;var Be1=()=>{};import*as i04 from"bun:jsc";function Oe1(){if(process.env.STALL_WATCHDOG!=="1")return()=>{};let $=Number(process.env.STALL_WATCHDOG_MS??100),Z=Number(process.env.STALL_WATCHDOG_TICK_MS??50);try{p04()}catch(G){return console.error("[stall-watchdog] failed to start sampling profiler:",G),()=>{}}let X,Q=performance.now()+Z,Y=()=>{let G=performance.now(),J=G-Q;Q=G+Z;let K=[];try{K=n04()?.traces??[]}catch{}if(J>$&&K.length>0){let W=new Map;for(let F of K){let U=F.frames.find((O)=>O.sourceURL&&!/Unknown Executable/.test(O.category??""))??F.frames[0];if(!U)continue;let N=(U.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),B=`${U.name??"?"} @ ${N}:${U.line??"?"}`;W.set(B,(W.get(B)??0)+1)}let H=[...W.entries()].sort((F,U)=>U[1]-F[1]).slice(0,8).map(([F,U])=>({frame:F,count:U}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(J),samplesInWindow:K.length,top:H}))}X=setTimeout(Y,Z),X.unref?.()};return X=setTimeout(Y,Z),X.unref?.(),()=>{if(X)clearTimeout(X)}}var p04,n04;var Le1=L(()=>{({startSamplingProfiler:p04,samplingProfilerStackTraces:n04}=i04)});function De1(){Ue1();let $=[Ne1(),Mt1(),Oe1()];return()=>{for(let Z of $)Z()}}var we1=L(()=>{Nm0();Be1();Le1()});var Kj=x((Ee1)=>{Object.defineProperty(Ee1,"__esModule",{value:!0});Ee1.RepublishHeaders=Ee1.DirectMsgHeaders=Ee1.JsHeaders=Ee1.AdvisoryKind=void 0;Ee1.isOrderedPushConsumerOptions=t04;Ee1.isPullConsumer=o04;Ee1.isPushConsumer=r04;Ee1.isBoundPushConsumerOptions=a04;function t04($){if($&&typeof $==="object")return"name_prefix"in $||"deliver_subject_prefix"in $||"filter_subjects"in $||"filter_subject"in $||"deliver_policy"in $||"opt_start_seq"in $||"opt_start_time"in $||"replay_policy"in $||"inactive_threshold"in $||"headers_only"in $||"deliver_prefix"in $;return!1}function o04($){return $.isPullConsumer()}function r04($){return $.isPushConsumer()}function a04($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}Ee1.AdvisoryKind={API:"api_audit",StreamAction:"stream_action",ConsumerAction:"consumer_action",SnapshotCreate:"snapshot_create",SnapshotComplete:"snapshot_complete",RestoreCreate:"restore_create",RestoreComplete:"restore_complete",MaxDeliver:"max_deliver",Terminated:"terminated",Ack:"consumer_ack",StreamLeaderElected:"stream_leader_elected",StreamQuorumLost:"stream_quorum_lost",ConsumerLeaderElected:"consumer_leader_elected",ConsumerQuorumLost:"consumer_quorum_lost"};Ee1.JsHeaders={StreamSourceHdr:"Nats-Stream-Source",LastConsumerSeqHdr:"Nats-Last-Consumer",LastStreamSeqHdr:"Nats-Last-Stream",ConsumerStalledHdr:"Nats-Consumer-Stalled",MessageSizeHdr:"Nats-Msg-Size",RollupHdr:"Nats-Rollup",RollupValueSubject:"sub",RollupValueAll:"all",PendingMessagesHdr:"Nats-Pending-Messages",PendingBytesHdr:"Nats-Pending-Bytes",RequiredApiLevel:"Nats-Required-Api-Level"};Ee1.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};Ee1.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var OG=x((ze1)=>{Object.defineProperty(ze1,"__esModule",{value:!0});ze1.TD=ze1.TE=ze1.Empty=void 0;ze1.encode=J14;ze1.decode=K14;ze1.Empty=new Uint8Array(0);ze1.TE=new TextEncoder;ze1.TD=new TextDecoder;function G14(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}function J14(...$){let Z=[];for(let X=0;X<$.length;X++)Z.push(ze1.TE.encode($[X]));if(Z.length===0)return ze1.Empty;if(Z.length===1)return Z[0];return G14(...Z)}function K14($){if(!$||$.length===0)return"";return ze1.TD.decode($)}});var LG=x((Te1)=>{Object.defineProperty(Te1,"__esModule",{value:!0});Te1.errors=Te1.PermissionViolationError=Te1.NoRespondersError=Te1.TimeoutError=Te1.RequestError=Te1.ProtocolError=Te1.ConnectionError=Te1.DrainingConnectionError=Te1.ClosedConnectionError=Te1.AuthorizationError=Te1.UserAuthenticationExpiredError=Te1.InvalidOperationError=Te1.InvalidArgumentError=Te1.InvalidSubjectError=void 0;class tn0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}Te1.InvalidSubjectError=tn0;class n70 extends Error{constructor($,Z){super($,Z);this.name="InvalidArgumentError"}static format($,Z,X){if(Array.isArray(Z)&&Z.length>1)Z=Z[0];if(Array.isArray($))$=$.map((Q)=>`'${Q}'`),$=$.join(",");else $=`'${$}'`;return new n70(`${$} ${Z}`,X)}}Te1.InvalidArgumentError=n70;class on0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}Te1.InvalidOperationError=on0;class t70 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new t70($);return null}}Te1.UserAuthenticationExpiredError=t70;class o70 extends Error{constructor($,Z){super($,Z);this.name="AuthorizationError"}static parse($){let Z=["authorization violation","account authentication expired","authentication timeout"],X=$.toLowerCase();for(let Q=0;Q<Z.length;Q++)if(X.indexOf(Z[Q])!==-1)return new o70($);return null}}Te1.AuthorizationError=o70;class rn0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}Te1.ClosedConnectionError=rn0;class an0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}Te1.DrainingConnectionError=an0;class sn0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}Te1.ConnectionError=sn0;class en0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}Te1.ProtocolError=en0;class $t0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof r70}}Te1.RequestError=$t0;class Zt0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}Te1.TimeoutError=Zt0;class r70 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}Te1.NoRespondersError=r70;class a70 extends Error{operation;subject;queue;constructor($,Z,X,Q,Y){super($,Y);this.name="PermissionViolationError",this.operation=Z,this.subject=X,this.queue=Q}static parse($){if(($?$.toLowerCase():"").indexOf("permissions violation")===-1)return null;let X="publish",Q="",Y=void 0,G=$.match(/(Publish|Subscription) to "(\S+)"/);if(G){if(X=G[1].toLowerCase(),Q=G[2],X==="subscription"){let J=$.match(/using queue "(\S+)"/);if(J)Y=J[1]}}return new a70($,X,Q,Y)}}Te1.PermissionViolationError=a70;Te1.errors={AuthorizationError:o70,ClosedConnectionError:rn0,ConnectionError:sn0,DrainingConnectionError:an0,InvalidArgumentError:n70,InvalidOperationError:on0,InvalidSubjectError:tn0,NoRespondersError:r70,PermissionViolationError:a70,ProtocolError:en0,RequestError:$t0,TimeoutError:Zt0,UserAuthenticationExpiredError:t70}});var s3=x((Ve1)=>{Object.defineProperty(Ve1,"__esModule",{value:!0});Ve1.SimpleMutex=Ve1.Perf=void 0;Ve1.extend=R14;Ve1.render=I14;Ve1.timeout=q14;Ve1.delay=M14;Ve1.deadline=V14;Ve1.deferred=Qt0;Ve1.debugDeferred=k14;Ve1.shuffle=S14;Ve1.collect=C14;Ve1.jitter=Me1;Ve1.backoff=_14;Ve1.nanos=v14;Ve1.millis=x14;Ve1.randomToken=y14;var T14=OG(),Xt0=LG();function R14($,...Z){for(let X=0;X<Z.length;X++){let Q=Z[X];Object.keys(Q).forEach(function(Y){$[Y]=Q[Y]})}return $}function I14($){return T14.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function q14($,Z=!0){let X=Z?new Xt0.TimeoutError:null,Q,Y,G=new Promise((J,K)=>{Q={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(X===null)K(new Xt0.TimeoutError);else K(X)},$)});return Object.assign(G,Q)}function M14($=0){let Z,X=new Promise((Q)=>{let Y=setTimeout(()=>{Q()},$);Z={cancel:()=>{if(Y)clearTimeout(Y),Q()}}});return Object.assign(X,Z)}async function V14($,Z=1000){let X=Qt0(),Q=setTimeout(()=>{X.reject(new Xt0.TimeoutError)},Z);try{return await Promise.race([$,X])}finally{clearTimeout(Q)}}function Qt0(){let $={},Z=new Promise((X,Q)=>{$={resolve:X,reject:Q}});return Object.assign(Z,$)}function k14(){let $={},Z=new Promise((X,Q)=>{$={resolve:(Y)=>{console.trace("resolve",Y),X(Y)},reject:(Y)=>{console.trace("reject"),Q(Y)}}});return Object.assign(Z,$)}function S14($){for(let Z=$.length-1;Z>0;Z--){let X=Math.floor(Math.random()*(Z+1));[$[Z],$[X]]=[$[X],$[Z]]}return $}async function C14($){let Z=[];for await(let X of $)Z.push(X);return Z}class Ie1{timers;measures;constructor(){this.timers=new Map,this.measures=new Map}mark($){this.timers.set($,performance.now())}measure($,Z,X){let Q=this.timers.get(Z);if(Q===void 0)throw Error(`${Z} is not defined`);let Y=this.timers.get(X);if(Y===void 0)throw Error(`${X} is not defined`);this.measures.set($,Y-Q)}getEntries(){let $=[];return this.measures.forEach((Z,X)=>{$.push({name:X,duration:Z})}),$}}Ve1.Perf=Ie1;class qe1{max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=Qt0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}Ve1.SimpleMutex=qe1;function Me1($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function _14($=[0,250,250,500,500,3000,5000]){if(!Array.isArray($))$=[0,250,250,500,500,3000,5000];let Z=$.length-1;return{backoff(X){return Me1(X>Z?$[Z]:$[X])}}}function v14($){return $*1e6}function x14($){return Math.floor($/1e6)}var f14="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",IU=new Uint8Array(62);for(let $=0;$<62;$++)IU[$]=f14.charCodeAt($);var b14=218340105584896;function y14(){let $=Math.floor(Math.random()*b14),Z=$%62,X=IU[Z];$=($-Z)/62,Z=$%62;let Q=IU[Z];$=($-Z)/62,Z=$%62;let Y=IU[Z];$=($-Z)/62,Z=$%62;let G=IU[Z];$=($-Z)/62,Z=$%62;let J=IU[Z];$=($-Z)/62,Z=$%62;let K=IU[Z];$=($-Z)/62,Z=$%62;let W=IU[Z];$=($-Z)/62;let H=IU[$];return String.fromCharCode(X,Q,Y,G,J,K,W,H)}});var be1=x((xe1)=>{Object.defineProperty(xe1,"__esModule",{value:!0});xe1.nuid=xe1.NuidImpl=void 0;var e14="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",TO=62,e70=12,_e1=10,Se1=33,$$4=333,Ce1=e70+_e1,Gt0=new Uint8Array(TO);for(let $=0;$<TO;$++)Gt0[$]=e14.charCodeAt($);var s70=4294967296,ve1=BigInt(TO)**BigInt(_e1),up=Number(ve1/(1n<<32n)),Yt0=Number(ve1%(1n<<32n));function Z$4($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function X$4($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else Z$4($)}class Jt0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(Ce1),this.cbuf=new Uint8Array(e70),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(up+1)),this.seqLo=Math.floor(Math.random()*s70);while($++<8&&this.seqHi===up&&this.seqLo>=Yt0);if(this.seqHi===up&&this.seqLo>=Yt0)this.seqLo=0;this.inc=Math.random()*($$4-Se1)+Se1|0}setPre(){X$4(this.cbuf);for(let $=0;$<e70;$++)this.buf[$]=Gt0[this.cbuf[$]%TO]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let X=Ce1-1;X>=e70;X--){let Q=Math.floor($/TO),G=($-Q*TO)*s70+Z,J=Math.floor(G/TO),K=G-J*TO;this.buf[X]=Gt0[K],$=Q,Z=J}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=s70)this.seqLo-=s70,this.seqHi+=1;if(this.seqHi>up||this.seqHi===up&&this.seqLo>=Yt0)this.setPre(),this.initSeqAndInc();this.fillSeq();let $=this.buf;return String.fromCharCode($[0],$[1],$[2],$[3],$[4],$[5],$[6],$[7],$[8],$[9],$[10],$[11],$[12],$[13],$[14],$[15],$[16],$[17],$[18],$[19],$[20],$[21])}reset(){this.init()}}xe1.NuidImpl=Jt0;xe1.nuid=new Jt0});var ue1=x((ge1)=>{Object.defineProperty(ge1,"__esModule",{value:!0});ge1.nuid=ge1.Nuid=void 0;var ye1=be1();ge1.Nuid=ye1.NuidImpl;ge1.nuid=ye1.nuid});var ZX0=x(($X0)=>{Object.defineProperty($X0,"__esModule",{value:!0});$X0.nuid=$X0.Nuid=void 0;var ce1=ue1();Object.defineProperty($X0,"Nuid",{enumerable:!0,get:function(){return ce1.Nuid}});Object.defineProperty($X0,"nuid",{enumerable:!0,get:function(){return ce1.nuid}})});var RO=x((le1)=>{Object.defineProperty(le1,"__esModule",{value:!0});le1.DEFAULT_HOST=le1.DEFAULT_PORT=le1.Match=void 0;le1.syncIterator=W$4;le1.createInbox=H$4;var J$4=ZX0(),K$4=LG();le1.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function W$4($){let Z=$[Symbol.asyncIterator]();return{async next(){let X=await Z.next();if(X.done)return Promise.resolve(null);return Promise.resolve(X.value)}}}function H$4($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw K$4.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${J$4.nuid.next()}`}le1.DEFAULT_PORT=4222;le1.DEFAULT_HOST="127.0.0.1"});var cp=x((pe1)=>{Object.defineProperty(pe1,"__esModule",{value:!0});pe1.DataBuffer=void 0;var de1=OG();class ie1{buffers;byteLength;constructor(){this.buffers=[],this.byteLength=0}static concat(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}static fromAscii($){if(!$)$="";return de1.TE.encode($)}static toAscii($){return de1.TD.decode($)}reset(){this.buffers.length=0,this.byteLength=0}pack(){if(this.buffers.length>1){let $=new Uint8Array(this.byteLength),Z=0;for(let X=0;X<this.buffers.length;X++)$.set(this.buffers[X],Z),Z+=this.buffers[X].length;this.buffers.length=0,this.buffers.push($)}}shift(){if(this.buffers.length){let $=this.buffers.shift();if($)return this.byteLength-=$.length,$}return new Uint8Array(0)}drain($){if(this.buffers.length){this.pack();let Z=this.buffers.pop();if(Z){let X=this.byteLength;if($===void 0||$>X)$=X;let Q=Z.subarray(0,$);if(X>$)this.buffers.push(Z.subarray($));return this.byteLength=X-$,Q}}return new Uint8Array(0)}fill($,...Z){if($)this.buffers.push($),this.byteLength+=$.length;for(let X=0;X<Z.length;X++)if(Z[X]&&Z[X].length)this.buffers.push(Z[X]),this.byteLength+=Z[X].length}peek(){if(this.buffers.length)return this.pack(),this.buffers[0];return new Uint8Array(0)}size(){return this.byteLength}length(){return this.buffers.length}}pe1.DataBuffer=ie1});var Wj=x((oe1)=>{Object.defineProperty(oe1,"__esModule",{value:!0});oe1.LF=oe1.CR=oe1.CRLF=oe1.CR_LF_LEN=oe1.CR_LF=void 0;oe1.setTransportFactory=w$4;oe1.defaultPort=E$4;oe1.getUrlParseFn=j$4;oe1.newTransport=z$4;oe1.getResolveFn=P$4;oe1.protoLen=te1;oe1.extractProtocolMessage=A$4;var O$4=OG(),L$4=RO(),D$4=cp(),DG;function w$4($){DG=$}function E$4(){return DG!==void 0&&DG.defaultPort!==void 0?DG.defaultPort:L$4.DEFAULT_PORT}function j$4(){return DG!==void 0&&DG.urlParseFn?DG.urlParseFn:void 0}function z$4(){if(!DG||typeof DG.factory!=="function")throw Error("transport fn is not set");return DG.factory()}function P$4(){return DG!==void 0&&DG.dnsResolveFn?DG.dnsResolveFn:void 0}oe1.CR_LF=`\r
|
|
1511
|
+
`);Q=G.pop()??"";for(let J of G){let K=Bun.stripANSI(J).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;zO({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:K})}}(async()=>{try{for(;;){let{done:G,value:J}=await Z.read();if(G)break;Q+=X.decode(J,{stream:!0}),Y()}}catch{}if(Q.trim()){let G=Bun.stripANSI(Q).replace(/^\[\d+\]\s*/,"").trim();if(G)zO({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:G})}})()}async function k04($){let{baseUrl:Z,noTui:X}=$,Q=process.env.HOST==="0.0.0.0"&&Boolean(process.env.PORT),Y=Q?process.env.PORT:$.vitePort,G=Z||`http://localhost:${Y}`,J=Q?await gp(Number(Y)+1):await gp(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await l70({port:String(J),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let D of W)Qj({name:D.name,status:"ready",port:D.port});bp();let F=V04(import.meta.dir,"..","..","..","..",".."),U=X===!0,N=Bun.spawn(["bun","run","dev:servers"],{cwd:F,env:{...process.env,PORT:String(K.port),VITE_PORT:String(Y),DATABASE_URL:K.databaseUrl,NATS_URL:K.natsUrls.join(","),NODE_ENV:K.nodeEnv,BASE_URL:G,DECOCMS_LOCAL_MODE:String(K.localMode),DECOCMS_HOME:K.dataDir,DATA_DIR:K.dataDir,DECO_CLI:"1",...K.betterAuthSecret?{BETTER_AUTH_SECRET:K.betterAuthSecret}:{},...K.s3Endpoint?{S3_ENDPOINT:K.s3Endpoint,S3_BUCKET:K.s3Bucket??"",S3_ACCESS_KEY_ID:K.s3AccessKeyId??"",S3_SECRET_ACCESS_KEY:K.s3SecretAccessKey??"",S3_FORCE_PATH_STYLE:String(K.s3ForcePathStyle)}:{},...K.natsCredsPath?{NATS_CREDS:K.natsCredsPath}:{}},stdio:["inherit",U?"inherit":"pipe",U?"inherit":"pipe"]});if(!U)gn0(N.stdout),gn0(N.stderr);yp(G),Qj({name:"Vite",status:"ready",port:Number(Y)}),Qj({name:"API",status:"ready",port:Number(K.port)});let O=async(D)=>{if(N.kill(D),await N.exited,H.length>0){let{stopServices:w}=await Promise.resolve().then(() => (pZ0(),iZ0));await w(K.dataDir)}};return process.on("SIGINT",()=>O("SIGINT")),process.on("SIGTERM",()=>O("SIGTERM")),{port:Number(Y),process:N}}var un0=L(()=>{vn0();Yj();yn0()});var i70;var cn0=L(()=>{i70={name:"decocms",version:"4.319.12",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});import{Box as C04,Text as os1}from"ink";import{jsx as _04,jsxs as rs1}from"react/jsx-runtime";function as1({version:$}){return rs1(C04,{flexDirection:"column",marginTop:1,children:[L70.map((Z,X)=>_04(os1,{color:D70[X],children:Z},X)),rs1(os1,{dimColor:!0,children:[" v",$]})]})}var ss1=L(()=>{Tp()});import{Box as Gj,Text as PO}from"ink";import{Spinner as v04}from"@inkjs/ui";import{jsx as BG,jsxs as yy}from"react/jsx-runtime";function es1({status:$}){if($==="pending")return BG(v04,{label:""});return BG(PO,{color:"green",children:"\u2713"})}function x04($){return`${$.name}: ${$.port||"...."}`}function $e1({services:$,migrationsStatus:Z,home:X,serverUrl:Q}){return yy(Gj,{flexDirection:"column",paddingBottom:1,children:[BG(as1,{version:i70.version}),BG(Gj,{marginBottom:1,children:BG(PO,{dimColor:!0,children:"\u2500".repeat(80)})}),BG(Gj,{children:yy(PO,{dimColor:!0,children:["Home: ",X]})}),yy(Gj,{gap:2,children:[$.map((Y)=>yy(Gj,{gap:1,children:[BG(PO,{children:x04(Y)}),BG(es1,{status:Y.status})]},Y.name)),yy(Gj,{gap:1,children:[BG(PO,{children:"Migrations"}),BG(es1,{status:Z})]})]}),BG(Gj,{children:Q?yy(PO,{children:["Open in browser: ",BG(PO,{color:"cyan",children:Q})]}):BG(PO,{dimColor:!0,children:"Starting..."})})]})}var Ze1=L(()=>{cn0();ss1()});import{Box as f04,Text as hp}from"ink";import{jsx as ln0,jsxs as mn0}from"react/jsx-runtime";function b04($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function Xe1({logs:$}){return ln0(f04,{flexDirection:"column",children:$.map((Z,X)=>{if(Z.rawLine)return ln0(hp,{dimColor:!0,children:Z.rawLine},X);let Q=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return mn0(hp,{children:[mn0(hp,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),ln0(hp,{color:b04(Z.status),children:Z.status}),mn0(hp,{dimColor:!0,children:[" ",Q.padStart(8)]})]},X)})})}var Qe1=()=>{};var dn0={};e(dn0,{App:()=>h04});import{Box as y04}from"ink";import{useSyncExternalStore as g04}from"react";import{jsx as Ye1,jsxs as u04}from"react/jsx-runtime";function h04({home:$}){let Z=g04(bn0,fn0);return u04(y04,{flexDirection:"column",children:[Ye1($e1,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),Ye1(Xe1,{logs:Z.logs})]})}var in0=L(()=>{Ze1();Qe1();Yj()});var a3="thread-gate",AU="decopilot-hosted-harness",TU="decopilot-hosted-harness-sandboxed",IJ="automations",AO="background-tools",Jj="task-board-github-reads",RU="jira-push";var Ge1="10";function Je1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:Ge1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var Ke1=()=>{};import c04 from"pg";async function He1($,Z){let{databaseUrl:X,lockTimeoutMs:Q=l04}=$,Y=$.log??((W)=>console.log(W)),G=new c04.Client({connectionString:X});await G.connect();let J=Date.now(),K=!1;try{while(!K){if(K=(await G.query("SELECT pg_try_advisory_lock($1) AS locked",[We1.toString()])).rows[0]?.locked===!0,K)break;if(Date.now()-J>=Q)throw Error(`Timed out after ${Q}ms waiting for the DBOS migration lock. Another process is still migrating the dbos schema; this pod will restart and retry.`);await H$(m04)}let W=Date.now()-J;if(W>1000)Y(`[dbos] waited ${W}ms for the migration lock; another process migrated first`);return await Z()}finally{if(K)try{await G.query("SELECT pg_advisory_unlock($1)",[We1.toString()])}catch{}await G.end().catch(()=>{})}}var We1=8314027461559302n,l04=600000,m04=500;var Fe1=L(()=>{$4()});function d04(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function pn0($,Z){for(let X=0;X<$.length;X++){let Q=$[X];if(Q===void 0)continue;if(Q===Z)return $[X+1];if(Q.startsWith(`${Z}=`))return Q.slice(Z.length+1)}return}function Ue1(){let $=d04();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:pn0($,"--cpu-prof-dir")??process.cwd(),name:pn0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(pn0($,"--cpu-prof-interval")??1000),note:"profile is written on process exit"}));return}if(process.env.CPU_PROFILE)console.warn(JSON.stringify({msg:"cpu-profiling-requested-but-inactive",hint:'CPU profiling is a Bun launch flag. Set BUN_OPTIONS="--cpu-prof --cpu-prof-md --cpu-prof-dir=/tmp" before starting the process.'}))}function Ne1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let X=eE();if(!X)return;let Q={};try{let{heapStats:Y}=await import("bun:jsc"),G=Y(),J=Object.entries(G.objectTypeCounts).sort((K,W)=>W[1]-K[1]).slice(0,20);Q={objectCount:G.objectCount,heapSize:G.heapSize,top:Object.fromEntries(J)}}catch{}console.log(JSON.stringify({msg:"heap-watch",ts:new Date().toISOString(),uptimeS:Math.round(process.uptime()),rss:X.rss,heapUsed:X.heapUsed,heapTotal:X.heapTotal,external:X.external,arrayBuffers:X.arrayBuffers,...Q}))};return Z().catch(()=>{}),p70=setInterval(()=>void Z().catch(()=>{}),$),p70.unref?.(),process.on("SIGUSR2",()=>{try{let X=Bun.generateHeapSnapshot("v8"),Q=typeof X==="string"?X:JSON.stringify(X),Y=`/tmp/heap-${process.pid}-${Date.now()}.heapsnapshot`;Bun.write(Y,Q),console.log(JSON.stringify({msg:"heap-snapshot-written",path:Y}))}catch(X){console.error("[heap-watch] snapshot failed:",X)}}),()=>{if(p70)clearInterval(p70)}}var p70;var Be1=()=>{};import*as i04 from"bun:jsc";function Oe1(){if(process.env.STALL_WATCHDOG!=="1")return()=>{};let $=Number(process.env.STALL_WATCHDOG_MS??100),Z=Number(process.env.STALL_WATCHDOG_TICK_MS??50);try{p04()}catch(G){return console.error("[stall-watchdog] failed to start sampling profiler:",G),()=>{}}let X,Q=performance.now()+Z,Y=()=>{let G=performance.now(),J=G-Q;Q=G+Z;let K=[];try{K=n04()?.traces??[]}catch{}if(J>$&&K.length>0){let W=new Map;for(let F of K){let U=F.frames.find((O)=>O.sourceURL&&!/Unknown Executable/.test(O.category??""))??F.frames[0];if(!U)continue;let N=(U.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),B=`${U.name??"?"} @ ${N}:${U.line??"?"}`;W.set(B,(W.get(B)??0)+1)}let H=[...W.entries()].sort((F,U)=>U[1]-F[1]).slice(0,8).map(([F,U])=>({frame:F,count:U}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(J),samplesInWindow:K.length,top:H}))}X=setTimeout(Y,Z),X.unref?.()};return X=setTimeout(Y,Z),X.unref?.(),()=>{if(X)clearTimeout(X)}}var p04,n04;var Le1=L(()=>{({startSamplingProfiler:p04,samplingProfilerStackTraces:n04}=i04)});function De1(){Ue1();let $=[Ne1(),Mt1(),Oe1()];return()=>{for(let Z of $)Z()}}var we1=L(()=>{Nm0();Be1();Le1()});var Kj=x((Ee1)=>{Object.defineProperty(Ee1,"__esModule",{value:!0});Ee1.RepublishHeaders=Ee1.DirectMsgHeaders=Ee1.JsHeaders=Ee1.AdvisoryKind=void 0;Ee1.isOrderedPushConsumerOptions=t04;Ee1.isPullConsumer=o04;Ee1.isPushConsumer=r04;Ee1.isBoundPushConsumerOptions=a04;function t04($){if($&&typeof $==="object")return"name_prefix"in $||"deliver_subject_prefix"in $||"filter_subjects"in $||"filter_subject"in $||"deliver_policy"in $||"opt_start_seq"in $||"opt_start_time"in $||"replay_policy"in $||"inactive_threshold"in $||"headers_only"in $||"deliver_prefix"in $;return!1}function o04($){return $.isPullConsumer()}function r04($){return $.isPushConsumer()}function a04($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}Ee1.AdvisoryKind={API:"api_audit",StreamAction:"stream_action",ConsumerAction:"consumer_action",SnapshotCreate:"snapshot_create",SnapshotComplete:"snapshot_complete",RestoreCreate:"restore_create",RestoreComplete:"restore_complete",MaxDeliver:"max_deliver",Terminated:"terminated",Ack:"consumer_ack",StreamLeaderElected:"stream_leader_elected",StreamQuorumLost:"stream_quorum_lost",ConsumerLeaderElected:"consumer_leader_elected",ConsumerQuorumLost:"consumer_quorum_lost"};Ee1.JsHeaders={StreamSourceHdr:"Nats-Stream-Source",LastConsumerSeqHdr:"Nats-Last-Consumer",LastStreamSeqHdr:"Nats-Last-Stream",ConsumerStalledHdr:"Nats-Consumer-Stalled",MessageSizeHdr:"Nats-Msg-Size",RollupHdr:"Nats-Rollup",RollupValueSubject:"sub",RollupValueAll:"all",PendingMessagesHdr:"Nats-Pending-Messages",PendingBytesHdr:"Nats-Pending-Bytes",RequiredApiLevel:"Nats-Required-Api-Level"};Ee1.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};Ee1.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var OG=x((ze1)=>{Object.defineProperty(ze1,"__esModule",{value:!0});ze1.TD=ze1.TE=ze1.Empty=void 0;ze1.encode=J14;ze1.decode=K14;ze1.Empty=new Uint8Array(0);ze1.TE=new TextEncoder;ze1.TD=new TextDecoder;function G14(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}function J14(...$){let Z=[];for(let X=0;X<$.length;X++)Z.push(ze1.TE.encode($[X]));if(Z.length===0)return ze1.Empty;if(Z.length===1)return Z[0];return G14(...Z)}function K14($){if(!$||$.length===0)return"";return ze1.TD.decode($)}});var LG=x((Te1)=>{Object.defineProperty(Te1,"__esModule",{value:!0});Te1.errors=Te1.PermissionViolationError=Te1.NoRespondersError=Te1.TimeoutError=Te1.RequestError=Te1.ProtocolError=Te1.ConnectionError=Te1.DrainingConnectionError=Te1.ClosedConnectionError=Te1.AuthorizationError=Te1.UserAuthenticationExpiredError=Te1.InvalidOperationError=Te1.InvalidArgumentError=Te1.InvalidSubjectError=void 0;class tn0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}Te1.InvalidSubjectError=tn0;class n70 extends Error{constructor($,Z){super($,Z);this.name="InvalidArgumentError"}static format($,Z,X){if(Array.isArray(Z)&&Z.length>1)Z=Z[0];if(Array.isArray($))$=$.map((Q)=>`'${Q}'`),$=$.join(",");else $=`'${$}'`;return new n70(`${$} ${Z}`,X)}}Te1.InvalidArgumentError=n70;class on0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}Te1.InvalidOperationError=on0;class t70 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new t70($);return null}}Te1.UserAuthenticationExpiredError=t70;class o70 extends Error{constructor($,Z){super($,Z);this.name="AuthorizationError"}static parse($){let Z=["authorization violation","account authentication expired","authentication timeout"],X=$.toLowerCase();for(let Q=0;Q<Z.length;Q++)if(X.indexOf(Z[Q])!==-1)return new o70($);return null}}Te1.AuthorizationError=o70;class rn0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}Te1.ClosedConnectionError=rn0;class an0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}Te1.DrainingConnectionError=an0;class sn0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}Te1.ConnectionError=sn0;class en0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}Te1.ProtocolError=en0;class $t0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof r70}}Te1.RequestError=$t0;class Zt0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}Te1.TimeoutError=Zt0;class r70 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}Te1.NoRespondersError=r70;class a70 extends Error{operation;subject;queue;constructor($,Z,X,Q,Y){super($,Y);this.name="PermissionViolationError",this.operation=Z,this.subject=X,this.queue=Q}static parse($){if(($?$.toLowerCase():"").indexOf("permissions violation")===-1)return null;let X="publish",Q="",Y=void 0,G=$.match(/(Publish|Subscription) to "(\S+)"/);if(G){if(X=G[1].toLowerCase(),Q=G[2],X==="subscription"){let J=$.match(/using queue "(\S+)"/);if(J)Y=J[1]}}return new a70($,X,Q,Y)}}Te1.PermissionViolationError=a70;Te1.errors={AuthorizationError:o70,ClosedConnectionError:rn0,ConnectionError:sn0,DrainingConnectionError:an0,InvalidArgumentError:n70,InvalidOperationError:on0,InvalidSubjectError:tn0,NoRespondersError:r70,PermissionViolationError:a70,ProtocolError:en0,RequestError:$t0,TimeoutError:Zt0,UserAuthenticationExpiredError:t70}});var s3=x((Ve1)=>{Object.defineProperty(Ve1,"__esModule",{value:!0});Ve1.SimpleMutex=Ve1.Perf=void 0;Ve1.extend=R14;Ve1.render=I14;Ve1.timeout=q14;Ve1.delay=M14;Ve1.deadline=V14;Ve1.deferred=Qt0;Ve1.debugDeferred=k14;Ve1.shuffle=S14;Ve1.collect=C14;Ve1.jitter=Me1;Ve1.backoff=_14;Ve1.nanos=v14;Ve1.millis=x14;Ve1.randomToken=y14;var T14=OG(),Xt0=LG();function R14($,...Z){for(let X=0;X<Z.length;X++){let Q=Z[X];Object.keys(Q).forEach(function(Y){$[Y]=Q[Y]})}return $}function I14($){return T14.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function q14($,Z=!0){let X=Z?new Xt0.TimeoutError:null,Q,Y,G=new Promise((J,K)=>{Q={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(X===null)K(new Xt0.TimeoutError);else K(X)},$)});return Object.assign(G,Q)}function M14($=0){let Z,X=new Promise((Q)=>{let Y=setTimeout(()=>{Q()},$);Z={cancel:()=>{if(Y)clearTimeout(Y),Q()}}});return Object.assign(X,Z)}async function V14($,Z=1000){let X=Qt0(),Q=setTimeout(()=>{X.reject(new Xt0.TimeoutError)},Z);try{return await Promise.race([$,X])}finally{clearTimeout(Q)}}function Qt0(){let $={},Z=new Promise((X,Q)=>{$={resolve:X,reject:Q}});return Object.assign(Z,$)}function k14(){let $={},Z=new Promise((X,Q)=>{$={resolve:(Y)=>{console.trace("resolve",Y),X(Y)},reject:(Y)=>{console.trace("reject"),Q(Y)}}});return Object.assign(Z,$)}function S14($){for(let Z=$.length-1;Z>0;Z--){let X=Math.floor(Math.random()*(Z+1));[$[Z],$[X]]=[$[X],$[Z]]}return $}async function C14($){let Z=[];for await(let X of $)Z.push(X);return Z}class Ie1{timers;measures;constructor(){this.timers=new Map,this.measures=new Map}mark($){this.timers.set($,performance.now())}measure($,Z,X){let Q=this.timers.get(Z);if(Q===void 0)throw Error(`${Z} is not defined`);let Y=this.timers.get(X);if(Y===void 0)throw Error(`${X} is not defined`);this.measures.set($,Y-Q)}getEntries(){let $=[];return this.measures.forEach((Z,X)=>{$.push({name:X,duration:Z})}),$}}Ve1.Perf=Ie1;class qe1{max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=Qt0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}Ve1.SimpleMutex=qe1;function Me1($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function _14($=[0,250,250,500,500,3000,5000]){if(!Array.isArray($))$=[0,250,250,500,500,3000,5000];let Z=$.length-1;return{backoff(X){return Me1(X>Z?$[Z]:$[X])}}}function v14($){return $*1e6}function x14($){return Math.floor($/1e6)}var f14="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",IU=new Uint8Array(62);for(let $=0;$<62;$++)IU[$]=f14.charCodeAt($);var b14=218340105584896;function y14(){let $=Math.floor(Math.random()*b14),Z=$%62,X=IU[Z];$=($-Z)/62,Z=$%62;let Q=IU[Z];$=($-Z)/62,Z=$%62;let Y=IU[Z];$=($-Z)/62,Z=$%62;let G=IU[Z];$=($-Z)/62,Z=$%62;let J=IU[Z];$=($-Z)/62,Z=$%62;let K=IU[Z];$=($-Z)/62,Z=$%62;let W=IU[Z];$=($-Z)/62;let H=IU[$];return String.fromCharCode(X,Q,Y,G,J,K,W,H)}});var be1=x((xe1)=>{Object.defineProperty(xe1,"__esModule",{value:!0});xe1.nuid=xe1.NuidImpl=void 0;var e14="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",TO=62,e70=12,_e1=10,Se1=33,$$4=333,Ce1=e70+_e1,Gt0=new Uint8Array(TO);for(let $=0;$<TO;$++)Gt0[$]=e14.charCodeAt($);var s70=4294967296,ve1=BigInt(TO)**BigInt(_e1),up=Number(ve1/(1n<<32n)),Yt0=Number(ve1%(1n<<32n));function Z$4($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function X$4($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else Z$4($)}class Jt0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(Ce1),this.cbuf=new Uint8Array(e70),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(up+1)),this.seqLo=Math.floor(Math.random()*s70);while($++<8&&this.seqHi===up&&this.seqLo>=Yt0);if(this.seqHi===up&&this.seqLo>=Yt0)this.seqLo=0;this.inc=Math.random()*($$4-Se1)+Se1|0}setPre(){X$4(this.cbuf);for(let $=0;$<e70;$++)this.buf[$]=Gt0[this.cbuf[$]%TO]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let X=Ce1-1;X>=e70;X--){let Q=Math.floor($/TO),G=($-Q*TO)*s70+Z,J=Math.floor(G/TO),K=G-J*TO;this.buf[X]=Gt0[K],$=Q,Z=J}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=s70)this.seqLo-=s70,this.seqHi+=1;if(this.seqHi>up||this.seqHi===up&&this.seqLo>=Yt0)this.setPre(),this.initSeqAndInc();this.fillSeq();let $=this.buf;return String.fromCharCode($[0],$[1],$[2],$[3],$[4],$[5],$[6],$[7],$[8],$[9],$[10],$[11],$[12],$[13],$[14],$[15],$[16],$[17],$[18],$[19],$[20],$[21])}reset(){this.init()}}xe1.NuidImpl=Jt0;xe1.nuid=new Jt0});var ue1=x((ge1)=>{Object.defineProperty(ge1,"__esModule",{value:!0});ge1.nuid=ge1.Nuid=void 0;var ye1=be1();ge1.Nuid=ye1.NuidImpl;ge1.nuid=ye1.nuid});var ZX0=x(($X0)=>{Object.defineProperty($X0,"__esModule",{value:!0});$X0.nuid=$X0.Nuid=void 0;var ce1=ue1();Object.defineProperty($X0,"Nuid",{enumerable:!0,get:function(){return ce1.Nuid}});Object.defineProperty($X0,"nuid",{enumerable:!0,get:function(){return ce1.nuid}})});var RO=x((le1)=>{Object.defineProperty(le1,"__esModule",{value:!0});le1.DEFAULT_HOST=le1.DEFAULT_PORT=le1.Match=void 0;le1.syncIterator=W$4;le1.createInbox=H$4;var J$4=ZX0(),K$4=LG();le1.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function W$4($){let Z=$[Symbol.asyncIterator]();return{async next(){let X=await Z.next();if(X.done)return Promise.resolve(null);return Promise.resolve(X.value)}}}function H$4($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw K$4.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${J$4.nuid.next()}`}le1.DEFAULT_PORT=4222;le1.DEFAULT_HOST="127.0.0.1"});var cp=x((pe1)=>{Object.defineProperty(pe1,"__esModule",{value:!0});pe1.DataBuffer=void 0;var de1=OG();class ie1{buffers;byteLength;constructor(){this.buffers=[],this.byteLength=0}static concat(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}static fromAscii($){if(!$)$="";return de1.TE.encode($)}static toAscii($){return de1.TD.decode($)}reset(){this.buffers.length=0,this.byteLength=0}pack(){if(this.buffers.length>1){let $=new Uint8Array(this.byteLength),Z=0;for(let X=0;X<this.buffers.length;X++)$.set(this.buffers[X],Z),Z+=this.buffers[X].length;this.buffers.length=0,this.buffers.push($)}}shift(){if(this.buffers.length){let $=this.buffers.shift();if($)return this.byteLength-=$.length,$}return new Uint8Array(0)}drain($){if(this.buffers.length){this.pack();let Z=this.buffers.pop();if(Z){let X=this.byteLength;if($===void 0||$>X)$=X;let Q=Z.subarray(0,$);if(X>$)this.buffers.push(Z.subarray($));return this.byteLength=X-$,Q}}return new Uint8Array(0)}fill($,...Z){if($)this.buffers.push($),this.byteLength+=$.length;for(let X=0;X<Z.length;X++)if(Z[X]&&Z[X].length)this.buffers.push(Z[X]),this.byteLength+=Z[X].length}peek(){if(this.buffers.length)return this.pack(),this.buffers[0];return new Uint8Array(0)}size(){return this.byteLength}length(){return this.buffers.length}}pe1.DataBuffer=ie1});var Wj=x((oe1)=>{Object.defineProperty(oe1,"__esModule",{value:!0});oe1.LF=oe1.CR=oe1.CRLF=oe1.CR_LF_LEN=oe1.CR_LF=void 0;oe1.setTransportFactory=w$4;oe1.defaultPort=E$4;oe1.getUrlParseFn=j$4;oe1.newTransport=z$4;oe1.getResolveFn=P$4;oe1.protoLen=te1;oe1.extractProtocolMessage=A$4;var O$4=OG(),L$4=RO(),D$4=cp(),DG;function w$4($){DG=$}function E$4(){return DG!==void 0&&DG.defaultPort!==void 0?DG.defaultPort:L$4.DEFAULT_PORT}function j$4(){return DG!==void 0&&DG.urlParseFn?DG.urlParseFn:void 0}function z$4(){if(!DG||typeof DG.factory!=="function")throw Error("transport fn is not set");return DG.factory()}function P$4(){return DG!==void 0&&DG.dnsResolveFn?DG.dnsResolveFn:void 0}oe1.CR_LF=`\r
|
|
1512
1512
|
`;oe1.CR_LF_LEN=oe1.CR_LF.length;oe1.CRLF=D$4.DataBuffer.fromAscii(oe1.CR_LF);oe1.CR=new Uint8Array(oe1.CRLF)[0];oe1.LF=new Uint8Array(oe1.CRLF)[1];function te1($){for(let Z=0;Z<$.length;Z++){let X=Z+1;if($.byteLength>X&&$[Z]===oe1.CR&&$[X]===oe1.LF)return X+1}return 0}function A$4($){let Z=te1($);if(Z>0){let Q=new Uint8Array($).slice(0,Z);return O$4.TD.decode(Q)}return""}});var Ut0=x((Q0$)=>{Object.defineProperty(Q0$,"__esModule",{value:!0});Q0$.ipV4=$0$;Q0$.isIP=v$4;Q0$.parseIP=Z0$;var lp=4,Hj=16,XX0=48,ee1=57,ae1=65,C$4=70,se1=97,_$4=102,Ft0=16777215;function $0$($,Z,X,Q){let Y=new Uint8Array(Hj);return[0,0,0,0,0,0,0,0,0,0,255,255].forEach((J,K)=>{Y[K]=J}),Y[12]=$,Y[13]=Z,Y[14]=X,Y[15]=Q,Y}function v$4($){return Z0$($)!==void 0}function Z0$($){for(let Z=0;Z<$.length;Z++)switch($[Z]){case".":return X0$($);case":":return x$4($)}return}function X0$($){let Z=new Uint8Array(lp);for(let X=0;X<lp;X++){if($.length===0)return;if(X>0){if($[0]!==".")return;$=$.substring(1)}let{n:Q,c:Y,ok:G}=f$4($);if(!G||Q>255)return;$=$.substring(Y),Z[X]=Q}return $0$(Z[0],Z[1],Z[2],Z[3])}function x$4($){let Z=new Uint8Array(Hj),X=-1;if($.length>=2&&$[0]===":"&&$[1]===":"){if(X=0,$=$.substring(2),$.length===0)return Z}let Q=0;while(Q<Hj){let{n:Y,c:G,ok:J}=b$4($);if(!J||Y>65535)return;if(G<$.length&&$[G]==="."){if(X<0&&Q!=Hj-lp)return;if(Q+lp>Hj)return;let K=X0$($);if(K===void 0)return;Z[Q]=K[12],Z[Q+1]=K[13],Z[Q+2]=K[14],Z[Q+3]=K[15],$="",Q+=lp;break}if(Z[Q]=Y>>8,Z[Q+1]=Y,Q+=2,$=$.substring(G),$.length===0)break;if($[0]!==":"||$.length==1)return;if($=$.substring(1),$[0]===":"){if(X>=0)return;if(X=Q,$=$.substring(1),$.length===0)break}}if($.length!==0)return;if(Q<Hj){if(X<0)return;let Y=Hj-Q;for(let G=Q-1;G>=X;G--)Z[G+Y]=Z[G];for(let G=X+Y-1;G>=X;G--)Z[G]=0}else if(X>=0)return;return Z}function f$4($){let Z=0,X=0;for(Z=0;Z<$.length&&XX0<=$.charCodeAt(Z)&&$.charCodeAt(Z)<=ee1;Z++)if(X=X*10+($.charCodeAt(Z)-XX0),X>=Ft0)return{n:Ft0,c:Z,ok:!1};if(Z===0)return{n:0,c:0,ok:!1};return{n:X,c:Z,ok:!0}}function b$4($){let Z=0,X=0;for(X=0;X<$.length;X++){if(XX0<=$.charCodeAt(X)&&$.charCodeAt(X)<=ee1)Z*=16,Z+=$.charCodeAt(X)-XX0;else if(se1<=$.charCodeAt(X)&&$.charCodeAt(X)<=_$4)Z*=16,Z+=$.charCodeAt(X)-se1+10;else if(ae1<=$.charCodeAt(X)&&$.charCodeAt(X)<=C$4)Z*=16,Z+=$.charCodeAt(X)-ae1+10;else break;if(Z>=Ft0)return{n:0,c:X,ok:!1}}if(X===0)return{n:0,c:X,ok:!1};return{n:Z,c:X,ok:!0}}});var wt0=x((G0$)=>{Object.defineProperty(G0$,"__esModule",{value:!0});G0$.Servers=G0$.ServerImpl=void 0;G0$.isIPV4OrHostname=Y0$;G0$.hostPort=Dt0;var Nt0=Wj(),Bt0=s3(),Ot0=Ut0(),u$4=RO(),c$4=LG();function Y0$($){if($.indexOf("[")!==-1||$.indexOf("::")!==-1)return!1;if($.indexOf(".")!==-1)return!0;if($.split(":").length<=2)return!0;return!1}function Lt0($){return!Y0$($)}function l$4($){let X=$.toUpperCase().indexOf("::FFFF:");if(X!==-1&&$.indexOf(".")!==-1){let Q=$.substring(X+7);return Q=Q.replace("[",""),Q.replace("]","")}return $}function Dt0($){if($=$.trim(),$.match(/^(.*:\/\/)(.*)/m))$=$.replace(/^(.*:\/\/)(.*)/gm,"$2");if($=l$4($),Lt0($)&&$.indexOf("[")===-1)$=`[${$}]`;let Z=Lt0($)?$.match(/(]:)(\d+)/):$.match(/(:)(\d+)/),X=Z&&Z.length===3&&Z[1]&&Z[2]?parseInt(Z[2]):u$4.DEFAULT_PORT,Y=new URL(`${X===80?"https":"http"}://${$}`);Y.port=`${X}`;let G=Y.hostname;if(G.charAt(0)==="[")G=G.substring(1,G.length-1);return{listen:Y.host,hostname:G,port:X}}class gy{src;listen;hostname;port;didConnect;reconnects;lastConnect;gossiped;tlsName;resolves;constructor($,Z=!1){this.src=$,this.tlsName="";let X=Dt0($);this.listen=X.listen,this.hostname=X.hostname,this.port=X.port,this.didConnect=!1,this.reconnects=0,this.lastConnect=0,this.gossiped=Z}toString(){return this.listen}async resolve($){if(!$.fn||$.resolve===!1)return[this];let Z=[];if((0,Ot0.isIP)(this.hostname))return[this];else{let X=await $.fn(this.hostname);if($.debug)console.log(`resolve ${this.hostname} = ${X.join(",")}`);for(let Q of X){let Y=this.port===80?"https":"http",G=new URL(`${Y}://${Lt0(Q)?"["+Q+"]":Q}`);G.port=`${this.port}`;let J=new gy(G.host,!1);J.tlsName=this.hostname,Z.push(J)}}if($.randomize)(0,Bt0.shuffle)(Z);return this.resolves=Z,Z}}G0$.ServerImpl=gy;class QX0{firstSelect;servers;currentServer;tlsName;randomize;constructor($={}){this.firstSelect=!0,this.servers=[],this.tlsName="",this.randomize=$.randomize||!1}setServers($){if(!Array.isArray($)||$.length===0)throw c$4.InvalidArgumentError.format("servers","cannot be empty");let Z=(0,Nt0.getUrlParseFn)(),X=new Map;for(let Y of this.servers)X.set(Y.listen,Y);let Q=[];for(let Y of $){Y=Z?Z(Y):Y;let{listen:G}=Dt0(Y),J=X.get(G);if(J)J.gossiped=!1,Q.push(J);else Q.push(new gy(Y))}if(this.randomize)(0,Bt0.shuffle)(Q);if(this.servers=Q,this.currentServer===void 0||!Q.includes(this.currentServer))this.currentServer=Q[0],this.firstSelect=!0}clear(){this.servers.length=0}updateTLSName(){let $=this.getCurrentServer();if(!(0,Ot0.isIP)($.hostname))this.tlsName=$.hostname,this.servers.forEach((Z)=>{if(Z.gossiped)Z.tlsName=this.tlsName})}getCurrentServer(){return this.currentServer}addServer($,Z=!1){let X=(0,Nt0.getUrlParseFn)();$=X?X($):$;let Q=new gy($,Z);if((0,Ot0.isIP)(Q.hostname))Q.tlsName=this.tlsName;this.servers.push(Q)}selectServer(){if(this.firstSelect)return this.firstSelect=!1,this.currentServer;let $=this.servers.shift();if($)this.servers.push($),this.currentServer=$;return $}removeCurrentServer(){this.removeServer(this.currentServer)}removeServer($){if($){let Z=this.servers.indexOf($);this.servers.splice(Z,1)}}snapshot(){return QX0.freezeAll(this.servers)}snapshotForHandler(){let $=this.currentServer;if(!$)return this.snapshot();let Z=this.servers.indexOf($);if(Z<=0)return this.snapshot();return QX0.freezeAll([$,...this.servers.slice(0,Z),...this.servers.slice(Z+1)])}static freezeAll($){return $.map((Z)=>Object.freeze({hostname:Z.hostname,port:Z.port,listen:Z.listen,src:Z.src,tlsName:Z.tlsName,reconnects:Z.reconnects,lastConnect:Z.lastConnect,gossiped:Z.gossiped,didConnect:Z.didConnect}))}find($){return this.servers.find((Z)=>Z.listen===$.listen)}setCurrent($){this.currentServer=$}length(){return this.servers.length}next(){return this.servers.length?this.servers[0]:void 0}getServers(){return this.servers}update($,Z){let X=[],Q=[],Y=(0,Nt0.getUrlParseFn)(),G=new Map;if($.connect_urls&&$.connect_urls.length>0)$.connect_urls.forEach((K)=>{K=Y?Y(K,Z):K;let W=new gy(K,!0);G.set(K,W)});let J=[];if(this.servers.forEach((K,W)=>{let H=K.listen;if(K.gossiped&&this.currentServer.listen!==H&&G.get(H)===void 0)J.push(W);G.delete(H)}),J.reverse(),J.forEach((K)=>{let W=this.servers.splice(K,1);Q=Q.concat(W[0].listen)}),G.forEach((K,W)=>{this.servers.push(K),X.push(W)}),this.randomize&&X.length>0){let K=this.currentServer,W=this.servers.filter((H)=>H!==K);(0,Bt0.shuffle)(W),this.servers=K?[K,...W]:W}return{added:X,deleted:Q}}}G0$.Servers=QX0});var YX0=x((H0$)=>{Object.defineProperty(H0$,"__esModule",{value:!0});H0$.QueuedIteratorImpl=void 0;var Et0=s3(),K0$=LG();class W0${inflight;processed;received;noIterator;iterClosed;done;signal;yields;filtered;pendingFiltered;ctx;_data;err;time;profile;yielding;didBreak;constructor(){this.inflight=0,this.filtered=0,this.pendingFiltered=0,this.processed=0,this.received=0,this.noIterator=!1,this.done=!1,this.signal=(0,Et0.deferred)(),this.yields=[],this.iterClosed=(0,Et0.deferred)(),this.time=0,this.yielding=!1,this.didBreak=!1,this.profile=!1}[Symbol.asyncIterator](){return this.iterate()}push($){if(this.done)return;if(this.didBreak){if(typeof $==="function"){let Z=$;try{Z()}catch(X){}}return}if(typeof $==="function")this.pendingFiltered++;this.yields.push($),this.signal.resolve()}async*iterate(){if(this.noIterator)throw new K0$.InvalidOperationError("iterator cannot be used when a callback is registered");if(this.yielding)throw new K0$.InvalidOperationError("iterator is already yielding");this.yielding=!0;try{while(!0){if(this.yields.length===0)await this.signal;if(this.err)throw this.err;let $=this.yields;this.inflight=$.length,this.yields=[];for(let Z=0;Z<$.length;Z++){if(typeof $[Z]==="function"){this.pendingFiltered--;let Q=$[Z];try{Q()}catch(Y){throw Y}if(this.err)throw this.err;continue}this.processed++,this.inflight--;let X=this.profile?Date.now():0;yield $[Z],this.time=this.profile?Date.now()-X:0}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,Et0.deferred)()}}finally{this.didBreak=!0,this.stop()}}stop($){if(this.done)return;this.err=$,this.done=!0,this.signal.resolve(),this.iterClosed.resolve($)}getProcessed(){return this.noIterator?this.received:this.processed}getPending(){return this.yields.length+this.inflight-this.pendingFiltered}getReceived(){return this.received-this.filtered}}H0$.QueuedIteratorImpl=W0$});var jt0=x((B0$)=>{Object.defineProperty(B0$,"__esModule",{value:!0});B0$.MuxSubscription=void 0;var p$4=RO(),U0$=LG();class N0${baseInbox;reqs;constructor(){this.reqs=new Map}size(){return this.reqs.size}init($){return this.baseInbox=`${(0,p$4.createInbox)($)}.`,this.baseInbox}add($){if(!isNaN($.received))$.received=0;this.reqs.set($.token,$)}get($){return this.reqs.get($)}cancel($){this.reqs.delete($.token)}getToken($){let Z=$.subject||"";if(Z.indexOf(this.baseInbox)===0)return Z.substring(this.baseInbox.length);return null}all(){return Array.from(this.reqs.values())}handleError($,Z){if($)return this.all().forEach((X)=>{X.resolver(Z,{})}),!0;if(Z.operation==="publish"){let X=this.all().find((Q)=>{return Q.requestSubject===Z.subject});if(X)return X.resolver(Z,{}),!0}return!1}dispatcher(){return($,Z)=>{let X=this.getToken(Z);if(X){let Q=this.get(X);if(Q){if($===null)$=Z?.data?.length===0&&Z.headers?.code===503?new U0$.NoRespondersError(Q.requestSubject):null;Q.resolver($,Z)}}}}close(){let $=new U0$.RequestError("connection closed");this.reqs.forEach((Z)=>{Z.resolver($,{})})}}B0$.MuxSubscription=N0$});var zt0=x((D0$)=>{Object.defineProperty(D0$,"__esModule",{value:!0});D0$.Heartbeat=void 0;var n$4=s3();class L0${ph;interval;maxOut;timer;pendings;constructor($,Z,X){this.ph=$,this.interval=Z,this.maxOut=X,this.pendings=[]}start(){this.cancel(),this._schedule()}cancel($){if(this.timer)clearTimeout(this.timer),this.timer=void 0;if(this._reset(),$)this.ph.disconnect()}_schedule(){this.timer=setTimeout(()=>{if(this.ph.dispatchStatus({type:"ping",pendingPings:this.pendings.length+1}),this.pendings.length===this.maxOut){this.cancel(!0);return}let $=(0,n$4.deferred)();this.ph.flush($).then(()=>{this._reset()}).catch(()=>{this.cancel()}),this.pendings.push($),this._schedule()},this.interval)}_reset(){this.pendings=this.pendings.filter(($)=>{return $.resolve(),!1})}}D0$.Heartbeat=L0$});var Tt0=x((P0$)=>{Object.defineProperty(P0$,"__esModule",{value:!0});P0$.DenoBuffer=P0$.MAX_SIZE=P0$.AssertionError=void 0;P0$.assert=j0$;P0$.concat=z0$;P0$.append=o$4;P0$.readAll=r$4;P0$.writeAll=a$4;var t$4=OG();class Pt0 extends Error{constructor($){super($);this.name="AssertionError"}}P0$.AssertionError=Pt0;function j0$($,Z="Assertion failed."){if(!$)throw new Pt0(Z)}var E0$=32768;P0$.MAX_SIZE=4294967294;function GX0($,Z,X=0){let Q=Z.byteLength-X;if($.byteLength>Q)$=$.subarray(0,Q);return Z.set($,X),$.byteLength}function z0$($,Z){if($===void 0&&Z===void 0)return new Uint8Array(0);if($===void 0)return Z;if(Z===void 0)return $;let X=new Uint8Array($.length+Z.length);return X.set($,0),X.set(Z,$.length),X}function o$4($,Z){return z0$($,Uint8Array.of(Z))}class At0{_buf;_off;constructor($){if(this._off=0,$==null){this._buf=new Uint8Array(0);return}this._buf=new Uint8Array($)}bytes($={copy:!0}){if($.copy===!1)return this._buf.subarray(this._off);return this._buf.slice(this._off)}empty(){return this._buf.byteLength<=this._off}get length(){return this._buf.byteLength-this._off}get capacity(){return this._buf.buffer.byteLength}truncate($){if($===0){this.reset();return}if($<0||$>this.length)throw Error("bytes.Buffer: truncation out of range");this._reslice(this._off+$)}reset(){this._reslice(0),this._off=0}_tryGrowByReslice($){let Z=this._buf.byteLength;if($<=this.capacity-Z)return this._reslice(Z+$),Z;return-1}_reslice($){j0$($<=this._buf.buffer.byteLength),this._buf=new Uint8Array(this._buf.buffer,0,$)}readByte(){let $=new Uint8Array(1);if(this.read($))return $[0];return null}read($){if(this.empty()){if(this.reset(),$.byteLength===0)return 0;return null}let Z=GX0(this._buf.subarray(this._off),$);return this._off+=Z,Z}writeByte($){return this.write(Uint8Array.of($))}writeString($){return this.write(t$4.TE.encode($))}write($){let Z=this._grow($.byteLength);return GX0($,this._buf,Z)}_grow($){let Z=this.length;if(Z===0&&this._off!==0)this.reset();let X=this._tryGrowByReslice($);if(X>=0)return X;let Q=this.capacity;if($<=Math.floor(Q/2)-Z)GX0(this._buf.subarray(this._off),this._buf);else if(Q+$>P0$.MAX_SIZE)throw Error("The buffer cannot be grown beyond the maximum size.");else{let Y=new Uint8Array(Math.min(2*Q+$,P0$.MAX_SIZE));GX0(this._buf.subarray(this._off),Y),this._buf=Y}return this._off=0,this._reslice(Math.min(Z+$,P0$.MAX_SIZE)),Z}grow($){if($<0)throw Error("Buffer._grow: negative count");let Z=this._grow($);this._reslice(Z)}readFrom($){let Z=0,X=new Uint8Array(E0$);while(!0){let Q=this.capacity-this.length<E0$,Y=Q?X:new Uint8Array(this._buf.buffer,this.length),G=$.read(Y);if(G===null)return Z;if(Q)this.write(Y.subarray(0,G));else this._reslice(this.length+G);Z+=G}}}P0$.DenoBuffer=At0;function r$4($){let Z=new At0;return Z.readFrom($),Z.bytes()}function a$4($,Z){let X=0;while(X<Z.length)X+=$.write(Z.subarray(X))}});var qt0=x((q0$)=>{Object.defineProperty(q0$,"__esModule",{value:!0});q0$.cc=q0$.State=q0$.Parser=q0$.Kind=void 0;q0$.describe=Y84;var Rt0=Tt0(),It0=OG();q0$.Kind={OK:0,ERR:1,MSG:2,INFO:3,PING:4,PONG:5};function Y84($){let Z,X="";switch($.kind){case q0$.Kind.MSG:Z="MSG";break;case q0$.Kind.OK:Z="OK";break;case q0$.Kind.ERR:Z="ERR",X=It0.TD.decode($.data);break;case q0$.Kind.PING:Z="PING";break;case q0$.Kind.PONG:Z="PONG";break;case q0$.Kind.INFO:Z="INFO",X=It0.TD.decode($.data)}return`${Z}: ${X}`}function T0$(){let $={};return $.sid=-1,$.hdr=-1,$.size=-1,$}var R0$=48,G84=57,hy=67108864;class I0${dispatcher;state;as;drop;hdr;ma;argBuf;msgBuf;constructor($){this.dispatcher=$,this.state=q0$.State.OP_START,this.as=0,this.drop=0,this.hdr=0}parse($){let Z;for(Z=0;Z<$.length;Z++){let X=$[Z];switch(this.state){case q0$.State.OP_START:switch(X){case q0$.cc.M:case q0$.cc.m:this.state=q0$.State.OP_M,this.hdr=-1,this.ma=T0$();break;case q0$.cc.H:case q0$.cc.h:this.state=q0$.State.OP_H,this.hdr=0,this.ma=T0$();break;case q0$.cc.P:case q0$.cc.p:this.state=q0$.State.OP_P;break;case q0$.cc.PLUS:this.state=q0$.State.OP_PLUS;break;case q0$.cc.MINUS:this.state=q0$.State.OP_MINUS;break;case q0$.cc.I:case q0$.cc.i:this.state=q0$.State.OP_I;break;default:throw this.fail($.subarray(Z))}break;case q0$.State.OP_H:switch(X){case q0$.cc.M:case q0$.cc.m:this.state=q0$.State.OP_M;break;default:throw this.fail($.subarray(Z))}break;case q0$.State.OP_M:switch(X){case q0$.cc.S:case q0$.cc.s:this.state=q0$.State.OP_MS;break;default:throw this.fail($.subarray(Z))}break;case q0$.State.OP_MS:switch(X){case q0$.cc.G:case q0$.cc.g:this.state=q0$.State.OP_MSG;break;default:throw this.fail($.subarray(Z))}break;case q0$.State.OP_MSG:switch(X){case q0$.cc.SPACE:case q0$.cc.TAB:this.state=q0$.State.OP_MSG_SPC;break;default:throw this.fail($.subarray(Z))}break;case q0$.State.OP_MSG_SPC:switch(X){case q0$.cc.SPACE:case q0$.cc.TAB:continue;default:this.state=q0$.State.MSG_ARG,this.as=Z}break;case q0$.State.MSG_ARG:switch(X){case q0$.cc.CR:this.drop=1;break;case q0$.cc.NL:{let Q=this.argBuf?this.argBuf.bytes():$.subarray(this.as,Z-this.drop);this.processMsgArgs(Q),this.drop=0,this.as=Z+1,this.state=q0$.State.MSG_PAYLOAD,Z=this.as+this.ma.size-1;break}default:if(this.argBuf)this.argBuf.writeByte(X)}break;case q0$.State.MSG_PAYLOAD:if(this.msgBuf)if(this.msgBuf.length>=this.ma.size){let Q=this.msgBuf.bytes({copy:!1});this.dispatcher.push({kind:q0$.Kind.MSG,msg:this.ma,data:Q}),this.argBuf=void 0,this.msgBuf=void 0,this.state=q0$.State.MSG_END}else{let Q=this.ma.size-this.msgBuf.length,Y=$.length-Z;if(Y<Q)Q=Y;if(Q>0)this.msgBuf.write($.subarray(Z,Z+Q)),Z=Z+Q-1;else this.msgBuf.writeByte(X)}else if(Z-this.as>=this.ma.size)this.dispatcher.push({kind:q0$.Kind.MSG,msg:this.ma,data:$.subarray(this.as,Z)}),this.argBuf=void 0,this.msgBuf=void 0,this.state=q0$.State.MSG_END;break;case q0$.State.MSG_END:switch(X){case q0$.cc.NL:this.drop=0,this.as=Z+1,this.state=q0$.State.OP_START;break;default:continue}break;case q0$.State.OP_PLUS:switch(X){case q0$.cc.O:case q0$.cc.o:this.state=q0$.State.OP_PLUS_O;break;default:throw this.fail($.subarray(Z))}break;case q0$.State.OP_PLUS_O:switch(X){case q0$.cc.K:case q0$.cc.k:this.state=q0$.State.OP_PLUS_OK;break;default:throw this.fail($.subarray(Z))}break;case q0$.State.OP_PLUS_OK:switch(X){case q0$.cc.NL:this.dispatcher.push({kind:q0$.Kind.OK}),this.drop=0,this.state=q0$.State.OP_START;break}break;case q0$.State.OP_MINUS:switch(X){case q0$.cc.E:case q0$.cc.e:this.state=q0$.State.OP_MINUS_E;break;default:throw this.fail($.subarray(Z))}break;case q0$.State.OP_MINUS_E:switch(X){case q0$.cc.R:case q0$.cc.r:this.state=q0$.State.OP_MINUS_ER;break;default:throw this.fail($.subarray(Z))}break;case q0$.State.OP_MINUS_ER:switch(X){case q0$.cc.R:case q0$.cc.r:this.state=q0$.State.OP_MINUS_ERR;break;default:throw this.fail($.subarray(Z))}break;case q0$.State.OP_MINUS_ERR:switch(X){case q0$.cc.SPACE:case q0$.cc.TAB:this.state=q0$.State.OP_MINUS_ERR_SPC;break;default:throw this.fail($.subarray(Z))}break;case q0$.State.OP_MINUS_ERR_SPC:switch(X){case q0$.cc.SPACE:case q0$.cc.TAB:continue;default:this.state=q0$.State.MINUS_ERR_ARG,this.as=Z}break;case q0$.State.MINUS_ERR_ARG:switch(X){case q0$.cc.CR:this.drop=1;break;case q0$.cc.NL:{let Q;if(this.argBuf)Q=this.argBuf.bytes(),this.argBuf=void 0;else Q=$.subarray(this.as,Z-this.drop);this.dispatcher.push({kind:q0$.Kind.ERR,data:Q}),this.drop=0,this.as=Z+1,this.state=q0$.State.OP_START;break}default:if(this.argBuf)this.argBuf.write(Uint8Array.of(X))}break;case q0$.State.OP_P:switch(X){case q0$.cc.I:case q0$.cc.i:this.state=q0$.State.OP_PI;break;case q0$.cc.O:case q0$.cc.o:this.state=q0$.State.OP_PO;break;default:throw this.fail($.subarray(Z))}break;case q0$.State.OP_PO:switch(X){case q0$.cc.N:case q0$.cc.n:this.state=q0$.State.OP_PON;break;default:throw this.fail($.subarray(Z))}break;case q0$.State.OP_PON:switch(X){case q0$.cc.G:case q0$.cc.g:this.state=q0$.State.OP_PONG;break;default:throw this.fail($.subarray(Z))}break;case q0$.State.OP_PONG:switch(X){case q0$.cc.NL:this.dispatcher.push({kind:q0$.Kind.PONG}),this.drop=0,this.state=q0$.State.OP_START;break}break;case q0$.State.OP_PI:switch(X){case q0$.cc.N:case q0$.cc.n:this.state=q0$.State.OP_PIN;break;default:throw this.fail($.subarray(Z))}break;case q0$.State.OP_PIN:switch(X){case q0$.cc.G:case q0$.cc.g:this.state=q0$.State.OP_PING;break;default:throw this.fail($.subarray(Z))}break;case q0$.State.OP_PING:switch(X){case q0$.cc.NL:this.dispatcher.push({kind:q0$.Kind.PING}),this.drop=0,this.state=q0$.State.OP_START;break}break;case q0$.State.OP_I:switch(X){case q0$.cc.N:case q0$.cc.n:this.state=q0$.State.OP_IN;break;default:throw this.fail($.subarray(Z))}break;case q0$.State.OP_IN:switch(X){case q0$.cc.F:case q0$.cc.f:this.state=q0$.State.OP_INF;break;default:throw this.fail($.subarray(Z))}break;case q0$.State.OP_INF:switch(X){case q0$.cc.O:case q0$.cc.o:this.state=q0$.State.OP_INFO;break;default:throw this.fail($.subarray(Z))}break;case q0$.State.OP_INFO:switch(X){case q0$.cc.SPACE:case q0$.cc.TAB:this.state=q0$.State.OP_INFO_SPC;break;default:throw this.fail($.subarray(Z))}break;case q0$.State.OP_INFO_SPC:switch(X){case q0$.cc.SPACE:case q0$.cc.TAB:continue;default:this.state=q0$.State.INFO_ARG,this.as=Z}break;case q0$.State.INFO_ARG:switch(X){case q0$.cc.CR:this.drop=1;break;case q0$.cc.NL:{let Q;if(this.argBuf)Q=this.argBuf.bytes(),this.argBuf=void 0;else Q=$.subarray(this.as,Z-this.drop);this.dispatcher.push({kind:q0$.Kind.INFO,data:Q}),this.drop=0,this.as=Z+1,this.state=q0$.State.OP_START;break}default:if(this.argBuf)this.argBuf.writeByte(X)}break;default:throw this.fail($.subarray(Z))}}if((this.state===q0$.State.MSG_ARG||this.state===q0$.State.MINUS_ERR_ARG||this.state===q0$.State.INFO_ARG)&&!this.argBuf)this.argBuf=new Rt0.DenoBuffer($.subarray(this.as,Z-this.drop));if(this.state===q0$.State.MSG_PAYLOAD&&!this.msgBuf){if(!this.argBuf)this.cloneMsgArg();this.msgBuf=new Rt0.DenoBuffer($.subarray(this.as))}}cloneMsgArg(){let $=this.ma.subject.length,Z=this.ma.reply?this.ma.reply.length:0,X=new Uint8Array($+Z);if(X.set(this.ma.subject),this.ma.reply)X.set(this.ma.reply,$);if(this.argBuf=new Rt0.DenoBuffer(X),this.ma.subject=X.subarray(0,$),this.ma.reply)this.ma.reply=X.subarray($)}processMsgArgs($){if(this.hdr>=0)return this.processHeaderMsgArgs($);let Z=[],X=-1;for(let Q=0;Q<$.length;Q++)switch($[Q]){case q0$.cc.SPACE:case q0$.cc.TAB:case q0$.cc.CR:case q0$.cc.NL:if(X>=0)Z.push($.subarray(X,Q)),X=-1;break;default:if(X<0)X=Q}if(X>=0)Z.push($.subarray(X));switch(Z.length){case 3:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=void 0,this.ma.size=this.protoParseInt(Z[2],hy);break;case 4:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=Z[2],this.ma.size=this.protoParseInt(Z[3],hy);break;default:throw this.fail($,"processMsgArgs Parse Error")}if(this.ma.sid<0)throw this.fail($,"processMsgArgs Bad or Missing Sid Error");if(this.ma.size<0)throw this.fail($,"processMsgArgs Bad or Missing Size Error")}fail($,Z=""){if(!Z)Z=`parse error [${this.state}]`;else Z=`${Z} [${this.state}]`;return Error(`${Z}: ${It0.TD.decode($)}`)}processHeaderMsgArgs($){let Z=[],X=-1;for(let Q=0;Q<$.length;Q++)switch($[Q]){case q0$.cc.SPACE:case q0$.cc.TAB:case q0$.cc.CR:case q0$.cc.NL:if(X>=0)Z.push($.subarray(X,Q)),X=-1;break;default:if(X<0)X=Q}if(X>=0)Z.push($.subarray(X));switch(Z.length){case 4:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=void 0,this.ma.hdr=this.protoParseInt(Z[2],hy),this.ma.size=this.protoParseInt(Z[3],hy);break;case 5:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=Z[2],this.ma.hdr=this.protoParseInt(Z[3],hy),this.ma.size=this.protoParseInt(Z[4],hy);break;default:throw this.fail($,"processHeaderMsgArgs Parse Error")}if(this.ma.sid<0)throw this.fail($,"processHeaderMsgArgs Bad or Missing Sid Error");if(this.ma.hdr<0||this.ma.hdr>this.ma.size)throw this.fail($,"processHeaderMsgArgs Bad or Missing Header Size Error");if(this.ma.size<0)throw this.fail($,"processHeaderMsgArgs Bad or Missing Size Error")}protoParseInt($,Z){if($.length===0||$.length>15)return-1;let X=0;for(let Q=0;Q<$.length;Q++){if($[Q]<R0$||$[Q]>G84)return-1;X=X*10+($[Q]-R0$)}return Z!==void 0&&X>Z?-1:X}}q0$.Parser=I0$;q0$.State={OP_START:0,OP_PLUS:1,OP_PLUS_O:2,OP_PLUS_OK:3,OP_MINUS:4,OP_MINUS_E:5,OP_MINUS_ER:6,OP_MINUS_ERR:7,OP_MINUS_ERR_SPC:8,MINUS_ERR_ARG:9,OP_M:10,OP_MS:11,OP_MSG:12,OP_MSG_SPC:13,MSG_ARG:14,MSG_PAYLOAD:15,MSG_END:16,OP_H:17,OP_P:18,OP_PI:19,OP_PIN:20,OP_PING:21,OP_PO:22,OP_PON:23,OP_PONG:24,OP_I:25,OP_IN:26,OP_INF:27,OP_INFO:28,OP_INFO_SPC:29,INFO_ARG:30};q0$.cc={CR:13,E:69,e:101,F:70,f:102,G:71,g:103,H:72,h:104,I:73,i:105,K:75,k:107,M:77,m:109,MINUS:45,N:78,n:110,NL:10,O:79,o:111,P:80,p:112,PLUS:43,R:82,r:114,S:83,s:115,SPACE:32,TAB:9}});var WX0=x((V0$)=>{Object.defineProperty(V0$,"__esModule",{value:!0});V0$.MsgHdrsImpl=void 0;V0$.canonicalMIMEHeaderKey=Vt0;V0$.headers=W84;var M0$=OG(),e3=RO(),KX0=LG();function Vt0($){let F=!0,U=Array($.length);for(let N=0;N<$.length;N++){let B=$.charCodeAt(N);if(B===58||B<33||B>126)throw KX0.InvalidArgumentError.format("header",`'${$[N]}' is not a valid character in a header name`);if(F&&97<=B&&B<=122)B-=32;else if(!F&&65<=B&&B<=90)B+=32;U[N]=B,F=B==45}return String.fromCharCode(...U)}function W84($=0,Z=""){if($===0&&Z!=="")throw KX0.InvalidArgumentError.format("code","is required");else if($>0&&Z==="")throw KX0.InvalidArgumentError.format("description","is required");return new uy($,Z)}var Mt0="NATS/1.0";class uy{_code;headers;_description;constructor($=0,Z=""){this._code=$,this._description=Z,this.headers=new Map}[Symbol.iterator](){return this.headers.entries()}size(){return this.headers.size}equals($){if($&&this.headers.size===$.headers.size&&this._code===$._code){for(let[Z,X]of this.headers){let Q=$.values(Z);if(X.length!==Q.length)return!1;let Y=[...X].sort(),G=[...Q].sort();for(let J=0;J<Y.length;J++)if(Y[J]!==G[J])return!1}return!0}return!1}static decode($){let Z=new uy,Q=M0$.TD.decode($).split(`\r
|
|
1513
1513
|
`),Y=Q[0];if(Y!==Mt0){let G=Y.replace(Mt0,"").trim();if(G.length>0){if(Z._code=parseInt(G,10),isNaN(Z._code))Z._code=0;let J=Z._code.toString();G=G.replace(J,""),Z._description=G.trim()}}if(Q.length>=1)Q.slice(1).map((G)=>{if(G){let J=G.indexOf(":");if(J>-1){let K=G.slice(0,J),W=G.slice(J+1).trim();Z.append(K,W)}}});return Z}toString(){if(this.headers.size===0&&this._code===0)return"";let $=Mt0;if(this._code>0&&this._description!=="")$+=` ${this._code} ${this._description}`;for(let[Z,X]of this.headers)for(let Q=0;Q<X.length;Q++)$=`${$}\r
|
|
1514
1514
|
${Z}: ${X[Q]}`;return`${$}\r
|
|
@@ -1562,7 +1562,7 @@ You are running the brand-context onboarding for the user's organization. Your o
|
|
|
1562
1562
|
4. Do NOT call any other tools in this thread. Do NOT call \`brand_context_setup\` more than once.
|
|
1563
1563
|
|
|
1564
1564
|
If the tool returns an error, surface the error message to the user and ask whether they want to try a different URL.
|
|
1565
|
-
`.trim();bX$=vJ("site-diagnostics_"),oq5=bX$.is,rq5=bX$.get,yX$=vJ("commerce-discovery_"),aq5=yX$.is,vY0=yX$.get;XL={AGENT_MANAGER:vJ("studio-agent-manager_"),AUTOMATION_MANAGER:vJ("studio-automation-manager_"),CONNECTION_MANAGER:vJ("studio-connection-manager_"),API_KEY_MANAGER:vJ("studio-api-key-manager_"),STORE_MANAGER:vJ("studio-store-manager_"),BRAND_MANAGER:vJ("studio-brand-manager_"),USAGE_MANAGER:vJ("studio-usage-manager_")},GY={AGENT_MANAGER:XL.AGENT_MANAGER.get,AUTOMATION_MANAGER:XL.AUTOMATION_MANAGER.get,CONNECTION_MANAGER:XL.CONNECTION_MANAGER.get,API_KEY_MANAGER:XL.API_KEY_MANAGER.get,STORE_MANAGER:XL.STORE_MANAGER.get,BRAND_MANAGER:XL.BRAND_MANAGER.get,USAGE_MANAGER:XL.USAGE_MANAGER.get}});function mX$($){return $.toLowerCase().replace(/[^a-z0-9]/g,"")}function lH4($){return mX$($).includes("deepresearch")}function dX$($){let Z=mX$($);if(Z.includes("deepresearch"))return!1;return mH4.some((X)=>Z.includes(X))}function dH4($){return $.asyncResearch!==!0&&dX$($.modelId)}function iH4($){return $.asyncResearch===!0||lH4($.modelId)||dX$($.modelId)}function bg($,Z,X,Q){for(let Y of X){let G=$.find((J)=>J.modelId===Y);if(G)return{keyId:Z,modelId:G.modelId,title:G.title}}for(let Y of X){let G=$.find((J)=>J.modelId.includes(Y));if(G)return{keyId:Z,modelId:G.modelId,title:G.title}}if(Q){let Y=$.find(Q);if(Y)return{keyId:Z,modelId:Y.modelId,title:Y.title}}return null}function iX$($,Z){let X={chat:{fast:null,smart:null,thinking:null},image:null,webSearch:null,deepResearch:null};for(let Q of $){let Y=Z[Q.id]??[],G=Q.providerId;if(!X.chat.fast)X.chat.fast=bg(Y,Q.id,bH4[G]??[]);if(!X.chat.smart)X.chat.smart=bg(Y,Q.id,yH4[G]??[]);if(!X.chat.thinking)X.chat.thinking=bg(Y,Q.id,gH4[G]??[]);if(!X.image)X.image=bg(Y,Q.id,hH4[G]??[],(J)=>J.capabilities?.includes("image")===!0);if(!X.webSearch)X.webSearch=bg(Y,Q.id,uH4[G]??[],dH4);if(!X.deepResearch)X.deepResearch=bg(Y,Q.id,cH4[G]??[],iH4)}return X}var bH4,yH4,gH4,hH4,uH4,cH4,mH4;var pX$=L(()=>{bH4={anthropic:["claude-haiku-4-5","claude-haiku"],openrouter:["qwen/qwen3.5-flash","anthropic/claude-haiku-4.5","anthropic/claude-haiku","google/gemini-3-flash"],deco:["qwen/qwen3.5-flash","anthropic/claude-haiku"],llmapi:["claude-haiku-4-5","claude-haiku","gpt-4o-mini"],google:["gemini-2.5-flash","gemini-3-flash"]},yH4={anthropic:["claude-sonnet-5","claude-sonnet"],openrouter:["anthropic/claude-sonnet-5","anthropic/claude-sonnet","anthropic/claude-opus-4.8","google/gemini-3-pro"],deco:["anthropic/claude-sonnet-5","anthropic/claude-sonnet","anthropic/claude"],llmapi:["claude-sonnet-4-6","claude-sonnet"],google:["gemini-3-pro","gemini-3-flash"]},gH4={anthropic:["claude-opus-4-8","claude-sonnet-5","claude-sonnet","claude-fable-5"],openrouter:["anthropic/claude-opus-4.8:extended","anthropic/claude-opus-4.8","anthropic/claude-sonnet-5:extended","anthropic/claude-sonnet-5","google/gemini-3-pro","anthropic/claude-fable-5"],deco:["anthropic/claude-opus","anthropic/claude-sonnet-4.6","anthropic/claude-sonnet","anthropic/claude-fable"],llmapi:["claude-opus-4-8","claude-opus","claude-sonnet-4-6"],google:["gemini-3-pro"]},hH4={openrouter:["openai/gpt-image-1","google/gemini-2.0-flash-image"],deco:["openai/gpt-image-1","google/gemini-2.0-flash-image"],llmapi:["gemini-2.5-flash-image","gpt-image-1"],google:["gemini-2.0-flash-image"]},uH4={openrouter:["perplexity/sonar","perplexity/sonar-pro"],deco:["perplexity/sonar","perplexity/sonar-pro"]},cH4={openrouter:["perplexity/deep-research","perplexity/sonar-pro"],deco:["perplexity/deep-research","perplexity/sonar-pro"]};mH4=["sonar","searchpreview","online"]});function xY0($){if(!$)return;let Z={};for(let X in $){let Q=$[X];if(typeof Q==="object"&&Q!==null){let Y={};for(let G of pH4)if(G in Q)Y[G]=Q[G];Z[X]=Y}}return Object.keys(Z).length>0?Z:void 0}var pH4;var nX$=L(()=>{pH4=["usage","cost","model"]});var g8=L(()=>{NQ0();lX$();pX$();nX$()});function fY0($){return $.toLowerCase().trim().replace(/\//g,"-").replace(/[^a-z0-9\s_-]+/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}function QL($){if($.app_name)return $.app_name;if($.connection_url)try{let Z=new URL($.connection_url),Q=((Z.port?`${Z.hostname}-${Z.port}`:Z.hostname)+Z.pathname).replace(/\/+$/,"");return fY0(Q)}catch{return fY0($.connection_url)}if($.title)return fY0($.title);return $.id??"unknown"}var bY0=()=>{};var yg=300000,yY0=5000,gY0=1e4,hs0=3,us0=30000,tX$=65000,hY0=1000,gg=3,oX$=5,rX$=60000,aX$=300000,cs0=60000;function sX$(){if(mU.size<hY0)return;let $=null,Z=1/0;for(let[X,Q]of mU)if(Q.lastFailureAt<Z)Z=Q.lastFailureAt,$=X;if($)mU.delete($)}function eX$($){let Z=mU.get($);if(!Z)return sX$(),mU.set($,{consecutiveFailures:1,disabled:!1,lastFailureAt:Date.now()}),{consecutiveFailures:1,thresholdCrossed:1>=gg};return Z.consecutiveFailures++,Z.lastFailureAt=Date.now(),{consecutiveFailures:Z.consecutiveFailures,thresholdCrossed:Z.consecutiveFailures>=gg}}function ls0($){let Z=mU.get($);if(Z){Z.disabled=!0;return}sX$(),mU.set($,{consecutiveFailures:gg,disabled:!0,lastFailureAt:Date.now()})}function $Q$($){return mU.get($)?.disabled??!1}function ZQ$($){mU.delete($)}var mU;var XQ$=L(()=>{mU=new Map});import{sql as n$}from"kysely";function YQ$($){if($.length===0)return null;let Z=$[0];if($.length===1&&tH4.has(Z))return n$.ref(Z);if($.length===2&&QQ$.has(Z)){let X=$[1];return n$`${n$.ref(Z)}->>${n$.lit(X)}`}if($.length>2&&QQ$.has(Z)){let X=`{${$.slice(1).join(",")}}`;return n$`${n$.ref(Z)}#>>${n$.lit(X)}`}return null}function GQ$($){if("conditions"in $){let{operator:G,conditions:J}=$;if(J.length===0)return n$`true`;let K=J.map((W)=>GQ$(W));switch(G){case"and":return n$`(${n$.join(K,n$` AND `)})`;case"or":return n$`(${n$.join(K,n$` OR `)})`;case"not":return n$`NOT (${n$.join(K,n$` AND `)})`;default:return n$`true`}}let{field:Z,operator:X,value:Q}=$,Y=YQ$(Z);if(!Y)return n$`true`;switch(X){case"eq":return Q===null?n$`${Y} IS NULL`:n$`${Y} = ${n$.val(Q)}`;case"gt":return n$`${Y} > ${n$.val(Q)}`;case"gte":return n$`${Y} >= ${n$.val(Q)}`;case"lt":return n$`${Y} < ${n$.val(Q)}`;case"lte":return n$`${Y} <= ${n$.val(Q)}`;case"in":if(!Array.isArray(Q)||Q.length===0)return n$`false`;return n$`${Y} IN (${n$.join(Q.map((G)=>n$.val(G)))})`;case"like":return n$`${Y} ILIKE ${n$.val(Q)}`;case"contains":{let G=String(Q).replace(/[%_\\]/g,"\\$&");return n$`${Y} ILIKE ${n$.val(`%${G}%`)}`}default:return n$`true`}}class Ut{db;vault;constructor($,Z){this.db=$;this.vault=Z}async create($){let Z=$.id??N8("conn"),X=new Date().toISOString(),Q=await this.db.selectFrom("connections").select("organization_id").where("id","=",Z).executeTakeFirst();if(Q){if(Q.organization_id!==$.organization_id)throw Error("Connection ID already exists");return this.update(Z,$)}let Y=QL($),G=await this.serializeConnection({...$,id:$.id??Z,slug:Y,status:"active",created_at:X,updated_at:X}),J;try{J=await this.db.insertInto("connections").values(G).returningAll().executeTakeFirst()}catch(K){if(K instanceof Error&&(K.message.includes("duplicate key")||K.message.includes("unique constraint")))throw Error("Connection ID already exists");throw K}if(!J)throw Error(`Failed to create connection with id: ${Z}`);return this.deserializeConnection(J)}async createNew($){let Z=$.id??N8("conn"),X=new Date().toISOString(),Q=QL($),Y=await this.serializeConnection({...$,id:Z,slug:Q,status:"active",created_at:X,updated_at:X}),G;try{G=await this.db.insertInto("connections").values(Y).returningAll().executeTakeFirst()}catch(J){if(J instanceof Error&&(J.message.includes("duplicate key")||J.message.includes("unique constraint")))throw Error("Connection ID already exists");throw J}if(!G)throw Error(`Failed to create connection with id: ${Z}`);return this.deserializeConnection(G)}async findById($,Z){let X=xJ($);if(X)return cX$(Z??X);let Q=this.db.selectFrom("connections").selectAll().where("id","=",$);if(Z)Q=Q.where("organization_id","=",Z);let Y=await Q.executeTakeFirst();return Y?this.deserializeConnection(Y):null}async findBySanitizedId($){let Z=$.replace(/-/g,"_"),X=await this.db.selectFrom("connections").selectAll().where(n$`replace(id, '-', '_')`,"=",Z).where("id","!=",$).executeTakeFirst();return X?this.deserializeConnection(X):null}async list($,Z){let X=this.db.selectFrom("connections").selectAll().where("organization_id","=",$);if(!Z?.includeVirtual)X=X.where("connection_type","!=","VIRTUAL");if(Z?.slug)X=X.where("slug","=",Z.slug);if(Z?.where)X=X.where(GQ$(Z.where));let G=(await this.db.selectFrom(X.as("filtered")).select(n$`count(*)::int`.as("count")).executeTakeFirst())?.count??0;if(Z?.orderBy&&Z.orderBy.length>0)for(let W of Z.orderBy){let H=YQ$(W.field);if(!H)continue;let F=W.direction==="desc"?n$`desc`:n$`asc`,U=W.nulls==="first"?n$`nulls first`:n$`nulls last`;X=X.orderBy(n$`${H} ${F} ${U}`)}if(Z?.limit!==void 0)X=X.limit(Z.limit);if(Z?.offset)X=X.offset(Z.offset);let J=await X.execute();return{items:await Promise.all(J.map((W)=>this.deserializeConnection(W))),totalCount:G}}async update($,Z){let{id:X,organization_id:Q,created_by:Y,created_at:G,...J}=Z;if(Z=J,Object.keys(Z).length===0){let U=await this.findById($);if(!U)throw Error("Connection not found");return U}let K={...Z},W=await this.db.selectFrom("connections").select(["app_name","connection_url","title"]).where("id","=",$).executeTakeFirst();if(W){let U=(N)=>Z[N]===void 0?W[N]:Z[N];K.slug=QL({app_name:U("app_name"),connection_url:U("connection_url"),title:U("title"),id:$})}let H=await this.serializeConnection({...K,updated_at:new Date().toISOString()}),F=await this.db.updateTable("connections").set(H).where("id","=",$).returningAll().executeTakeFirst();if(!F)throw Error("Connection not found after update");return this.deserializeConnection(F)}async isReferencedByThread($){return await this.db.selectFrom("threads").select("id").where(n$`metadata -> 'githubRepo' ->> 'connectionId' = ${$}`).limit(1).executeTakeFirst()!==void 0}async delete($){await this.db.deleteFrom("connections").where("id","=",$).execute()}async testConnection($,Z){let X=await this.findById($);if(!X)throw Error("Connection not found");let Q=Date.now();if(X.connection_type==="STDIO")return{healthy:!0,latencyMs:Date.now()-Q};if(!X.connection_url)return{healthy:!1,latencyMs:Date.now()-Q};try{if(await fg(X.connection_url))return{healthy:!1,latencyMs:Date.now()-Q};let G=X.connection_headers,J=await ZL()(X.connection_url,{method:"POST",signal:AbortSignal.timeout(1e4),headers:{"Content-Type":"application/json",...X.connection_token&&{Authorization:`Bearer ${X.connection_token}`},...G?.headers,...Z},body:JSON.stringify({jsonrpc:"2.0",method:"ping",id:1})});return{healthy:J.ok||J.status===404,latencyMs:Date.now()-Q}}catch{return{healthy:!1,latencyMs:Date.now()-Q}}}async serializeConnection($){let Z={};for(let[X,Q]of Object.entries($)){if(Q===void 0)continue;if(X==="tools")continue;if(X==="connection_token"&&Q)Z[X]=await this.vault.encrypt(Q);else if(X==="configuration_state"&&Q){let Y=JSON.stringify(Q);Z[X]=await this.vault.encrypt(Y)}else if(X==="connection_headers"&&Q){let Y=Q;if(aW(Y)&&Y.envVars){let G={};for(let[J,K]of Object.entries(Y.envVars))G[J]=await this.vault.encrypt(K);Z[X]=JSON.stringify({...Y,envVars:G})}else Z[X]=JSON.stringify(Y)}else if(nH4.includes(X))Z[X]=Q?JSON.stringify(Q):null;else Z[X]=Q}return Z}async handleDecryptFailures($,Z){let X=`connection ${$.id} (org: ${$.organization_id}, type: ${$.connection_type}, title: ${$.title})`;if($Q$($.id))return;if($.status!=="active"){ls0($.id);return}let{thresholdCrossed:Q}=eX$($.id);if(!Q){for(let{label:Y,error:G}of Z)console.error(`Failed to decrypt ${Y} for ${X}:`,G);return}try{await this.db.updateTable("connections").set({status:"error"}).where("id","=",$.id).execute(),ls0($.id),console.error(`Disabled ${X} after ${gg} consecutive decryption failures.`,Z[0]?.error)}catch(Y){console.error(`Failed to disable ${X} after decryption failures:`,Y)}}async deserializeConnection($){let Z=[],X=null;if($.connection_token)try{X=await this.vault.decrypt($.connection_token)}catch(J){Z.push({label:"connection token",error:J})}let Q=null;if($.configuration_state)try{let J=await this.vault.decrypt($.configuration_state);Q=JSON.parse(J)}catch(J){Z.push({label:"configuration state",error:J})}if(Z.length>0)await this.handleDecryptFailures($,Z);else if($.connection_token||$.configuration_state)ZQ$($.id);let Y=null;if($.connection_headers)try{let J=JSON.parse($.connection_headers);if(aW(J)&&J.envVars){let K={};for(let[W,H]of Object.entries(J.envVars))try{K[W]=await this.vault.decrypt(H)}catch{K[W]=H}Y={...J,envVars:K}}else Y=J}catch(J){console.error(`Failed to parse connection_headers for connection ${$.id} (org: ${$.organization_id}, type: ${$.connection_type}, title: ${$.title}):`,J)}let G=(J)=>{if(J===null)return null;if(typeof J==="string")try{return JSON.parse(J)}catch{return null}return J};return{id:$.id,organization_id:$.organization_id,created_by:$.created_by,updated_by:$.updated_by??void 0,title:$.title,description:$.description,icon:$.icon,app_name:$.app_name,app_id:$.app_id,slug:$.slug,connection_type:$.connection_type,connection_url:$.connection_url,connection_token:X,connection_headers:Y,oauth_config:G($.oauth_config),configuration_state:Q,configuration_scopes:G($.configuration_scopes),metadata:G($.metadata),tools:null,bindings:G($.bindings),status:$.status,created_at:$.created_at,updated_at:$.updated_at}}}var nH4,tH4,QQ$;var ms0=L(()=>{eW();bj();C7();g8();bY0();XQ$();nH4=["connection_headers","oauth_config","configuration_scopes","metadata","bindings"],tH4=new Set(["id","organization_id","created_by","updated_by","title","description","icon","app_name","app_id","slug","connection_type","connection_url","status","created_at","updated_at"]),QQ$=new Set(["metadata","configuration_scopes","bindings"])});import{createHash as oH4,randomBytes as rH4,timingSafeEqual as AM5}from"crypto";function sH4($){return $.toString("base64").replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/g,"")}function is0($){return oH4("sha256").update($).digest("hex")}function WQ$($){let Z=ds0.length+1,X=Z+KQ$;if(!$.startsWith(`${ds0}_`)||$.length<=X+1||$[X]!=="_")return null;let Q=$.slice(Z,X),Y=$.slice(X+1);if(!JQ$.test(Q)||!JQ$.test(Y))return null;return Q}function HQ$(){let $=sH4(rH4(aH4)),Z=$.slice(0,KQ$),X=`${ds0}_${Z}_${$}`;return{plaintext:X,prefix:Z,hash:is0(X)}}var ds0="stv",aH4=32,KQ$=12,JQ$;var FQ$=L(()=>{JQ$=/^[A-Za-z0-9_-]+$/});function UQ$($){return{id:$.id,organizationId:$.organization_id,subjectConnectionId:$.subject_connection_id,tokenHash:$.token_hash,tokenPrefix:$.token_prefix,name:$.name,revokedAt:$.revoked_at,lastUsedAt:$.last_used_at,createdAt:$.created_at,updatedAt:$.updated_at}}class ps0{db;constructor($){this.db=$}async createOrRotateWorkloadToken($){let Z=$.name??"default";return await this.db.transaction().execute(async(Q)=>{if(!await Q.selectFrom("connections").select("id").where("id","=",$.subjectConnectionId).where("organization_id","=",$.organizationId).executeTakeFirst())throw Error("Subject connection not found in organization");let G=HQ$(),J=new Date().toISOString();await Q.updateTable("connection_workload_tokens").set({revoked_at:J,updated_at:J}).where("organization_id","=",$.organizationId).where("subject_connection_id","=",$.subjectConnectionId).where("name","=",Z).where("revoked_at","is",null).execute();let K=await Q.insertInto("connection_workload_tokens").values({id:N8("cwt"),organization_id:$.organizationId,subject_connection_id:$.subjectConnectionId,token_hash:G.hash,token_prefix:G.prefix,name:Z,revoked_at:null,last_used_at:null,created_at:J,updated_at:J}).returningAll().executeTakeFirstOrThrow();return{plaintextToken:G.plaintext,record:UQ$(K)}})}async findActiveWorkloadToken($){let Z=await this.db.selectFrom("connection_workload_tokens").selectAll().where("organization_id","=",$.organizationId).where("subject_connection_id","=",$.subjectConnectionId).where("name","=",$.name??"default").where("revoked_at","is",null).executeTakeFirst();return Z?UQ$(Z):null}async revokeWorkloadToken($){let Z=new Date().toISOString();await this.db.updateTable("connection_workload_tokens").set({revoked_at:Z,updated_at:Z}).where("id","=",$.tokenId).where("organization_id","=",$.organizationId).where("subject_connection_id","=",$.subjectConnectionId).where("revoked_at","is",null).execute()}async authenticateWorkloadToken($){let Z=WQ$($);if(!Z)return null;let X=is0($),Q=await this.db.selectFrom("connection_workload_tokens").select(["id","organization_id","subject_connection_id","token_prefix"]).where("token_prefix","=",Z).where("token_hash","=",X).where("revoked_at","is",null).executeTakeFirst();if(!Q)return null;let Y=new Date().toISOString();return await this.db.updateTable("connection_workload_tokens").set({last_used_at:Y,updated_at:Y}).where("id","=",Q.id).execute(),{tokenId:Q.id,tokenPrefix:Q.token_prefix,organizationId:Q.organization_id,subjectConnectionId:Q.subject_connection_id}}async replaceGrantsForSubject($){await this.db.transaction().execute(async(Z)=>{if(!await Z.selectFrom("connections").select("id").where("id","=",$.subjectConnectionId).where("organization_id","=",$.organizationId).executeTakeFirst())throw Error("Referenced connection not found in organization");let Q=[...new Set($.grants.map((J)=>J.targetConnectionId))];if(Q.length>0){if((await Z.selectFrom("connections").select("id").where("organization_id","=",$.organizationId).where("id","in",Q).execute()).length!==Q.length)throw Error("Referenced connection not found in organization")}if(await Z.deleteFrom("connection_credential_grants").where("organization_id","=",$.organizationId).where("subject_connection_id","=",$.subjectConnectionId).execute(),$.grants.length===0)return;let Y=new Date().toISOString(),G=$.grants.map((J)=>({id:N8("ccg"),organization_id:$.organizationId,subject_connection_id:$.subjectConnectionId,target_connection_id:J.targetConnectionId,scope:J.scope,created_by:$.createdBy,created_at:Y,updated_at:Y}));await Z.insertInto("connection_credential_grants").values(G).execute()})}async hasGrant($){return!!await this.db.selectFrom("connection_credential_grants").select("id").where("organization_id","=",$.organizationId).where("subject_connection_id","=",$.subjectConnectionId).where("target_connection_id","=",$.targetConnectionId).where("scope","=",$.scope).executeTakeFirst()}}var uY0="credential:access-token:read",cY0="credential:configuration:read";var lY0=L(()=>{C7();FQ$()});function NQ$($,Z){let X=!1,Q={...$},Y=$.pinnedViews;if(Array.isArray(Y)){let K=Y.filter((W)=>W.connectionId!==Z);if(K.length!==Y.length)X=!0,Q.pinnedViews=K.length>0?K:null}let G=$.homeTile;if(G&&G.connectionId===Z)X=!0,Q.homeTile=null;let J=$.homeTiles;if(Array.isArray(J)){let K=J.filter((W)=>W.connectionId!==Z);if(K.length!==J.length)X=!0,Q.homeTiles=K.length>0?K:null}return{ui:Q,changed:X}}class hg{db;constructor($){this.db=$}async create($,Z,X,Q){let Y=Q?.id??N8("vir"),G=new Date().toISOString();await this.db.transaction().execute(async(K)=>{if(await K.insertInto("connections").values({id:Y,organization_id:$,created_by:Z,title:X.title,description:X.description??null,icon:X.icon??null,app_name:null,app_id:null,connection_type:"VIRTUAL",pinned:X.pinned??!1,connection_url:`virtual://${Y}`,connection_token:null,connection_headers:null,oauth_config:null,configuration_state:null,configuration_scopes:null,metadata:X.metadata?JSON.stringify(X.metadata):null,bindings:null,status:X.status??"active",created_at:G,updated_at:G}).execute(),X.connections.length>0)await K.insertInto("connection_aggregations").values(X.connections.map((W)=>({id:N8("agg"),parent_connection_id:Y,child_connection_id:W.connection_id,selected_tools:W.selected_tools?JSON.stringify(W.selected_tools):null,selected_resources:W.selected_resources?JSON.stringify(W.selected_resources):null,selected_prompts:W.selected_prompts?JSON.stringify(W.selected_prompts):null,dependency_mode:"direct",created_at:G}))).execute()});let J=await this.findById(Y);if(!J)throw Error(`Failed to create virtual MCP with id: ${Y}`);return J}async findById($,Z){let X=xJ($);if(X)return{...gs0(Z??X),pinned:!1,connections:[]};let Q=_Y0($);if(Q)return{...fX$(Z??Q),pinned:!1,connections:[]};return this.findByIdInternal(this.db,$)}async findByIdInternal($,Z){let X=await $.selectFrom("connections").selectAll().where("id","=",Z).where("connection_type","=","VIRTUAL").executeTakeFirst();if(!X)return null;let Q=await $.selectFrom("connection_aggregations").selectAll().where("parent_connection_id","=",Z).where("dependency_mode","=","direct").execute();return this.deserializeVirtualMCPEntity(X,Q)}async list($,Z){let X=this.db.selectFrom("connections").selectAll().where("organization_id","=",$).where("connection_type","=","VIRTUAL");if(Z?.pinnedOnly)X=X.where("pinned","=",!0);let Q=await X.execute(),Y=Q.map((K)=>K.id);if(Y.length===0)return[];let G=await this.db.selectFrom("connection_aggregations").selectAll().where("parent_connection_id","in",Y).where("dependency_mode","=","direct").execute(),J=new Map;for(let K of G){let W=J.get(K.parent_connection_id)??[];W.push(K),J.set(K.parent_connection_id,W)}return Q.map((K)=>this.deserializeVirtualMCPEntity(K,J.get(K.id)??[]))}async listByIds($,Z){if(Z.length===0)return[];let X=await this.db.selectFrom("connections").selectAll().where("id","in",Z).where("organization_id","=",$).where("connection_type","=","VIRTUAL").execute();if(X.length===0)return[];let Q=X.map((J)=>J.id),Y=await this.db.selectFrom("connection_aggregations").selectAll().where("parent_connection_id","in",Q).where("dependency_mode","=","direct").execute(),G=new Map;for(let J of Y){let K=G.get(J.parent_connection_id)??[];K.push(J),G.set(J.parent_connection_id,K)}return X.map((J)=>this.deserializeVirtualMCPEntity(J,G.get(J.id)??[]))}async listByConnectionId($,Z){let Q=(await this.db.selectFrom("connection_aggregations").select("parent_connection_id").where("child_connection_id","=",Z).execute()).map((W)=>W.parent_connection_id);if(Q.length===0)return[];let Y=await this.db.selectFrom("connections").selectAll().where("id","in",Q).where("organization_id","=",$).where("connection_type","=","VIRTUAL").execute();if(Y.length===0)return[];let G=Y.map((W)=>W.id),J=await this.db.selectFrom("connection_aggregations").selectAll().where("parent_connection_id","in",G).where("dependency_mode","=","direct").execute(),K=new Map;for(let W of J){let H=K.get(W.parent_connection_id)??[];H.push(W),K.set(W.parent_connection_id,H)}return Y.map((W)=>this.deserializeVirtualMCPEntity(W,K.get(W.id)??[]))}async update($,Z,X){let Q=new Date().toISOString(),Y={updated_at:Q,updated_by:Z};if(X.title!==void 0)Y.title=X.title;if(X.description!==void 0)Y.description=X.description;if(X.icon!==void 0)Y.icon=X.icon;if(X.status!==void 0)Y.status=X.status;if(X.pinned!==void 0)Y.pinned=X.pinned;if(X.metadata!==void 0)Y.metadata=X.metadata?JSON.stringify(X.metadata):null;let G=[];await this.db.transaction().execute(async(K)=>{if(await K.updateTable("connections").set(Y).where("id","=",$).where("connection_type","=","VIRTUAL").execute(),X.connections!==void 0){let W=await K.selectFrom("connection_aggregations").select("child_connection_id").where("parent_connection_id","=",$).where("dependency_mode","=","direct").execute(),H=new Set(W.map((U)=>U.child_connection_id));if(await K.deleteFrom("connection_aggregations").where("parent_connection_id","=",$).where("dependency_mode","=","direct").execute(),X.connections.length>0)await K.insertInto("connection_aggregations").values(X.connections.map((U)=>({id:N8("agg"),parent_connection_id:$,child_connection_id:U.connection_id,selected_tools:U.selected_tools?JSON.stringify(U.selected_tools):null,selected_resources:U.selected_resources?JSON.stringify(U.selected_resources):null,selected_prompts:U.selected_prompts?JSON.stringify(U.selected_prompts):null,dependency_mode:"direct",created_at:Q}))).execute();let F=new Set(X.connections.map((U)=>U.connection_id));for(let U of H)if(!F.has(U))G.push(U)}});for(let K of G)await this.cleanOrphanedPinnedViews([$],K);let J=await this.findById($);if(!J)throw Error("Virtual MCP not found after update");return J}async delete($){await this.db.transaction().execute(async(Z)=>{await Z.deleteFrom("threads").where("virtual_mcp_id","=",$).execute(),await Z.deleteFrom("connection_aggregations").where("parent_connection_id","=",$).execute(),await Z.deleteFrom("connections").where("id","=",$).where("connection_type","=","VIRTUAL").execute()})}async removeConnectionReferences($){let Z=await this.db.selectFrom("connection_aggregations").select("parent_connection_id").where("child_connection_id","=",$).execute();await this.db.deleteFrom("connection_aggregations").where("child_connection_id","=",$).execute(),await this.cleanOrphanedPinnedViews(Z.map((X)=>X.parent_connection_id),$)}async cleanOrphanedPinnedViews($,Z){for(let X of $){let Q=await this.db.selectFrom("connections").select("metadata").where("id","=",X).executeTakeFirst();if(!Q?.metadata)continue;let Y;try{Y=typeof Q.metadata==="string"?JSON.parse(Q.metadata):Q.metadata}catch{continue}let G=Y.ui??null;if(!G)continue;let{ui:J,changed:K}=NQ$(G,Z);if(!K)continue;let W={...Y,ui:J};await this.db.updateTable("connections").set({metadata:JSON.stringify(W)}).where("id","=",X).execute()}}deserializeVirtualMCPEntity($,Z){let X=$.created_at instanceof Date?$.created_at.toISOString():$.created_at,Q=$.updated_at instanceof Date?$.updated_at.toISOString():$.updated_at,Y=$.status==="active"?"active":"inactive",G=this.parseJson($.metadata),{sandboxMap:J,...K}=G??{},W=J!==void 0?Or0(J):void 0;return{id:$.id,organization_id:$.organization_id,title:$.title,description:$.description,icon:$.icon,status:Y,pinned:$.pinned,created_at:X,updated_at:Q,created_by:$.created_by,updated_by:$.updated_by??void 0,metadata:{...K,instructions:G?.instructions??null,...W!==void 0?{sandboxMap:W}:{}},connections:Z.map((H)=>({connection_id:H.child_connection_id,selected_tools:this.parseJson(H.selected_tools),selected_resources:this.parseJson(H.selected_resources),selected_prompts:this.parseJson(H.selected_prompts)}))}}parseJson($){if($===null)return null;if(typeof $==="string")try{return JSON.parse($)}catch{return null}return $}}function BQ$($){let Z=new Map,X=(Q,Y)=>{let G=Z.get(Q);if(G)return G;let J=Y();return Z.set(Q,J),J};return new Proxy($,{get(Q,Y,G){if(Y==="list")return(J,K)=>X(`list:${J}:${K?.pinnedOnly?1:0}`,()=>Q.list(J,K));if(Y==="create"||Y==="update"||Y==="delete"||Y==="removeConnectionReferences")return(...J)=>{return Z.clear(),Q[Y](...J)};return Reflect.get(Q,Y,G)}})}var ns0=L(()=>{C7();g8()});function gj($){let Z=String($??"");if(Z&&!Z.includes("T"))return Z.replace(" ","T")+"Z";return Z}function T$($){return $.replace(/\0/g,"").replace(/\\/g,"\\\\").replace(/'/g,"''")}function n8($){let Z=Number($??0);return Number.isFinite(Z)?Z:0}function $F4($){if(!eH4.has($))throw Error(`Invalid groupByColumn: ${$}`);return $}function ts0($){if(!ZF4.test($))throw Error(`Invalid JSONPath: ${$}`);if($.startsWith("$."))return $;if($.startsWith("."))return`$${$}`;return`$.${$}`}function ss0($){return $.replace(/^\$\./,"").split(".").map((X)=>`'${T$(X)}'`).join(", ")}function YF4($){let Z=XF4.exec($);if(!Z||!Z[1]||!Z[2])throw Error(`Invalid interval: ${$}`);let X=parseInt(Z[1],10),Q=Z[2],Y=QF4[Q];if(X<1||X>Y)throw Error(`Invalid interval amount: ${X}${Q} (max ${Y}${Q})`);return{amount:X,unit:Q}}function YL($,Z,X="timestamp"){let{amount:Q,unit:Y}=YF4($),J={m:"MINUTE",h:"HOUR",d:"DAY"}[Y];if(Z==="duckdb")return`time_bucket(INTERVAL '${Q} ${J}', CAST(${X} AS TIMESTAMP))`;return`toStartOfInterval(${X}, INTERVAL ${Q} ${J})`}function Nt($,Z,X){if(X==="duckdb")return`json_extract_string(${$}, '${Z}')`;let Q=ss0(Z);return`JSONExtractString(${$}, ${Q})`}function GF4($,Z,X){if(X==="duckdb")return`CAST(json_extract_string(${$}, '${Z}') AS DOUBLE)`;let Q=ss0(Z);return`JSONExtractFloat(${$}, ${Q})`}function OQ$($,Z,X){if(X==="duckdb")return`TRY_CAST(json_extract_string(${$}, '${Z}') AS DOUBLE)`;let Q=ss0(Z);return`toFloat64OrZero(JSONExtractString(${$}, ${Q}))`}function os0($){if($===null||$===void 0)return{};if(typeof $==="object")return $;let Z=String($);try{return JSON.parse(Z)}catch{return{_decocms_truncated:Z}}}function rs0($){return{id:String($.id??""),organizationId:String($.organization_id??""),connectionId:String($.connection_id??""),toolName:String($.tool_name??""),input:os0($.input),output:os0($.output),isError:$.is_error===1||$.is_error===!0||$.is_error==="1"||typeof $.is_error==="bigint"&&$.is_error===1n,errorMessage:$.error_message!=null?String($.error_message):null,durationMs:Number($.duration_ms??0),timestamp:(()=>{if($.timestamp instanceof Date)return $.timestamp.toISOString();let Z=String($.timestamp??""),X=new Date(Z.includes("T")?Z:Z.replace(" ","T")+"Z");return Number.isNaN(X.getTime())?Z:X.toISOString()})(),userId:$.user_id!=null?String($.user_id):null,requestId:String($.request_id??""),userAgent:$.user_agent!=null?String($.user_agent):null,virtualMcpId:$.virtual_mcp_id!=null?String($.virtual_mcp_id):null,properties:$.properties?os0($.properties):null}}function EQ$($,Z){let X=[];if($.properties)for(let[Q,Y]of Object.entries($.properties)){let G=T$(Q),J=T$(Y);if(Z==="duckdb")X.push(`json_extract_string(properties, '$.${G}') = '${J}'`);else X.push(`JSONExtractString(properties, '${G}') = '${J}'`)}if($.propertyKeys)for(let Q of $.propertyKeys){let Y=T$(Q);if(Z==="duckdb")X.push(`json_extract_string(properties, '$.${Y}') IS NOT NULL AND json_extract_string(properties, '$.${Y}') != ''`);else X.push(`JSONExtractString(properties, '${Y}') IS NOT NULL AND JSONExtractString(properties, '${Y}') != ''`)}if($.propertyPatterns)for(let[Q,Y]of Object.entries($.propertyPatterns)){let G=T$(Q),J=T$(Y);if(Z==="duckdb")X.push(`json_extract_string(properties, '$.${G}') ILIKE '${J}'`);else X.push(`JSONExtractString(properties, '${G}') ILIKE '${J}'`)}if($.propertyInValues)for(let[Q,Y]of Object.entries($.propertyInValues)){let G=T$(Q),J=T$(Y);if(Z==="duckdb")X.push(`list_contains(string_split(json_extract_string(properties, '$.${G}'), ','), '${J}')`);else X.push(`has(splitByChar(',', JSONExtractString(properties, '${G}')), '${J}')`)}return X}function DQ$($,Z){let X=[];if(bJ(X,Z?.startDate,$),!Z)return X;if(Z.connectionIds?.length){let Q=Z.connectionIds.map((Y)=>`'${T$(Y)}'`).join(",");X.push(`connection_id IN (${Q})`)}if(Z.toolNames?.length){let Q=Z.toolNames.map((Y)=>`'${T$(Y)}'`).join(",");X.push(`tool_name IN (${Q})`)}if(Z.virtualMcpIds?.length){let Q=Z.virtualMcpIds.map((Y)=>`'${T$(Y)}'`).join(",");X.push(`virtual_mcp_id IN (${Q})`)}if(Z.endDate)X.push(fJ(Z.endDate,$));if(Z.propertyFilters)X.push(...EQ$(Z.propertyFilters,$));return X}function wQ$($,Z,X="timestamp"){if(Z==="duckdb")return`CAST(${X} AS TIMESTAMP) >= TIMESTAMP '${$.toISOString()}'`;if(X==="bucket")return`${X} >= parseDateTimeBestEffort('${$.toISOString()}')`;return`${X} >= parseDateTime64BestEffort('${$.toISOString()}', 9)`}function fJ($,Z,X="timestamp"){if(Z==="duckdb")return`CAST(${X} AS TIMESTAMP) <= TIMESTAMP '${$.toISOString()}'`;if(X==="bucket")return`${X} <= parseDateTimeBestEffort('${$.toISOString()}')`;return`${X} <= parseDateTime64BestEffort('${$.toISOString()}', 9)`}function bJ($,Z,X,Q="timestamp"){if(Z)$.push(wQ$(Z,X,Q));else if(X==="clickhouse")$.push(wQ$(new Date(Date.now()-JF4),X,Q))}class es0{engine;sourceFactory;metricEngine;metricSourceFactory;dialect;metricsFromLogs;constructor($,Z,X,Q,Y="clickhouse",G=!1){this.engine=$;this.sourceFactory=Z;this.metricEngine=X;this.metricSourceFactory=Q;this.dialect=Y;this.metricsFromLogs=G}async query($){if(!$.organizationId)throw Error("organizationId is required");let Z=this.sourceFactory($.organizationId,{startDate:$.startDate,endDate:$.endDate}),X=[`organization_id = '${T$($.organizationId)}'`];if($.connectionId)X.push(`connection_id = '${T$($.connectionId)}'`);if($.excludeConnectionIds?.length){let N=$.excludeConnectionIds.map((B)=>`'${T$(B)}'`).join(",");X.push(`connection_id NOT IN (${N})`)}if($.virtualMcpId)X.push(`virtual_mcp_id = '${T$($.virtualMcpId)}'`);if($.toolName)X.push(`tool_name = '${T$($.toolName)}'`);if($.isError!==void 0)X.push(`is_error = ${$.isError?1:0}`);if(bJ(X,$.startDate,this.dialect),$.endDate)X.push(fJ($.endDate,this.dialect));if($.propertyFilters)X.push(...EQ$($.propertyFilters,this.dialect));let Q=1000,Y=Math.min(Math.max(1,Math.floor($.limit??50)),Q),G=Math.max(0,Math.floor($.offset??0)),J=X.join(" AND ");if(this.dialect==="duckdb"){let N=`SELECT ${LQ$}, count(*) OVER () AS _total FROM ${Z} WHERE ${J} ORDER BY timestamp DESC LIMIT ${Y} OFFSET ${G}`,B=await this.engine.query(N);if(B.length===0)return{logs:[],total:0};let O=Number(B[0]._total??0);return{logs:B.map(rs0),total:O}}let K=`SELECT count(*) AS total FROM ${Z} WHERE ${J}`,W=`SELECT ${LQ$} FROM ${Z} WHERE ${J} ORDER BY timestamp DESC LIMIT ${Y} OFFSET ${G}`,[H,F]=await Promise.all([this.engine.query(K),this.engine.query(W)]),U=Number(H[0]?.total??0);return{logs:F.map(rs0),total:U}}async getById($,Z){if(!$||!Z)return null;let Q=`SELECT * FROM ${this.sourceFactory($)} WHERE organization_id = '${T$($)}' AND id = '${T$(Z)}' LIMIT 1`,Y=await this.engine.query(Q);if(Y.length===0)return null;return rs0(Y[0])}async getStats($){if(!$.organizationId)throw Error("organizationId is required");let Z=this.sourceFactory($.organizationId,{startDate:$.startDate,endDate:$.endDate}),X=[`organization_id = '${T$($.organizationId)}'`];if(bJ(X,$.startDate,this.dialect),$.endDate)X.push(fJ($.endDate,this.dialect));let Q=`SELECT count(*) AS total_calls, coalesce(sum(CASE WHEN is_error = 1 THEN 1.0 ELSE 0.0 END) / NULLIF(count(*), 0), 0) AS error_rate, coalesce(avg(duration_ms), 0) AS avg_duration_ms FROM ${Z} WHERE ${X.join(" AND ")}`,G=(await this.engine.query(Q))[0]??{};return{totalCalls:Number(G.total_calls??0),errorRate:Number(G.error_rate??0),avgDurationMs:Number(G.avg_duration_ms??0)}}async queryToolCallHeatmap($){if(!$.organizationId)throw Error("organizationId is required");let Z=this.sourceFactory($.organizationId,{startDate:$.startDate,endDate:$.endDate}),X=[`organization_id = '${T$($.organizationId)}'`,"type = 'tool_call'"];if($.filters?.virtualMcpIds?.length){let J=$.filters.virtualMcpIds.map((K)=>`'${T$(K)}'`).join(",");X.push(`virtual_mcp_id IN (${J})`)}if($.filters?.excludeConnectionIds?.length){let J=$.filters.excludeConnectionIds.map((K)=>`'${T$(K)}'`).join(",");X.push(`connection_id NOT IN (${J})`)}if(bJ(X,$.startDate,this.dialect),$.endDate)X.push(fJ($.endDate,this.dialect));let Q=Math.min(Math.max(1,Math.floor($.limit??500)),1000),Y=`SELECT virtual_mcp_id, tool_name, count(*) AS calls, coalesce(sum(CASE WHEN is_error = 1 THEN 1 ELSE 0 END), 0) AS errors, coalesce(sum(length(output)), 0) AS output_size FROM ${Z} WHERE ${X.join(" AND ")} GROUP BY virtual_mcp_id, tool_name ORDER BY calls DESC LIMIT ${Q}`;return{cells:(await this.engine.query(Y)).map((J)=>({virtualMcpId:J.virtual_mcp_id?String(J.virtual_mcp_id):null,toolName:String(J.tool_name??""),calls:Number(J.calls??0),errors:Number(J.errors??0),outputSize:Number(J.output_size??0)}))}}async queryLlmUsageStats($){let Z={totalCalls:0,totalErrors:0,avgDurationMs:0,p50DurationMs:0,p95DurationMs:0,totalInputTokens:0,totalOutputTokens:0,totalTokens:0,totalCostUsd:0,topTools:[],timeseries:[]};if(!$.organizationId||!$.connectionId)return Z;let X=this.dialect,Q=X==="clickhouse",Y=this.sourceFactory($.organizationId,{startDate:$.startDate,endDate:$.endDate}),G=YL($.interval,X,"timestamp"),J=(E)=>`coalesce(${OQ$("properties",`$.${E}`,X)}, 0)`,K=Q?"count()":"count(*)",W=Q?"countIf(is_error = 1)":"count(*) FILTER (WHERE is_error = 1)",H=(E)=>Q?`quantile(${E})(duration_ms)`:`quantile_cont(duration_ms, ${E})`,F=[`organization_id = '${T$($.organizationId)}'`,`connection_id = '${T$($.connectionId)}'`];if(bJ(F,$.startDate,X),$.endDate)F.push(fJ($.endDate,X));if($.userIds?.length){let E=$.userIds.slice(0,100).map((j)=>`'${T$(j)}'`).join(",");F.push(`user_id IN (${E})`)}let U=F.join(" AND "),N=Math.min(Math.max(1,Math.floor($.topN??5)),20),B=`${K} AS calls,
|
|
1565
|
+
`.trim();bX$=vJ("site-diagnostics_"),oq5=bX$.is,rq5=bX$.get,yX$=vJ("commerce-discovery_"),aq5=yX$.is,vY0=yX$.get;XL={AGENT_MANAGER:vJ("studio-agent-manager_"),AUTOMATION_MANAGER:vJ("studio-automation-manager_"),CONNECTION_MANAGER:vJ("studio-connection-manager_"),API_KEY_MANAGER:vJ("studio-api-key-manager_"),STORE_MANAGER:vJ("studio-store-manager_"),BRAND_MANAGER:vJ("studio-brand-manager_"),USAGE_MANAGER:vJ("studio-usage-manager_")},GY={AGENT_MANAGER:XL.AGENT_MANAGER.get,AUTOMATION_MANAGER:XL.AUTOMATION_MANAGER.get,CONNECTION_MANAGER:XL.CONNECTION_MANAGER.get,API_KEY_MANAGER:XL.API_KEY_MANAGER.get,STORE_MANAGER:XL.STORE_MANAGER.get,BRAND_MANAGER:XL.BRAND_MANAGER.get,USAGE_MANAGER:XL.USAGE_MANAGER.get}});function mX$($){return $.toLowerCase().replace(/[^a-z0-9]/g,"")}function lH4($){return mX$($).includes("deepresearch")}function dX$($){let Z=mX$($);if(Z.includes("deepresearch"))return!1;return mH4.some((X)=>Z.includes(X))}function dH4($){return $.asyncResearch!==!0&&dX$($.modelId)}function iH4($){return $.asyncResearch===!0||lH4($.modelId)||dX$($.modelId)}function bg($,Z,X,Q){for(let Y of X){let G=$.find((J)=>J.modelId===Y);if(G)return{keyId:Z,modelId:G.modelId,title:G.title}}for(let Y of X){let G=$.find((J)=>J.modelId.includes(Y));if(G)return{keyId:Z,modelId:G.modelId,title:G.title}}if(Q){let Y=$.find(Q);if(Y)return{keyId:Z,modelId:Y.modelId,title:Y.title}}return null}function iX$($,Z){let X={chat:{fast:null,smart:null,thinking:null},image:null,webSearch:null,deepResearch:null};for(let Q of $){let Y=Z[Q.id]??[],G=Q.providerId;if(!X.chat.fast)X.chat.fast=bg(Y,Q.id,bH4[G]??[]);if(!X.chat.smart)X.chat.smart=bg(Y,Q.id,yH4[G]??[]);if(!X.chat.thinking)X.chat.thinking=bg(Y,Q.id,gH4[G]??[]);if(!X.image)X.image=bg(Y,Q.id,hH4[G]??[],(J)=>J.capabilities?.includes("image")===!0);if(!X.webSearch)X.webSearch=bg(Y,Q.id,uH4[G]??[],dH4);if(!X.deepResearch)X.deepResearch=bg(Y,Q.id,cH4[G]??[],iH4)}return X}var bH4,yH4,gH4,hH4,uH4,cH4,mH4;var pX$=L(()=>{bH4={anthropic:["claude-haiku-4-5","claude-haiku"],openrouter:["qwen/qwen3.5-flash","anthropic/claude-haiku-4.5","anthropic/claude-haiku","google/gemini-3-flash"],deco:["qwen/qwen3.5-flash","anthropic/claude-haiku"],llmapi:["claude-haiku-4-5","claude-haiku","gpt-4o-mini"],google:["gemini-2.5-flash","gemini-3-flash"]},yH4={anthropic:["claude-sonnet-5","claude-sonnet"],openrouter:["anthropic/claude-sonnet-5","anthropic/claude-sonnet","anthropic/claude-opus-4.8","google/gemini-3-pro"],deco:["anthropic/claude-sonnet-5","anthropic/claude-sonnet","anthropic/claude"],llmapi:["claude-sonnet-4-6","claude-sonnet"],google:["gemini-3-pro","gemini-3-flash"]},gH4={anthropic:["claude-opus-4-8","claude-sonnet-5","claude-sonnet","claude-fable-5"],openrouter:["anthropic/claude-opus-4.8:extended","anthropic/claude-opus-4.8","anthropic/claude-sonnet-5:extended","anthropic/claude-sonnet-5","google/gemini-3-pro","anthropic/claude-fable-5"],deco:["anthropic/claude-opus","anthropic/claude-sonnet-4.6","anthropic/claude-sonnet","anthropic/claude-fable"],llmapi:["claude-opus-4-8","claude-opus","claude-sonnet-4-6"],google:["gemini-3-pro"]},hH4={openrouter:["openai/gpt-image-1","google/gemini-2.0-flash-image"],deco:["openai/gpt-image-1","google/gemini-2.0-flash-image"],llmapi:["gemini-2.5-flash-image","gpt-image-1"],google:["gemini-2.0-flash-image"]},uH4={openrouter:["perplexity/sonar","perplexity/sonar-pro"],deco:["perplexity/sonar","perplexity/sonar-pro"]},cH4={openrouter:["perplexity/deep-research","perplexity/sonar-pro"],deco:["perplexity/deep-research","perplexity/sonar-pro"]};mH4=["sonar","searchpreview","online"]});function xY0($){if(!$)return;let Z={};for(let X in $){let Q=$[X];if(typeof Q==="object"&&Q!==null){let Y={};for(let G of pH4)if(G in Q)Y[G]=Q[G];Z[X]=Y}}return Object.keys(Z).length>0?Z:void 0}var pH4;var nX$=L(()=>{pH4=["usage","cost","model"]});var g8=L(()=>{NQ0();lX$();pX$();nX$()});function fY0($){return $.toLowerCase().trim().replace(/\//g,"-").replace(/[^a-z0-9\s_-]+/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}function QL($){if($.app_name)return $.app_name;if($.connection_url)try{let Z=new URL($.connection_url),Q=((Z.port?`${Z.hostname}-${Z.port}`:Z.hostname)+Z.pathname).replace(/\/+$/,"");return fY0(Q)}catch{return fY0($.connection_url)}if($.title)return fY0($.title);return $.id??"unknown"}var bY0=()=>{};var yg=300000,yY0=5000,gY0=1e4,hs0=3,us0=30000,tX$=65000,hY0=1000,gg=3,oX$=5,rX$=60000,aX$=300000,cs0=60000;function sX$(){if(mU.size<hY0)return;let $=null,Z=1/0;for(let[X,Q]of mU)if(Q.lastFailureAt<Z)Z=Q.lastFailureAt,$=X;if($)mU.delete($)}function eX$($){let Z=mU.get($);if(!Z)return sX$(),mU.set($,{consecutiveFailures:1,disabled:!1,lastFailureAt:Date.now()}),{consecutiveFailures:1,thresholdCrossed:1>=gg};return Z.consecutiveFailures++,Z.lastFailureAt=Date.now(),{consecutiveFailures:Z.consecutiveFailures,thresholdCrossed:Z.consecutiveFailures>=gg}}function ls0($){let Z=mU.get($);if(Z){Z.disabled=!0;return}sX$(),mU.set($,{consecutiveFailures:gg,disabled:!0,lastFailureAt:Date.now()})}function $Q$($){return mU.get($)?.disabled??!1}function ZQ$($){mU.delete($)}var mU;var XQ$=L(()=>{mU=new Map});import{sql as n$}from"kysely";function YQ$($){if($.length===0)return null;let Z=$[0];if($.length===1&&tH4.has(Z))return n$.ref(Z);if($.length===2&&QQ$.has(Z)){let X=$[1];return n$`${n$.ref(Z)}->>${n$.lit(X)}`}if($.length>2&&QQ$.has(Z)){let X=`{${$.slice(1).join(",")}}`;return n$`${n$.ref(Z)}#>>${n$.lit(X)}`}return null}function GQ$($){if("conditions"in $){let{operator:G,conditions:J}=$;if(J.length===0)return n$`true`;let K=J.map((W)=>GQ$(W));switch(G){case"and":return n$`(${n$.join(K,n$` AND `)})`;case"or":return n$`(${n$.join(K,n$` OR `)})`;case"not":return n$`NOT (${n$.join(K,n$` AND `)})`;default:return n$`true`}}let{field:Z,operator:X,value:Q}=$,Y=YQ$(Z);if(!Y)return n$`true`;switch(X){case"eq":return Q===null?n$`${Y} IS NULL`:n$`${Y} = ${n$.val(Q)}`;case"gt":return n$`${Y} > ${n$.val(Q)}`;case"gte":return n$`${Y} >= ${n$.val(Q)}`;case"lt":return n$`${Y} < ${n$.val(Q)}`;case"lte":return n$`${Y} <= ${n$.val(Q)}`;case"in":if(!Array.isArray(Q)||Q.length===0)return n$`false`;return n$`${Y} IN (${n$.join(Q.map((G)=>n$.val(G)))})`;case"like":return n$`${Y} ILIKE ${n$.val(Q)}`;case"contains":{let G=String(Q).replace(/[%_\\]/g,"\\$&");return n$`${Y} ILIKE ${n$.val(`%${G}%`)}`}default:return n$`true`}}class Ut{db;vault;constructor($,Z){this.db=$;this.vault=Z}async create($){let Z=$.id??N8("conn"),X=new Date().toISOString(),Q=await this.db.selectFrom("connections").select("organization_id").where("id","=",Z).executeTakeFirst();if(Q){if(Q.organization_id!==$.organization_id)throw Error("Connection ID already exists");return this.update(Z,$)}let Y=QL($),G=await this.serializeConnection({...$,id:$.id??Z,slug:Y,status:"active",created_at:X,updated_at:X}),J;try{J=await this.db.insertInto("connections").values(G).returningAll().executeTakeFirst()}catch(K){if(K instanceof Error&&(K.message.includes("duplicate key")||K.message.includes("unique constraint")))throw Error("Connection ID already exists");throw K}if(!J)throw Error(`Failed to create connection with id: ${Z}`);return this.deserializeConnection(J)}async createNew($){let Z=$.id??N8("conn"),X=new Date().toISOString(),Q=QL($),Y=await this.serializeConnection({...$,id:Z,slug:Q,status:"active",created_at:X,updated_at:X}),G;try{G=await this.db.insertInto("connections").values(Y).returningAll().executeTakeFirst()}catch(J){if(J instanceof Error&&(J.message.includes("duplicate key")||J.message.includes("unique constraint")))throw Error("Connection ID already exists");throw J}if(!G)throw Error(`Failed to create connection with id: ${Z}`);return this.deserializeConnection(G)}async findById($,Z){let X=xJ($);if(X)return cX$(Z??X);let Q=this.db.selectFrom("connections").selectAll().where("id","=",$);if(Z)Q=Q.where("organization_id","=",Z);let Y=await Q.executeTakeFirst();return Y?this.deserializeConnection(Y):null}async findBySanitizedId($){let Z=$.replace(/-/g,"_"),X=await this.db.selectFrom("connections").selectAll().where(n$`replace(id, '-', '_')`,"=",Z).where("id","!=",$).executeTakeFirst();return X?this.deserializeConnection(X):null}async list($,Z){let X=this.db.selectFrom("connections").selectAll().where("organization_id","=",$);if(!Z?.includeVirtual)X=X.where("connection_type","!=","VIRTUAL");if(Z?.slug)X=X.where("slug","=",Z.slug);if(Z?.where)X=X.where(GQ$(Z.where));let G=(await this.db.selectFrom(X.as("filtered")).select(n$`count(*)::int`.as("count")).executeTakeFirst())?.count??0;if(Z?.orderBy&&Z.orderBy.length>0)for(let W of Z.orderBy){let H=YQ$(W.field);if(!H)continue;let F=W.direction==="desc"?n$`desc`:n$`asc`,U=W.nulls==="first"?n$`nulls first`:n$`nulls last`;X=X.orderBy(n$`${H} ${F} ${U}`)}if(Z?.limit!==void 0)X=X.limit(Z.limit);if(Z?.offset)X=X.offset(Z.offset);let J=await X.execute();return{items:await Promise.all(J.map((W)=>this.deserializeConnection(W))),totalCount:G}}async update($,Z){let{id:X,organization_id:Q,created_by:Y,created_at:G,...J}=Z;if(Z=J,Object.keys(Z).length===0){let U=await this.findById($);if(!U)throw Error("Connection not found");return U}let K={...Z},W=await this.db.selectFrom("connections").select(["app_name","connection_url","title"]).where("id","=",$).executeTakeFirst();if(W){let U=(N)=>Z[N]===void 0?W[N]:Z[N];K.slug=QL({app_name:U("app_name"),connection_url:U("connection_url"),title:U("title"),id:$})}let H=await this.serializeConnection({...K,updated_at:new Date().toISOString()}),F=await this.db.updateTable("connections").set(H).where("id","=",$).returningAll().executeTakeFirst();if(!F)throw Error("Connection not found after update");return this.deserializeConnection(F)}async isReferencedByThread($){return await this.db.selectFrom("threads").select("id").where(n$`metadata -> 'githubRepo' ->> 'connectionId' = ${$}`).limit(1).executeTakeFirst()!==void 0}async delete($){await this.db.deleteFrom("connections").where("id","=",$).execute()}async testConnection($,Z){let X=await this.findById($);if(!X)throw Error("Connection not found");let Q=Date.now();if(X.connection_type==="STDIO")return{healthy:!0,latencyMs:Date.now()-Q};if(!X.connection_url)return{healthy:!1,latencyMs:Date.now()-Q};try{if(await fg(X.connection_url))return{healthy:!1,latencyMs:Date.now()-Q};let G=X.connection_headers,J=await ZL()(X.connection_url,{method:"POST",signal:AbortSignal.timeout(1e4),headers:{"Content-Type":"application/json",...X.connection_token&&{Authorization:`Bearer ${X.connection_token}`},...G?.headers,...Z},body:JSON.stringify({jsonrpc:"2.0",method:"ping",id:1})});return{healthy:J.ok||J.status===404,latencyMs:Date.now()-Q}}catch{return{healthy:!1,latencyMs:Date.now()-Q}}}async serializeConnection($){let Z={};for(let[X,Q]of Object.entries($)){if(Q===void 0)continue;if(X==="tools")continue;if(X==="connection_token"&&Q)Z[X]=await this.vault.encrypt(Q);else if(X==="configuration_state"&&Q){let Y=JSON.stringify(Q);Z[X]=await this.vault.encrypt(Y)}else if(X==="connection_headers"&&Q){let Y=Q;if(aW(Y)&&Y.envVars){let G={};for(let[J,K]of Object.entries(Y.envVars))G[J]=await this.vault.encrypt(K);Z[X]=JSON.stringify({...Y,envVars:G})}else Z[X]=JSON.stringify(Y)}else if(nH4.includes(X))Z[X]=Q?JSON.stringify(Q):null;else Z[X]=Q}return Z}async handleDecryptFailures($,Z){let X=`connection ${$.id} (org: ${$.organization_id}, type: ${$.connection_type}, title: ${$.title})`;if($Q$($.id))return;if($.status!=="active"){ls0($.id);return}let{thresholdCrossed:Q}=eX$($.id);if(!Q){for(let{label:Y,error:G}of Z)console.error(`Failed to decrypt ${Y} for ${X}:`,G);return}try{await this.db.updateTable("connections").set({status:"error"}).where("id","=",$.id).execute(),ls0($.id),console.error(`Disabled ${X} after ${gg} consecutive decryption failures.`,Z[0]?.error)}catch(Y){console.error(`Failed to disable ${X} after decryption failures:`,Y)}}async deserializeConnection($){let Z=[],X=null;if($.connection_token)try{X=await this.vault.decrypt($.connection_token)}catch(J){Z.push({label:"connection token",error:J})}let Q=null;if($.configuration_state)try{let J=await this.vault.decrypt($.configuration_state);Q=JSON.parse(J)}catch(J){Z.push({label:"configuration state",error:J})}if(Z.length>0)await this.handleDecryptFailures($,Z);else if($.connection_token||$.configuration_state)ZQ$($.id);let Y=null;if($.connection_headers)try{let J=JSON.parse($.connection_headers);if(aW(J)&&J.envVars){let K={};for(let[W,H]of Object.entries(J.envVars))try{K[W]=await this.vault.decrypt(H)}catch{K[W]=H}Y={...J,envVars:K}}else Y=J}catch(J){console.error(`Failed to parse connection_headers for connection ${$.id} (org: ${$.organization_id}, type: ${$.connection_type}, title: ${$.title}):`,J)}let G=(J)=>{if(J===null)return null;if(typeof J==="string")try{return JSON.parse(J)}catch{return null}return J};return{id:$.id,organization_id:$.organization_id,created_by:$.created_by,updated_by:$.updated_by??void 0,title:$.title,description:$.description,icon:$.icon,app_name:$.app_name,app_id:$.app_id,slug:$.slug,connection_type:$.connection_type,connection_url:$.connection_url,connection_token:X,connection_headers:Y,oauth_config:G($.oauth_config),configuration_state:Q,configuration_scopes:G($.configuration_scopes),metadata:G($.metadata),tools:null,bindings:G($.bindings),status:$.status,created_at:$.created_at,updated_at:$.updated_at}}}var nH4,tH4,QQ$;var ms0=L(()=>{eW();bj();C7();g8();bY0();XQ$();nH4=["connection_headers","oauth_config","configuration_scopes","metadata","bindings"],tH4=new Set(["id","organization_id","created_by","updated_by","title","description","icon","app_name","app_id","slug","connection_type","connection_url","status","created_at","updated_at"]),QQ$=new Set(["metadata","configuration_scopes","bindings"])});import{createHash as oH4,randomBytes as rH4,timingSafeEqual as AM5}from"crypto";function sH4($){return $.toString("base64").replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/g,"")}function is0($){return oH4("sha256").update($).digest("hex")}function WQ$($){let Z=ds0.length+1,X=Z+KQ$;if(!$.startsWith(`${ds0}_`)||$.length<=X+1||$[X]!=="_")return null;let Q=$.slice(Z,X),Y=$.slice(X+1);if(!JQ$.test(Q)||!JQ$.test(Y))return null;return Q}function HQ$(){let $=sH4(rH4(aH4)),Z=$.slice(0,KQ$),X=`${ds0}_${Z}_${$}`;return{plaintext:X,prefix:Z,hash:is0(X)}}var ds0="stv",aH4=32,KQ$=12,JQ$;var FQ$=L(()=>{JQ$=/^[A-Za-z0-9_-]+$/});function UQ$($){return{id:$.id,organizationId:$.organization_id,subjectConnectionId:$.subject_connection_id,tokenHash:$.token_hash,tokenPrefix:$.token_prefix,name:$.name,revokedAt:$.revoked_at,lastUsedAt:$.last_used_at,createdAt:$.created_at,updatedAt:$.updated_at}}class ps0{db;constructor($){this.db=$}async createOrRotateWorkloadToken($){let Z=$.name??"default";return await this.db.transaction().execute(async(Q)=>{if(!await Q.selectFrom("connections").select("id").where("id","=",$.subjectConnectionId).where("organization_id","=",$.organizationId).executeTakeFirst())throw Error("Subject connection not found in organization");let G=HQ$(),J=new Date().toISOString();await Q.updateTable("connection_workload_tokens").set({revoked_at:J,updated_at:J}).where("organization_id","=",$.organizationId).where("subject_connection_id","=",$.subjectConnectionId).where("name","=",Z).where("revoked_at","is",null).execute();let K=await Q.insertInto("connection_workload_tokens").values({id:N8("cwt"),organization_id:$.organizationId,subject_connection_id:$.subjectConnectionId,token_hash:G.hash,token_prefix:G.prefix,name:Z,revoked_at:null,last_used_at:null,created_at:J,updated_at:J}).returningAll().executeTakeFirstOrThrow();return{plaintextToken:G.plaintext,record:UQ$(K)}})}async findActiveWorkloadToken($){let Z=await this.db.selectFrom("connection_workload_tokens").selectAll().where("organization_id","=",$.organizationId).where("subject_connection_id","=",$.subjectConnectionId).where("name","=",$.name??"default").where("revoked_at","is",null).executeTakeFirst();return Z?UQ$(Z):null}async revokeWorkloadToken($){let Z=new Date().toISOString();await this.db.updateTable("connection_workload_tokens").set({revoked_at:Z,updated_at:Z}).where("id","=",$.tokenId).where("organization_id","=",$.organizationId).where("subject_connection_id","=",$.subjectConnectionId).where("revoked_at","is",null).execute()}async authenticateWorkloadToken($){let Z=WQ$($);if(!Z)return null;let X=is0($),Q=await this.db.selectFrom("connection_workload_tokens").select(["id","organization_id","subject_connection_id","token_prefix"]).where("token_prefix","=",Z).where("token_hash","=",X).where("revoked_at","is",null).executeTakeFirst();if(!Q)return null;let Y=new Date().toISOString();return await this.db.updateTable("connection_workload_tokens").set({last_used_at:Y,updated_at:Y}).where("id","=",Q.id).execute(),{tokenId:Q.id,tokenPrefix:Q.token_prefix,organizationId:Q.organization_id,subjectConnectionId:Q.subject_connection_id}}async replaceGrantsForSubject($){await this.db.transaction().execute(async(Z)=>{if(!await Z.selectFrom("connections").select("id").where("id","=",$.subjectConnectionId).where("organization_id","=",$.organizationId).executeTakeFirst())throw Error("Referenced connection not found in organization");let Q=[...new Set($.grants.map((J)=>J.targetConnectionId))];if(Q.length>0){if((await Z.selectFrom("connections").select("id").where("organization_id","=",$.organizationId).where("id","in",Q).execute()).length!==Q.length)throw Error("Referenced connection not found in organization")}if(await Z.deleteFrom("connection_credential_grants").where("organization_id","=",$.organizationId).where("subject_connection_id","=",$.subjectConnectionId).execute(),$.grants.length===0)return;let Y=new Date().toISOString(),G=$.grants.map((J)=>({id:N8("ccg"),organization_id:$.organizationId,subject_connection_id:$.subjectConnectionId,target_connection_id:J.targetConnectionId,scope:J.scope,created_by:$.createdBy,created_at:Y,updated_at:Y}));await Z.insertInto("connection_credential_grants").values(G).execute()})}async hasGrant($){return!!await this.db.selectFrom("connection_credential_grants").select("id").where("organization_id","=",$.organizationId).where("subject_connection_id","=",$.subjectConnectionId).where("target_connection_id","=",$.targetConnectionId).where("scope","=",$.scope).executeTakeFirst()}}var uY0="credential:access-token:read",cY0="credential:configuration:read";var lY0=L(()=>{C7();FQ$()});function NQ$($,Z){let X=!1,Q={...$},Y=$.pinnedViews;if(Array.isArray(Y)){let K=Y.filter((W)=>W.connectionId!==Z);if(K.length!==Y.length)X=!0,Q.pinnedViews=K.length>0?K:null}let G=$.homeTile;if(G&&G.connectionId===Z)X=!0,Q.homeTile=null;let J=$.homeTiles;if(Array.isArray(J)){let K=J.filter((W)=>W.connectionId!==Z);if(K.length!==J.length)X=!0,Q.homeTiles=K.length>0?K:null}return{ui:Q,changed:X}}class hg{db;constructor($){this.db=$}async create($,Z,X,Q){let Y=Q?.id??N8("vir"),G=new Date().toISOString();await this.db.transaction().execute(async(K)=>{if(await K.insertInto("connections").values({id:Y,organization_id:$,created_by:Z,updated_by:Z,title:X.title,description:X.description??null,icon:X.icon??null,app_name:null,app_id:null,connection_type:"VIRTUAL",pinned:X.pinned??!1,connection_url:`virtual://${Y}`,connection_token:null,connection_headers:null,oauth_config:null,configuration_state:null,configuration_scopes:null,metadata:X.metadata?JSON.stringify(X.metadata):null,bindings:null,status:X.status??"active",created_at:G,updated_at:G}).execute(),X.connections.length>0)await K.insertInto("connection_aggregations").values(X.connections.map((W)=>({id:N8("agg"),parent_connection_id:Y,child_connection_id:W.connection_id,selected_tools:W.selected_tools?JSON.stringify(W.selected_tools):null,selected_resources:W.selected_resources?JSON.stringify(W.selected_resources):null,selected_prompts:W.selected_prompts?JSON.stringify(W.selected_prompts):null,dependency_mode:"direct",created_at:G}))).execute()});let J=await this.findById(Y);if(!J)throw Error(`Failed to create virtual MCP with id: ${Y}`);return J}async findById($,Z){let X=xJ($);if(X)return{...gs0(Z??X),pinned:!1,connections:[]};let Q=_Y0($);if(Q)return{...fX$(Z??Q),pinned:!1,connections:[]};return this.findByIdInternal(this.db,$)}async findByIdInternal($,Z){let X=await $.selectFrom("connections").selectAll().where("id","=",Z).where("connection_type","=","VIRTUAL").executeTakeFirst();if(!X)return null;let Q=await $.selectFrom("connection_aggregations").selectAll().where("parent_connection_id","=",Z).where("dependency_mode","=","direct").execute();return this.deserializeVirtualMCPEntity(X,Q)}async list($,Z){let X=this.db.selectFrom("connections").selectAll().where("organization_id","=",$).where("connection_type","=","VIRTUAL");if(Z?.pinnedOnly)X=X.where("pinned","=",!0);let Q=await X.execute(),Y=Q.map((K)=>K.id);if(Y.length===0)return[];let G=await this.db.selectFrom("connection_aggregations").selectAll().where("parent_connection_id","in",Y).where("dependency_mode","=","direct").execute(),J=new Map;for(let K of G){let W=J.get(K.parent_connection_id)??[];W.push(K),J.set(K.parent_connection_id,W)}return Q.map((K)=>this.deserializeVirtualMCPEntity(K,J.get(K.id)??[]))}async listByIds($,Z){if(Z.length===0)return[];let X=await this.db.selectFrom("connections").selectAll().where("id","in",Z).where("organization_id","=",$).where("connection_type","=","VIRTUAL").execute();if(X.length===0)return[];let Q=X.map((J)=>J.id),Y=await this.db.selectFrom("connection_aggregations").selectAll().where("parent_connection_id","in",Q).where("dependency_mode","=","direct").execute(),G=new Map;for(let J of Y){let K=G.get(J.parent_connection_id)??[];K.push(J),G.set(J.parent_connection_id,K)}return X.map((J)=>this.deserializeVirtualMCPEntity(J,G.get(J.id)??[]))}async listByConnectionId($,Z){let Q=(await this.db.selectFrom("connection_aggregations").select("parent_connection_id").where("child_connection_id","=",Z).execute()).map((W)=>W.parent_connection_id);if(Q.length===0)return[];let Y=await this.db.selectFrom("connections").selectAll().where("id","in",Q).where("organization_id","=",$).where("connection_type","=","VIRTUAL").execute();if(Y.length===0)return[];let G=Y.map((W)=>W.id),J=await this.db.selectFrom("connection_aggregations").selectAll().where("parent_connection_id","in",G).where("dependency_mode","=","direct").execute(),K=new Map;for(let W of J){let H=K.get(W.parent_connection_id)??[];H.push(W),K.set(W.parent_connection_id,H)}return Y.map((W)=>this.deserializeVirtualMCPEntity(W,K.get(W.id)??[]))}async update($,Z,X){let Q=new Date().toISOString(),Y={updated_at:Q,updated_by:Z};if(X.title!==void 0)Y.title=X.title;if(X.description!==void 0)Y.description=X.description;if(X.icon!==void 0)Y.icon=X.icon;if(X.status!==void 0)Y.status=X.status;if(X.pinned!==void 0)Y.pinned=X.pinned;if(X.metadata!==void 0)Y.metadata=X.metadata?JSON.stringify(X.metadata):null;let G=[];await this.db.transaction().execute(async(K)=>{if(await K.updateTable("connections").set(Y).where("id","=",$).where("connection_type","=","VIRTUAL").execute(),X.connections!==void 0){let W=await K.selectFrom("connection_aggregations").select("child_connection_id").where("parent_connection_id","=",$).where("dependency_mode","=","direct").execute(),H=new Set(W.map((U)=>U.child_connection_id));if(await K.deleteFrom("connection_aggregations").where("parent_connection_id","=",$).where("dependency_mode","=","direct").execute(),X.connections.length>0)await K.insertInto("connection_aggregations").values(X.connections.map((U)=>({id:N8("agg"),parent_connection_id:$,child_connection_id:U.connection_id,selected_tools:U.selected_tools?JSON.stringify(U.selected_tools):null,selected_resources:U.selected_resources?JSON.stringify(U.selected_resources):null,selected_prompts:U.selected_prompts?JSON.stringify(U.selected_prompts):null,dependency_mode:"direct",created_at:Q}))).execute();let F=new Set(X.connections.map((U)=>U.connection_id));for(let U of H)if(!F.has(U))G.push(U)}});for(let K of G)await this.cleanOrphanedPinnedViews([$],K);let J=await this.findById($);if(!J)throw Error("Virtual MCP not found after update");return J}async delete($){await this.db.transaction().execute(async(Z)=>{await Z.deleteFrom("threads").where("virtual_mcp_id","=",$).execute(),await Z.deleteFrom("connection_aggregations").where("parent_connection_id","=",$).execute(),await Z.deleteFrom("connections").where("id","=",$).where("connection_type","=","VIRTUAL").execute()})}async removeConnectionReferences($){let Z=await this.db.selectFrom("connection_aggregations").select("parent_connection_id").where("child_connection_id","=",$).execute();await this.db.deleteFrom("connection_aggregations").where("child_connection_id","=",$).execute(),await this.cleanOrphanedPinnedViews(Z.map((X)=>X.parent_connection_id),$)}async cleanOrphanedPinnedViews($,Z){for(let X of $){let Q=await this.db.selectFrom("connections").select("metadata").where("id","=",X).executeTakeFirst();if(!Q?.metadata)continue;let Y;try{Y=typeof Q.metadata==="string"?JSON.parse(Q.metadata):Q.metadata}catch{continue}let G=Y.ui??null;if(!G)continue;let{ui:J,changed:K}=NQ$(G,Z);if(!K)continue;let W={...Y,ui:J};await this.db.updateTable("connections").set({metadata:JSON.stringify(W)}).where("id","=",X).execute()}}deserializeVirtualMCPEntity($,Z){let X=$.created_at instanceof Date?$.created_at.toISOString():$.created_at,Q=$.updated_at instanceof Date?$.updated_at.toISOString():$.updated_at,Y=$.status==="active"?"active":"inactive",G=this.parseJson($.metadata),{sandboxMap:J,...K}=G??{},W=J!==void 0?Or0(J):void 0;return{id:$.id,organization_id:$.organization_id,title:$.title,description:$.description,icon:$.icon,status:Y,pinned:$.pinned,created_at:X,updated_at:Q,created_by:$.created_by,updated_by:$.updated_by??void 0,metadata:{...K,instructions:G?.instructions??null,...W!==void 0?{sandboxMap:W}:{}},connections:Z.map((H)=>({connection_id:H.child_connection_id,selected_tools:this.parseJson(H.selected_tools),selected_resources:this.parseJson(H.selected_resources),selected_prompts:this.parseJson(H.selected_prompts)}))}}parseJson($){if($===null)return null;if(typeof $==="string")try{return JSON.parse($)}catch{return null}return $}}function BQ$($){let Z=new Map,X=(Q,Y)=>{let G=Z.get(Q);if(G)return G;let J=Y();return Z.set(Q,J),J};return new Proxy($,{get(Q,Y,G){if(Y==="list")return(J,K)=>X(`list:${J}:${K?.pinnedOnly?1:0}`,()=>Q.list(J,K));if(Y==="create"||Y==="update"||Y==="delete"||Y==="removeConnectionReferences")return(...J)=>{return Z.clear(),Q[Y](...J)};return Reflect.get(Q,Y,G)}})}var ns0=L(()=>{C7();g8()});function gj($){let Z=String($??"");if(Z&&!Z.includes("T"))return Z.replace(" ","T")+"Z";return Z}function T$($){return $.replace(/\0/g,"").replace(/\\/g,"\\\\").replace(/'/g,"''")}function n8($){let Z=Number($??0);return Number.isFinite(Z)?Z:0}function $F4($){if(!eH4.has($))throw Error(`Invalid groupByColumn: ${$}`);return $}function ts0($){if(!ZF4.test($))throw Error(`Invalid JSONPath: ${$}`);if($.startsWith("$."))return $;if($.startsWith("."))return`$${$}`;return`$.${$}`}function ss0($){return $.replace(/^\$\./,"").split(".").map((X)=>`'${T$(X)}'`).join(", ")}function YF4($){let Z=XF4.exec($);if(!Z||!Z[1]||!Z[2])throw Error(`Invalid interval: ${$}`);let X=parseInt(Z[1],10),Q=Z[2],Y=QF4[Q];if(X<1||X>Y)throw Error(`Invalid interval amount: ${X}${Q} (max ${Y}${Q})`);return{amount:X,unit:Q}}function YL($,Z,X="timestamp"){let{amount:Q,unit:Y}=YF4($),J={m:"MINUTE",h:"HOUR",d:"DAY"}[Y];if(Z==="duckdb")return`time_bucket(INTERVAL '${Q} ${J}', CAST(${X} AS TIMESTAMP))`;return`toStartOfInterval(${X}, INTERVAL ${Q} ${J})`}function Nt($,Z,X){if(X==="duckdb")return`json_extract_string(${$}, '${Z}')`;let Q=ss0(Z);return`JSONExtractString(${$}, ${Q})`}function GF4($,Z,X){if(X==="duckdb")return`CAST(json_extract_string(${$}, '${Z}') AS DOUBLE)`;let Q=ss0(Z);return`JSONExtractFloat(${$}, ${Q})`}function OQ$($,Z,X){if(X==="duckdb")return`TRY_CAST(json_extract_string(${$}, '${Z}') AS DOUBLE)`;let Q=ss0(Z);return`toFloat64OrZero(JSONExtractString(${$}, ${Q}))`}function os0($){if($===null||$===void 0)return{};if(typeof $==="object")return $;let Z=String($);try{return JSON.parse(Z)}catch{return{_decocms_truncated:Z}}}function rs0($){return{id:String($.id??""),organizationId:String($.organization_id??""),connectionId:String($.connection_id??""),toolName:String($.tool_name??""),input:os0($.input),output:os0($.output),isError:$.is_error===1||$.is_error===!0||$.is_error==="1"||typeof $.is_error==="bigint"&&$.is_error===1n,errorMessage:$.error_message!=null?String($.error_message):null,durationMs:Number($.duration_ms??0),timestamp:(()=>{if($.timestamp instanceof Date)return $.timestamp.toISOString();let Z=String($.timestamp??""),X=new Date(Z.includes("T")?Z:Z.replace(" ","T")+"Z");return Number.isNaN(X.getTime())?Z:X.toISOString()})(),userId:$.user_id!=null?String($.user_id):null,requestId:String($.request_id??""),userAgent:$.user_agent!=null?String($.user_agent):null,virtualMcpId:$.virtual_mcp_id!=null?String($.virtual_mcp_id):null,properties:$.properties?os0($.properties):null}}function EQ$($,Z){let X=[];if($.properties)for(let[Q,Y]of Object.entries($.properties)){let G=T$(Q),J=T$(Y);if(Z==="duckdb")X.push(`json_extract_string(properties, '$.${G}') = '${J}'`);else X.push(`JSONExtractString(properties, '${G}') = '${J}'`)}if($.propertyKeys)for(let Q of $.propertyKeys){let Y=T$(Q);if(Z==="duckdb")X.push(`json_extract_string(properties, '$.${Y}') IS NOT NULL AND json_extract_string(properties, '$.${Y}') != ''`);else X.push(`JSONExtractString(properties, '${Y}') IS NOT NULL AND JSONExtractString(properties, '${Y}') != ''`)}if($.propertyPatterns)for(let[Q,Y]of Object.entries($.propertyPatterns)){let G=T$(Q),J=T$(Y);if(Z==="duckdb")X.push(`json_extract_string(properties, '$.${G}') ILIKE '${J}'`);else X.push(`JSONExtractString(properties, '${G}') ILIKE '${J}'`)}if($.propertyInValues)for(let[Q,Y]of Object.entries($.propertyInValues)){let G=T$(Q),J=T$(Y);if(Z==="duckdb")X.push(`list_contains(string_split(json_extract_string(properties, '$.${G}'), ','), '${J}')`);else X.push(`has(splitByChar(',', JSONExtractString(properties, '${G}')), '${J}')`)}return X}function DQ$($,Z){let X=[];if(bJ(X,Z?.startDate,$),!Z)return X;if(Z.connectionIds?.length){let Q=Z.connectionIds.map((Y)=>`'${T$(Y)}'`).join(",");X.push(`connection_id IN (${Q})`)}if(Z.toolNames?.length){let Q=Z.toolNames.map((Y)=>`'${T$(Y)}'`).join(",");X.push(`tool_name IN (${Q})`)}if(Z.virtualMcpIds?.length){let Q=Z.virtualMcpIds.map((Y)=>`'${T$(Y)}'`).join(",");X.push(`virtual_mcp_id IN (${Q})`)}if(Z.endDate)X.push(fJ(Z.endDate,$));if(Z.propertyFilters)X.push(...EQ$(Z.propertyFilters,$));return X}function wQ$($,Z,X="timestamp"){if(Z==="duckdb")return`CAST(${X} AS TIMESTAMP) >= TIMESTAMP '${$.toISOString()}'`;if(X==="bucket")return`${X} >= parseDateTimeBestEffort('${$.toISOString()}')`;return`${X} >= parseDateTime64BestEffort('${$.toISOString()}', 9)`}function fJ($,Z,X="timestamp"){if(Z==="duckdb")return`CAST(${X} AS TIMESTAMP) <= TIMESTAMP '${$.toISOString()}'`;if(X==="bucket")return`${X} <= parseDateTimeBestEffort('${$.toISOString()}')`;return`${X} <= parseDateTime64BestEffort('${$.toISOString()}', 9)`}function bJ($,Z,X,Q="timestamp"){if(Z)$.push(wQ$(Z,X,Q));else if(X==="clickhouse")$.push(wQ$(new Date(Date.now()-JF4),X,Q))}class es0{engine;sourceFactory;metricEngine;metricSourceFactory;dialect;metricsFromLogs;constructor($,Z,X,Q,Y="clickhouse",G=!1){this.engine=$;this.sourceFactory=Z;this.metricEngine=X;this.metricSourceFactory=Q;this.dialect=Y;this.metricsFromLogs=G}async query($){if(!$.organizationId)throw Error("organizationId is required");let Z=this.sourceFactory($.organizationId,{startDate:$.startDate,endDate:$.endDate}),X=[`organization_id = '${T$($.organizationId)}'`];if($.connectionId)X.push(`connection_id = '${T$($.connectionId)}'`);if($.excludeConnectionIds?.length){let N=$.excludeConnectionIds.map((B)=>`'${T$(B)}'`).join(",");X.push(`connection_id NOT IN (${N})`)}if($.virtualMcpId)X.push(`virtual_mcp_id = '${T$($.virtualMcpId)}'`);if($.toolName)X.push(`tool_name = '${T$($.toolName)}'`);if($.isError!==void 0)X.push(`is_error = ${$.isError?1:0}`);if(bJ(X,$.startDate,this.dialect),$.endDate)X.push(fJ($.endDate,this.dialect));if($.propertyFilters)X.push(...EQ$($.propertyFilters,this.dialect));let Q=1000,Y=Math.min(Math.max(1,Math.floor($.limit??50)),Q),G=Math.max(0,Math.floor($.offset??0)),J=X.join(" AND ");if(this.dialect==="duckdb"){let N=`SELECT ${LQ$}, count(*) OVER () AS _total FROM ${Z} WHERE ${J} ORDER BY timestamp DESC LIMIT ${Y} OFFSET ${G}`,B=await this.engine.query(N);if(B.length===0)return{logs:[],total:0};let O=Number(B[0]._total??0);return{logs:B.map(rs0),total:O}}let K=`SELECT count(*) AS total FROM ${Z} WHERE ${J}`,W=`SELECT ${LQ$} FROM ${Z} WHERE ${J} ORDER BY timestamp DESC LIMIT ${Y} OFFSET ${G}`,[H,F]=await Promise.all([this.engine.query(K),this.engine.query(W)]),U=Number(H[0]?.total??0);return{logs:F.map(rs0),total:U}}async getById($,Z){if(!$||!Z)return null;let Q=`SELECT * FROM ${this.sourceFactory($)} WHERE organization_id = '${T$($)}' AND id = '${T$(Z)}' LIMIT 1`,Y=await this.engine.query(Q);if(Y.length===0)return null;return rs0(Y[0])}async getStats($){if(!$.organizationId)throw Error("organizationId is required");let Z=this.sourceFactory($.organizationId,{startDate:$.startDate,endDate:$.endDate}),X=[`organization_id = '${T$($.organizationId)}'`];if(bJ(X,$.startDate,this.dialect),$.endDate)X.push(fJ($.endDate,this.dialect));let Q=`SELECT count(*) AS total_calls, coalesce(sum(CASE WHEN is_error = 1 THEN 1.0 ELSE 0.0 END) / NULLIF(count(*), 0), 0) AS error_rate, coalesce(avg(duration_ms), 0) AS avg_duration_ms FROM ${Z} WHERE ${X.join(" AND ")}`,G=(await this.engine.query(Q))[0]??{};return{totalCalls:Number(G.total_calls??0),errorRate:Number(G.error_rate??0),avgDurationMs:Number(G.avg_duration_ms??0)}}async queryToolCallHeatmap($){if(!$.organizationId)throw Error("organizationId is required");let Z=this.sourceFactory($.organizationId,{startDate:$.startDate,endDate:$.endDate}),X=[`organization_id = '${T$($.organizationId)}'`,"type = 'tool_call'"];if($.filters?.virtualMcpIds?.length){let J=$.filters.virtualMcpIds.map((K)=>`'${T$(K)}'`).join(",");X.push(`virtual_mcp_id IN (${J})`)}if($.filters?.excludeConnectionIds?.length){let J=$.filters.excludeConnectionIds.map((K)=>`'${T$(K)}'`).join(",");X.push(`connection_id NOT IN (${J})`)}if(bJ(X,$.startDate,this.dialect),$.endDate)X.push(fJ($.endDate,this.dialect));let Q=Math.min(Math.max(1,Math.floor($.limit??500)),1000),Y=`SELECT virtual_mcp_id, tool_name, count(*) AS calls, coalesce(sum(CASE WHEN is_error = 1 THEN 1 ELSE 0 END), 0) AS errors, coalesce(sum(length(output)), 0) AS output_size FROM ${Z} WHERE ${X.join(" AND ")} GROUP BY virtual_mcp_id, tool_name ORDER BY calls DESC LIMIT ${Q}`;return{cells:(await this.engine.query(Y)).map((J)=>({virtualMcpId:J.virtual_mcp_id?String(J.virtual_mcp_id):null,toolName:String(J.tool_name??""),calls:Number(J.calls??0),errors:Number(J.errors??0),outputSize:Number(J.output_size??0)}))}}async queryLlmUsageStats($){let Z={totalCalls:0,totalErrors:0,avgDurationMs:0,p50DurationMs:0,p95DurationMs:0,totalInputTokens:0,totalOutputTokens:0,totalTokens:0,totalCostUsd:0,topTools:[],timeseries:[]};if(!$.organizationId||!$.connectionId)return Z;let X=this.dialect,Q=X==="clickhouse",Y=this.sourceFactory($.organizationId,{startDate:$.startDate,endDate:$.endDate}),G=YL($.interval,X,"timestamp"),J=(E)=>`coalesce(${OQ$("properties",`$.${E}`,X)}, 0)`,K=Q?"count()":"count(*)",W=Q?"countIf(is_error = 1)":"count(*) FILTER (WHERE is_error = 1)",H=(E)=>Q?`quantile(${E})(duration_ms)`:`quantile_cont(duration_ms, ${E})`,F=[`organization_id = '${T$($.organizationId)}'`,`connection_id = '${T$($.connectionId)}'`];if(bJ(F,$.startDate,X),$.endDate)F.push(fJ($.endDate,X));if($.userIds?.length){let E=$.userIds.slice(0,100).map((j)=>`'${T$(j)}'`).join(",");F.push(`user_id IN (${E})`)}let U=F.join(" AND "),N=Math.min(Math.max(1,Math.floor($.topN??5)),20),B=`${K} AS calls,
|
|
1566
1566
|
${W} AS errors,
|
|
1567
1567
|
avg(duration_ms) AS avg,
|
|
1568
1568
|
sum(${J("input_tokens")}) AS in_tok,
|