decocms 4.181.3 → 4.182.0
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-BTxQkLh_.js → AlertCircle-DPRp9Xgg.js} +1 -1
- package/dist/client/assets/{AreaChart-54GTf9Wv.js → AreaChart-ChWSxLxI.js} +1 -1
- package/dist/client/assets/{ArrowUp-CiT0cU4D.js → ArrowUp-C4AEGU_a.js} +1 -1
- package/dist/client/assets/{ArrowUpRight-KmOQGUGd.js → ArrowUpRight-BcoQJUX9.js} +1 -1
- package/dist/client/assets/{Check-Dw-gymvq.js → Check-Dzm3Zs3M.js} +1 -1
- package/dist/client/assets/{CheckCircle-CJSSqHjK.js → CheckCircle-DruA5cHd.js} +1 -1
- package/dist/client/assets/{ChevronDown-DJaWgVC0.js → ChevronDown-B5OG_1Nh.js} +1 -1
- package/dist/client/assets/{ChevronRight-DLaD7kHP.js → ChevronRight-NujKeKVO.js} +1 -1
- package/dist/client/assets/{ChevronUp-C4i-02np.js → ChevronUp-CaHbnD4U.js} +1 -1
- package/dist/client/assets/{Copy01-Cmo8Ag8o.js → Copy01-rFr5V6XR.js} +1 -1
- package/dist/client/assets/{CpuChip01-K-xlLMGB.js → CpuChip01-iiM02IAE.js} +1 -1
- package/dist/client/assets/{CreditCard01-CmetOEMF.js → CreditCard01-CYwcdkD2.js} +1 -1
- package/dist/client/assets/{DotsVertical-BH53E0xj.js → DotsVertical-BROzC6kl.js} +1 -1
- package/dist/client/assets/{Eye-B6gNJQkZ.js → Eye-cscwiEH8.js} +1 -1
- package/dist/client/assets/{FilterLines-Cpf5z5Iu.js → FilterLines-CsCU5fBN.js} +1 -1
- package/dist/client/assets/{HardDrive-Dv_gzUWs.js → HardDrive-D1545Ujq.js} +1 -1
- package/dist/client/assets/{Key01-ai3raIR8.js → Key01-Bn2TZuKg.js} +1 -1
- package/dist/client/assets/{LayoutLeft-BUkBSDrI.js → LayoutLeft-Cq7uhuoe.js} +1 -1
- package/dist/client/assets/{LinkExternal01-C_HyHuei.js → LinkExternal01-DZB7sFtv.js} +1 -1
- package/dist/client/assets/{LogOut01-CcD6g7YP.js → LogOut01-DW9a5dqb.js} +1 -1
- package/dist/client/assets/{Monitor01-DH8zVvcw.js → Monitor01-B5Ziwu4c.js} +1 -1
- package/dist/client/assets/{Palette-BVF7aPzx.js → Palette-DD-zh4Dk.js} +1 -1
- package/dist/client/assets/{Play-DktqrYeq.js → Play-DpaC756w.js} +1 -1
- package/dist/client/assets/{Plus-D3gVN1IJ.js → Plus-B1OAO3YI.js} +1 -1
- package/dist/client/assets/{SearchLg-X8pCQ7Bs.js → SearchLg-BD3x947u.js} +1 -1
- package/dist/client/assets/{SearchMd-BGw6nenO.js → SearchMd-DuUpwlrS.js} +1 -1
- package/dist/client/assets/{Settings02-DLn641-3.js → Settings02-4UoyPhbR.js} +1 -1
- package/dist/client/assets/{Shield01-MX0RzfQ2.js → Shield01-CAsRZhrR.js} +1 -1
- package/dist/client/assets/{Star01-jcE2iXLN.js → Star01-D79WW-LQ.js} +1 -1
- package/dist/client/assets/{Stars01-B33s_mIG.js → Stars01-DleC4SZi.js} +1 -1
- package/dist/client/assets/{Stars02-CUMfm05b.js → Stars02-B-GTR4r0.js} +1 -1
- package/dist/client/assets/{Sun-DL3Et2O2.js → Sun-xTIDj6LD.js} +1 -1
- package/dist/client/assets/{SwitchHorizontal01-Ca1irFIT.js → SwitchHorizontal01--ae8Y6HT.js} +1 -1
- package/dist/client/assets/{Tool01-CoHxo05I.js → Tool01-D2y4FITf.js} +1 -1
- package/dist/client/assets/{Tool02-q7KgS36M.js → Tool02-BqXyB9Tp.js} +1 -1
- package/dist/client/assets/{Trash01-C_iTJrzM.js → Trash01-BmJZTDNy.js} +1 -1
- package/dist/client/assets/{TrendUp01-C64GToZR.js → TrendUp01-CIS6jjwG.js} +1 -1
- package/dist/client/assets/{Upload01-C_wNHEuX.js → Upload01-m_GU3eeL.js} +1 -1
- package/dist/client/assets/{User01-DbfhZ4ti.js → User01-BEmYT7Qf.js} +1 -1
- package/dist/client/assets/{Users01-DVMG5rdr.js → Users01-BsvLaZs7.js} +1 -1
- package/dist/client/assets/{Users03-CJSf0I5d.js → Users03-BNAXj4Yf.js} +1 -1
- package/dist/client/assets/{X-BGd3Yd9R.js → X-Cg5m-aua.js} +1 -1
- package/dist/client/assets/{XCircle-BzhEmj9C.js → XCircle-Cv6PIhba.js} +1 -1
- package/dist/client/assets/{XClose-yx7RXMlE.js → XClose-Cjm3G-lJ.js} +1 -1
- package/dist/client/assets/{Zap-Cc1RYTno.js → Zap-BwwwdUMi.js} +1 -1
- package/dist/client/assets/{ZapSquare--_Wuc2N_.js → ZapSquare-Bsm1KKoY.js} +1 -1
- package/dist/client/assets/{access-gate-BSUWjwCs.js → access-gate-wlsBPXER.js} +1 -1
- package/dist/client/assets/{add-section-modal-CB73EjN8.js → add-section-modal-jwLbiSqY.js} +1 -1
- package/dist/client/assets/{agent-icon-LwtXnQ8r.js → agent-icon-C93MMlE0.js} +1 -1
- package/dist/client/assets/{agents-list-CrnSFHfy.js → agents-list-CO7YXjMJ.js} +1 -1
- package/dist/client/assets/{ai-providers-oJ038Zl_.js → ai-providers-CA9lZ2Y1.js} +1 -1
- package/dist/client/assets/{alert-BGnJ_noO.js → alert-Hvkh9ppY.js} +1 -1
- package/dist/client/assets/{alert-dialog-qDSW0Crq.js → alert-dialog-BLwU3_nS.js} +1 -1
- package/dist/client/assets/{app-editor-DILiTJoW.js → app-editor-Cjh1_JT0.js} +1 -1
- package/dist/client/assets/{auth-DIPKpaIr.js → auth-CDZsCNye.js} +1 -1
- package/dist/client/assets/{auth-catchall-CYL9uxik.js → auth-catchall-BhuGXGvG.js} +1 -1
- package/dist/client/assets/{auth-entry-DImJpw9E.js → auth-entry-DUUv8RJt.js} +1 -1
- package/dist/client/assets/{auth-split-layout-s6sRFVyK.js → auth-split-layout-DjulTLm2.js} +1 -1
- package/dist/client/assets/{authenticate-and-persist-oauth-CaPu7RQh.js → authenticate-and-persist-oauth-B6I2Yh4h.js} +1 -1
- package/dist/client/assets/{automation-list-row-3pYfyU0O.js → automation-list-row-BUr0PyW2.js} +1 -1
- package/dist/client/assets/{automation-runs-D2d3Wb2r.js → automation-runs-2TAKFg9z.js} +1 -1
- package/dist/client/assets/{automations-DclhicEU.js → automations-B2MNOW7s.js} +1 -1
- package/dist/client/assets/{avatar-CEbbtaiZ.js → avatar-BYdPZSw-.js} +1 -1
- package/dist/client/assets/{badge-C1OyErpa.js → badge-DD-zecFq.js} +1 -1
- package/dist/client/assets/{billing-DRZX3EmX.js → billing-CvISqpke.js} +1 -1
- package/dist/client/assets/{block-document-C3rhxAfS.js → block-document-BexaqjK8.js} +1 -1
- package/dist/client/assets/{brand-context-aUlyRlh0.js → brand-context-nP12QyKk.js} +1 -1
- package/dist/client/assets/{buckets-DELnzTrg.js → buckets-CiQ-NSfT.js} +1 -1
- package/dist/client/assets/{bulk-category-panel-MPj9Giz3.js → bulk-category-panel-ChSPMq2C.js} +1 -1
- package/dist/client/assets/{calendar-Cgmlwp6s.js → calendar-C3gMj9si.js} +1 -1
- package/dist/client/assets/{capability-load-error-CO2UqFKW.js → capability-load-error-D1FnfdAv.js} +1 -1
- package/dist/client/assets/{card-D0L8m2Fk.js → card-CibovPLz.js} +1 -1
- package/dist/client/assets/{category-editor-B-verZ0D.js → category-editor-D8CCgJzd.js} +1 -1
- package/dist/client/assets/{chat-context-D6CbggZW.js → chat-context-lHtNe1gH.js} +6 -6
- package/dist/client/assets/{checkbox-DtFnclfC.js → checkbox-FHd8kA0F.js} +1 -1
- package/dist/client/assets/{cli-auth-success-Bicb4f4q.js → cli-auth-success-DR7K4kr8.js} +1 -1
- package/dist/client/assets/{collection-detail-CAcg5xcf.js → collection-detail-atu59I54.js} +1 -1
- package/dist/client/assets/{collection-display-button-BCy_2J75.js → collection-display-button-ufL_1Mdg.js} +1 -1
- package/dist/client/assets/{collection-search-2xNmmwyF.js → collection-search-C-_TIk5b.js} +1 -1
- package/dist/client/assets/{collection-table-wrapper-CTDA0KGg.js → collection-table-wrapper-B6loESfH.js} +1 -1
- package/dist/client/assets/{collection-tabs-CTBrfSnI.js → collection-tabs-HciSg6SY.js} +1 -1
- package/dist/client/assets/{command-CC22u5HT.js → command-B4JFVf6e.js} +1 -1
- package/dist/client/assets/{commerce-onboarding-DPhOKMuI.js → commerce-onboarding-A4zWE_HK.js} +1 -1
- package/dist/client/assets/{companions-core-DhobrWwt.js → companions-core-PDg0DVNF.js} +1 -1
- package/dist/client/assets/{connect-BpuNc0ED.js → connect-DD2rHa1y.js} +1 -1
- package/dist/client/assets/{connection-D7v6o0sJ.js → connection-DXxze6UI.js} +1 -1
- package/dist/client/assets/{connection-card-Go0wl4dH.js → connection-card-D2TW-Kfd.js} +1 -1
- package/dist/client/assets/{connection-detail-DHeSqYBk.js → connection-detail-I1scs_0S.js} +1 -1
- package/dist/client/assets/{connection-form-helpers-C8vqp-PX.js → connection-form-helpers-DWmY08h8.js} +1 -1
- package/dist/client/assets/{connections-B0ZbAgCH.js → connections-BlT4Uroh.js} +1 -1
- package/dist/client/assets/{decopilot-sse-pool-BSRr7Awl.js → decopilot-sse-pool-D4ZER6Xz.js} +1 -1
- package/dist/client/assets/{dialog-nd9Y9UDf.js → dialog-DsjptpWm.js} +1 -1
- package/dist/client/assets/{domain-settings-BwjA2jso.js → domain-settings-DmFjAd94.js} +1 -1
- package/dist/client/assets/{drawer-Y02E8bZP.js → drawer-CGUMROb4.js} +1 -1
- package/dist/client/assets/{dropdown-menu-DYJ4Ot9-.js → dropdown-menu-BVKmreO2.js} +1 -1
- package/dist/client/assets/{empty-state-CCnFw3SI.js → empty-state-CKflVuvl.js} +1 -1
- package/dist/client/assets/{extract-connection-data-B6jF9vIP.js → extract-connection-data-DNzD7wvs.js} +1 -1
- package/dist/client/assets/{file-explorer-DpEAqpKl.js → file-explorer-CZk1et4Z.js} +1 -1
- package/dist/client/assets/{form-DZe1OoXa.js → form-BfZ_FEF4.js} +1 -1
- package/dist/client/assets/{general-BcbT-g-z.js → general-BYCZuYWJ.js} +1 -1
- package/dist/client/assets/{github-repo-picker-R7F1yX2B.js → github-repo-picker-CWLPp--Z.js} +1 -1
- package/dist/client/assets/{hooks-BcHj3Ob3.js → hooks-DYSsmvGA.js} +1 -1
- package/dist/client/assets/{index-DjdZgCR6.js → index-BGlNrWAd.js} +1 -1
- package/dist/client/assets/index-BkN_d_QE.js +77 -0
- package/dist/client/assets/{index-Ci-xAbr8.js → index-BlwUlDR8.js} +1 -1
- package/dist/client/assets/{index-Cattr6nA.js → index-CO5LqAk6.js} +5 -5
- package/dist/client/assets/{index-DSL_ub0T.js → index-CTEso5cO.js} +3 -3
- package/dist/client/assets/{index-Bd-WG2FD.js → index-C_bBaRD3.js} +1 -1
- package/dist/client/assets/{index-Bk-CGEfI.js → index-DOlHrj4C.js} +1 -1
- package/dist/client/assets/{index-BC57PyF6.js → index-DQvajTOC.js} +1 -1
- package/dist/client/assets/{index-D01T8L5t.js → index-Dbx3mhGD.js} +1 -1
- package/dist/client/assets/{index-FXSmmHSb.js → index-DhHPfpKp.js} +1 -1
- package/dist/client/assets/{index-Dllcdz9M.js → index-DrzZsZ7W.js} +1 -1
- package/dist/client/assets/{index-Cd-mxy8I.js → index-MABQIHiL.js} +1 -1
- package/dist/client/assets/{index-redirect-CmpV-Jj_.js → index-redirect-B-TFREw-.js} +1 -1
- package/dist/client/assets/{input-D-iDTYtd.js → input-CeknehyU.js} +1 -1
- package/dist/client/assets/{integration-icon-BdwbQSLL.js → integration-icon-CHe6HOkn.js} +1 -1
- package/dist/client/assets/{invite-member-dialog-BzkSk1Ge.js → invite-member-dialog-s34o-SfE.js} +1 -1
- package/dist/client/assets/{label-CxOnDTfr.js → label-C2wAao27.js} +1 -1
- package/dist/client/assets/{layout-GbjkVmGk.js → layout-D1mhk8l5.js} +1 -1
- package/dist/client/assets/{login-BPeVUOhv.js → login-QR-2ZenW.js} +1 -1
- package/dist/client/assets/{mcp-oauth-DPdfbG_o.js → mcp-oauth-DXFHG-Re.js} +1 -1
- package/dist/client/assets/{members-Dm_2MGcL.js → members-BKlM4Zf8.js} +1 -1
- package/dist/client/assets/{monaco-editor-C86Ru8dd.js → monaco-editor-Cu3UNwIh.js} +1 -1
- package/dist/client/assets/{monitoring-stats-row-BwPJ9hvQ.js → monitoring-stats-row-Dxvkmkhg.js} +1 -1
- package/dist/client/assets/{multi-select-CmcBjW31.js → multi-select-R523RU06.js} +1 -1
- package/dist/client/assets/{oauth-callback-CW40581a.js → oauth-callback-Bf7nEWex.js} +1 -1
- package/dist/client/assets/{oauth-callback-ai-provider-BxEnbW0f.js → oauth-callback-ai-provider-CSD0CBep.js} +1 -1
- package/dist/client/assets/{onboarding-DkoxJYt2.js → onboarding-BVDdL1jk.js} +1 -1
- package/dist/client/assets/{org-layout-4xil_83z.js → org-layout-JkUgzANw.js} +1 -1
- package/dist/client/assets/{organization-choice-DXN-yJMk.js → organization-choice-CoxEUqAA.js} +1 -1
- package/dist/client/assets/{orgs-pac80290.js → orgs-C6F5CXxP.js} +1 -1
- package/dist/client/assets/{page-seo-form-Bk_lJRhg.js → page-seo-form-CeTeLsB3.js} +1 -1
- package/dist/client/assets/{popover-BzY6SGD5.js → popover-DH0IeLNR.js} +1 -1
- package/dist/client/assets/{post-editor-Caeo9yZ0.js → post-editor-CjTaHHKu.js} +1 -1
- package/dist/client/assets/{primitives-D59xgpfo.js → primitives-BZKaiwAI.js} +1 -1
- package/dist/client/assets/{profile-CWK3fjie.js → profile-DQXWWVlR.js} +1 -1
- package/dist/client/assets/project-app-view-H276bc63.js +1 -0
- package/dist/client/assets/record-editor-Cg412rRE.js +1 -0
- package/dist/client/assets/{redirect-editor-CV9xq4Ct.js → redirect-editor-Boe47xrH.js} +1 -1
- package/dist/client/assets/registry-UhWw2BaP.js +2 -0
- package/dist/client/assets/{registry-layout-BtBW4sei.js → registry-layout-C_A-ozjg.js} +1 -1
- package/dist/client/assets/{reports-zFMLtR1A.js → reports-DhQZGDz_.js} +1 -1
- package/dist/client/assets/{require-capability-Br1pAJen.js → require-capability-DMpTovRE.js} +1 -1
- package/dist/client/assets/{required-auth-layout-D-kXHcFc.js → required-auth-layout-BOKqzEew.js} +1 -1
- package/dist/client/assets/{reset-password-DxnpIDQZ.js → reset-password-CwukspUP.js} +1 -1
- package/dist/client/assets/{roles-BkhveSy6.js → roles-DnUHxfLu.js} +1 -1
- package/dist/client/assets/{search-input-C115Kksl.js → search-input-KJVUrZEw.js} +1 -1
- package/dist/client/assets/{secrets-BBfooOeU.js → secrets-COmC62Xg.js} +1 -1
- package/dist/client/assets/{sections-editor-DK40H8jT.js → sections-editor-CwxUtvpy.js} +1 -1
- package/dist/client/assets/{select-DoSBsXS-.js → select-D6cbeEF5.js} +1 -1
- package/dist/client/assets/{select-model-BoNfnd6b.js → select-model-Dwu4mDYb.js} +1 -1
- package/dist/client/assets/{self-tool-result-DtUlgJUE.js → self-tool-result-FoAVPpym.js} +1 -1
- package/dist/client/assets/{seo-editor-BIY7X9oK.js → seo-editor-kJTAvoyY.js} +1 -1
- package/dist/client/assets/{settings-layout-BJ2Ef5pZ.js → settings-layout-CsZsKAbt.js} +1 -1
- package/dist/client/assets/{settings-section-CDsu-DGw.js → settings-section-JZIjiQYg.js} +1 -1
- package/dist/client/assets/{shell-controls-Dr9vMfYa.js → shell-controls-DtF1iUDI.js} +1 -1
- package/dist/client/assets/{shell-layout-DBQkutH7.js → shell-layout-CxLeym8u.js} +1 -1
- package/dist/client/assets/{sidebar-B2MwaU8I.js → sidebar-5x-p9sNO.js} +1 -1
- package/dist/client/assets/{skeleton-Byy9MKOd.js → skeleton-Booor1bA.js} +1 -1
- package/dist/client/assets/{spinner-DkNs3_AG.js → spinner-h-1XDBRU.js} +1 -1
- package/dist/client/assets/{sso-DBWJAZWr.js → sso-B7C-mmQ8.js} +1 -1
- package/dist/client/assets/{store-CEwQ2QQ2.js → store-V7-p_1ik.js} +1 -1
- package/dist/client/assets/store-registry-DUbtq06U.js +2 -0
- package/dist/client/assets/{studio-tools-CCpiCxVq.js → studio-tools-DzsOoBM4.js} +1 -1
- package/dist/client/assets/{switch-Ckyz60oQ.js → switch-B-UatRHj.js} +1 -1
- package/dist/client/assets/{tab-id-DamQoqFe.js → tab-id-Bq0hY2cc.js} +1 -1
- package/dist/client/assets/{table-g2dB7kHC.js → table-U9DQXAJa.js} +1 -1
- package/dist/client/assets/{tabs-DhhmWcXn.js → tabs-5Dw8NDEf.js} +1 -1
- package/dist/client/assets/{textarea-ml1xcq4m.js → textarea-CpiXTcDr.js} +1 -1
- package/dist/client/assets/{toggle-group-DaJb5ecI.js → toggle-group-B_c2rQDU.js} +1 -1
- package/dist/client/assets/{toolbar-Dehgj7Nj.js → toolbar-CRH-kJLM.js} +1 -1
- package/dist/client/assets/{tooltip-fNNHHvCP.js → tooltip-BZWOYDeF.js} +1 -1
- package/dist/client/assets/{use-ai-providers-CwtqZyAl.js → use-ai-providers-DeQstxdL.js} +1 -1
- package/dist/client/assets/{use-automations-v0SaJAdt.js → use-automations-7pIm9KvZ.js} +1 -1
- package/dist/client/assets/{use-autosave-CNHqftWQ.js → use-autosave-Dk1y7GJf.js} +1 -1
- package/dist/client/assets/{use-capability-6s_CDaCx.js → use-capability-C9fxKMpB.js} +1 -1
- package/dist/client/assets/{use-clock-tick-Cw81SvwW.js → use-clock-tick-BKBJmSVp.js} +1 -1
- package/dist/client/assets/{use-connection-CzkVTaht.js → use-connection-DCbm_Bg1.js} +1 -1
- package/dist/client/assets/{use-copy-BYYLTgJg.js → use-copy-BUYGsq3B.js} +1 -1
- package/dist/client/assets/{use-create-virtual-mcp-jDvPk26o.js → use-create-virtual-mcp-ybp5HpCw.js} +1 -1
- package/dist/client/assets/{use-debounced-autosave-CWSN1_X_.js → use-debounced-autosave-DIKtydd5.js} +1 -1
- package/dist/client/assets/{use-debounced-value-D4-eJghO.js → use-debounced-value-CAoyiDiu.js} +1 -1
- package/dist/client/assets/{use-deco-credits-Dwwqo-VH.js → use-deco-credits-Bd9Wyt13.js} +1 -1
- package/dist/client/assets/{use-decopilot-events-CMeACuxN.js → use-decopilot-events-CFNEyxMB.js} +1 -1
- package/dist/client/assets/{use-delete-connection-DV_zsO6y.js → use-delete-connection-DtxxMwzK.js} +1 -1
- package/dist/client/assets/{use-deployment-admin-By7yhBUI.js → use-deployment-admin-CehAJ3F_.js} +1 -1
- package/dist/client/assets/{use-file-configs-Z-5fKuaj.js → use-file-configs-fqa2XTWY.js} +1 -1
- package/dist/client/assets/{use-infinite-scroll-fXFRW5gQ.js → use-infinite-scroll-Bg_MXINf.js} +1 -1
- package/dist/client/assets/{use-join-requests-BoAzPTLj.js → use-join-requests-JUnMV9Hv.js} +1 -1
- package/dist/client/assets/{use-mcp-client-DqHVlRT-.js → use-mcp-client-DqX7xoAe.js} +1 -1
- package/dist/client/assets/{use-mcp-tools-DBw2JL-y.js → use-mcp-tools-D87hiZlN.js} +1 -1
- package/dist/client/assets/{use-members-DsNs-XXd.js → use-members-BDuMtXOv.js} +1 -1
- package/dist/client/assets/{use-mobile-DTQQN7CZ.js → use-mobile-DJkohwud.js} +1 -1
- package/dist/client/assets/{use-navigate-to-agent-DGSYNDms.js → use-navigate-to-agent-CjH70sz8.js} +1 -1
- package/dist/client/assets/{use-open-billing-url-BiA8ypry.js → use-open-billing-url-BZbKclIO.js} +1 -1
- package/dist/client/assets/{use-org-auth-client-BoO3p-ZD.js → use-org-auth-client-8c1aoXUa.js} +1 -1
- package/dist/client/assets/{use-org-sso-pjSvX-hU.js → use-org-sso-CUkcNgQa.js} +1 -1
- package/dist/client/assets/{use-organization-roles-CDb_-Y7M.js → use-organization-roles-BMiVYHhY.js} +1 -1
- package/dist/client/assets/{use-organization-settings-DDGI0ux_.js → use-organization-settings-BCR_keIG.js} +1 -1
- package/dist/client/assets/{use-registry-connections-9HNFG4EX.js → use-registry-connections-kCxCOVcr.js} +1 -1
- package/dist/client/assets/{use-secrets-DuY_szss.js → use-secrets-BJAwrxXA.js} +1 -1
- package/dist/client/assets/{use-status-sounds-DrHItgaG.js → use-status-sounds-CakpO8DG.js} +1 -1
- package/dist/client/assets/{use-tags-D9BTOCB6.js → use-tags-B1AbZhMd.js} +1 -1
- package/dist/client/assets/{use-view-mode-BBNpqulX.js → use-view-mode-BiwjWJ-p.js} +1 -1
- package/dist/client/assets/{use-virtual-mcp-CTQtyJk0.js → use-virtual-mcp-CC-VXGgY.js} +1 -1
- package/dist/client/assets/useInfiniteQuery-BLbhIG5N.js +1 -0
- package/dist/client/assets/{useQueries-YKDnkiqD.js → useQueries-uW-8UPjx.js} +1 -1
- package/dist/client/assets/{useRouterState-D-3vvriX.js → useRouterState-CRkEAJd6.js} +1 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-Bd9xGMeX.js +1 -0
- package/dist/client/assets/{users-DFm1KNAU.js → users-QP76AlkA.js} +1 -1
- package/dist/client/assets/{variant-calendar-lUVRsxSt.js → variant-calendar-TmZnhYi8.js} +1 -1
- package/dist/client/assets/{view-mode-toggle-BjkWD1Pd.js → view-mode-toggle-D_behxu9.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/index-CdeKbNns.js +0 -77
- package/dist/client/assets/project-app-view-DOxMbUNa.js +0 -1
- package/dist/client/assets/record-editor-_niGq24j.js +0 -1
- package/dist/client/assets/registry-DNAqKX9b.js +0 -2
- package/dist/client/assets/store-registry-D7sYPe7R.js +0 -2
- package/dist/client/assets/useInfiniteQuery-CAndPTbu.js +0 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-CR3WF7F3.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as $,r as T,m as f,j as i}from"./index-
|
|
1
|
+
import{c as $,r as T,m as f,j as i}from"./index-CTEso5cO.js";import{c as k,T as I,a as P}from"./tooltip-BZWOYDeF.js";const M={sm:{button:"size-7",buttonWithLabel:"h-7",icon:"size-4"},md:{button:"size-9",buttonWithLabel:"h-9",icon:"size-5"},lg:{button:"size-12",buttonWithLabel:"h-12",icon:"size-6"}};function B(E){const t=$.c(27),{value:s,onValueChange:y,options:o,size:C,fullWidth:L,className:z}=E,_=C===void 0?"sm":C,b=L===void 0?!1:L;let h;t[0]===Symbol.for("react.memo_cache_sentinel")?(h=[],t[0]=h):h=t[0];const R=T.useRef(h);let x;t[1]===Symbol.for("react.memo_cache_sentinel")?(x={left:0,width:0,opacity:0},t[1]=x):x=t[1];const[d,S]=T.useState(x);let g,p;t[2]!==o||t[3]!==s?(g=()=>{const e=o.findIndex(j=>j.value===s),m=R.current[e];m&&S({left:m.offsetLeft,width:m.offsetWidth,opacity:1})},p=[s,o],t[2]=o,t[3]=s,t[4]=g,t[5]=p):(g=t[4],p=t[5]),T.useEffect(g,p);const l=M[_];let n;t[6]!==z?(n=f("relative flex gap-0 bg-muted rounded-lg",z),t[6]=z,t[7]=n):n=t[7];let a;t[8]!==l||t[9]!==b||t[10]!==y||t[11]!==o||t[12]!==s?(a=o.map((e,m)=>{const j=i.jsxs("button",{ref:V=>{R.current[m]=V},type:"button",onClick:()=>y(e.value),"aria-label":e.label,className:f("relative z-10 flex items-center justify-center gap-2 rounded-lg transition-colors [transition-timing-function:var(--ease-out-cubic)] duration-200",b?"flex-1 h-12 px-4":e.label?f(l.buttonWithLabel,"px-3"):l.button),children:[i.jsx("span",{className:f("transition-colors ease-out duration-200 flex items-center justify-center [&>svg]:size-[1em]",l.icon,s===e.value?"text-foreground":"text-muted-foreground"),children:e.icon}),e.label&&i.jsx("span",{className:f("text-xs transition-colors ease-out duration-200 whitespace-nowrap",s===e.value?"text-foreground":"text-muted-foreground"),children:e.label})]},e.value);return e.tooltip?i.jsxs(k,{children:[i.jsx(I,{asChild:!0,children:j}),i.jsx(P,{side:"bottom",children:e.tooltip})]},e.value):j}),t[8]=l,t[9]=b,t[10]=y,t[11]=o,t[12]=s,t[13]=a):a=t[13];const w=b?"h-12":l.button;let r;t[14]!==w?(r=f("absolute z-0 bg-background rounded-lg border-shadow transition-all [transition-timing-function:var(--ease-out-cubic)] duration-200",w),t[14]=w,t[15]=r):r=t[15];const W=`${d.left}px`,N=`${d.width}px`;let c;t[16]!==d.opacity||t[17]!==W||t[18]!==N?(c={left:W,width:N,opacity:d.opacity},t[16]=d.opacity,t[17]=W,t[18]=N,t[19]=c):c=t[19];let u;t[20]!==r||t[21]!==c?(u=i.jsx("div",{className:r,style:c}),t[20]=r,t[21]=c,t[22]=u):u=t[22];let v;return t[23]!==u||t[24]!==n||t[25]!==a?(v=i.jsxs("div",{className:n,children:[a,u]}),t[23]=u,t[24]=n,t[25]=a,t[26]=v):v=t[26],v}export{B as V};
|
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-CTEso5cO.js"></script>
|
|
54
54
|
<link rel="stylesheet" crossorigin href="/assets/index-CUIiLem4.css">
|
|
55
55
|
</head>
|
|
56
56
|
<body>
|
package/dist/server/cli.js
CHANGED
|
@@ -1286,7 +1286,7 @@ Usage: deco services <up|down|status>`),process.exit(1)}}var ju1=O(()=>{Ov()});f
|
|
|
1286
1286
|
`.execute($);if(Number(W.rows[0]?.cnt)===0){console.warn(`Failed to migrate ${J}/${K}, keeping in old table`);continue}}await lf`
|
|
1287
1287
|
DELETE FROM kysely_migration WHERE name = ${X}
|
|
1288
1288
|
`.execute($)}}async function Sm1($){await Zh6($),await Xh6($);let Z=new Mm1({db:$,provider:{getMigrations:()=>Promise.resolve(Ql0)}}),{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 Qh6($){let{keepOpen:Z=!1,database:X,skipBetterAuth:Q=!1}=$??{},Y="skipped";if(!Q&&!X)Y=await bg0();let G=X??H6(),J=async()=>{if(!Z&&!X)await Xw(G).catch((K)=>{console.warn("Warning: Error closing database:",K)})};try{let K=await Sm1(G.db);return await J(),{betterAuth:Y,kysely:K}}catch(K){throw await J(),K}}async function Yh6(){let $=H6(),Z=new Mm1({db:$.db,provider:{getMigrations:()=>Promise.resolve(Ql0)}}),{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 Cm1=O(()=>{qm1();yg0();m7()});async function k50($){let Z={...process.env},X=T00($,Z);console.log($U1(X.settings.encryptionKey));let Q=X.settings.betterAuthSecret||(X.settings.localMode?ac1(X.settings.dataDir):""),{ensureServices:Y}=await Promise.resolve().then(() => (u$0(),h$0)),{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(() => (yg0(),ec1));await W(G.databaseUrl);let{createDatabase:H}=await Promise.resolve().then(() => (m7(),Oc1)),{migrateToLatest:N}=await Promise.resolve().then(() => (Cm1(),Vm1)),U=H(G.databaseUrl);await N({keepOpen:!0,database:U,skipBetterAuth:!0})}let K={...X.settings,betterAuthSecret:Q,databaseUrl:G.databaseUrl,natsUrls:G.natsUrls,...G.s3?{s3Endpoint:G.s3.endpoint,s3Bucket:G.s3.bucket,s3AccessKeyId:G.s3.accessKeyId,s3SecretAccessKey:G.s3.secretAccessKey,s3ForcePathStyle:G.s3.forcePathStyle}:{},...G.natsTunnel?{natsPublicUrl:G.natsTunnel.publicUrl,natsAccountJwt:G.natsTunnel.accountJwt,natsAccountSigningKey:G.natsTunnel.accountSigningKey,natsOperatorJwt:G.natsTunnel.operatorJwt,natsTunnelPublicEnabled:!0,natsCredsPath:G.natsTunnel.credsPath}:{}};return Pu1(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 Yl0=O(()=>{Ov();sc1();y8()});var vm1={};O0(vm1,{updateService:()=>bD,subscribeCliState:()=>Kl0,setTuiConsoleIntercepted:()=>S50,setServerUrl:()=>Om,setMigrationsDone:()=>Bm,setDevMode:()=>Kh6,resetCliStateForTests:()=>Gh6,isTuiConsoleIntercepted:()=>V50,getCliState:()=>Jl0,addLogEntry:()=>Kw});function _m1(){return{services:[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}],migrationsStatus:"pending",serverUrl:null,logs:[]}}function Gh6(){qQ=_m1()}function Jh6(){return[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}]}function wm(){for(let $ of Gl0)$()}function Jl0(){return qQ}function Kl0($){return Gl0.add($),()=>Gl0.delete($)}function bD($){qQ={...qQ,services:qQ.services.map((Z)=>Z.name===$.name?$:Z)},wm()}function Bm(){qQ={...qQ,migrationsStatus:"done"},wm()}function Om($){qQ={...qQ,serverUrl:$},wm()}function Kw($){let Z=[...qQ.logs,$];qQ={...qQ,logs:Z.length>500?Z.slice(-500):Z},wm()}function Kh6(){qQ={...qQ,services:[...Jh6(),{name:"API",status:"pending",port:0},{name:"Vite",status:"pending",port:0}]},wm()}function S50($){xm1=$}function V50(){return xm1}var qQ,Gl0,xm1=!1;var yD=O(()=>{qQ=_m1();Gl0=new Set});import{createServer as fm1}from"net";function Wh6($){return new Promise((Z)=>{let X=fm1();X.once("error",()=>Z(!1)),X.listen($,"0.0.0.0",()=>{X.close(()=>Z(!0))})})}async function Lm($){if(await Wh6($))return $;let Z=await new Promise((X,Q)=>{let Y=fm1();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 Wl0=()=>{};function Dm($){return $.replace(/\x1b\[[0-9;]*m/g,"")}var Hl0={};O0(Hl0,{startDevServer:()=>Nh6});import{join as Hh6}from"path";function bm1($){let Z=$.getReader(),X=new TextDecoder,Q="";function Y(){let G=Q.split(`
|
|
1289
|
-
`);Q=G.pop()??"";for(let J of G){let K=Dm(J).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;Kw({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:K})}}(async()=>{for(;;){let{done:G,value:J}=await Z.read();if(G)break;Q+=X.decode(J,{stream:!0}),Y()}if(Q.trim()){let G=Dm(Q).replace(/^\[\d+\]\s*/,"").trim();if(G)Kw({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:G})}})()}async function Nh6($){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 Lm(Number(Y)+1):await Lm(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await k50({port:String(J),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let L of W)bD({name:L.name,status:"ready",port:L.port});Bm();let N=Hh6(import.meta.dir,"..","..","..","..",".."),U=X===!0,F=Bun.spawn(["bun","run","dev:servers"],{cwd:N,env:{...process.env,PORT:String(K.port),VITE_PORT:String(Y),DATABASE_URL:K.databaseUrl,NATS_URL:K.natsUrls.join(","),NODE_ENV:K.nodeEnv,BASE_URL:G,DECOCMS_LOCAL_MODE:String(K.localMode),DECOCMS_HOME:K.dataDir,DATA_DIR:K.dataDir,DECO_CLI:"1",...K.betterAuthSecret?{BETTER_AUTH_SECRET:K.betterAuthSecret}:{},...K.s3Endpoint?{S3_ENDPOINT:K.s3Endpoint,S3_BUCKET:K.s3Bucket??"",S3_ACCESS_KEY_ID:K.s3AccessKeyId??"",S3_SECRET_ACCESS_KEY:K.s3SecretAccessKey??"",S3_FORCE_PATH_STYLE:String(K.s3ForcePathStyle)}:{},...K.natsPublicUrl&&K.natsAccountJwt&&K.natsAccountSigningKey?{NATS_PUBLIC_URL:K.natsPublicUrl,NATS_ACCOUNT_JWT:K.natsAccountJwt,NATS_ACCOUNT_SIGNING_KEY:K.natsAccountSigningKey,NATS_OPERATOR_JWT:K.natsOperatorJwt??"",NATS_TUNNEL_PUBLIC_ENABLED:"true",...K.natsCredsPath?{NATS_CREDS:K.natsCredsPath}:{}}:{}},stdio:["inherit",U?"inherit":"pipe",U?"inherit":"pipe"]});if(!U)bm1(F.stdout),bm1(F.stderr);Om(G),bD({name:"Vite",status:"ready",port:Number(Y)}),bD({name:"API",status:"ready",port:Number(K.port)});let B=async(L)=>{if(F.kill(L),await F.exited,H.length>0){let{stopServices:D}=await Promise.resolve().then(() => (u$0(),h$0));await D(K.dataDir)}};return process.on("SIGINT",()=>B("SIGINT")),process.on("SIGTERM",()=>B("SIGTERM")),{port:Number(Y),process:F}}var Nl0=O(()=>{Yl0();yD();Wl0()});var C50;var Ul0=O(()=>{C50={name:"decocms",version:"4.181.3",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@nats-io/jwt":"0.0.10-5","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});import{Box as Fh6,Text as ym1}from"ink";import{jsx as wh6,jsxs as gm1}from"react/jsx-runtime";function hm1({version:$}){return gm1(Fh6,{flexDirection:"column",marginTop:1,children:[K50.map((Z,X)=>wh6(ym1,{color:W50[X],children:Z},X)),gm1(ym1,{dimColor:!0,children:[" v",$]})]})}var um1=O(()=>{Xm()});import{Box as gD,Text as Ww}from"ink";import{Spinner as Bh6}from"@inkjs/ui";import{jsx as vY,jsxs as df}from"react/jsx-runtime";function cm1({status:$}){if($==="pending")return vY(Bh6,{label:""});return vY(Ww,{color:"green",children:"\u2713"})}function Oh6($){return`${$.name}: ${$.port||"...."}`}function lm1({services:$,migrationsStatus:Z,home:X,serverUrl:Q}){return df(gD,{flexDirection:"column",paddingBottom:1,children:[vY(hm1,{version:C50.version}),vY(gD,{marginBottom:1,children:vY(Ww,{dimColor:!0,children:"\u2500".repeat(80)})}),vY(gD,{children:df(Ww,{dimColor:!0,children:["Home: ",X]})}),df(gD,{gap:2,children:[$.map((Y)=>df(gD,{gap:1,children:[vY(Ww,{children:Oh6(Y)}),vY(cm1,{status:Y.status})]},Y.name)),df(gD,{gap:1,children:[vY(Ww,{children:"Migrations"}),vY(cm1,{status:Z})]})]}),vY(gD,{children:Q?df(Ww,{children:["Open in browser: ",vY(Ww,{color:"cyan",children:Q})]}):vY(Ww,{dimColor:!0,children:"Starting..."})})]})}var dm1=O(()=>{Ul0();um1()});import{Box as Lh6,Text as Em}from"ink";import{jsx as Fl0,jsxs as wl0}from"react/jsx-runtime";function Dh6($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function mm1({logs:$}){return Fl0(Lh6,{flexDirection:"column",children:$.map((Z,X)=>{if(Z.rawLine)return Fl0(Em,{dimColor:!0,children:Z.rawLine},X);let Q=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return wl0(Em,{children:[wl0(Em,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),Fl0(Em,{color:Dh6(Z.status),children:Z.status}),wl0(Em,{dimColor:!0,children:[" ",Q.padStart(8)]})]},X)})})}var im1=()=>{};var Bl0={};O0(Bl0,{App:()=>jh6});import{Box as Eh6}from"ink";import{useSyncExternalStore as zh6}from"react";import{jsx as nm1,jsxs as Ph6}from"react/jsx-runtime";function jh6({home:$}){let Z=zh6(Kl0,Jl0);return Ph6(Eh6,{flexDirection:"column",children:[nm1(lm1,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),nm1(mm1,{logs:Z.logs})]})}var Ol0=O(()=>{dm1();im1();yD()});var GJ="thread-gate",jN="decopilot-hosted-harness",lG="automations",Hw="background-tools";var pm1="7";function tm1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:pm1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var om1=()=>{};function Ah6(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function Ll0($,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 rm1(){let $=Ah6();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:Ll0($,"--cpu-prof-dir")??process.cwd(),name:Ll0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(Ll0($,"--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 am1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let X=_D();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(()=>{}),_50=setInterval(()=>void Z().catch(()=>{}),$),_50.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(_50)clearInterval(_50)}}var _50;var sm1=()=>{};import*as Th6 from"bun:jsc";function em1(){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{Rh6()}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=Ih6()?.traces??[]}catch{}if(J>$&&K.length>0){let W=new Map;for(let N of K){let U=N.frames.find((B)=>B.sourceURL&&!/Unknown Executable/.test(B.category??""))??N.frames[0];if(!U)continue;let F=(U.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),w=`${U.name??"?"} @ ${F}:${U.line??"?"}`;W.set(w,(W.get(w)??0)+1)}let H=[...W.entries()].sort((N,U)=>U[1]-N[1]).slice(0,8).map(([N,U])=>({frame:N,count:U}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(J),samplesInWindow:K.length,top:H}))}X=setTimeout(Y,Z),X.unref?.()};return X=setTimeout(Y,Z),X.unref?.(),()=>{if(X)clearTimeout(X)}}var Rh6,Ih6;var $i1=O(()=>{({startSamplingProfiler:Rh6,samplingProfilerStackTraces:Ih6}=Th6)});function Zi1(){rm1();let $=[am1(),Kc1(),em1()];return()=>{for(let Z of $)Z()}}var Xi1=O(()=>{qg0();sm1();$i1()});var hD=_((Qi1)=>{Object.defineProperty(Qi1,"__esModule",{value:!0});Qi1.RepublishHeaders=Qi1.DirectMsgHeaders=Qi1.JsHeaders=Qi1.AdvisoryKind=void 0;Qi1.isOrderedPushConsumerOptions=qh6;Qi1.isPullConsumer=Mh6;Qi1.isPushConsumer=kh6;Qi1.isBoundPushConsumerOptions=Sh6;function qh6($){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 Mh6($){return $.isPullConsumer()}function kh6($){return $.isPushConsumer()}function Sh6($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}Qi1.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"};Qi1.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"};Qi1.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};Qi1.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var fY=_((Gi1)=>{Object.defineProperty(Gi1,"__esModule",{value:!0});Gi1.TD=Gi1.TE=Gi1.Empty=void 0;Gi1.encode=gh6;Gi1.decode=hh6;Gi1.Empty=new Uint8Array(0);Gi1.TE=new TextEncoder;Gi1.TD=new TextDecoder;function yh6(...$){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 gh6(...$){let Z=[];for(let X=0;X<$.length;X++)Z.push(Gi1.TE.encode($[X]));if(Z.length===0)return Gi1.Empty;if(Z.length===1)return Z[0];return yh6(...Z)}function hh6($){if(!$||$.length===0)return"";return Gi1.TD.decode($)}});var bY=_((Wi1)=>{Object.defineProperty(Wi1,"__esModule",{value:!0});Wi1.errors=Wi1.PermissionViolationError=Wi1.NoRespondersError=Wi1.TimeoutError=Wi1.RequestError=Wi1.ProtocolError=Wi1.ConnectionError=Wi1.DrainingConnectionError=Wi1.ClosedConnectionError=Wi1.AuthorizationError=Wi1.UserAuthenticationExpiredError=Wi1.InvalidOperationError=Wi1.InvalidArgumentError=Wi1.InvalidSubjectError=void 0;class El0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}Wi1.InvalidSubjectError=El0;class x50 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 x50(`${$} ${Z}`,X)}}Wi1.InvalidArgumentError=x50;class zl0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}Wi1.InvalidOperationError=zl0;class v50 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new v50($);return null}}Wi1.UserAuthenticationExpiredError=v50;class f50 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 f50($);return null}}Wi1.AuthorizationError=f50;class jl0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}Wi1.ClosedConnectionError=jl0;class Pl0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}Wi1.DrainingConnectionError=Pl0;class Al0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}Wi1.ConnectionError=Al0;class Tl0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}Wi1.ProtocolError=Tl0;class Rl0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof b50}}Wi1.RequestError=Rl0;class Il0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}Wi1.TimeoutError=Il0;class b50 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}Wi1.NoRespondersError=b50;class y50 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 y50($,X,Q,Y)}}Wi1.PermissionViolationError=y50;Wi1.errors={AuthorizationError:f50,ClosedConnectionError:jl0,ConnectionError:Al0,DrainingConnectionError:Pl0,InvalidArgumentError:x50,InvalidOperationError:zl0,InvalidSubjectError:El0,NoRespondersError:b50,PermissionViolationError:y50,ProtocolError:Tl0,RequestError:Rl0,TimeoutError:Il0,UserAuthenticationExpiredError:v50}});var JJ=_((wi1)=>{Object.defineProperty(wi1,"__esModule",{value:!0});wi1.SimpleMutex=wi1.Perf=void 0;wi1.extend=Xu6;wi1.render=Qu6;wi1.timeout=Yu6;wi1.delay=Gu6;wi1.deadline=Ju6;wi1.deferred=Ml0;wi1.debugDeferred=Ku6;wi1.shuffle=Wu6;wi1.collect=Hu6;wi1.jitter=Fi1;wi1.backoff=Nu6;wi1.nanos=Uu6;wi1.millis=Fu6;wi1.randomToken=Ou6;var Zu6=fY(),ql0=bY();function Xu6($,...Z){for(let X=0;X<Z.length;X++){let Q=Z[X];Object.keys(Q).forEach(function(Y){$[Y]=Q[Y]})}return $}function Qu6($){return Zu6.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function Yu6($,Z=!0){let X=Z?new ql0.TimeoutError:null,Q,Y,G=new Promise((J,K)=>{Q={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(X===null)K(new ql0.TimeoutError);else K(X)},$)});return Object.assign(G,Q)}function Gu6($=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 Ju6($,Z=1000){let X=Ml0(),Q=setTimeout(()=>{X.reject(new ql0.TimeoutError)},Z);try{return await Promise.race([$,X])}finally{clearTimeout(Q)}}function Ml0(){let $={},Z=new Promise((X,Q)=>{$={resolve:X,reject:Q}});return Object.assign(Z,$)}function Ku6(){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 Wu6($){for(let Z=$.length-1;Z>0;Z--){let X=Math.floor(Math.random()*(Z+1));[$[Z],$[X]]=[$[X],$[Z]]}return $}async function Hu6($){let Z=[];for await(let X of $)Z.push(X);return Z}class Ni1{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})}),$}}wi1.Perf=Ni1;class Ui1{max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=Ml0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}wi1.SimpleMutex=Ui1;function Fi1($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function Nu6($=[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 Fi1(X>Z?$[Z]:$[X])}}}function Uu6($){return $*1e6}function Fu6($){return Math.floor($/1e6)}var wu6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",PN=new Uint8Array(62);for(let $=0;$<62;$++)PN[$]=wu6.charCodeAt($);var Bu6=218340105584896;function Ou6(){let $=Math.floor(Math.random()*Bu6),Z=$%62,X=PN[Z];$=($-Z)/62,Z=$%62;let Q=PN[Z];$=($-Z)/62,Z=$%62;let Y=PN[Z];$=($-Z)/62,Z=$%62;let G=PN[Z];$=($-Z)/62,Z=$%62;let J=PN[Z];$=($-Z)/62,Z=$%62;let K=PN[Z];$=($-Z)/62,Z=$%62;let W=PN[Z];$=($-Z)/62;let H=PN[$];return String.fromCharCode(X,Q,Y,G,J,K,W,H)}});var Pi1=_((zi1)=>{Object.defineProperty(zi1,"__esModule",{value:!0});zi1.nuid=zi1.NuidImpl=void 0;var Cu6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",Nw=62,h50=12,Di1=10,Oi1=33,_u6=333,Li1=h50+Di1,Sl0=new Uint8Array(Nw);for(let $=0;$<Nw;$++)Sl0[$]=Cu6.charCodeAt($);var g50=4294967296,Ei1=BigInt(Nw)**BigInt(Di1),zm=Number(Ei1/(1n<<32n)),kl0=Number(Ei1%(1n<<32n));function xu6($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function vu6($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else xu6($)}class Vl0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(Li1),this.cbuf=new Uint8Array(h50),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(zm+1)),this.seqLo=Math.floor(Math.random()*g50);while($++<8&&this.seqHi===zm&&this.seqLo>=kl0);if(this.seqHi===zm&&this.seqLo>=kl0)this.seqLo=0;this.inc=Math.random()*(_u6-Oi1)+Oi1|0}setPre(){vu6(this.cbuf);for(let $=0;$<h50;$++)this.buf[$]=Sl0[this.cbuf[$]%Nw]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let X=Li1-1;X>=h50;X--){let Q=Math.floor($/Nw),G=($-Q*Nw)*g50+Z,J=Math.floor(G/Nw),K=G-J*Nw;this.buf[X]=Sl0[K],$=Q,Z=J}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=g50)this.seqLo-=g50,this.seqHi+=1;if(this.seqHi>zm||this.seqHi===zm&&this.seqLo>=kl0)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()}}zi1.NuidImpl=Vl0;zi1.nuid=new Vl0});var Ii1=_((Ti1)=>{Object.defineProperty(Ti1,"__esModule",{value:!0});Ti1.nuid=Ti1.Nuid=void 0;var Ai1=Pi1();Ti1.Nuid=Ai1.NuidImpl;Ti1.nuid=Ai1.nuid});var c50=_((u50)=>{Object.defineProperty(u50,"__esModule",{value:!0});u50.nuid=u50.Nuid=void 0;var qi1=Ii1();Object.defineProperty(u50,"Nuid",{enumerable:!0,get:function(){return qi1.Nuid}});Object.defineProperty(u50,"nuid",{enumerable:!0,get:function(){return qi1.nuid}})});var Uw=_((Mi1)=>{Object.defineProperty(Mi1,"__esModule",{value:!0});Mi1.DEFAULT_HOST=Mi1.DEFAULT_PORT=Mi1.Match=void 0;Mi1.syncIterator=uu6;Mi1.createInbox=cu6;var gu6=c50(),hu6=bY();Mi1.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function uu6($){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 cu6($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw hu6.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${gu6.nuid.next()}`}Mi1.DEFAULT_PORT=4222;Mi1.DEFAULT_HOST="127.0.0.1"});var jm=_((Ci1)=>{Object.defineProperty(Ci1,"__esModule",{value:!0});Ci1.DataBuffer=void 0;var Si1=fY();class Vi1{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 Si1.TE.encode($)}static toAscii($){return Si1.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}}Ci1.DataBuffer=Vi1});var uD=_((vi1)=>{Object.defineProperty(vi1,"__esModule",{value:!0});vi1.LF=vi1.CR=vi1.CRLF=vi1.CR_LF_LEN=vi1.CR_LF=void 0;vi1.setTransportFactory=ou6;vi1.defaultPort=ru6;vi1.getUrlParseFn=au6;vi1.newTransport=su6;vi1.getResolveFn=eu6;vi1.protoLen=xi1;vi1.extractProtocolMessage=$c6;var nu6=fY(),pu6=Uw(),tu6=jm(),yY;function ou6($){yY=$}function ru6(){return yY!==void 0&&yY.defaultPort!==void 0?yY.defaultPort:pu6.DEFAULT_PORT}function au6(){return yY!==void 0&&yY.urlParseFn?yY.urlParseFn:void 0}function su6(){if(!yY||typeof yY.factory!=="function")throw Error("transport fn is not set");return yY.factory()}function eu6(){return yY!==void 0&&yY.dnsResolveFn?yY.dnsResolveFn:void 0}vi1.CR_LF=`\r
|
|
1289
|
+
`);Q=G.pop()??"";for(let J of G){let K=Dm(J).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;Kw({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:K})}}(async()=>{for(;;){let{done:G,value:J}=await Z.read();if(G)break;Q+=X.decode(J,{stream:!0}),Y()}if(Q.trim()){let G=Dm(Q).replace(/^\[\d+\]\s*/,"").trim();if(G)Kw({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:G})}})()}async function Nh6($){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 Lm(Number(Y)+1):await Lm(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await k50({port:String(J),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let L of W)bD({name:L.name,status:"ready",port:L.port});Bm();let N=Hh6(import.meta.dir,"..","..","..","..",".."),U=X===!0,F=Bun.spawn(["bun","run","dev:servers"],{cwd:N,env:{...process.env,PORT:String(K.port),VITE_PORT:String(Y),DATABASE_URL:K.databaseUrl,NATS_URL:K.natsUrls.join(","),NODE_ENV:K.nodeEnv,BASE_URL:G,DECOCMS_LOCAL_MODE:String(K.localMode),DECOCMS_HOME:K.dataDir,DATA_DIR:K.dataDir,DECO_CLI:"1",...K.betterAuthSecret?{BETTER_AUTH_SECRET:K.betterAuthSecret}:{},...K.s3Endpoint?{S3_ENDPOINT:K.s3Endpoint,S3_BUCKET:K.s3Bucket??"",S3_ACCESS_KEY_ID:K.s3AccessKeyId??"",S3_SECRET_ACCESS_KEY:K.s3SecretAccessKey??"",S3_FORCE_PATH_STYLE:String(K.s3ForcePathStyle)}:{},...K.natsPublicUrl&&K.natsAccountJwt&&K.natsAccountSigningKey?{NATS_PUBLIC_URL:K.natsPublicUrl,NATS_ACCOUNT_JWT:K.natsAccountJwt,NATS_ACCOUNT_SIGNING_KEY:K.natsAccountSigningKey,NATS_OPERATOR_JWT:K.natsOperatorJwt??"",NATS_TUNNEL_PUBLIC_ENABLED:"true",...K.natsCredsPath?{NATS_CREDS:K.natsCredsPath}:{}}:{}},stdio:["inherit",U?"inherit":"pipe",U?"inherit":"pipe"]});if(!U)bm1(F.stdout),bm1(F.stderr);Om(G),bD({name:"Vite",status:"ready",port:Number(Y)}),bD({name:"API",status:"ready",port:Number(K.port)});let B=async(L)=>{if(F.kill(L),await F.exited,H.length>0){let{stopServices:D}=await Promise.resolve().then(() => (u$0(),h$0));await D(K.dataDir)}};return process.on("SIGINT",()=>B("SIGINT")),process.on("SIGTERM",()=>B("SIGTERM")),{port:Number(Y),process:F}}var Nl0=O(()=>{Yl0();yD();Wl0()});var C50;var Ul0=O(()=>{C50={name:"decocms",version:"4.182.0",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@nats-io/jwt":"0.0.10-5","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});import{Box as Fh6,Text as ym1}from"ink";import{jsx as wh6,jsxs as gm1}from"react/jsx-runtime";function hm1({version:$}){return gm1(Fh6,{flexDirection:"column",marginTop:1,children:[K50.map((Z,X)=>wh6(ym1,{color:W50[X],children:Z},X)),gm1(ym1,{dimColor:!0,children:[" v",$]})]})}var um1=O(()=>{Xm()});import{Box as gD,Text as Ww}from"ink";import{Spinner as Bh6}from"@inkjs/ui";import{jsx as vY,jsxs as df}from"react/jsx-runtime";function cm1({status:$}){if($==="pending")return vY(Bh6,{label:""});return vY(Ww,{color:"green",children:"\u2713"})}function Oh6($){return`${$.name}: ${$.port||"...."}`}function lm1({services:$,migrationsStatus:Z,home:X,serverUrl:Q}){return df(gD,{flexDirection:"column",paddingBottom:1,children:[vY(hm1,{version:C50.version}),vY(gD,{marginBottom:1,children:vY(Ww,{dimColor:!0,children:"\u2500".repeat(80)})}),vY(gD,{children:df(Ww,{dimColor:!0,children:["Home: ",X]})}),df(gD,{gap:2,children:[$.map((Y)=>df(gD,{gap:1,children:[vY(Ww,{children:Oh6(Y)}),vY(cm1,{status:Y.status})]},Y.name)),df(gD,{gap:1,children:[vY(Ww,{children:"Migrations"}),vY(cm1,{status:Z})]})]}),vY(gD,{children:Q?df(Ww,{children:["Open in browser: ",vY(Ww,{color:"cyan",children:Q})]}):vY(Ww,{dimColor:!0,children:"Starting..."})})]})}var dm1=O(()=>{Ul0();um1()});import{Box as Lh6,Text as Em}from"ink";import{jsx as Fl0,jsxs as wl0}from"react/jsx-runtime";function Dh6($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function mm1({logs:$}){return Fl0(Lh6,{flexDirection:"column",children:$.map((Z,X)=>{if(Z.rawLine)return Fl0(Em,{dimColor:!0,children:Z.rawLine},X);let Q=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return wl0(Em,{children:[wl0(Em,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),Fl0(Em,{color:Dh6(Z.status),children:Z.status}),wl0(Em,{dimColor:!0,children:[" ",Q.padStart(8)]})]},X)})})}var im1=()=>{};var Bl0={};O0(Bl0,{App:()=>jh6});import{Box as Eh6}from"ink";import{useSyncExternalStore as zh6}from"react";import{jsx as nm1,jsxs as Ph6}from"react/jsx-runtime";function jh6({home:$}){let Z=zh6(Kl0,Jl0);return Ph6(Eh6,{flexDirection:"column",children:[nm1(lm1,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),nm1(mm1,{logs:Z.logs})]})}var Ol0=O(()=>{dm1();im1();yD()});var GJ="thread-gate",jN="decopilot-hosted-harness",lG="automations",Hw="background-tools";var pm1="7";function tm1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:pm1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var om1=()=>{};function Ah6(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function Ll0($,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 rm1(){let $=Ah6();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:Ll0($,"--cpu-prof-dir")??process.cwd(),name:Ll0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(Ll0($,"--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 am1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let X=_D();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(()=>{}),_50=setInterval(()=>void Z().catch(()=>{}),$),_50.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(_50)clearInterval(_50)}}var _50;var sm1=()=>{};import*as Th6 from"bun:jsc";function em1(){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{Rh6()}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=Ih6()?.traces??[]}catch{}if(J>$&&K.length>0){let W=new Map;for(let N of K){let U=N.frames.find((B)=>B.sourceURL&&!/Unknown Executable/.test(B.category??""))??N.frames[0];if(!U)continue;let F=(U.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),w=`${U.name??"?"} @ ${F}:${U.line??"?"}`;W.set(w,(W.get(w)??0)+1)}let H=[...W.entries()].sort((N,U)=>U[1]-N[1]).slice(0,8).map(([N,U])=>({frame:N,count:U}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(J),samplesInWindow:K.length,top:H}))}X=setTimeout(Y,Z),X.unref?.()};return X=setTimeout(Y,Z),X.unref?.(),()=>{if(X)clearTimeout(X)}}var Rh6,Ih6;var $i1=O(()=>{({startSamplingProfiler:Rh6,samplingProfilerStackTraces:Ih6}=Th6)});function Zi1(){rm1();let $=[am1(),Kc1(),em1()];return()=>{for(let Z of $)Z()}}var Xi1=O(()=>{qg0();sm1();$i1()});var hD=_((Qi1)=>{Object.defineProperty(Qi1,"__esModule",{value:!0});Qi1.RepublishHeaders=Qi1.DirectMsgHeaders=Qi1.JsHeaders=Qi1.AdvisoryKind=void 0;Qi1.isOrderedPushConsumerOptions=qh6;Qi1.isPullConsumer=Mh6;Qi1.isPushConsumer=kh6;Qi1.isBoundPushConsumerOptions=Sh6;function qh6($){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 Mh6($){return $.isPullConsumer()}function kh6($){return $.isPushConsumer()}function Sh6($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}Qi1.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"};Qi1.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"};Qi1.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};Qi1.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var fY=_((Gi1)=>{Object.defineProperty(Gi1,"__esModule",{value:!0});Gi1.TD=Gi1.TE=Gi1.Empty=void 0;Gi1.encode=gh6;Gi1.decode=hh6;Gi1.Empty=new Uint8Array(0);Gi1.TE=new TextEncoder;Gi1.TD=new TextDecoder;function yh6(...$){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 gh6(...$){let Z=[];for(let X=0;X<$.length;X++)Z.push(Gi1.TE.encode($[X]));if(Z.length===0)return Gi1.Empty;if(Z.length===1)return Z[0];return yh6(...Z)}function hh6($){if(!$||$.length===0)return"";return Gi1.TD.decode($)}});var bY=_((Wi1)=>{Object.defineProperty(Wi1,"__esModule",{value:!0});Wi1.errors=Wi1.PermissionViolationError=Wi1.NoRespondersError=Wi1.TimeoutError=Wi1.RequestError=Wi1.ProtocolError=Wi1.ConnectionError=Wi1.DrainingConnectionError=Wi1.ClosedConnectionError=Wi1.AuthorizationError=Wi1.UserAuthenticationExpiredError=Wi1.InvalidOperationError=Wi1.InvalidArgumentError=Wi1.InvalidSubjectError=void 0;class El0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}Wi1.InvalidSubjectError=El0;class x50 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 x50(`${$} ${Z}`,X)}}Wi1.InvalidArgumentError=x50;class zl0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}Wi1.InvalidOperationError=zl0;class v50 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new v50($);return null}}Wi1.UserAuthenticationExpiredError=v50;class f50 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 f50($);return null}}Wi1.AuthorizationError=f50;class jl0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}Wi1.ClosedConnectionError=jl0;class Pl0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}Wi1.DrainingConnectionError=Pl0;class Al0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}Wi1.ConnectionError=Al0;class Tl0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}Wi1.ProtocolError=Tl0;class Rl0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof b50}}Wi1.RequestError=Rl0;class Il0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}Wi1.TimeoutError=Il0;class b50 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}Wi1.NoRespondersError=b50;class y50 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 y50($,X,Q,Y)}}Wi1.PermissionViolationError=y50;Wi1.errors={AuthorizationError:f50,ClosedConnectionError:jl0,ConnectionError:Al0,DrainingConnectionError:Pl0,InvalidArgumentError:x50,InvalidOperationError:zl0,InvalidSubjectError:El0,NoRespondersError:b50,PermissionViolationError:y50,ProtocolError:Tl0,RequestError:Rl0,TimeoutError:Il0,UserAuthenticationExpiredError:v50}});var JJ=_((wi1)=>{Object.defineProperty(wi1,"__esModule",{value:!0});wi1.SimpleMutex=wi1.Perf=void 0;wi1.extend=Xu6;wi1.render=Qu6;wi1.timeout=Yu6;wi1.delay=Gu6;wi1.deadline=Ju6;wi1.deferred=Ml0;wi1.debugDeferred=Ku6;wi1.shuffle=Wu6;wi1.collect=Hu6;wi1.jitter=Fi1;wi1.backoff=Nu6;wi1.nanos=Uu6;wi1.millis=Fu6;wi1.randomToken=Ou6;var Zu6=fY(),ql0=bY();function Xu6($,...Z){for(let X=0;X<Z.length;X++){let Q=Z[X];Object.keys(Q).forEach(function(Y){$[Y]=Q[Y]})}return $}function Qu6($){return Zu6.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function Yu6($,Z=!0){let X=Z?new ql0.TimeoutError:null,Q,Y,G=new Promise((J,K)=>{Q={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(X===null)K(new ql0.TimeoutError);else K(X)},$)});return Object.assign(G,Q)}function Gu6($=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 Ju6($,Z=1000){let X=Ml0(),Q=setTimeout(()=>{X.reject(new ql0.TimeoutError)},Z);try{return await Promise.race([$,X])}finally{clearTimeout(Q)}}function Ml0(){let $={},Z=new Promise((X,Q)=>{$={resolve:X,reject:Q}});return Object.assign(Z,$)}function Ku6(){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 Wu6($){for(let Z=$.length-1;Z>0;Z--){let X=Math.floor(Math.random()*(Z+1));[$[Z],$[X]]=[$[X],$[Z]]}return $}async function Hu6($){let Z=[];for await(let X of $)Z.push(X);return Z}class Ni1{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})}),$}}wi1.Perf=Ni1;class Ui1{max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=Ml0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}wi1.SimpleMutex=Ui1;function Fi1($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function Nu6($=[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 Fi1(X>Z?$[Z]:$[X])}}}function Uu6($){return $*1e6}function Fu6($){return Math.floor($/1e6)}var wu6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",PN=new Uint8Array(62);for(let $=0;$<62;$++)PN[$]=wu6.charCodeAt($);var Bu6=218340105584896;function Ou6(){let $=Math.floor(Math.random()*Bu6),Z=$%62,X=PN[Z];$=($-Z)/62,Z=$%62;let Q=PN[Z];$=($-Z)/62,Z=$%62;let Y=PN[Z];$=($-Z)/62,Z=$%62;let G=PN[Z];$=($-Z)/62,Z=$%62;let J=PN[Z];$=($-Z)/62,Z=$%62;let K=PN[Z];$=($-Z)/62,Z=$%62;let W=PN[Z];$=($-Z)/62;let H=PN[$];return String.fromCharCode(X,Q,Y,G,J,K,W,H)}});var Pi1=_((zi1)=>{Object.defineProperty(zi1,"__esModule",{value:!0});zi1.nuid=zi1.NuidImpl=void 0;var Cu6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",Nw=62,h50=12,Di1=10,Oi1=33,_u6=333,Li1=h50+Di1,Sl0=new Uint8Array(Nw);for(let $=0;$<Nw;$++)Sl0[$]=Cu6.charCodeAt($);var g50=4294967296,Ei1=BigInt(Nw)**BigInt(Di1),zm=Number(Ei1/(1n<<32n)),kl0=Number(Ei1%(1n<<32n));function xu6($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function vu6($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else xu6($)}class Vl0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(Li1),this.cbuf=new Uint8Array(h50),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(zm+1)),this.seqLo=Math.floor(Math.random()*g50);while($++<8&&this.seqHi===zm&&this.seqLo>=kl0);if(this.seqHi===zm&&this.seqLo>=kl0)this.seqLo=0;this.inc=Math.random()*(_u6-Oi1)+Oi1|0}setPre(){vu6(this.cbuf);for(let $=0;$<h50;$++)this.buf[$]=Sl0[this.cbuf[$]%Nw]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let X=Li1-1;X>=h50;X--){let Q=Math.floor($/Nw),G=($-Q*Nw)*g50+Z,J=Math.floor(G/Nw),K=G-J*Nw;this.buf[X]=Sl0[K],$=Q,Z=J}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=g50)this.seqLo-=g50,this.seqHi+=1;if(this.seqHi>zm||this.seqHi===zm&&this.seqLo>=kl0)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()}}zi1.NuidImpl=Vl0;zi1.nuid=new Vl0});var Ii1=_((Ti1)=>{Object.defineProperty(Ti1,"__esModule",{value:!0});Ti1.nuid=Ti1.Nuid=void 0;var Ai1=Pi1();Ti1.Nuid=Ai1.NuidImpl;Ti1.nuid=Ai1.nuid});var c50=_((u50)=>{Object.defineProperty(u50,"__esModule",{value:!0});u50.nuid=u50.Nuid=void 0;var qi1=Ii1();Object.defineProperty(u50,"Nuid",{enumerable:!0,get:function(){return qi1.Nuid}});Object.defineProperty(u50,"nuid",{enumerable:!0,get:function(){return qi1.nuid}})});var Uw=_((Mi1)=>{Object.defineProperty(Mi1,"__esModule",{value:!0});Mi1.DEFAULT_HOST=Mi1.DEFAULT_PORT=Mi1.Match=void 0;Mi1.syncIterator=uu6;Mi1.createInbox=cu6;var gu6=c50(),hu6=bY();Mi1.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function uu6($){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 cu6($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw hu6.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${gu6.nuid.next()}`}Mi1.DEFAULT_PORT=4222;Mi1.DEFAULT_HOST="127.0.0.1"});var jm=_((Ci1)=>{Object.defineProperty(Ci1,"__esModule",{value:!0});Ci1.DataBuffer=void 0;var Si1=fY();class Vi1{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 Si1.TE.encode($)}static toAscii($){return Si1.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}}Ci1.DataBuffer=Vi1});var uD=_((vi1)=>{Object.defineProperty(vi1,"__esModule",{value:!0});vi1.LF=vi1.CR=vi1.CRLF=vi1.CR_LF_LEN=vi1.CR_LF=void 0;vi1.setTransportFactory=ou6;vi1.defaultPort=ru6;vi1.getUrlParseFn=au6;vi1.newTransport=su6;vi1.getResolveFn=eu6;vi1.protoLen=xi1;vi1.extractProtocolMessage=$c6;var nu6=fY(),pu6=Uw(),tu6=jm(),yY;function ou6($){yY=$}function ru6(){return yY!==void 0&&yY.defaultPort!==void 0?yY.defaultPort:pu6.DEFAULT_PORT}function au6(){return yY!==void 0&&yY.urlParseFn?yY.urlParseFn:void 0}function su6(){if(!yY||typeof yY.factory!=="function")throw Error("transport fn is not set");return yY.factory()}function eu6(){return yY!==void 0&&yY.dnsResolveFn?yY.dnsResolveFn:void 0}vi1.CR_LF=`\r
|
|
1290
1290
|
`;vi1.CR_LF_LEN=vi1.CR_LF.length;vi1.CRLF=tu6.DataBuffer.fromAscii(vi1.CR_LF);vi1.CR=new Uint8Array(vi1.CRLF)[0];vi1.LF=new Uint8Array(vi1.CRLF)[1];function xi1($){for(let Z=0;Z<$.length;Z++){let X=Z+1;if($.byteLength>X&&$[Z]===vi1.CR&&$[X]===vi1.LF)return X+1}return 0}function $c6($){let Z=xi1($);if(Z>0){let Q=new Uint8Array($).slice(0,Z);return nu6.TD.decode(Q)}return""}});var fl0=_((li1)=>{Object.defineProperty(li1,"__esModule",{value:!0});li1.ipV4=hi1;li1.isIP=Uc6;li1.parseIP=ui1;var Pm=4,cD=16,l50=48,gi1=57,bi1=65,Hc6=70,yi1=97,Nc6=102,vl0=16777215;function hi1($,Z,X,Q){let Y=new Uint8Array(cD);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 Uc6($){return ui1($)!==void 0}function ui1($){for(let Z=0;Z<$.length;Z++)switch($[Z]){case".":return ci1($);case":":return Fc6($)}return}function ci1($){let Z=new Uint8Array(Pm);for(let X=0;X<Pm;X++){if($.length===0)return;if(X>0){if($[0]!==".")return;$=$.substring(1)}let{n:Q,c:Y,ok:G}=wc6($);if(!G||Q>255)return;$=$.substring(Y),Z[X]=Q}return hi1(Z[0],Z[1],Z[2],Z[3])}function Fc6($){let Z=new Uint8Array(cD),X=-1;if($.length>=2&&$[0]===":"&&$[1]===":"){if(X=0,$=$.substring(2),$.length===0)return Z}let Q=0;while(Q<cD){let{n:Y,c:G,ok:J}=Bc6($);if(!J||Y>65535)return;if(G<$.length&&$[G]==="."){if(X<0&&Q!=cD-Pm)return;if(Q+Pm>cD)return;let K=ci1($);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+=Pm;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<cD){if(X<0)return;let Y=cD-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 wc6($){let Z=0,X=0;for(Z=0;Z<$.length&&l50<=$.charCodeAt(Z)&&$.charCodeAt(Z)<=gi1;Z++)if(X=X*10+($.charCodeAt(Z)-l50),X>=vl0)return{n:vl0,c:Z,ok:!1};if(Z===0)return{n:0,c:0,ok:!1};return{n:X,c:Z,ok:!0}}function Bc6($){let Z=0,X=0;for(X=0;X<$.length;X++){if(l50<=$.charCodeAt(X)&&$.charCodeAt(X)<=gi1)Z*=16,Z+=$.charCodeAt(X)-l50;else if(yi1<=$.charCodeAt(X)&&$.charCodeAt(X)<=Nc6)Z*=16,Z+=$.charCodeAt(X)-yi1+10;else if(bi1<=$.charCodeAt(X)&&$.charCodeAt(X)<=Hc6)Z*=16,Z+=$.charCodeAt(X)-bi1+10;else break;if(Z>=vl0)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 cl0=_((mi1)=>{Object.defineProperty(mi1,"__esModule",{value:!0});mi1.Servers=mi1.ServerImpl=void 0;mi1.isIPV4OrHostname=di1;mi1.hostPort=ul0;var bl0=uD(),yl0=JJ(),gl0=fl0(),Ec6=Uw(),zc6=bY();function di1($){if($.indexOf("[")!==-1||$.indexOf("::")!==-1)return!1;if($.indexOf(".")!==-1)return!0;if($.split(":").length<=2)return!0;return!1}function hl0($){return!di1($)}function jc6($){let X=$.toUpperCase().indexOf("::FFFF:");if(X!==-1&&$.indexOf(".")!==-1){let Q=$.substring(X+7);return Q=Q.replace("[",""),Q.replace("]","")}return $}function ul0($){if($=$.trim(),$.match(/^(.*:\/\/)(.*)/m))$=$.replace(/^(.*:\/\/)(.*)/gm,"$2");if($=jc6($),hl0($)&&$.indexOf("[")===-1)$=`[${$}]`;let Z=hl0($)?$.match(/(]:)(\d+)/):$.match(/(:)(\d+)/),X=Z&&Z.length===3&&Z[1]&&Z[2]?parseInt(Z[2]):Ec6.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 mf{src;listen;hostname;port;didConnect;reconnects;lastConnect;gossiped;tlsName;resolves;constructor($,Z=!1){this.src=$,this.tlsName="";let X=ul0($);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,gl0.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}://${hl0(Q)?"["+Q+"]":Q}`);G.port=`${this.port}`;let J=new mf(G.host,!1);J.tlsName=this.hostname,Z.push(J)}}if($.randomize)(0,yl0.shuffle)(Z);return this.resolves=Z,Z}}mi1.ServerImpl=mf;class d50{firstSelect;servers;currentServer;tlsName;randomize;constructor($={}){this.firstSelect=!0,this.servers=[],this.tlsName="",this.randomize=$.randomize||!1}setServers($){if(!Array.isArray($)||$.length===0)throw zc6.InvalidArgumentError.format("servers","cannot be empty");let Z=(0,bl0.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}=ul0(Y),J=X.get(G);if(J)J.gossiped=!1,Q.push(J);else Q.push(new mf(Y))}if(this.randomize)(0,yl0.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,gl0.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,bl0.getUrlParseFn)();$=X?X($):$;let Q=new mf($,Z);if((0,gl0.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 d50.freezeAll(this.servers)}snapshotForHandler(){let $=this.currentServer;if(!$)return this.snapshot();let Z=this.servers.indexOf($);if(Z<=0)return this.snapshot();return d50.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,bl0.getUrlParseFn)(),G=new Map;if($.connect_urls&&$.connect_urls.length>0)$.connect_urls.forEach((K)=>{K=Y?Y(K,Z):K;let W=new mf(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,yl0.shuffle)(W),this.servers=K?[K,...W]:W}return{added:X,deleted:Q}}}mi1.Servers=d50});var m50=_((ti1)=>{Object.defineProperty(ti1,"__esModule",{value:!0});ti1.QueuedIteratorImpl=void 0;var ll0=JJ(),ni1=bY();class pi1{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,ll0.deferred)(),this.yields=[],this.iterClosed=(0,ll0.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 ni1.InvalidOperationError("iterator cannot be used when a callback is registered");if(this.yielding)throw new ni1.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,ll0.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}}ti1.QueuedIteratorImpl=pi1});var dl0=_((si1)=>{Object.defineProperty(si1,"__esModule",{value:!0});si1.MuxSubscription=void 0;var Rc6=Uw(),ri1=bY();class ai1{baseInbox;reqs;constructor(){this.reqs=new Map}size(){return this.reqs.size}init($){return this.baseInbox=`${(0,Rc6.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 ri1.NoRespondersError(Q.requestSubject):null;Q.resolver($,Z)}}}}close(){let $=new ri1.RequestError("connection closed");this.reqs.forEach((Z)=>{Z.resolver($,{})})}}si1.MuxSubscription=ai1});var ml0=_((Zn1)=>{Object.defineProperty(Zn1,"__esModule",{value:!0});Zn1.Heartbeat=void 0;var Ic6=JJ();class $n1{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,Ic6.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})}}Zn1.Heartbeat=$n1});var pl0=_((Jn1)=>{Object.defineProperty(Jn1,"__esModule",{value:!0});Jn1.DenoBuffer=Jn1.MAX_SIZE=Jn1.AssertionError=void 0;Jn1.assert=Yn1;Jn1.concat=Gn1;Jn1.append=Mc6;Jn1.readAll=kc6;Jn1.writeAll=Sc6;var qc6=fY();class il0 extends Error{constructor($){super($);this.name="AssertionError"}}Jn1.AssertionError=il0;function Yn1($,Z="Assertion failed."){if(!$)throw new il0(Z)}var Qn1=32768;Jn1.MAX_SIZE=4294967294;function i50($,Z,X=0){let Q=Z.byteLength-X;if($.byteLength>Q)$=$.subarray(0,Q);return Z.set($,X),$.byteLength}function Gn1($,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 Mc6($,Z){return Gn1($,Uint8Array.of(Z))}class nl0{_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($){Yn1($<=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=i50(this._buf.subarray(this._off),$);return this._off+=Z,Z}writeByte($){return this.write(Uint8Array.of($))}writeString($){return this.write(qc6.TE.encode($))}write($){let Z=this._grow($.byteLength);return i50($,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)i50(this._buf.subarray(this._off),this._buf);else if(Q+$>Jn1.MAX_SIZE)throw Error("The buffer cannot be grown beyond the maximum size.");else{let Y=new Uint8Array(Math.min(2*Q+$,Jn1.MAX_SIZE));i50(this._buf.subarray(this._off),Y),this._buf=Y}return this._off=0,this._reslice(Math.min(Z+$,Jn1.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(Qn1);while(!0){let Q=this.capacity-this.length<Qn1,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}}}Jn1.DenoBuffer=nl0;function kc6($){let Z=new nl0;return Z.readFrom($),Z.bytes()}function Sc6($,Z){let X=0;while(X<Z.length)X+=$.write(Z.subarray(X))}});var rl0=_((Un1)=>{Object.defineProperty(Un1,"__esModule",{value:!0});Un1.cc=Un1.State=Un1.Parser=Un1.Kind=void 0;Un1.describe=bc6;var tl0=pl0(),ol0=fY();Un1.Kind={OK:0,ERR:1,MSG:2,INFO:3,PING:4,PONG:5};function bc6($){let Z,X="";switch($.kind){case Un1.Kind.MSG:Z="MSG";break;case Un1.Kind.OK:Z="OK";break;case Un1.Kind.ERR:Z="ERR",X=ol0.TD.decode($.data);break;case Un1.Kind.PING:Z="PING";break;case Un1.Kind.PONG:Z="PONG";break;case Un1.Kind.INFO:Z="INFO",X=ol0.TD.decode($.data)}return`${Z}: ${X}`}function Wn1(){let $={};return $.sid=-1,$.hdr=-1,$.size=-1,$}var Hn1=48,yc6=57,nf=67108864;class Nn1{dispatcher;state;as;drop;hdr;ma;argBuf;msgBuf;constructor($){this.dispatcher=$,this.state=Un1.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 Un1.State.OP_START:switch(X){case Un1.cc.M:case Un1.cc.m:this.state=Un1.State.OP_M,this.hdr=-1,this.ma=Wn1();break;case Un1.cc.H:case Un1.cc.h:this.state=Un1.State.OP_H,this.hdr=0,this.ma=Wn1();break;case Un1.cc.P:case Un1.cc.p:this.state=Un1.State.OP_P;break;case Un1.cc.PLUS:this.state=Un1.State.OP_PLUS;break;case Un1.cc.MINUS:this.state=Un1.State.OP_MINUS;break;case Un1.cc.I:case Un1.cc.i:this.state=Un1.State.OP_I;break;default:throw this.fail($.subarray(Z))}break;case Un1.State.OP_H:switch(X){case Un1.cc.M:case Un1.cc.m:this.state=Un1.State.OP_M;break;default:throw this.fail($.subarray(Z))}break;case Un1.State.OP_M:switch(X){case Un1.cc.S:case Un1.cc.s:this.state=Un1.State.OP_MS;break;default:throw this.fail($.subarray(Z))}break;case Un1.State.OP_MS:switch(X){case Un1.cc.G:case Un1.cc.g:this.state=Un1.State.OP_MSG;break;default:throw this.fail($.subarray(Z))}break;case Un1.State.OP_MSG:switch(X){case Un1.cc.SPACE:case Un1.cc.TAB:this.state=Un1.State.OP_MSG_SPC;break;default:throw this.fail($.subarray(Z))}break;case Un1.State.OP_MSG_SPC:switch(X){case Un1.cc.SPACE:case Un1.cc.TAB:continue;default:this.state=Un1.State.MSG_ARG,this.as=Z}break;case Un1.State.MSG_ARG:switch(X){case Un1.cc.CR:this.drop=1;break;case Un1.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=Un1.State.MSG_PAYLOAD,Z=this.as+this.ma.size-1;break}default:if(this.argBuf)this.argBuf.writeByte(X)}break;case Un1.State.MSG_PAYLOAD:if(this.msgBuf)if(this.msgBuf.length>=this.ma.size){let Q=this.msgBuf.bytes({copy:!1});this.dispatcher.push({kind:Un1.Kind.MSG,msg:this.ma,data:Q}),this.argBuf=void 0,this.msgBuf=void 0,this.state=Un1.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:Un1.Kind.MSG,msg:this.ma,data:$.subarray(this.as,Z)}),this.argBuf=void 0,this.msgBuf=void 0,this.state=Un1.State.MSG_END;break;case Un1.State.MSG_END:switch(X){case Un1.cc.NL:this.drop=0,this.as=Z+1,this.state=Un1.State.OP_START;break;default:continue}break;case Un1.State.OP_PLUS:switch(X){case Un1.cc.O:case Un1.cc.o:this.state=Un1.State.OP_PLUS_O;break;default:throw this.fail($.subarray(Z))}break;case Un1.State.OP_PLUS_O:switch(X){case Un1.cc.K:case Un1.cc.k:this.state=Un1.State.OP_PLUS_OK;break;default:throw this.fail($.subarray(Z))}break;case Un1.State.OP_PLUS_OK:switch(X){case Un1.cc.NL:this.dispatcher.push({kind:Un1.Kind.OK}),this.drop=0,this.state=Un1.State.OP_START;break}break;case Un1.State.OP_MINUS:switch(X){case Un1.cc.E:case Un1.cc.e:this.state=Un1.State.OP_MINUS_E;break;default:throw this.fail($.subarray(Z))}break;case Un1.State.OP_MINUS_E:switch(X){case Un1.cc.R:case Un1.cc.r:this.state=Un1.State.OP_MINUS_ER;break;default:throw this.fail($.subarray(Z))}break;case Un1.State.OP_MINUS_ER:switch(X){case Un1.cc.R:case Un1.cc.r:this.state=Un1.State.OP_MINUS_ERR;break;default:throw this.fail($.subarray(Z))}break;case Un1.State.OP_MINUS_ERR:switch(X){case Un1.cc.SPACE:case Un1.cc.TAB:this.state=Un1.State.OP_MINUS_ERR_SPC;break;default:throw this.fail($.subarray(Z))}break;case Un1.State.OP_MINUS_ERR_SPC:switch(X){case Un1.cc.SPACE:case Un1.cc.TAB:continue;default:this.state=Un1.State.MINUS_ERR_ARG,this.as=Z}break;case Un1.State.MINUS_ERR_ARG:switch(X){case Un1.cc.CR:this.drop=1;break;case Un1.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:Un1.Kind.ERR,data:Q}),this.drop=0,this.as=Z+1,this.state=Un1.State.OP_START;break}default:if(this.argBuf)this.argBuf.write(Uint8Array.of(X))}break;case Un1.State.OP_P:switch(X){case Un1.cc.I:case Un1.cc.i:this.state=Un1.State.OP_PI;break;case Un1.cc.O:case Un1.cc.o:this.state=Un1.State.OP_PO;break;default:throw this.fail($.subarray(Z))}break;case Un1.State.OP_PO:switch(X){case Un1.cc.N:case Un1.cc.n:this.state=Un1.State.OP_PON;break;default:throw this.fail($.subarray(Z))}break;case Un1.State.OP_PON:switch(X){case Un1.cc.G:case Un1.cc.g:this.state=Un1.State.OP_PONG;break;default:throw this.fail($.subarray(Z))}break;case Un1.State.OP_PONG:switch(X){case Un1.cc.NL:this.dispatcher.push({kind:Un1.Kind.PONG}),this.drop=0,this.state=Un1.State.OP_START;break}break;case Un1.State.OP_PI:switch(X){case Un1.cc.N:case Un1.cc.n:this.state=Un1.State.OP_PIN;break;default:throw this.fail($.subarray(Z))}break;case Un1.State.OP_PIN:switch(X){case Un1.cc.G:case Un1.cc.g:this.state=Un1.State.OP_PING;break;default:throw this.fail($.subarray(Z))}break;case Un1.State.OP_PING:switch(X){case Un1.cc.NL:this.dispatcher.push({kind:Un1.Kind.PING}),this.drop=0,this.state=Un1.State.OP_START;break}break;case Un1.State.OP_I:switch(X){case Un1.cc.N:case Un1.cc.n:this.state=Un1.State.OP_IN;break;default:throw this.fail($.subarray(Z))}break;case Un1.State.OP_IN:switch(X){case Un1.cc.F:case Un1.cc.f:this.state=Un1.State.OP_INF;break;default:throw this.fail($.subarray(Z))}break;case Un1.State.OP_INF:switch(X){case Un1.cc.O:case Un1.cc.o:this.state=Un1.State.OP_INFO;break;default:throw this.fail($.subarray(Z))}break;case Un1.State.OP_INFO:switch(X){case Un1.cc.SPACE:case Un1.cc.TAB:this.state=Un1.State.OP_INFO_SPC;break;default:throw this.fail($.subarray(Z))}break;case Un1.State.OP_INFO_SPC:switch(X){case Un1.cc.SPACE:case Un1.cc.TAB:continue;default:this.state=Un1.State.INFO_ARG,this.as=Z}break;case Un1.State.INFO_ARG:switch(X){case Un1.cc.CR:this.drop=1;break;case Un1.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:Un1.Kind.INFO,data:Q}),this.drop=0,this.as=Z+1,this.state=Un1.State.OP_START;break}default:if(this.argBuf)this.argBuf.writeByte(X)}break;default:throw this.fail($.subarray(Z))}}if((this.state===Un1.State.MSG_ARG||this.state===Un1.State.MINUS_ERR_ARG||this.state===Un1.State.INFO_ARG)&&!this.argBuf)this.argBuf=new tl0.DenoBuffer($.subarray(this.as,Z-this.drop));if(this.state===Un1.State.MSG_PAYLOAD&&!this.msgBuf){if(!this.argBuf)this.cloneMsgArg();this.msgBuf=new tl0.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 tl0.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 Un1.cc.SPACE:case Un1.cc.TAB:case Un1.cc.CR:case Un1.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],nf);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],nf);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}: ${ol0.TD.decode($)}`)}processHeaderMsgArgs($){let Z=[],X=-1;for(let Q=0;Q<$.length;Q++)switch($[Q]){case Un1.cc.SPACE:case Un1.cc.TAB:case Un1.cc.CR:case Un1.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],nf),this.ma.size=this.protoParseInt(Z[3],nf);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],nf),this.ma.size=this.protoParseInt(Z[4],nf);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]<Hn1||$[Q]>yc6)return-1;X=X*10+($[Q]-Hn1)}return Z!==void 0&&X>Z?-1:X}}Un1.Parser=Nn1;Un1.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};Un1.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 t50=_((wn1)=>{Object.defineProperty(wn1,"__esModule",{value:!0});wn1.MsgHdrsImpl=void 0;wn1.canonicalMIMEHeaderKey=sl0;wn1.headers=uc6;var Fn1=fY(),KJ=Uw(),p50=bY();function sl0($){let N=!0,U=Array($.length);for(let F=0;F<$.length;F++){let w=$.charCodeAt(F);if(w===58||w<33||w>126)throw p50.InvalidArgumentError.format("header",`'${$[F]}' is not a valid character in a header name`);if(N&&97<=w&&w<=122)w-=32;else if(!N&&65<=w&&w<=90)w+=32;U[F]=w,N=w==45}return String.fromCharCode(...U)}function uc6($=0,Z=""){if($===0&&Z!=="")throw p50.InvalidArgumentError.format("code","is required");else if($>0&&Z==="")throw p50.InvalidArgumentError.format("description","is required");return new pf($,Z)}var al0="NATS/1.0";class pf{_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 pf,Q=Fn1.TD.decode($).split(`\r
|
|
1291
1291
|
`),Y=Q[0];if(Y!==al0){let G=Y.replace(al0,"").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 $=al0;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
|
|
1292
1292
|
${Z}: ${X[Q]}`;return`${$}\r
|
|
@@ -1923,7 +1923,7 @@ You are the Usage Manager. You analyze how this workspace is actually used \u201
|
|
|
1923
1923
|
b. MONITORING_LOGS_LIST with isError true (plus connectionId/toolName/virtualMcpId filters) \u2192 failing calls.
|
|
1924
1924
|
c. MONITORING_LOG_GET on specific log ids for full input/output when the error message isn't enough.
|
|
1925
1925
|
d. Report the failing tool/connection, error pattern, and suggest the fix or owner.
|
|
1926
|
-
</workflows>`,iZ8={id:"studio-usage-manager",title:"Usage Manager",icon:"icon://BarChart10?color=blue",description:"Analyze usage, costs, and clean up idle agents and connections",selectedTools:["MONITORING_STATS","MONITORING_LOGS_LIST","MONITORING_LOG_GET","MONITORING_THREAD_USAGE","COLLECTION_VIRTUAL_MCP_LIST","COLLECTION_VIRTUAL_MCP_GET","COLLECTION_VIRTUAL_MCP_DELETE","VIRTUAL_MCP_LAST_USED_LIST","COLLECTION_CONNECTIONS_LIST","COLLECTION_CONNECTIONS_GET","COLLECTION_CONNECTIONS_DELETE","ORGANIZATION_MEMBER_LIST"],selectedConnections:null,selectedPrompts:[],instructions:Q74,getId:o7.USAGE_MANAGER}});function Qo0($){return VE.find((Z)=>$.startsWith(`${Z.id}_`))??null}async function Y74($,Z){if("resolveRuntime"in $)return $.resolveRuntime(Z);return{instructions:$.instructions,selectedTools:$.selectedTools}}async function TX0({virtualMcp:$,agentId:Z=$.id,organizationId:X,ctx:Q}){let Y=Qo0(Z);if(!Y)return $;let G=await Y74(Y,{orgId:X,ctx:Q}),J=G.selectedTools?[...G.selectedTools]:null;return{...$,metadata:{...$.metadata??{},instructions:G.instructions},connections:$.connections.map((K)=>({...K,selected_tools:J}))}}async function RX0($,Z){if(!("checklist"in $))return[];return Promise.all($.checklist.map(async(X)=>({label:X.label,activeForm:X.activeForm,action:X.action,completed:await X.isCompleted(Z),alwaysSuggest:X.alwaysSuggest})))}async function pZ8($,Z,X){let Q={self:t4.SELF($),registry:t4.REGISTRY($),"community-registry":t4.COMMUNITY_REGISTRY($)};await Promise.all(VE.map(async(Y)=>{let G=Y.getId($),J=await X.findById(G,$),W=(Y.selectedConnections??["self"]).map((H)=>Q[H]);if(J){await X.update(G,Z,{metadata:{...J.metadata??{},instructions:Y.instructions},connections:W.map((H)=>{let N=J.connections.find((U)=>U.connection_id===H);return{connection_id:H,selected_tools:Y.selectedTools?[...Y.selectedTools]:null,selected_resources:N?.selected_resources??null,selected_prompts:N?.selected_prompts??null}})});return}await X.create($,Z,{title:Y.title,description:Y.description,icon:Y.icon,status:"active",pinned:!1,metadata:{instructions:Y.instructions},connections:W.map((H)=>({connection_id:H,selected_tools:Y.selectedTools?[...Y.selectedTools]:null,selected_resources:null,selected_prompts:Y.selectedPrompts?[...Y.selectedPrompts]:null}))},{id:G})}))}var VE;var Fy=O(()=>{R6();SZ8();CZ8();xZ8();gZ8();uZ8();lZ8();mZ8();nZ8();VE=[yZ8,kZ8,_Z8,hZ8,VZ8,cZ8,dZ8,iZ8]});import{DBOS as IX0}from"@dbos-inc/dbos-sdk";async function G74($){let Z=H6(),X=new Uy(Z.db);await pZ8($.orgId,$.createdBy,X)}async function J74($){let Z=H6(),X=new Uy(Z.db);for(let Q of VE){let Y=Q.getId($.orgId),G=await X.findById(Y,$.orgId);if(!G)continue;let J=Q.selectedPrompts?[...Q.selectedPrompts]:null;if(G.connections.every((W)=>{let H=W.selected_prompts;if(J===null)return H===null;if(H===null)return!1;if(H.length!==J.length)return!1;return H.every((N,U)=>N===J[U])}))continue;await X.update(Y,$.createdBy,{connections:G.connections.map((W)=>({connection_id:W.connection_id,selected_tools:W.selected_tools,selected_resources:W.selected_resources,selected_prompts:J}))})}}async function K74($){await IX0.runStep(()=>G74($),{name:"installStudioPack"}),await IX0.runStep(()=>J74($),{name:"backfillSelectedPrompts"})}async function Yo0($){await IX0.startWorkflow(W74,{workflowID:`install-studio-pack:${H74}:${$.orgId}`})($)}async function tZ8(){let Z=await H6().db.selectFrom("member").select(["organizationId","userId"]).orderBy("createdAt","asc").execute(),X=new Map;for(let Q of Z)if(!X.has(Q.organizationId))X.set(Q.organizationId,Q.userId);await Promise.all(Array.from(X).map(async([Q,Y])=>{try{await Yo0({orgId:Q,createdBy:Y})}catch(G){console.error("[studio-pack-backfill] enqueue failed",{orgId:Q},G)}}))}var W74,H74="v5";var qX0=O(()=>{m7();Xo0();Fy();W74=IX0.registerWorkflow(K74,{name:"installStudioPackWorkflow"})});import{jwtVerify as N74,SignJWT as oZ8}from"jose";import{randomBytes as U74}from"crypto";function rZ8(){if(jn)return jn;let $=Q1(),Z=$.studioJwtSecret??$.betterAuthSecret;if(Z)jn=new TextEncoder().encode(Z);else console.warn("STUDIO_JWT_SECRET not set - generating random secret (not persistent)"),jn=new Uint8Array(U74(32));return jn}async function aZ8($,Z="5m"){let X=rZ8();return await new oZ8($).setProtectedHeader({alg:"HS256",typ:"JWT"}).setIssuedAt().setExpirationTime(Z).sign(X)}async function Go0($){try{let Z=rZ8(),{payload:X}=await N74($,Z);return X}catch{return}}async function zW($,Z,X=3600){let Q=Q1(),Y=Q.studioJwtSecret??Q.betterAuthSecret;if(!Y)throw Error("A deterministic JWT secret is required to mint gateway JWTs \u2014 set STUDIO_JWT_SECRET or BETTER_AUTH_SECRET");let G=new TextEncoder().encode(Y);return await new oZ8({iss:"mesh",sub:$,...Z&&{email:Z}}).setProtectedHeader({alg:"HS256",typ:"JWT"}).setIssuedAt().setExpirationTime(Math.floor(Date.now()/1000)+X).sign(G)}var jn=null;var rw=O(()=>{y8()});class Pn{constructor(){this._messageQueue=[]}static createLinkedPair(){let $=new Pn,Z=new Pn;return $._otherTransport=Z,Z._otherTransport=$,[$,Z]}async start(){while(this._messageQueue.length>0){let $=this._messageQueue.shift();this.onmessage?.($.message,$.extra)}}async close(){let $=this._otherTransport;this._otherTransport=void 0,await $?.close(),this.onclose?.()}async send($,Z){if(!this._otherTransport)throw Error("Not connected");if(this._otherTransport.onmessage)this._otherTransport.onmessage($,{authInfo:Z?.authInfo});else this._otherTransport._messageQueue.push({message:$,extra:{authInfo:Z?.authInfo}})}}import{z as W4}from"zod";var MX0,sZ8,eZ8,$78,Z78,X78,Q78,Y78,G78,J78;var wy=O(()=>{MX0=W4.record(W4.string(),W4.array(W4.string())),sZ8=W4.object({id:W4.string().describe("Unique identifier for the API key"),name:W4.string().describe("Human-readable name for the API key"),userId:W4.string().describe("ID of the user who owns this API key"),permissions:MX0.describe('Permissions granted to this API key. Format: { resource: [actions] } where resource is "self" for management tools or "conn_<UUID>" for connection-specific tools. Example: { "self": ["API_KEY_CREATE"], "conn_abc123": ["SEND_MESSAGE"] }'),expiresAt:W4.string().datetime().nullable().optional().describe("Expiration date of the API key (ISO 8601)"),createdAt:W4.string().datetime().describe("When the API key was created (ISO 8601)")}),eZ8=W4.object({name:W4.string().min(1).max(64).describe("Human-readable name for the API key"),permissions:MX0.describe(`Permissions to grant (REQUIRED \u2014 there is no implicit default). Format: { resource: [actions] }. Resource is "self" for management tools or "conn_<UUID>" for connection-specific tools. Actions are tool names (e.g., ["ORGANIZATION_GET"]) or ["*"] for all. Example: { "self": ["ORGANIZATION_GET", "COLLECTION_CONNECTIONS_LIST"] }. The key is authorized solely by this allowlist; the creator's role does not widen it.`),expiresIn:W4.number().positive().optional().describe("Expiration time in seconds. If not provided, key never expires."),metadata:W4.record(W4.string(),W4.unknown()).optional().describe("Additional metadata to store with the API key")}),$78=W4.object({id:W4.string().describe("Unique identifier for the API key"),name:W4.string().describe("Human-readable name for the API key"),key:W4.string().describe("The actual API key value. STORE THIS SECURELY - it will not be shown again!"),permissions:MX0.describe('Permissions granted to this API key. Format: { resource: [actions] } where resource is "self" for management tools or "conn_<UUID>" for connection-specific tools'),expiresAt:W4.string().datetime().nullable().optional().describe("Expiration date of the API key (ISO 8601)"),createdAt:W4.string().datetime().describe("When the API key was created (ISO 8601)")}),Z78=W4.object({}),X78=W4.object({items:W4.array(sZ8).describe("List of API keys (without key values)")}),Q78=W4.object({keyId:W4.string().describe("ID of the API key to update"),name:W4.string().min(1).max(64).optional().describe("New name for the API key"),permissions:MX0.optional().describe('New permissions. Format: { resource: [actions] } where resource is "self" for management tools or "conn_<UUID>" for connection-specific tools. Actions are tool names or "*" for all. Example: { "self": ["API_KEY_CREATE"] }. Replaces existing permissions.'),metadata:W4.record(W4.string(),W4.unknown()).optional().describe("New metadata. Replaces existing metadata.")}),Y78=W4.object({item:sZ8.describe("The updated API key (without key value)")}),G78=W4.object({keyId:W4.string().describe("ID of the API key to delete")}),J78=W4.object({success:W4.boolean().describe("Whether the deletion was successful"),keyId:W4.string().describe("ID of the deleted API key")})});var Jo0;var K78=O(()=>{V$();p0();wy();Jo0=o({name:"API_KEY_CREATE",description:"Create an API key with scoped permissions. The key value is returned only once \u2014 store it immediately.",annotations:{title:"Create API Key",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!1},inputSchema:eZ8,outputSchema:$78,handler:async($,Z)=>{F0(Z),await Z.access.check();let X=await Z.boundAuth.apiKey.create({name:$.name,permissions:$.permissions,expiresIn:$.expiresIn,metadata:{...$.metadata,organization:Z.organization}}),Q=X.expiresAt?X.expiresAt instanceof Date?X.expiresAt.toISOString():X.expiresAt:null,Y=X.createdAt instanceof Date?X.createdAt.toISOString():X.createdAt,G=P1(Z);if(G)i1.capture({distinctId:G,event:"api_key_created",...Z.organization?.id?{groups:{organization:Z.organization.id}}:{},properties:{key_id:X.id,key_name:X.name??$.name,organization_id:Z.organization?.id,has_expiry:!!Q}});return{id:X.id,name:X.name??$.name,key:X.key,permissions:X.permissions??{},expiresAt:Q,createdAt:Y}}})});var Ko0;var W78=O(()=>{V$();p0();wy();Ko0=o({name:"API_KEY_DELETE",description:"Delete and instantly revoke an API key. Cannot be undone.",annotations:{title:"Delete API Key",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:G78,outputSchema:J78,handler:async($,Z)=>{F0(Z),await Z.access.check();let X=P1(Z);if(!X)throw Error("User ID required to delete API key");let Y=(await Z.boundAuth.apiKey.list())?.find((W)=>W.id===$.keyId);if(!Y)throw Error("API key not found");let J=Y.metadata?.organization?.id,K=Z.organization?.id;if(J!==K)throw Error("Cannot delete API key from another organization");if(await Z.boundAuth.apiKey.delete($.keyId),K)i1.capture({distinctId:X,event:"api_key_deleted",groups:{organization:K},properties:{key_id:$.keyId,organization_id:K}});return{success:!0,keyId:$.keyId}}})});var Wo0;var H78=O(()=>{p0();wy();Wo0=o({name:"API_KEY_LIST",description:"List API keys for the current user in the current organization. Returns metadata only \u2014 key values are never shown after creation.",annotations:{title:"List API Keys",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:Z78,outputSchema:X78,handler:async($,Z)=>{F0(Z),await Z.access.check();let X=await Z.boundAuth.apiKey.list(),Q=Z.organization?.id;return{items:(X??[]).filter((G)=>{return G.metadata?.organization?.id===Q}).map((G)=>({id:G.id,name:G.name??"Unnamed Key",userId:G.userId,permissions:G.permissions??{},expiresAt:G.expiresAt?G.expiresAt instanceof Date?G.expiresAt.toISOString():G.expiresAt:null,createdAt:G.createdAt instanceof Date?G.createdAt.toISOString():G.createdAt}))}}})});var Ho0;var N78=O(()=>{p0();wy();Ho0=o({name:"API_KEY_UPDATE",description:"Update an API key's name, permissions, or metadata. The key value cannot be changed or retrieved.",annotations:{title:"Update API Key",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:Q78,outputSchema:Y78,handler:async($,Z)=>{if(F0(Z),await Z.access.check(),!P1(Z))throw Error("User ID required to update API key");let Y=(await Z.boundAuth.apiKey.list())?.find((H)=>H.id===$.keyId);if(!Y)throw Error(`API key not found: ${$.keyId}`);let J=Y.metadata?.organization?.id,K=Z.organization?.id;if(J!==K)throw Error("Cannot update API key from another organization");let W=await Z.boundAuth.apiKey.update({keyId:$.keyId,name:$.name,permissions:$.permissions,metadata:{...$.metadata,organization:Z.organization}});if(!W)throw Error(`Failed to update API key: ${$.keyId}`);return{item:{id:W.id,name:W.name??$.name??"Unnamed Key",userId:W.userId,permissions:W.permissions??{},expiresAt:W.expiresAt?W.expiresAt instanceof Date?W.expiresAt.toISOString():W.expiresAt:null,createdAt:W.createdAt instanceof Date?W.createdAt.toISOString():W.createdAt}}}})});var U78=O(()=>{K78();W78();H78();N78();wy()});function aw($){let Z=$.trim();if(!Z)return{ok:!1,error:"Enter a website URL."};let X=w74.test(Z),Q=B74.test(Z),Y=O74.test(Z);if(X&&!Q&&!Y)return{ok:!1,error:"Use an HTTP or HTTPS website URL."};let G=Q?Z:`https://${Z}`,J;try{J=new URL(G)}catch{return{ok:!1,error:"Enter a valid website URL."}}if(J.protocol!=="http:"&&J.protocol!=="https:")return{ok:!1,error:"Use an HTTP or HTTPS website URL."};let K=J.hostname.split(".");if(K.length<2||K.some((W)=>!W||!L74.test(W)))return{ok:!1,error:"Enter a valid website URL."};return J.protocol="https:",{ok:!0,value:J.origin}}var w74,B74,O74,L74;var An=O(()=>{w74=/^[a-zA-Z][a-zA-Z\d+.-]*:/,B74=/^[a-zA-Z][a-zA-Z\d+.-]*:\/\//,O74=/^[^\s/:?#]+\.[^\s/:?#]+:\d+(?:[/?#]|$)/,L74=/^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$/i});import{z as oX}from"zod";function jW($){if($.baseUrl)return $.baseUrl.replace(/\/+$/,"");return(($.settings??Q1()).reportsInternalApiUrl??D74).replace(/\/+$/,"")}function w78($={}){return`${jW($)}/api/v2/mcp`}function CE($){let Z=$.apiKey??($.settings??Q1()).reportsInternalApiKey;if(!Z)throw Error("REPORTS_INTERNAL_API_KEY (or the legacy COMMERCE_DISCOVERY_INTERNAL_API_KEY) is required to set up reports.");return Z}function kX0($){return new URL($).hostname}function z74($){return $==="ownership_unverified"||$==="already_claimed_by_other_org"}function j74($,Z={}){switch($){case"ownership_unverified":{let X=Z.email?`O e-mail ${Z.email}`:"Este e-mail",Q=Z.domain?` ${Z.domain}`:" este site";return`${X} n\xE3o tem permiss\xE3o para reivindicar${Q}. Use um e-mail do dom\xEDnio do site ou pe\xE7a ao suporte para autorizar seu dom\xEDnio.`}case"already_claimed_by_other_org":return"Este site j\xE1 pertence a outra organiza\xE7\xE3o. Fale com o suporte para transferir o acesso.";case"unknown":return"N\xE3o foi poss\xEDvel configurar o Commerce Discovery. Tente novamente ou fale com o suporte.";default:return $}}async function P74($){let Z=await $.text().catch(()=>"");if(!Z)return"unknown";try{let X=JSON.parse(Z);return z74(X.error)?X.error:"unknown"}catch{return"unknown"}}async function No0($){let Z=`Commerce Discovery auth failed with status ${$.status}.`,X=await $.text().catch(()=>"");if(!X)return Z;try{let Q=JSON.parse(X),Y=typeof Q.error==="string"?Q.error:typeof Q.message==="string"?Q.message:null;return Y?`Commerce Discovery auth failed: ${Y}.`:Z}catch{return Z}}async function O78($,Z={}){let X=jW(Z),Q=CE(Z),Y=Z.fetchImpl??fetch,G=kX0($.siteUrl),J=`${X}/api/v2/internal/diagnostics/${encodeURIComponent(G)}/upgrade`,K=await Y(J,{method:"POST",headers:{Authorization:`Bearer ${Q}`,"Content-Type":"application/json"},body:JSON.stringify({org_id:$.orgId,...$.orgName?{name:$.orgName}:{},...$.email?{email:$.email}:{},...$.reportUrl?{report_url:$.reportUrl}:{}})});if(!K.ok){let H=await P74(K);throw new B78(H,{email:$.email,domain:G})}let W=E74.safeParse(await K.json());if(!W.success)throw Error("Commerce Discovery auth response did not include a token.");return{authorizationToken:W.data.token}}async function L78($,Z={}){let X=jW(Z),Q=CE(Z),Y=Z.fetchImpl??fetch,G=kX0($.siteUrl),J=`${X}/api/v2/internal/diagnostics/${encodeURIComponent(G)}/bindings`,K=await Y(J,{method:"POST",headers:{Authorization:`Bearer ${Q}`,"Content-Type":"application/json"},body:JSON.stringify({org_id:$.orgId,provider:$.provider,resource_id:$.resourceId})});if(K.status===409)return{ok:!1,reason:"resource_already_bound",detail:"Este recurso j\xE1 est\xE1 vinculado a outra loja. Se ele \xE9 seu, fale com o suporte para revis\xE3o manual."};if(K.status===422){let H=F78.safeParse(await K.json());return{ok:!1,reason:H.success?H.data.reason??"verification_failed":"verification_failed",detail:(H.success?H.data.detail:void 0)??"N\xE3o foi poss\xEDvel verificar o acesso a este recurso."}}if(!K.ok)throw Error(await No0(K));let W=F78.safeParse(await K.json());if(!W.success||!W.data.binding)throw Error("Commerce Discovery bind response did not include a binding.");return{ok:!0,resourceId:W.data.binding.resource_id,evidence:W.data.binding.evidence}}async function D78($,Z={}){let X=jW(Z),Q=CE(Z),Y=Z.fetchImpl??fetch,G=kX0($.siteUrl),J=`${X}/api/v2/internal/diagnostics/${encodeURIComponent(G)}/run`,K=await Y(J,{method:"POST",headers:{Authorization:`Bearer ${Q}`,"Content-Type":"application/json"},body:JSON.stringify({org_id:$.orgId,...$.githubRepo?{github_repo:$.githubRepo}:{}})});if(K.status===409)return{triggered:!1,reason:"not_upgraded"};if(!K.ok)throw Error(await No0(K));return{triggered:!0}}async function E78($,Z={}){let X=jW(Z),Q=CE(Z),Y=Z.fetchImpl??fetch,G=kX0($.siteUrl),J=`${X}/api/v2/internal/diagnostics/${encodeURIComponent(G)}/connections/status?org_id=${encodeURIComponent($.orgId)}`,K=await Y(J,{method:"GET",headers:{Authorization:`Bearer ${Q}`}});if(K.status===404||K.status===409)return{};if(!K.ok)throw Error(await No0(K));let W=A74.safeParse(await K.json());return W.success?W.data.providers:{}}var D74,E74,F78,B78,A74;var _E=O(()=>{R6();y8();D74=new URL(oo1).origin,E74=oX.object({token:oX.string().min(1)}),F78=oX.object({binding:oX.object({resource_id:oX.string(),evidence:oX.string()}).optional(),reason:oX.string().optional(),detail:oX.string().optional()});B78=class B78 extends Error{code;constructor($,Z={}){super(j74($,Z));this.name="CommerceDiscoveryClaimError",this.code=$}};A74=oX.object({providers:oX.record(oX.string(),oX.object({connected:oX.boolean(),via:oX.enum(["oauth","sa"]).nullable(),resource:oX.string().nullable()}))})});import{z as nY}from"zod";var T74,R74,Uo0;var z78=O(()=>{An();p0();_E();T74=nY.object({siteUrl:nY.string().min(1).describe("Website URL of the store being bound."),provider:nY.enum(["ga4","gsc"]).describe("Which Google source to bind: ga4 (Analytics) or gsc (Search Console)."),resourceId:nY.string().min(1).describe("The resource id the client typed: GA4 numeric property id, or GSC site (sc-domain:example.com or https://example.com/).")}),R74=nY.discriminatedUnion("ok",[nY.object({ok:nY.literal(!0),resourceId:nY.string(),evidence:nY.string()}),nY.object({ok:nY.literal(!1),reason:nY.string(),detail:nY.string()})]),Uo0=o({name:"COMMERCE_DISCOVERY_BIND",description:"Bind a GA4 property or GSC site to the org's store via the shared service account (consent-free lane). The client grants deco-reader@\u2026 access to the resource and provides its id; Commerce Discovery verifies the resource belongs to this domain before persisting. Returns ok:false with an actionable pt-BR detail when verification fails or the resource is already bound elsewhere.",annotations:{title:"Bind Commerce Discovery Data Source",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},inputSchema:T74,outputSchema:R74,handler:async($,Z)=>{F0(Z);let X=J0(Z);await Z.access.check();let Q=aw($.siteUrl);if(!Q.ok)throw Error(Q.error);return L78({siteUrl:Q.value,orgId:X.id,provider:$.provider,resourceId:$.resourceId.trim()})}})});import{z as pN}from"zod";var I74,q74,Fo0;var j78=O(()=>{An();p0();_E();I74=pN.object({siteUrl:pN.string().min(1).describe("Website URL of the store to inspect.")}),q74=pN.object({providers:pN.record(pN.string(),pN.object({connected:pN.boolean(),via:pN.enum(["oauth","sa"]).nullable(),resource:pN.string().nullable()}))}),Fo0=o({name:"COMMERCE_DISCOVERY_CONNECTION_STATUS",description:"Read per-provider connection status (ga4/gsc/vtex) for the org's store \u2014 { connected, via: oauth|sa, resource }. The single source of truth for whether a data source is connected, unifying the OAuth (Studio vault) and shared-SA binding lanes. Read-only.",annotations:{title:"Commerce Discovery Connection Status",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},inputSchema:I74,outputSchema:q74,handler:async($,Z)=>{F0(Z);let X=J0(Z);await Z.access.check();let Q=aw($.siteUrl);if(!Q.ok)throw Error(Q.error);return{providers:await E78({siteUrl:Q.value,orgId:X.id})}}})});import{z as Tn}from"zod";var M74,k74,wo0;var P78=O(()=>{R6();An();p0();_E();M74=Tn.object({siteUrl:Tn.string().min(1).describe("Website URL to run the diagnostic for.")}),k74=Tn.object({triggered:Tn.boolean(),reason:Tn.string().optional()}),wo0=o({name:"COMMERCE_DISCOVERY_RUN",description:"Trigger the Commerce Discovery diagnostic run for the current organization's store. Call once the data sources (GA4/GSC/VTEX) are connected \u2014 this run resolves credentials and produces the enriched report.",annotations:{title:"Run Commerce Discovery",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},inputSchema:M74,outputSchema:k74,handler:async($,Z)=>{F0(Z);let X=J0(Z);await Z.access.check();let Q=aw($.siteUrl);if(!Q.ok)throw Error(Q.error);let Y=t4.COMMERCE_DISCOVERY(X.id),J=(await Z.storage.connections.findById(Y,X.id))?.configuration_state,K=J&&typeof J==="object"&&typeof J.github_repo==="string"&&J.github_repo.length>0?J.github_repo:void 0;return D78({siteUrl:Q.value,orgId:X.id,githubRepo:K})}})});var sw=O(()=>{a90()});import{z as PW}from"zod";async function _74($,Z,X,Q){let Y=await $.storage.connections.findById(Z,X);if(Y)return Y;throw Q}async function x74($,Z,X,Q){let Y=await $.storage.virtualMcps.findById(Z,X);if(Y)return Y;throw Q}var Bo0,S74=3600000,V74,C74,Oo0;var A78=O(()=>{R6();An();p0();UW();sw();_E();Bo0=s90,V74=PW.object({siteUrl:PW.string().min(1).describe("Website URL to configure.")}),C74=PW.object({connection:n7,virtualMcp:p7,reportApp:PW.object({connectionId:PW.string(),virtualMcpId:PW.string(),toolName:PW.literal(Bo0)}),created:PW.object({connection:PW.boolean(),virtualMcp:PW.boolean()})});Oo0=o({name:"COMMERCE_DISCOVERY_SETUP",description:"Create or return the Commerce Discovery connection and virtual MCP for the current organization.",annotations:{title:"Set Up Commerce Discovery",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:V74,outputSchema:C74,handler:async($,Z)=>{F0(Z);let X=J0(Z);await Z.access.check("COLLECTION_CONNECTIONS_CREATE");let Q=P1(Z);if(!Q)throw Error("User ID required to set up Commerce Discovery");let Y=aw($.siteUrl);if(!Y.ok)throw Error(Y.error);let G=t4.COMMERCE_DISCOVERY(X.id),J=$Z0(X.id),K=new URLSearchParams({virtualmcpid:J,main:`app:${G}:${Bo0}`}),W={email:Z.auth.user?.email,reportUrl:`${Z.baseUrl}/${encodeURIComponent(X.slug??X.id)}/${crypto.randomUUID()}?${K.toString()}`},H=await Z.storage.connections.findById(G,X.id),N={connection:!1,virtualMcp:!1},U=await O78({siteUrl:Y.value,orgId:X.id,orgName:X.name,...W}),F=w78();if(H)console.log("[commerce-discovery] syncing connection to claimed site",{orgId:X.id,siteUrl:Y.value,connectionId:G}),H=await Z.storage.connections.update(H.id,{connection_url:F,connection_token:U.authorizationToken,metadata:{...H.metadata??{},siteUrl:Y.value}});else{console.log("[commerce-discovery] creating connection",{orgId:X.id,siteUrl:Y.value,connectionId:G});try{let D=Wr1(X.id,U.authorizationToken,F);H=await Z.storage.connections.create({...D,metadata:{...D.metadata??{},siteUrl:Y.value},organization_id:X.id,created_by:Q}),N.connection=!0}catch(D){H=await _74(Z,G,X.id,D)}}let w=await Z.storage.virtualMcps.findById(J,X.id);if(!w){console.log("[commerce-discovery] creating virtual MCP",{orgId:X.id,siteUrl:Y.value,connectionId:H.id,virtualMcpId:J});try{w=await Z.storage.virtualMcps.create(X.id,Q,Hr1(X.id,H.id),{id:J}),N.virtualMcp=!0}catch(D){w=await x74(Z,J,X.id,D)}}if(!w.pinned)w=await Z.storage.virtualMcps.update(w.id,Q,{pinned:!0});let B=await Z.db.selectFrom("organization").select(["createdAt"]).where("id","=",X.id).executeTakeFirst();if((B?Date.now()-new Date(B.createdAt).getTime():Number.POSITIVE_INFINITY)<S74){if((await Z.storage.organizationSettings.get(X.id))?.flags?.reports_only==null)await Z.storage.organizationSettings.upsert(X.id,{flags:{reports_only:!0}})}return{connection:H,virtualMcp:w,reportApp:{connectionId:H.id,virtualMcpId:w.id,toolName:Bo0},created:N}}})});var T78=O(()=>{z78();j78();P78();A78()});var Lo0=_((R78)=>{Object.defineProperty(R78,"__esModule",{value:!0});R78.kvPrefix=R78.KvWatchInclude=void 0;R78.KvWatchInclude={LastValue:"",AllHistory:"history",UpdatesOnly:"updates"};R78.kvPrefix="KV_"});var b78=_((v78)=>{Object.defineProperty(v78,"__esModule",{value:!0});v78.KvStatusImpl=v78.Bucket=v78.Kvm=v78.kvOperationHdr=void 0;v78.Base64KeyCodec=b74;v78.NoopKvCodecs=Do0;v78.defaultBucketOpts=M78;v78.validateKey=k78;v78.validateSearchKey=S78;v78.hasWildcards=V78;v78.validateBucket=SX0;var g5=gY(),Z5=P90(),y5=Lo0();function b74(){let $=(Z,X)=>{let Q=[];for(let Y of Z.split("."))switch(Y){case">":case"*":Q.push(Y);break;default:Q.push(X(Y));break}return Q.join(".")};return{encode(Z){return $(Z,btoa)},decode(Z){return $(Z,atob)}}}function Do0(){return{key:{encode($){return $},decode($){return $}},value:{encode($){return typeof $==="string"?new TextEncoder().encode($):$},decode($){return $}}}}function M78(){return{replicas:1,history:1,timeout:2000,max_bytes:-1,maxValueSize:-1,codec:Do0(),storage:Z5.StorageType.File}}v78.kvOperationHdr="KV-Operation";var q78="$KV",y74=/^[-/=.\w]+$/,g74=/^[-/=.>*\w]+$/,h74=/^[-\w]+$/;function k78($){if($.startsWith(".")||$.endsWith(".")||!y74.test($))throw Error(`invalid key: ${$}`)}function S78($){if($.startsWith(".")||$.endsWith(".")||$.includes("..")||!g74.test($))throw Error(`invalid key: ${$}`)}function V78($){if($.startsWith(".")||$.endsWith("."))throw Error(`invalid key: ${$}`);let Z=$.split("."),X=!1;for(let Q=0;Q<Z.length;Q++)switch(Z[Q]){case"*":X=!0;break;case">":if(Q!==Z.length-1)throw Error(`invalid key: ${$}`);X=!0;break;default:}return X}function SX0($){if(!h74.test($))throw Error(`invalid bucket name: ${$}`)}class C78{js;constructor($){this.js=(0,Z5.toJetStreamClient)($)}create($,Z={}){return this.#$($,Z)}open($,Z={}){return Z.bindOnly=!0,this.#$($,Z)}#$($,Z={}){let{ok:X,min:Q}=this.js.nc.features.get(g5.Feature.JS_KV);if(!X)return Promise.reject(Error(`kv is only supported on servers ${Q} or better`));if(Z.bindOnly)return By.bind(this.js,$,Z);return By.create(this.js,$,Z)}list(){let $=(X)=>{let Y=X.streams.filter((J)=>{return J.config.name.startsWith(y5.kvPrefix)});Y.forEach((J)=>{J.config.sealed=J.config.sealed||!1,J.config.deny_delete=J.config.deny_delete||!1,J.config.deny_purge=J.config.deny_purge||!1,J.config.allow_rollup_hdrs=J.config.allow_rollup_hdrs||!1});let G="";if(Y.length)G=this.js.nc.info?.cluster??"";return Y.map((J)=>{return new VX0(J,G)})},Z=`${this.js.prefix}.STREAM.LIST`;return new Z5.ListerImpl(Z,$,this.js)}}v78.Kvm=C78;class By{js;jsm;stream;bucket;direct;codec;prefix;editPrefix;useJsPrefix;_prefixLen;constructor($,Z,X){SX0($),this.js=Z,this.jsm=X,this.bucket=$,this.prefix=q78,this.editPrefix="",this.useJsPrefix=!1,this._prefixLen=0}static async create($,Z,X={}){SX0(Z);let Q=await $.jetstreamManager(),Y=new By(Z,$,Q);return await Y.init(X),Y}static async bind($,Z,X={}){let Q=$.getOptions()?.checkAPI||X.bindOnly===!1,Y=await $.jetstreamManager(Q),G={config:{allow_direct:X.allow_direct}};SX0(Z);let J=new By(Z,$,Y);return G.config.name=X.streamName??J.bucketName(),Object.assign(J,G),J.stream=G.config.name,J.codec=X.codec||Do0(),J.direct=G.config.allow_direct??!1,J.initializePrefixes(G),J}async init($={}){let Z=Object.assign(M78(),$);this.codec=Z.codec;let X={};if(this.stream=X.name=$.streamName??this.bucketName(),X.retention=Z5.RetentionPolicy.Limits,X.max_msgs_per_subject=Z.history,Z.max_bytes)X.max_bytes=Z.max_bytes;if(X.max_msg_size=Z.maxValueSize,X.storage=Z.storage,$.placement)X.placement=$.placement;if($.republish)X.republish=$.republish;if($.description)X.description=$.description;if($.markerTTL)X.allow_msg_ttl=!0,X.subject_delete_marker_ttl=(0,g5.nanos)(Z.markerTTL);if($.mirror){let H=Object.assign({},$.mirror);if(!H.name.startsWith(y5.kvPrefix))H.name=`${y5.kvPrefix}${H.name}`;X.mirror=H,X.mirror_direct=!0}else if($.sources){let H=$.sources.map((N)=>{let U=Object.assign({},N),F=U.name.startsWith(y5.kvPrefix)?U.name.substring(y5.kvPrefix.length):U.name;if(!U.name.startsWith(y5.kvPrefix))U.name=`${y5.kvPrefix}${U.name}`;if(!N.external&&F!==this.bucket)U.subject_transforms=[{src:`$KV.${F}.>`,dest:`$KV.${this.bucket}.>`}];return U});X.sources=H,X.subjects=[this.subjectForBucket()]}else X.subjects=[this.subjectForBucket()];if($.metadata)X.metadata=$.metadata;if(typeof $.compression==="boolean")X.compression=$.compression?Z5.StoreCompression.S2:Z5.StoreCompression.None;let Q=this.js.nc,Y=Q.getServerVersion(),G=Y?(0,g5.compare)(Y,(0,g5.parseSemVer)("2.7.2"))>=0:!1;X.discard=G?Z5.DiscardPolicy.New:Z5.DiscardPolicy.Old;let{ok:J,min:K}=Q.features.get(g5.Feature.JS_ALLOW_DIRECT);if(!J&&$.allow_direct===!0){let H=Y?`${Y.major}.${Y.minor}.${Y.micro}`:"unknown";return Promise.reject(Error(`allow_direct is not available on server version ${H} - requires ${K}`))}if($.allow_direct=typeof $.allow_direct==="boolean"?$.allow_direct:J,X.allow_direct=$.allow_direct,this.direct=X.allow_direct,X.num_replicas=Z.replicas,Z.ttl)X.max_age=(0,g5.nanos)(Z.ttl);X.allow_rollup_hdrs=!0;let W;try{if(W=await this.jsm.streams.info(X.name),!W.config.allow_direct&&this.direct===!0)this.direct=!1}catch(H){if(H.message==="stream not found")W=await this.jsm.streams.add(X);else throw H}this.initializePrefixes(W)}initializePrefixes($){this._prefixLen=0,this.prefix=`$KV.${this.bucket}`,this.useJsPrefix=this.js.apiPrefix!=="$JS.API";let{mirror:Z}=$.config;if(Z){let X=Z.name;if(X.startsWith(y5.kvPrefix))X=X.substring(y5.kvPrefix.length);if(Z.external&&Z.external.api!==""){let Q=Z.name.substring(y5.kvPrefix.length);this.useJsPrefix=!1,this.prefix=`$KV.${Q}`,this.editPrefix=`${Z.external.api}.$KV.${X}`}else this.editPrefix=this.prefix}}bucketName(){return this.stream??`${y5.kvPrefix}${this.bucket}`}subjectForBucket(){return`${this.prefix}.${this.bucket}.>`}subjectForKey($,Z=!1){let X=[];if(Z){if(this.useJsPrefix)X.push(this.js.apiPrefix);if(this.editPrefix!=="")X.push(this.editPrefix);else X.push(this.prefix)}else if(this.prefix)X.push(this.prefix);return X.push($),X.join(".")}fullKeyName($){if(this.prefix!=="")return`${this.prefix}.${$}`;return`${q78}.${this.bucket}.${$}`}get prefixLen(){if(this._prefixLen===0)this._prefixLen=this.prefix.length+1;return this._prefixLen}encodeKey($){let Z=[];for(let X of $.split("."))switch(X){case">":case"*":Z.push(X);break;default:Z.push(this.codec.key.encode(X));break}return Z.join(".")}decodeKey($){let Z=[];for(let X of $.split("."))switch(X){case">":case"*":Z.push(X);break;default:Z.push(this.codec.key.decode(X));break}return Z.join(".")}validateKey=k78;validateSearchKey=S78;hasWildcards=V78;close(){return Promise.resolve()}dataLen($,Z){let X=Z?Z.get(Z5.JsHeaders.MessageSizeHdr)||"":"";if(X!=="")return parseInt(X,10);return $.length}smToEntry($){return new _78(this.bucket,this.prefixLen,$,this.codec)}jmToWatchEntry($,Z){return new x78(this.bucket,this.prefixLen,$,Z,this.codec)}async create($,Z,X){let Q;try{let G={previousSeq:0},J=await this._put($,Z,G,X);return Promise.resolve(J)}catch(G){if(Q=G,G instanceof Z5.JetStreamApiError){let J=G;if(J.code!==Z5.JetStreamApiCodes.StreamWrongLastSequence&&J.code!==Z5.JetStreamApiCodes.StreamWrongLastSequenceUnknown)return Promise.reject(G)}}let Y=0;try{let G=await this.get($);if(G?.operation==="DEL"||G?.operation==="PURGE")return Y=G!==null?G.revision:0,this._put($,Z,{previousSeq:Y},X);else return Promise.reject(Q)}catch(G){return Promise.reject(G)}}update($,Z,X,Q){if(X<=0)throw Error("version must be greater than 0");return this.put($,Z,{previousSeq:X,timeout:Q})}async _put($,Z,X={},Q){let Y=this.encodeKey($);this.validateKey(Y),Z=this.codec.value.encode(Z);let G={timeout:X?.timeout};if(X.previousSeq!==void 0){let J=(0,g5.headers)();G.headers=J,J.set(Z5.PubHeaders.ExpectedLastSubjectSequenceHdr,`${X.previousSeq}`)}if(Q)(G.headers||(0,g5.headers)()).set(Z5.PubHeaders.MessageTTL,Q);try{return(await this.js.publish(this.subjectForKey(Y,!0),Z,G)).seq}catch(J){return Promise.reject(J)}}put($,Z,X={}){return this._put($,Z,X)}async get($,Z){let X=this.encodeKey($);this.validateKey(X);let Q={last_by_subj:this.subjectForKey(X)};if(Z&&Z.revision>0)Q={seq:Z.revision};let Y=null;try{if(this.direct)Y=await this.jsm.direct.getMessage(this.bucketName(),Q);else Y=await this.jsm.streams.getMessage(this.bucketName(),Q);if(Y===null)return null;let G=this.smToEntry(Y);if(G.rawKey!==X)return null;return G}catch(G){throw G}}purge($,Z){return this._deleteOrPurge($,"PURGE",Z)}delete($,Z){return this._deleteOrPurge($,"DEL",Z)}async purgeDeletes($=1800000){let Z=[],X=await this.history({key:">"});await(async()=>{for await(let J of X)if(J.operation==="DEL"||J.operation==="PURGE")Z.push(J)})().then(),X.stop();let Q=Date.now()-$,Y=Z.map((J)=>{let K=this.subjectForKey(J.key);if(J.created.getTime()>=Q)return this.jsm.streams.purge(this.stream,{filter:K,keep:1});else return this.jsm.streams.purge(this.stream,{filter:K,keep:0})}),G=await Promise.all(Y);return G.unshift({success:!0,purged:0}),G.reduce((J,K)=>{return J.purged+=K.purged,J})}async _deleteOrPurge($,Z,X){if(!this.hasWildcards($))return this._doDeleteOrPurge($,Z,X);let Q=await this.keys($),Y=[];for await(let G of Q)if(Y.push(this._doDeleteOrPurge(G,Z)),Y.length===100)await Promise.all(Y),Y.length=0;if(Y.length>0)await Promise.all(Y)}async _doDeleteOrPurge($,Z,X){let Q=this.encodeKey($);this.validateKey(Q);let Y=(0,g5.headers)();if(Y.set(v78.kvOperationHdr,Z),Z==="PURGE"){let G=X;if(Y.set(Z5.JsHeaders.RollupHdr,Z5.JsHeaders.RollupValueSubject),typeof G?.ttl==="string"&&G.ttl!=="")Y.set(Z5.PubHeaders.MessageTTL,`${G.ttl}`)}if(X?.previousSeq)Y.set(Z5.PubHeaders.ExpectedLastSubjectSequenceHdr,`${X.previousSeq}`);await this.js.publish(this.subjectForKey(Q,!0),g5.Empty,{headers:Y})}_buildCC($,Z,X={}){let Y=(!Array.isArray($)?[$]:$).map((K)=>{let W=this.encodeKey(K);return this.validateSearchKey(K),this.fullKeyName(W)}),G=Z5.DeliverPolicy.LastPerSubject;if(Z===y5.KvWatchInclude.AllHistory)G=Z5.DeliverPolicy.All;if(Z===y5.KvWatchInclude.UpdatesOnly)G=Z5.DeliverPolicy.New;let J=void 0;if(Y.length===1)J=Y[0],Y=void 0;return Object.assign({deliver_policy:G,ack_policy:Z5.AckPolicy.None,filter_subjects:Y,filter_subject:J,flow_control:!0,idle_heartbeat:(0,g5.nanos)(5000)},X)}remove($){return this.purge($)}async history($={}){let Z=$.key??">",X={};X.headers_only=$.headers_only||!1;let Q=new g5.QueuedIteratorImpl,Y=()=>{Q.stop()},G=this._buildCC(Z,y5.KvWatchInclude.AllHistory,X),J=await this.js.consumers.getPushConsumer(this.stream,G);if(Q._data=J,(await J.info(!0)).num_pending===0)return Q.push(Y),Q;let W=await J.consume({callback:(H)=>{let N=this.jmToWatchEntry(H,!1);if(Q.push(N),Q.received++,H.info.pending===0)Q.push(Y)}});return W.closed().then(()=>{Q.push(Y)}),(async()=>{for await(let H of W.status())switch(H.type){case"heartbeat":Q.push(()=>{Q.stop()});break}})().then(),Q.iterClosed.then(()=>{W.stop()}),Q}canSetWatcherName(){let $=this.js.nc,{ok:Z}=$.features.get(g5.Feature.JS_NEW_CONSUMER_CREATE_API);return Z}async watch($={}){let Z=$.key??">",X=new g5.QueuedIteratorImpl,Q={};Q.headers_only=$.headers_only||!1;let Y=y5.KvWatchInclude.LastValue;if($.include===y5.KvWatchInclude.AllHistory)Y=y5.KvWatchInclude.AllHistory;else if($.include===y5.KvWatchInclude.UpdatesOnly)Y=y5.KvWatchInclude.UpdatesOnly;let G=$.ignoreDeletes===!0,J=this._buildCC(Z,Y,Q);if(J.name=`KV_WATCHER_${g5.nuid.next()}`,$.resumeFromRevision&&$.resumeFromRevision>0)J.deliver_policy=Z5.DeliverPolicy.StartSequence,J.opt_start_seq=$.resumeFromRevision;let K=await this.js.consumers.getPushConsumer(this.stream,J),H=(await K.info(!0)).num_pending,N=Y===y5.KvWatchInclude.UpdatesOnly||H===0;X._data=K;let U=0,F=await K.consume({callback:(w)=>{if(!N)U++,N=U>=H;let B=this.jmToWatchEntry(w,N);if(G&&B.operation==="DEL")return;X.push(B),X.received++}});return X.iterClosed.then(()=>{F.stop()}),F.closed().then(()=>{X.push(()=>{X.stop()})}),X}async keys($=">"){let Z=new g5.QueuedIteratorImpl,X=this._buildCC($,y5.KvWatchInclude.LastValue,{headers_only:!0}),Q=await this.js.consumers.getPushConsumer(this.stream,X);if((await Q.info()).num_pending===0)return Z.stop(),Z;Z._data=Q;let G=await Q.consume({callback:(J)=>{let K=J.headers?.get(v78.kvOperationHdr);if(K!=="DEL"&&K!=="PURGE"){let W=this.decodeKey(J.subject.substring(this.prefixLen));Z.push(W)}if(J.info.pending===0)G.stop()}});return(async()=>{for await(let J of G.status())switch(J.type){case"heartbeat":Z.push(()=>{Z.stop()});break}})().then(),G.closed().then(()=>{Z.push(()=>{Z.stop()})}),Z.iterClosed.then(()=>{G.stop()}),Z}purgeBucket($){return this.jsm.streams.purge(this.bucketName(),$)}destroy(){return this.jsm.streams.delete(this.bucketName())}async status(){let Z=this.js.nc.info?.cluster??"",X=this.bucketName(),Q=await this.jsm.streams.info(X);return new VX0(Q,Z)}}v78.Bucket=By;class VX0{si;cluster;constructor($,Z=""){this.si=$,this.cluster=Z}get bucket(){return this.si.config.name.startsWith(y5.kvPrefix)?this.si.config.name.substring(y5.kvPrefix.length):this.si.config.name}get values(){return this.si.state.messages}get history(){return this.si.config.max_msgs_per_subject}get ttl(){return(0,g5.millis)(this.si.config.max_age)}get markerTTL(){if(typeof this.si.config.subject_delete_marker_ttl==="number")return(0,g5.millis)(this.si.config.subject_delete_marker_ttl);return 0}get bucket_location(){return this.cluster}get backingStore(){return this.si.config.storage}get storage(){return this.si.config.storage}get replicas(){return this.si.config.num_replicas}get description(){return this.si.config.description??""}get maxBucketSize(){return this.si.config.max_bytes}get maxValueSize(){return this.si.config.max_msg_size}get max_bytes(){return this.si.config.max_bytes}get placement(){return this.si.config.placement||{cluster:"",tags:[]}}get placementCluster(){return this.si.config.placement?.cluster??""}get republish(){return this.si.config.republish??{src:"",dest:""}}get streamInfo(){return this.si}get size(){return this.si.state.bytes}get metadata(){return this.si.config.metadata??{}}get compression(){if(this.si.config.compression)return this.si.config.compression!==Z5.StoreCompression.None;return!1}}v78.KvStatusImpl=VX0;class _78{bucket;sm;prefixLen;codec;constructor($,Z,X,Q){this.bucket=$,this.prefixLen=Z,this.sm=X,this.codec=Q}get rawKey(){return this.sm.subject.substring(this.prefixLen)}get key(){return this.codec.key.decode(this.rawKey)}get value(){return this.codec.value.decode(this.sm.data)}get delta(){return 0}get created(){return this.sm.time}get revision(){return this.sm.seq}get operation(){if(this.sm.header?.has("Nats-Marker-Reason")){if(this.sm.header?.get("Nats-Marker-Reason")==="MaxAge")return"PURGE"}return this.sm.header?.get(v78.kvOperationHdr)||"PUT"}get length(){let $=this.sm.header.get(Z5.JsHeaders.MessageSizeHdr)||"";if($!=="")return parseInt($,10);return this.sm.data.length}json($){return JSON.parse(g5.TD.decode(this.value),$)}string(){return g5.TD.decode(this.value)}}class x78{bucket;sm;prefixLen;update;codec;constructor($,Z,X,Q,Y){this.bucket=$,this.prefixLen=Z,this.sm=X,this.update=Q,this.codec=Y}get rawKey(){return this.sm.subject.substring(this.prefixLen)}get key(){return this.codec.key.decode(this.rawKey)}get value(){return this.codec.value.decode(this.sm.data)}get created(){return new Date((0,g5.millis)(this.sm.info.timestampNanos))}get revision(){return this.sm.seq}get operation(){if(this.sm.headers?.has("Nats-Marker-Reason")){if(this.sm.headers?.get("Nats-Marker-Reason")==="MaxAge")return"PURGE"}return this.sm.headers?.get(v78.kvOperationHdr)||"PUT"}get delta(){return this.sm.info.pending}get length(){let $=this.sm.headers?.get(Z5.JsHeaders.MessageSizeHdr)||"";if($!=="")return parseInt($,10);return this.sm.data.length}get isUpdate(){return this.update}json($){return JSON.parse(g5.TD.decode(this.value),$)}string(){return g5.TD.decode(this.value)}}});var Eo0=_((CJ)=>{Object.defineProperty(CJ,"__esModule",{value:!0});CJ.validateKey=CJ.validateBucket=CJ.NoopKvCodecs=CJ.Kvm=CJ.defaultBucketOpts=CJ.Bucket=CJ.Base64KeyCodec=CJ.KvWatchInclude=CJ.kvPrefix=void 0;var y78=Lo0();Object.defineProperty(CJ,"kvPrefix",{enumerable:!0,get:function(){return y78.kvPrefix}});Object.defineProperty(CJ,"KvWatchInclude",{enumerable:!0,get:function(){return y78.KvWatchInclude}});var xE=b78();Object.defineProperty(CJ,"Base64KeyCodec",{enumerable:!0,get:function(){return xE.Base64KeyCodec}});Object.defineProperty(CJ,"Bucket",{enumerable:!0,get:function(){return xE.Bucket}});Object.defineProperty(CJ,"defaultBucketOpts",{enumerable:!0,get:function(){return xE.defaultBucketOpts}});Object.defineProperty(CJ,"Kvm",{enumerable:!0,get:function(){return xE.Kvm}});Object.defineProperty(CJ,"NoopKvCodecs",{enumerable:!0,get:function(){return xE.NoopKvCodecs}});Object.defineProperty(CJ,"validateBucket",{enumerable:!0,get:function(){return xE.validateBucket}});Object.defineProperty(CJ,"validateKey",{enumerable:!0,get:function(){return xE.validateKey}})});var zo0=_((ew)=>{Object.defineProperty(ew,"__esModule",{value:!0});ew.NoopKvCodecs=ew.Kvm=ew.defaultBucketOpts=ew.Bucket=ew.Base64KeyCodec=ew.KvWatchInclude=void 0;var r74=Eo0();Object.defineProperty(ew,"KvWatchInclude",{enumerable:!0,get:function(){return r74.KvWatchInclude}});var In=Eo0();Object.defineProperty(ew,"Base64KeyCodec",{enumerable:!0,get:function(){return In.Base64KeyCodec}});Object.defineProperty(ew,"Bucket",{enumerable:!0,get:function(){return In.Bucket}});Object.defineProperty(ew,"defaultBucketOpts",{enumerable:!0,get:function(){return In.defaultBucketOpts}});Object.defineProperty(ew,"Kvm",{enumerable:!0,get:function(){return In.Kvm}});Object.defineProperty(ew,"NoopKvCodecs",{enumerable:!0,get:function(){return In.NoopKvCodecs}})});function CX0(){let $=new TextEncoder,Z=new TextDecoder;return{encode:(X)=>$.encode(JSON.stringify(X)),decode:(X)=>JSON.parse(Z.decode(X))}}class Po0{options;kv=null;codec=CX0();constructor($){this.options=$}async init(){let $=this.options.getJetStream();if(!$)return;this.kv=await new h78.Kvm($).create(s74,{storage:g78.StorageType.Memory})}async get($,Z){if(!this.kv)return null;try{let X=await this.kv.get(`${$}.${Z}`);if(!X?.value?.length)return null;if(X.operation==="DEL"||X.operation==="PURGE")return null;return this.codec.decode(X.value)}catch{return null}}async set($,Z,X){if(!this.kv)return;try{await this.kv.put(`${$}.${Z}`,this.codec.encode(X))}catch{}}async invalidate($){if(!this.kv)return;await Promise.all(["tools","resources","prompts"].map(async(X)=>{try{await this.kv.delete(`${X}.${$}`)}catch{}}))}teardown(){this.kv=null}}function e74($,Z,X){if(X<=0)return!0;if($===void 0)return!0;return Z-$>=X}function _X0($){return $ instanceof S1&&$.code===b1.MethodNotFound}function $X4($){return $ instanceof S1&&$.code===-32000&&/connection closed/i.test($.message)}async function ZB($,Z,X,Q,Y,G=0){if(!Q)try{return await X()}catch(H){if(_X0(H))return[];return qn.add(1,{type:$,outcome:"error",stage:"no_cache"}),null}let J=`${$}:${Z}`,K=await Q.get($,Z);if(K===null)try{let H=await X();return Q.set($,Z,H).catch(()=>{}),jo0.set(J,Date.now()),qn.add(1,{type:$,outcome:"miss",stage:"miss"}),H}catch(H){if(_X0(H))return Q.set($,Z,[]).catch(()=>{}),[];return qn.add(1,{type:$,outcome:"error",stage:"miss"}),null}if(qn.add(1,{type:$,outcome:"hit",stage:"hit"}),e74(jo0.get(J),Date.now(),G)&&!xX0.has(J)){xX0.add(J),jo0.set(J,Date.now());let H=X().then((N)=>Q.set($,Z,N)).catch((N)=>{if(_X0(N)||$X4(N)){if(_X0(N))Q.set($,Z,[]).catch(()=>{});return}qn.add(1,{type:$,outcome:"error",stage:"revalidation"})}).finally(()=>xX0.delete(J));Y?.(H)}return K}function Ao0($){u78=$}function G9(){return u78}var g78,h78,qn,s74="DECOCMS_MCP_LISTS",xX0,jo0,$B=30000,u78=null;var pY=O(()=>{Y9();R5();g78=S(rD(),1),h78=S(zo0(),1),qn=D6.createCounter("mcp_list_cache.fetches",{description:"MCP list cache fetch outcomes (hit, miss, error)",unit:"{fetches}"});xX0=new Set;D6.createObservableGauge("mcp_list_cache.pending_revalidations",{description:"In-flight background MCP list revalidations on this pod",unit:"{revalidations}"}).addCallback(($)=>$.observe(xX0.size));jo0=new Map});var Mn=($,Z)=>{if(Z===null||Z===void 0)return;let X=$.replace(/\[(\w+)\]/g,".$1").split(".").filter(Boolean),Q=Z;for(let Y of X){if(Q===null||Q===void 0||typeof Q!=="object")return;Q=Q[Y]}return Q};function vX0($){let Z=$.split("::");if(Z.length!==2||!Z[0]||!Z[1])throw Error(`Invalid scope format: ${$}. Expected format: "KEY::SCOPE"`);return Z}function ZX4($){try{return vX0($)}catch{return null}}function XX4($){if(typeof $==="object"&&$!==null&&"value"in $){let Z=$.value;if(typeof Z==="string")return Z}return null}function To0($,Z){let X={};if(!$||!Z)return X;for(let Q of Z){if(Q==="*"){X["*"]=["*"];continue}let Y=ZX4(Q);if(!Y)continue;let[G,J]=Y,K=Mn(G,$),W=XX4(K);if(W){if(!X[W])X[W]=[];X[W].push(J)}}return X}function c78($,Z){let X=To0($,Z);return new Set(Object.keys(X).filter((Q)=>Q!=="*"))}var Ro0=()=>{};async function l78($){if(!$.refreshToken)return{success:!1,permanent:!1,error:"No refresh token available"};if(!$.tokenEndpoint)return{success:!1,permanent:!1,error:"No token endpoint available"};if(!$.clientId)return{success:!1,permanent:!1,error:"No client ID available"};try{let Z=new URLSearchParams({grant_type:"refresh_token",refresh_token:$.refreshToken,client_id:$.clientId});if($.clientSecret)Z.set("client_secret",$.clientSecret);if($.scope)Z.set("scope",$.scope);let X=await fetch($.tokenEndpoint,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:Z.toString()});if(!X.ok){let Y=await X.text(),G,J;try{let W=JSON.parse(Y);G=W.error,J=W.error_description}catch{}let K=X.status===400&&!!G&&QX4.has(G);return(K?console.error:console.warn)("[TokenRefresh] refresh failed",{connectionId:$.connectionId,tokenEndpoint:$.tokenEndpoint,status:X.status,errorCode:G,errorDescription:J,permanent:K}),{success:!1,permanent:K,status:X.status,errorCode:G,error:J||G||`Token refresh failed: ${X.status}`}}let Q=await X.json();return{success:!0,accessToken:Q.access_token,refreshToken:Q.refresh_token||$.refreshToken,expiresIn:Q.expires_in,scope:Q.scope}}catch(Z){return console.warn("[TokenRefresh] network/parse error",{connectionId:$.connectionId,tokenEndpoint:$.tokenEndpoint,message:Z instanceof Error?Z.message:String(Z)}),{success:!1,permanent:!1,error:Z instanceof Error?Z.message:"Token refresh failed"}}}var QX4;var d78=O(()=>{QX4=new Set(["invalid_grant","bad_refresh_token"])});import{createHash as YX4,randomBytes as GX4,timingSafeEqual as Nw5}from"crypto";function KX4($){return $.toString("base64").replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/g,"")}function qo0($){return YX4("sha256").update($).digest("hex")}function n78($){let Z=Io0.length+1,X=Z+i78;if(!$.startsWith(`${Io0}_`)||$.length<=X+1||$[X]!=="_")return null;let Q=$.slice(Z,X),Y=$.slice(X+1);if(!m78.test(Q)||!m78.test(Y))return null;return Q}function p78(){let $=KX4(GX4(JX4)),Z=$.slice(0,i78),X=`${Io0}_${Z}_${$}`;return{plaintext:X,prefix:Z,hash:qo0(X)}}var Io0="stv",JX4=32,i78=12,m78;var t78=O(()=>{m78=/^[A-Za-z0-9_-]+$/});function o78($){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 Mo0{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=p78(),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:$4("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:o78(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?o78(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=n78($);if(!Z)return null;let X=qo0($),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:$4("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 fX0="credential:access-token:read",bX0="credential:configuration:read";var yX0=O(()=>{dX();t78()});function vE($){let Z=String($??"");if(Z&&!Z.includes("T"))return Z.replace(" ","T")+"Z";return Z}function k8($){return $.replace(/\0/g,"").replace(/\\/g,"\\\\").replace(/'/g,"''")}function i6($){let Z=Number($??0);return Number.isFinite(Z)?Z:0}function HX4($){if(!WX4.has($))throw Error(`Invalid groupByColumn: ${$}`);return $}function ko0($){if(!NX4.test($))throw Error(`Invalid JSONPath: ${$}`);if($.startsWith("$."))return $;if($.startsWith("."))return`$${$}`;return`$.${$}`}function _o0($){return $.replace(/^\$\./,"").split(".").map((X)=>`'${k8(X)}'`).join(", ")}function wX4($){let Z=UX4.exec($);if(!Z||!Z[1]||!Z[2])throw Error(`Invalid interval: ${$}`);let X=parseInt(Z[1],10),Q=Z[2],Y=FX4[Q];if(X<1||X>Y)throw Error(`Invalid interval amount: ${X}${Q} (max ${Y}${Q})`);return{amount:X,unit:Q}}function XB($,Z,X="timestamp"){let{amount:Q,unit:Y}=wX4($),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 kn($,Z,X){if(X==="duckdb")return`json_extract_string(${$}, '${Z}')`;let Q=_o0(Z);return`JSONExtractString(${$}, ${Q})`}function BX4($,Z,X){if(X==="duckdb")return`CAST(json_extract_string(${$}, '${Z}') AS DOUBLE)`;let Q=_o0(Z);return`JSONExtractFloat(${$}, ${Q})`}function r78($,Z,X){if(X==="duckdb")return`TRY_CAST(json_extract_string(${$}, '${Z}') AS DOUBLE)`;let Q=_o0(Z);return`toFloat64OrZero(JSONExtractString(${$}, ${Q}))`}function So0($){if($===null||$===void 0)return{};if(typeof $==="object")return $;let Z=String($);try{return JSON.parse(Z)}catch{return{_decocms_truncated:Z}}}function Vo0($){return{id:String($.id??""),organizationId:String($.organization_id??""),connectionId:String($.connection_id??""),toolName:String($.tool_name??""),input:So0($.input),output:So0($.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?So0($.properties):null}}function $X8($,Z){let X=[];if($.properties)for(let[Q,Y]of Object.entries($.properties)){let G=k8(Q),J=k8(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=k8(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=k8(Q),J=k8(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=k8(Q),J=k8(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 s78($,Z){let X=[];if(xJ(X,Z?.startDate,$),!Z)return X;if(Z.connectionIds?.length){let Q=Z.connectionIds.map((Y)=>`'${k8(Y)}'`).join(",");X.push(`connection_id IN (${Q})`)}if(Z.toolNames?.length){let Q=Z.toolNames.map((Y)=>`'${k8(Y)}'`).join(",");X.push(`tool_name IN (${Q})`)}if(Z.virtualMcpIds?.length){let Q=Z.virtualMcpIds.map((Y)=>`'${k8(Y)}'`).join(",");X.push(`virtual_mcp_id IN (${Q})`)}if(Z.endDate)X.push(_J(Z.endDate,$));if(Z.propertyFilters)X.push(...$X8(Z.propertyFilters,$));return X}function e78($,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 _J($,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 xJ($,Z,X,Q="timestamp"){if(Z)$.push(e78(Z,X,Q));else if(X==="clickhouse")$.push(e78(new Date(Date.now()-OX4),X,Q))}class xo0{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 = '${k8($.organizationId)}'`];if($.connectionId)X.push(`connection_id = '${k8($.connectionId)}'`);if($.excludeConnectionIds?.length){let F=$.excludeConnectionIds.map((w)=>`'${k8(w)}'`).join(",");X.push(`connection_id NOT IN (${F})`)}if($.virtualMcpId)X.push(`virtual_mcp_id = '${k8($.virtualMcpId)}'`);if($.toolName)X.push(`tool_name = '${k8($.toolName)}'`);if($.isError!==void 0)X.push(`is_error = ${$.isError?1:0}`);if(xJ(X,$.startDate,this.dialect),$.endDate)X.push(_J($.endDate,this.dialect));if($.propertyFilters)X.push(...$X8($.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 F=`SELECT ${a78}, count(*) OVER () AS _total FROM ${Z} WHERE ${J} ORDER BY timestamp DESC LIMIT ${Y} OFFSET ${G}`,w=await this.engine.query(F);if(w.length===0)return{logs:[],total:0};let B=Number(w[0]._total??0);return{logs:w.map(Vo0),total:B}}let K=`SELECT count(*) AS total FROM ${Z} WHERE ${J}`,W=`SELECT ${a78} FROM ${Z} WHERE ${J} ORDER BY timestamp DESC LIMIT ${Y} OFFSET ${G}`,[H,N]=await Promise.all([this.engine.query(K),this.engine.query(W)]),U=Number(H[0]?.total??0);return{logs:N.map(Vo0),total:U}}async getById($,Z){if(!$||!Z)return null;let Q=`SELECT * FROM ${this.sourceFactory($)} WHERE organization_id = '${k8($)}' AND id = '${k8(Z)}' LIMIT 1`,Y=await this.engine.query(Q);if(Y.length===0)return null;return Vo0(Y[0])}async getStats($){if(!$.organizationId)throw Error("organizationId is required");let Z=this.sourceFactory($.organizationId,{startDate:$.startDate,endDate:$.endDate}),X=[`organization_id = '${k8($.organizationId)}'`];if(xJ(X,$.startDate,this.dialect),$.endDate)X.push(_J($.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 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=XB($.interval,X,"timestamp"),J=(E)=>`coalesce(${r78("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})`,N=[`organization_id = '${k8($.organizationId)}'`,`connection_id = '${k8($.connectionId)}'`];if(xJ(N,$.startDate,X),$.endDate)N.push(_J($.endDate,X));if($.userIds?.length){let E=$.userIds.slice(0,100).map((z)=>`'${k8(z)}'`).join(",");N.push(`user_id IN (${E})`)}let U=N.join(" AND "),F=Math.min(Math.max(1,Math.floor($.topN??5)),20),w=`${K} AS calls,
|
|
1926
|
+
</workflows>`,iZ8={id:"studio-usage-manager",title:"Usage Manager",icon:"icon://BarChart10?color=blue",description:"Analyze usage, costs, and clean up idle agents and connections",selectedTools:["MONITORING_STATS","MONITORING_LOGS_LIST","MONITORING_LOG_GET","MONITORING_THREAD_USAGE","COLLECTION_VIRTUAL_MCP_LIST","COLLECTION_VIRTUAL_MCP_GET","COLLECTION_VIRTUAL_MCP_DELETE","VIRTUAL_MCP_LAST_USED_LIST","COLLECTION_CONNECTIONS_LIST","COLLECTION_CONNECTIONS_GET","COLLECTION_CONNECTIONS_DELETE","ORGANIZATION_MEMBER_LIST"],selectedConnections:null,selectedPrompts:[],instructions:Q74,getId:o7.USAGE_MANAGER}});function Qo0($){return VE.find((Z)=>$.startsWith(`${Z.id}_`))??null}async function Y74($,Z){if("resolveRuntime"in $)return $.resolveRuntime(Z);return{instructions:$.instructions,selectedTools:$.selectedTools}}async function TX0({virtualMcp:$,agentId:Z=$.id,organizationId:X,ctx:Q}){let Y=Qo0(Z);if(!Y)return $;let G=await Y74(Y,{orgId:X,ctx:Q}),J=G.selectedTools?[...G.selectedTools]:null;return{...$,metadata:{...$.metadata??{},instructions:G.instructions},connections:$.connections.map((K)=>({...K,selected_tools:J}))}}async function RX0($,Z){if(!("checklist"in $))return[];return Promise.all($.checklist.map(async(X)=>({label:X.label,activeForm:X.activeForm,action:X.action,completed:await X.isCompleted(Z),alwaysSuggest:X.alwaysSuggest})))}async function pZ8($,Z,X){let Q={self:t4.SELF($),registry:t4.REGISTRY($),"community-registry":t4.COMMUNITY_REGISTRY($)};await Promise.all(VE.map(async(Y)=>{let G=Y.getId($),J=await X.findById(G,$),W=(Y.selectedConnections??["self"]).map((H)=>Q[H]);if(J){await X.update(G,Z,{metadata:{...J.metadata??{},instructions:Y.instructions},connections:W.map((H)=>{let N=J.connections.find((U)=>U.connection_id===H);return{connection_id:H,selected_tools:Y.selectedTools?[...Y.selectedTools]:null,selected_resources:N?.selected_resources??null,selected_prompts:N?.selected_prompts??null}})});return}await X.create($,Z,{title:Y.title,description:Y.description,icon:Y.icon,status:"active",pinned:!1,metadata:{instructions:Y.instructions},connections:W.map((H)=>({connection_id:H,selected_tools:Y.selectedTools?[...Y.selectedTools]:null,selected_resources:null,selected_prompts:Y.selectedPrompts?[...Y.selectedPrompts]:null}))},{id:G})}))}var VE;var Fy=O(()=>{R6();SZ8();CZ8();xZ8();gZ8();uZ8();lZ8();mZ8();nZ8();VE=[yZ8,kZ8,_Z8,hZ8,VZ8,cZ8,dZ8,iZ8]});import{DBOS as IX0}from"@dbos-inc/dbos-sdk";async function G74($){let Z=H6(),X=new Uy(Z.db);await pZ8($.orgId,$.createdBy,X)}async function J74($){let Z=H6(),X=new Uy(Z.db);for(let Q of VE){let Y=Q.getId($.orgId),G=await X.findById(Y,$.orgId);if(!G)continue;let J=Q.selectedPrompts?[...Q.selectedPrompts]:null;if(G.connections.every((W)=>{let H=W.selected_prompts;if(J===null)return H===null;if(H===null)return!1;if(H.length!==J.length)return!1;return H.every((N,U)=>N===J[U])}))continue;await X.update(Y,$.createdBy,{connections:G.connections.map((W)=>({connection_id:W.connection_id,selected_tools:W.selected_tools,selected_resources:W.selected_resources,selected_prompts:J}))})}}async function K74($){await IX0.runStep(()=>G74($),{name:"installStudioPack"}),await IX0.runStep(()=>J74($),{name:"backfillSelectedPrompts"})}async function Yo0($){await IX0.startWorkflow(W74,{workflowID:`install-studio-pack:${H74}:${$.orgId}`})($)}async function tZ8(){let Z=await H6().db.selectFrom("member").select(["organizationId","userId"]).orderBy("createdAt","asc").execute(),X=new Map;for(let Q of Z)if(!X.has(Q.organizationId))X.set(Q.organizationId,Q.userId);await Promise.all(Array.from(X).map(async([Q,Y])=>{try{await Yo0({orgId:Q,createdBy:Y})}catch(G){console.error("[studio-pack-backfill] enqueue failed",{orgId:Q},G)}}))}var W74,H74="v5";var qX0=O(()=>{m7();Xo0();Fy();W74=IX0.registerWorkflow(K74,{name:"installStudioPackWorkflow"})});import{jwtVerify as N74,SignJWT as oZ8}from"jose";import{randomBytes as U74}from"crypto";function rZ8(){if(jn)return jn;let $=Q1(),Z=$.studioJwtSecret??$.betterAuthSecret;if(Z)jn=new TextEncoder().encode(Z);else console.warn("STUDIO_JWT_SECRET not set - generating random secret (not persistent)"),jn=new Uint8Array(U74(32));return jn}async function aZ8($,Z="5m"){let X=rZ8();return await new oZ8($).setProtectedHeader({alg:"HS256",typ:"JWT"}).setIssuedAt().setExpirationTime(Z).sign(X)}async function Go0($){try{let Z=rZ8(),{payload:X}=await N74($,Z);return X}catch{return}}async function zW($,Z,X=3600){let Q=Q1(),Y=Q.studioJwtSecret??Q.betterAuthSecret;if(!Y)throw Error("A deterministic JWT secret is required to mint gateway JWTs \u2014 set STUDIO_JWT_SECRET or BETTER_AUTH_SECRET");let G=new TextEncoder().encode(Y);return await new oZ8({iss:"mesh",sub:$,...Z&&{email:Z}}).setProtectedHeader({alg:"HS256",typ:"JWT"}).setIssuedAt().setExpirationTime(Math.floor(Date.now()/1000)+X).sign(G)}var jn=null;var rw=O(()=>{y8()});class Pn{constructor(){this._messageQueue=[]}static createLinkedPair(){let $=new Pn,Z=new Pn;return $._otherTransport=Z,Z._otherTransport=$,[$,Z]}async start(){while(this._messageQueue.length>0){let $=this._messageQueue.shift();this.onmessage?.($.message,$.extra)}}async close(){let $=this._otherTransport;this._otherTransport=void 0,await $?.close(),this.onclose?.()}async send($,Z){if(!this._otherTransport)throw Error("Not connected");if(this._otherTransport.onmessage)this._otherTransport.onmessage($,{authInfo:Z?.authInfo});else this._otherTransport._messageQueue.push({message:$,extra:{authInfo:Z?.authInfo}})}}import{z as W4}from"zod";var MX0,sZ8,eZ8,$78,Z78,X78,Q78,Y78,G78,J78;var wy=O(()=>{MX0=W4.record(W4.string(),W4.array(W4.string())),sZ8=W4.object({id:W4.string().describe("Unique identifier for the API key"),name:W4.string().describe("Human-readable name for the API key"),userId:W4.string().describe("ID of the user who owns this API key"),permissions:MX0.describe('Permissions granted to this API key. Format: { resource: [actions] } where resource is "self" for management tools or "conn_<UUID>" for connection-specific tools. Example: { "self": ["API_KEY_CREATE"], "conn_abc123": ["SEND_MESSAGE"] }'),expiresAt:W4.string().datetime().nullable().optional().describe("Expiration date of the API key (ISO 8601)"),createdAt:W4.string().datetime().describe("When the API key was created (ISO 8601)")}),eZ8=W4.object({name:W4.string().min(1).max(64).describe("Human-readable name for the API key"),permissions:MX0.describe(`Permissions to grant (REQUIRED \u2014 there is no implicit default). Format: { resource: [actions] }. Resource is "self" for management tools or "conn_<UUID>" for connection-specific tools. Actions are tool names (e.g., ["ORGANIZATION_GET"]) or ["*"] for all. Example: { "self": ["ORGANIZATION_GET", "COLLECTION_CONNECTIONS_LIST"] }. The key is authorized solely by this allowlist; the creator's role does not widen it.`),expiresIn:W4.number().positive().optional().describe("Expiration time in seconds. If not provided, key never expires."),metadata:W4.record(W4.string(),W4.unknown()).optional().describe("Additional metadata to store with the API key")}),$78=W4.object({id:W4.string().describe("Unique identifier for the API key"),name:W4.string().describe("Human-readable name for the API key"),key:W4.string().describe("The actual API key value. STORE THIS SECURELY - it will not be shown again!"),permissions:MX0.describe('Permissions granted to this API key. Format: { resource: [actions] } where resource is "self" for management tools or "conn_<UUID>" for connection-specific tools'),expiresAt:W4.string().datetime().nullable().optional().describe("Expiration date of the API key (ISO 8601)"),createdAt:W4.string().datetime().describe("When the API key was created (ISO 8601)")}),Z78=W4.object({}),X78=W4.object({items:W4.array(sZ8).describe("List of API keys (without key values)")}),Q78=W4.object({keyId:W4.string().describe("ID of the API key to update"),name:W4.string().min(1).max(64).optional().describe("New name for the API key"),permissions:MX0.optional().describe('New permissions. Format: { resource: [actions] } where resource is "self" for management tools or "conn_<UUID>" for connection-specific tools. Actions are tool names or "*" for all. Example: { "self": ["API_KEY_CREATE"] }. Replaces existing permissions.'),metadata:W4.record(W4.string(),W4.unknown()).optional().describe("New metadata. Replaces existing metadata.")}),Y78=W4.object({item:sZ8.describe("The updated API key (without key value)")}),G78=W4.object({keyId:W4.string().describe("ID of the API key to delete")}),J78=W4.object({success:W4.boolean().describe("Whether the deletion was successful"),keyId:W4.string().describe("ID of the deleted API key")})});var Jo0;var K78=O(()=>{V$();p0();wy();Jo0=o({name:"API_KEY_CREATE",description:"Create an API key with scoped permissions. The key value is returned only once \u2014 store it immediately.",annotations:{title:"Create API Key",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!1},inputSchema:eZ8,outputSchema:$78,handler:async($,Z)=>{F0(Z),await Z.access.check();let X=await Z.boundAuth.apiKey.create({name:$.name,permissions:$.permissions,expiresIn:$.expiresIn,metadata:{...$.metadata,organization:Z.organization}}),Q=X.expiresAt?X.expiresAt instanceof Date?X.expiresAt.toISOString():X.expiresAt:null,Y=X.createdAt instanceof Date?X.createdAt.toISOString():X.createdAt,G=P1(Z);if(G)i1.capture({distinctId:G,event:"api_key_created",...Z.organization?.id?{groups:{organization:Z.organization.id}}:{},properties:{key_id:X.id,key_name:X.name??$.name,organization_id:Z.organization?.id,has_expiry:!!Q}});return{id:X.id,name:X.name??$.name,key:X.key,permissions:X.permissions??{},expiresAt:Q,createdAt:Y}}})});var Ko0;var W78=O(()=>{V$();p0();wy();Ko0=o({name:"API_KEY_DELETE",description:"Delete and instantly revoke an API key. Cannot be undone.",annotations:{title:"Delete API Key",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:G78,outputSchema:J78,handler:async($,Z)=>{F0(Z),await Z.access.check();let X=P1(Z);if(!X)throw Error("User ID required to delete API key");let Y=(await Z.boundAuth.apiKey.list())?.find((W)=>W.id===$.keyId);if(!Y)throw Error("API key not found");let J=Y.metadata?.organization?.id,K=Z.organization?.id;if(J!==K)throw Error("Cannot delete API key from another organization");if(await Z.boundAuth.apiKey.delete($.keyId),K)i1.capture({distinctId:X,event:"api_key_deleted",groups:{organization:K},properties:{key_id:$.keyId,organization_id:K}});return{success:!0,keyId:$.keyId}}})});var Wo0;var H78=O(()=>{p0();wy();Wo0=o({name:"API_KEY_LIST",description:"List API keys for the current user in the current organization. Returns metadata only \u2014 key values are never shown after creation.",annotations:{title:"List API Keys",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:Z78,outputSchema:X78,handler:async($,Z)=>{F0(Z),await Z.access.check();let X=await Z.boundAuth.apiKey.list(),Q=Z.organization?.id;return{items:(X??[]).filter((G)=>{return G.metadata?.organization?.id===Q}).map((G)=>({id:G.id,name:G.name??"Unnamed Key",userId:G.userId,permissions:G.permissions??{},expiresAt:G.expiresAt?G.expiresAt instanceof Date?G.expiresAt.toISOString():G.expiresAt:null,createdAt:G.createdAt instanceof Date?G.createdAt.toISOString():G.createdAt}))}}})});var Ho0;var N78=O(()=>{p0();wy();Ho0=o({name:"API_KEY_UPDATE",description:"Update an API key's name, permissions, or metadata. The key value cannot be changed or retrieved.",annotations:{title:"Update API Key",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:Q78,outputSchema:Y78,handler:async($,Z)=>{if(F0(Z),await Z.access.check(),!P1(Z))throw Error("User ID required to update API key");let Y=(await Z.boundAuth.apiKey.list())?.find((H)=>H.id===$.keyId);if(!Y)throw Error(`API key not found: ${$.keyId}`);let J=Y.metadata?.organization?.id,K=Z.organization?.id;if(J!==K)throw Error("Cannot update API key from another organization");let W=await Z.boundAuth.apiKey.update({keyId:$.keyId,name:$.name,permissions:$.permissions,metadata:{...$.metadata,organization:Z.organization}});if(!W)throw Error(`Failed to update API key: ${$.keyId}`);return{item:{id:W.id,name:W.name??$.name??"Unnamed Key",userId:W.userId,permissions:W.permissions??{},expiresAt:W.expiresAt?W.expiresAt instanceof Date?W.expiresAt.toISOString():W.expiresAt:null,createdAt:W.createdAt instanceof Date?W.createdAt.toISOString():W.createdAt}}}})});var U78=O(()=>{K78();W78();H78();N78();wy()});function aw($){let Z=$.trim();if(!Z)return{ok:!1,error:"Enter a website URL."};let X=w74.test(Z),Q=B74.test(Z),Y=O74.test(Z);if(X&&!Q&&!Y)return{ok:!1,error:"Use an HTTP or HTTPS website URL."};let G=Q?Z:`https://${Z}`,J;try{J=new URL(G)}catch{return{ok:!1,error:"Enter a valid website URL."}}if(J.protocol!=="http:"&&J.protocol!=="https:")return{ok:!1,error:"Use an HTTP or HTTPS website URL."};let K=J.hostname.split(".");if(K.length<2||K.some((W)=>!W||!L74.test(W)))return{ok:!1,error:"Enter a valid website URL."};return J.protocol="https:",{ok:!0,value:J.origin}}var w74,B74,O74,L74;var An=O(()=>{w74=/^[a-zA-Z][a-zA-Z\d+.-]*:/,B74=/^[a-zA-Z][a-zA-Z\d+.-]*:\/\//,O74=/^[^\s/:?#]+\.[^\s/:?#]+:\d+(?:[/?#]|$)/,L74=/^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$/i});import{z as oX}from"zod";function jW($){if($.baseUrl)return $.baseUrl.replace(/\/+$/,"");return(($.settings??Q1()).reportsInternalApiUrl??D74).replace(/\/+$/,"")}function w78($={}){return`${jW($)}/api/v2/mcp`}function CE($){let Z=$.apiKey??($.settings??Q1()).reportsInternalApiKey;if(!Z)throw Error("REPORTS_INTERNAL_API_KEY (or the legacy COMMERCE_DISCOVERY_INTERNAL_API_KEY) is required to set up reports.");return Z}function kX0($){return new URL($).hostname}function z74($){return $==="ownership_unverified"||$==="already_claimed_by_other_org"}function j74($,Z={}){switch($){case"ownership_unverified":{let X=Z.email?`O e-mail ${Z.email}`:"Este e-mail",Q=Z.domain?` ${Z.domain}`:" este site";return`${X} n\xE3o tem permiss\xE3o para reivindicar${Q}. Use um e-mail do dom\xEDnio do site ou pe\xE7a ao suporte para autorizar seu dom\xEDnio.`}case"already_claimed_by_other_org":return"Este site j\xE1 pertence a outra organiza\xE7\xE3o. Fale com o suporte para transferir o acesso.";case"unknown":return"N\xE3o foi poss\xEDvel configurar o Commerce Discovery. Tente novamente ou fale com o suporte.";default:return $}}async function P74($){let Z=await $.text().catch(()=>"");if(!Z)return"unknown";try{let X=JSON.parse(Z);return z74(X.error)?X.error:"unknown"}catch{return"unknown"}}async function No0($){let Z=`Commerce Discovery auth failed with status ${$.status}.`,X=await $.text().catch(()=>"");if(!X)return Z;try{let Q=JSON.parse(X),Y=typeof Q.error==="string"?Q.error:typeof Q.message==="string"?Q.message:null;return Y?`Commerce Discovery auth failed: ${Y}.`:Z}catch{return Z}}async function O78($,Z={}){let X=jW(Z),Q=CE(Z),Y=Z.fetchImpl??fetch,G=kX0($.siteUrl),J=`${X}/api/v2/internal/diagnostics/${encodeURIComponent(G)}/upgrade`,K=await Y(J,{method:"POST",headers:{Authorization:`Bearer ${Q}`,"Content-Type":"application/json"},body:JSON.stringify({org_id:$.orgId,...$.orgName?{name:$.orgName}:{},...$.email?{email:$.email}:{},...$.reportUrl?{report_url:$.reportUrl}:{}})});if(!K.ok){let H=await P74(K);throw new B78(H,{email:$.email,domain:G})}let W=E74.safeParse(await K.json());if(!W.success)throw Error("Commerce Discovery auth response did not include a token.");return{authorizationToken:W.data.token}}async function L78($,Z={}){let X=jW(Z),Q=CE(Z),Y=Z.fetchImpl??fetch,G=kX0($.siteUrl),J=`${X}/api/v2/internal/diagnostics/${encodeURIComponent(G)}/bindings`,K=await Y(J,{method:"POST",headers:{Authorization:`Bearer ${Q}`,"Content-Type":"application/json"},body:JSON.stringify({org_id:$.orgId,provider:$.provider,resource_id:$.resourceId})});if(K.status===409)return{ok:!1,reason:"resource_already_bound",detail:"Este recurso j\xE1 est\xE1 vinculado a outra loja. Se ele \xE9 seu, fale com o suporte para revis\xE3o manual."};if(K.status===422){let H=F78.safeParse(await K.json());return{ok:!1,reason:H.success?H.data.reason??"verification_failed":"verification_failed",detail:(H.success?H.data.detail:void 0)??"N\xE3o foi poss\xEDvel verificar o acesso a este recurso."}}if(!K.ok)throw Error(await No0(K));let W=F78.safeParse(await K.json());if(!W.success||!W.data.binding)throw Error("Commerce Discovery bind response did not include a binding.");return{ok:!0,resourceId:W.data.binding.resource_id,evidence:W.data.binding.evidence}}async function D78($,Z={}){let X=jW(Z),Q=CE(Z),Y=Z.fetchImpl??fetch,G=kX0($.siteUrl),J=`${X}/api/v2/internal/diagnostics/${encodeURIComponent(G)}/run`,K=await Y(J,{method:"POST",headers:{Authorization:`Bearer ${Q}`,"Content-Type":"application/json"},body:JSON.stringify({org_id:$.orgId,...$.githubRepo?{github_repo:$.githubRepo}:{}})});if(K.status===409)return{triggered:!1,reason:"not_upgraded"};if(!K.ok)throw Error(await No0(K));return{triggered:!0}}async function E78($,Z={}){let X=jW(Z),Q=CE(Z),Y=Z.fetchImpl??fetch,G=kX0($.siteUrl),J=`${X}/api/v2/internal/diagnostics/${encodeURIComponent(G)}/connections/status?org_id=${encodeURIComponent($.orgId)}`,K=await Y(J,{method:"GET",headers:{Authorization:`Bearer ${Q}`}});if(K.status===404||K.status===409)return{};if(!K.ok)throw Error(await No0(K));let W=A74.safeParse(await K.json());return W.success?W.data.providers:{}}var D74,E74,F78,B78,A74;var _E=O(()=>{R6();y8();D74=new URL(oo1).origin,E74=oX.object({token:oX.string().min(1)}),F78=oX.object({binding:oX.object({resource_id:oX.string(),evidence:oX.string()}).optional(),reason:oX.string().optional(),detail:oX.string().optional()});B78=class B78 extends Error{code;constructor($,Z={}){super(j74($,Z));this.name="CommerceDiscoveryClaimError",this.code=$}};A74=oX.object({providers:oX.record(oX.string(),oX.object({connected:oX.boolean(),via:oX.enum(["oauth","sa"]).nullable(),resource:oX.string().nullable()}))})});import{z as nY}from"zod";var T74,R74,Uo0;var z78=O(()=>{An();p0();_E();T74=nY.object({siteUrl:nY.string().min(1).describe("Website URL of the store being bound."),provider:nY.enum(["ga4","gsc"]).describe("Which Google source to bind: ga4 (Analytics) or gsc (Search Console)."),resourceId:nY.string().min(1).describe("The resource id the client typed: GA4 numeric property id, or GSC site (sc-domain:example.com or https://example.com/).")}),R74=nY.discriminatedUnion("ok",[nY.object({ok:nY.literal(!0),resourceId:nY.string(),evidence:nY.string()}),nY.object({ok:nY.literal(!1),reason:nY.string(),detail:nY.string()})]),Uo0=o({name:"COMMERCE_DISCOVERY_BIND",description:"Bind a GA4 property or GSC site to the org's store via the shared service account (consent-free lane). The client grants deco-reader@\u2026 access to the resource and provides its id; Commerce Discovery verifies the resource belongs to this domain before persisting. Returns ok:false with an actionable pt-BR detail when verification fails or the resource is already bound elsewhere.",annotations:{title:"Bind Commerce Discovery Data Source",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},inputSchema:T74,outputSchema:R74,handler:async($,Z)=>{F0(Z);let X=J0(Z);await Z.access.check();let Q=aw($.siteUrl);if(!Q.ok)throw Error(Q.error);return L78({siteUrl:Q.value,orgId:X.id,provider:$.provider,resourceId:$.resourceId.trim()})}})});import{z as pN}from"zod";var I74,q74,Fo0;var j78=O(()=>{An();p0();_E();I74=pN.object({siteUrl:pN.string().min(1).describe("Website URL of the store to inspect.")}),q74=pN.object({providers:pN.record(pN.string(),pN.object({connected:pN.boolean(),via:pN.enum(["oauth","sa"]).nullable(),resource:pN.string().nullable()}))}),Fo0=o({name:"COMMERCE_DISCOVERY_CONNECTION_STATUS",description:"Read per-provider connection status (ga4/gsc/vtex) for the org's store \u2014 { connected, via: oauth|sa, resource }. The single source of truth for whether a data source is connected, unifying the OAuth (Studio vault) and shared-SA binding lanes. Read-only.",annotations:{title:"Commerce Discovery Connection Status",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},inputSchema:I74,outputSchema:q74,handler:async($,Z)=>{F0(Z);let X=J0(Z);await Z.access.check();let Q=aw($.siteUrl);if(!Q.ok)throw Error(Q.error);return{providers:await E78({siteUrl:Q.value,orgId:X.id})}}})});import{z as Tn}from"zod";var M74,k74,wo0;var P78=O(()=>{R6();An();p0();_E();M74=Tn.object({siteUrl:Tn.string().min(1).describe("Website URL to run the diagnostic for.")}),k74=Tn.object({triggered:Tn.boolean(),reason:Tn.string().optional()}),wo0=o({name:"COMMERCE_DISCOVERY_RUN",description:"Trigger the Commerce Discovery diagnostic run for the current organization's store. Call once the data sources (GA4/GSC/VTEX) are connected \u2014 this run resolves credentials and produces the enriched report.",annotations:{title:"Run Commerce Discovery",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},inputSchema:M74,outputSchema:k74,handler:async($,Z)=>{F0(Z);let X=J0(Z);await Z.access.check();let Q=aw($.siteUrl);if(!Q.ok)throw Error(Q.error);let Y=t4.COMMERCE_DISCOVERY(X.id),J=(await Z.storage.connections.findById(Y,X.id))?.configuration_state,K=J&&typeof J==="object"&&typeof J.github_repo==="string"&&J.github_repo.length>0?J.github_repo:void 0;return D78({siteUrl:Q.value,orgId:X.id,githubRepo:K})}})});var sw=O(()=>{a90()});import{z as PW}from"zod";async function _74($,Z,X,Q){let Y=await $.storage.connections.findById(Z,X);if(Y)return Y;throw Q}async function x74($,Z,X,Q){let Y=await $.storage.virtualMcps.findById(Z,X);if(Y)return Y;throw Q}var Bo0,S74=3600000,V74,C74,Oo0;var A78=O(()=>{R6();An();p0();UW();sw();_E();Bo0=s90,V74=PW.object({siteUrl:PW.string().min(1).describe("Website URL to configure.")}),C74=PW.object({connection:n7,virtualMcp:p7,reportApp:PW.object({connectionId:PW.string(),virtualMcpId:PW.string(),toolName:PW.literal(Bo0)}),created:PW.object({connection:PW.boolean(),virtualMcp:PW.boolean()})});Oo0=o({name:"COMMERCE_DISCOVERY_SETUP",description:"Create or return the Commerce Discovery connection and virtual MCP for the current organization.",annotations:{title:"Set Up Commerce Discovery",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:V74,outputSchema:C74,handler:async($,Z)=>{F0(Z);let X=J0(Z);await Z.access.check("COLLECTION_CONNECTIONS_CREATE");let Q=P1(Z);if(!Q)throw Error("User ID required to set up Commerce Discovery");let Y=aw($.siteUrl);if(!Y.ok)throw Error(Y.error);let G=t4.COMMERCE_DISCOVERY(X.id),J=$Z0(X.id),K=new URLSearchParams({virtualmcpid:J,main:`app:${G}:${Bo0}`}),W={email:Z.auth.user?.email,reportUrl:`${Z.baseUrl}/${encodeURIComponent(X.slug??X.id)}/${crypto.randomUUID()}?${K.toString()}`},H=await Z.storage.connections.findById(G,X.id),N={connection:!1,virtualMcp:!1},U=await O78({siteUrl:Y.value,orgId:X.id,orgName:X.name,...W}),F=w78();if(H)console.log("[commerce-discovery] syncing connection to claimed site",{orgId:X.id,siteUrl:Y.value,connectionId:G}),H=await Z.storage.connections.update(H.id,{connection_url:F,connection_token:U.authorizationToken,metadata:{...H.metadata??{},siteUrl:Y.value}});else{console.log("[commerce-discovery] creating connection",{orgId:X.id,siteUrl:Y.value,connectionId:G});try{let D=Wr1(X.id,U.authorizationToken,F);H=await Z.storage.connections.create({...D,metadata:{...D.metadata??{},siteUrl:Y.value},organization_id:X.id,created_by:Q}),N.connection=!0}catch(D){H=await _74(Z,G,X.id,D)}}let w=await Z.storage.virtualMcps.findById(J,X.id);if(!w){console.log("[commerce-discovery] creating virtual MCP",{orgId:X.id,siteUrl:Y.value,connectionId:H.id,virtualMcpId:J});try{w=await Z.storage.virtualMcps.create(X.id,Q,Hr1(X.id,H.id),{id:J}),N.virtualMcp=!0}catch(D){w=await x74(Z,J,X.id,D)}}if(!w.pinned)w=await Z.storage.virtualMcps.update(w.id,Q,{pinned:!0});let B=await Z.db.selectFrom("organization").select(["createdAt"]).where("id","=",X.id).executeTakeFirst();if((B?Date.now()-new Date(B.createdAt).getTime():Number.POSITIVE_INFINITY)<S74){let E=(await Z.storage.organizationSettings.get(X.id))?.flags,z={};if(E?.reports_only==null){if(z.reports_only=!0,E?.qa_agent_enabled==null)z.qa_agent_enabled=!0;if(E?.code_reviewer_enabled==null)z.code_reviewer_enabled=!0}if(Object.keys(z).length>0)await Z.storage.organizationSettings.upsert(X.id,{flags:z})}return{connection:H,virtualMcp:w,reportApp:{connectionId:H.id,virtualMcpId:w.id,toolName:Bo0},created:N}}})});var T78=O(()=>{z78();j78();P78();A78()});var Lo0=_((R78)=>{Object.defineProperty(R78,"__esModule",{value:!0});R78.kvPrefix=R78.KvWatchInclude=void 0;R78.KvWatchInclude={LastValue:"",AllHistory:"history",UpdatesOnly:"updates"};R78.kvPrefix="KV_"});var b78=_((v78)=>{Object.defineProperty(v78,"__esModule",{value:!0});v78.KvStatusImpl=v78.Bucket=v78.Kvm=v78.kvOperationHdr=void 0;v78.Base64KeyCodec=b74;v78.NoopKvCodecs=Do0;v78.defaultBucketOpts=M78;v78.validateKey=k78;v78.validateSearchKey=S78;v78.hasWildcards=V78;v78.validateBucket=SX0;var g5=gY(),Z5=P90(),y5=Lo0();function b74(){let $=(Z,X)=>{let Q=[];for(let Y of Z.split("."))switch(Y){case">":case"*":Q.push(Y);break;default:Q.push(X(Y));break}return Q.join(".")};return{encode(Z){return $(Z,btoa)},decode(Z){return $(Z,atob)}}}function Do0(){return{key:{encode($){return $},decode($){return $}},value:{encode($){return typeof $==="string"?new TextEncoder().encode($):$},decode($){return $}}}}function M78(){return{replicas:1,history:1,timeout:2000,max_bytes:-1,maxValueSize:-1,codec:Do0(),storage:Z5.StorageType.File}}v78.kvOperationHdr="KV-Operation";var q78="$KV",y74=/^[-/=.\w]+$/,g74=/^[-/=.>*\w]+$/,h74=/^[-\w]+$/;function k78($){if($.startsWith(".")||$.endsWith(".")||!y74.test($))throw Error(`invalid key: ${$}`)}function S78($){if($.startsWith(".")||$.endsWith(".")||$.includes("..")||!g74.test($))throw Error(`invalid key: ${$}`)}function V78($){if($.startsWith(".")||$.endsWith("."))throw Error(`invalid key: ${$}`);let Z=$.split("."),X=!1;for(let Q=0;Q<Z.length;Q++)switch(Z[Q]){case"*":X=!0;break;case">":if(Q!==Z.length-1)throw Error(`invalid key: ${$}`);X=!0;break;default:}return X}function SX0($){if(!h74.test($))throw Error(`invalid bucket name: ${$}`)}class C78{js;constructor($){this.js=(0,Z5.toJetStreamClient)($)}create($,Z={}){return this.#$($,Z)}open($,Z={}){return Z.bindOnly=!0,this.#$($,Z)}#$($,Z={}){let{ok:X,min:Q}=this.js.nc.features.get(g5.Feature.JS_KV);if(!X)return Promise.reject(Error(`kv is only supported on servers ${Q} or better`));if(Z.bindOnly)return By.bind(this.js,$,Z);return By.create(this.js,$,Z)}list(){let $=(X)=>{let Y=X.streams.filter((J)=>{return J.config.name.startsWith(y5.kvPrefix)});Y.forEach((J)=>{J.config.sealed=J.config.sealed||!1,J.config.deny_delete=J.config.deny_delete||!1,J.config.deny_purge=J.config.deny_purge||!1,J.config.allow_rollup_hdrs=J.config.allow_rollup_hdrs||!1});let G="";if(Y.length)G=this.js.nc.info?.cluster??"";return Y.map((J)=>{return new VX0(J,G)})},Z=`${this.js.prefix}.STREAM.LIST`;return new Z5.ListerImpl(Z,$,this.js)}}v78.Kvm=C78;class By{js;jsm;stream;bucket;direct;codec;prefix;editPrefix;useJsPrefix;_prefixLen;constructor($,Z,X){SX0($),this.js=Z,this.jsm=X,this.bucket=$,this.prefix=q78,this.editPrefix="",this.useJsPrefix=!1,this._prefixLen=0}static async create($,Z,X={}){SX0(Z);let Q=await $.jetstreamManager(),Y=new By(Z,$,Q);return await Y.init(X),Y}static async bind($,Z,X={}){let Q=$.getOptions()?.checkAPI||X.bindOnly===!1,Y=await $.jetstreamManager(Q),G={config:{allow_direct:X.allow_direct}};SX0(Z);let J=new By(Z,$,Y);return G.config.name=X.streamName??J.bucketName(),Object.assign(J,G),J.stream=G.config.name,J.codec=X.codec||Do0(),J.direct=G.config.allow_direct??!1,J.initializePrefixes(G),J}async init($={}){let Z=Object.assign(M78(),$);this.codec=Z.codec;let X={};if(this.stream=X.name=$.streamName??this.bucketName(),X.retention=Z5.RetentionPolicy.Limits,X.max_msgs_per_subject=Z.history,Z.max_bytes)X.max_bytes=Z.max_bytes;if(X.max_msg_size=Z.maxValueSize,X.storage=Z.storage,$.placement)X.placement=$.placement;if($.republish)X.republish=$.republish;if($.description)X.description=$.description;if($.markerTTL)X.allow_msg_ttl=!0,X.subject_delete_marker_ttl=(0,g5.nanos)(Z.markerTTL);if($.mirror){let H=Object.assign({},$.mirror);if(!H.name.startsWith(y5.kvPrefix))H.name=`${y5.kvPrefix}${H.name}`;X.mirror=H,X.mirror_direct=!0}else if($.sources){let H=$.sources.map((N)=>{let U=Object.assign({},N),F=U.name.startsWith(y5.kvPrefix)?U.name.substring(y5.kvPrefix.length):U.name;if(!U.name.startsWith(y5.kvPrefix))U.name=`${y5.kvPrefix}${U.name}`;if(!N.external&&F!==this.bucket)U.subject_transforms=[{src:`$KV.${F}.>`,dest:`$KV.${this.bucket}.>`}];return U});X.sources=H,X.subjects=[this.subjectForBucket()]}else X.subjects=[this.subjectForBucket()];if($.metadata)X.metadata=$.metadata;if(typeof $.compression==="boolean")X.compression=$.compression?Z5.StoreCompression.S2:Z5.StoreCompression.None;let Q=this.js.nc,Y=Q.getServerVersion(),G=Y?(0,g5.compare)(Y,(0,g5.parseSemVer)("2.7.2"))>=0:!1;X.discard=G?Z5.DiscardPolicy.New:Z5.DiscardPolicy.Old;let{ok:J,min:K}=Q.features.get(g5.Feature.JS_ALLOW_DIRECT);if(!J&&$.allow_direct===!0){let H=Y?`${Y.major}.${Y.minor}.${Y.micro}`:"unknown";return Promise.reject(Error(`allow_direct is not available on server version ${H} - requires ${K}`))}if($.allow_direct=typeof $.allow_direct==="boolean"?$.allow_direct:J,X.allow_direct=$.allow_direct,this.direct=X.allow_direct,X.num_replicas=Z.replicas,Z.ttl)X.max_age=(0,g5.nanos)(Z.ttl);X.allow_rollup_hdrs=!0;let W;try{if(W=await this.jsm.streams.info(X.name),!W.config.allow_direct&&this.direct===!0)this.direct=!1}catch(H){if(H.message==="stream not found")W=await this.jsm.streams.add(X);else throw H}this.initializePrefixes(W)}initializePrefixes($){this._prefixLen=0,this.prefix=`$KV.${this.bucket}`,this.useJsPrefix=this.js.apiPrefix!=="$JS.API";let{mirror:Z}=$.config;if(Z){let X=Z.name;if(X.startsWith(y5.kvPrefix))X=X.substring(y5.kvPrefix.length);if(Z.external&&Z.external.api!==""){let Q=Z.name.substring(y5.kvPrefix.length);this.useJsPrefix=!1,this.prefix=`$KV.${Q}`,this.editPrefix=`${Z.external.api}.$KV.${X}`}else this.editPrefix=this.prefix}}bucketName(){return this.stream??`${y5.kvPrefix}${this.bucket}`}subjectForBucket(){return`${this.prefix}.${this.bucket}.>`}subjectForKey($,Z=!1){let X=[];if(Z){if(this.useJsPrefix)X.push(this.js.apiPrefix);if(this.editPrefix!=="")X.push(this.editPrefix);else X.push(this.prefix)}else if(this.prefix)X.push(this.prefix);return X.push($),X.join(".")}fullKeyName($){if(this.prefix!=="")return`${this.prefix}.${$}`;return`${q78}.${this.bucket}.${$}`}get prefixLen(){if(this._prefixLen===0)this._prefixLen=this.prefix.length+1;return this._prefixLen}encodeKey($){let Z=[];for(let X of $.split("."))switch(X){case">":case"*":Z.push(X);break;default:Z.push(this.codec.key.encode(X));break}return Z.join(".")}decodeKey($){let Z=[];for(let X of $.split("."))switch(X){case">":case"*":Z.push(X);break;default:Z.push(this.codec.key.decode(X));break}return Z.join(".")}validateKey=k78;validateSearchKey=S78;hasWildcards=V78;close(){return Promise.resolve()}dataLen($,Z){let X=Z?Z.get(Z5.JsHeaders.MessageSizeHdr)||"":"";if(X!=="")return parseInt(X,10);return $.length}smToEntry($){return new _78(this.bucket,this.prefixLen,$,this.codec)}jmToWatchEntry($,Z){return new x78(this.bucket,this.prefixLen,$,Z,this.codec)}async create($,Z,X){let Q;try{let G={previousSeq:0},J=await this._put($,Z,G,X);return Promise.resolve(J)}catch(G){if(Q=G,G instanceof Z5.JetStreamApiError){let J=G;if(J.code!==Z5.JetStreamApiCodes.StreamWrongLastSequence&&J.code!==Z5.JetStreamApiCodes.StreamWrongLastSequenceUnknown)return Promise.reject(G)}}let Y=0;try{let G=await this.get($);if(G?.operation==="DEL"||G?.operation==="PURGE")return Y=G!==null?G.revision:0,this._put($,Z,{previousSeq:Y},X);else return Promise.reject(Q)}catch(G){return Promise.reject(G)}}update($,Z,X,Q){if(X<=0)throw Error("version must be greater than 0");return this.put($,Z,{previousSeq:X,timeout:Q})}async _put($,Z,X={},Q){let Y=this.encodeKey($);this.validateKey(Y),Z=this.codec.value.encode(Z);let G={timeout:X?.timeout};if(X.previousSeq!==void 0){let J=(0,g5.headers)();G.headers=J,J.set(Z5.PubHeaders.ExpectedLastSubjectSequenceHdr,`${X.previousSeq}`)}if(Q)(G.headers||(0,g5.headers)()).set(Z5.PubHeaders.MessageTTL,Q);try{return(await this.js.publish(this.subjectForKey(Y,!0),Z,G)).seq}catch(J){return Promise.reject(J)}}put($,Z,X={}){return this._put($,Z,X)}async get($,Z){let X=this.encodeKey($);this.validateKey(X);let Q={last_by_subj:this.subjectForKey(X)};if(Z&&Z.revision>0)Q={seq:Z.revision};let Y=null;try{if(this.direct)Y=await this.jsm.direct.getMessage(this.bucketName(),Q);else Y=await this.jsm.streams.getMessage(this.bucketName(),Q);if(Y===null)return null;let G=this.smToEntry(Y);if(G.rawKey!==X)return null;return G}catch(G){throw G}}purge($,Z){return this._deleteOrPurge($,"PURGE",Z)}delete($,Z){return this._deleteOrPurge($,"DEL",Z)}async purgeDeletes($=1800000){let Z=[],X=await this.history({key:">"});await(async()=>{for await(let J of X)if(J.operation==="DEL"||J.operation==="PURGE")Z.push(J)})().then(),X.stop();let Q=Date.now()-$,Y=Z.map((J)=>{let K=this.subjectForKey(J.key);if(J.created.getTime()>=Q)return this.jsm.streams.purge(this.stream,{filter:K,keep:1});else return this.jsm.streams.purge(this.stream,{filter:K,keep:0})}),G=await Promise.all(Y);return G.unshift({success:!0,purged:0}),G.reduce((J,K)=>{return J.purged+=K.purged,J})}async _deleteOrPurge($,Z,X){if(!this.hasWildcards($))return this._doDeleteOrPurge($,Z,X);let Q=await this.keys($),Y=[];for await(let G of Q)if(Y.push(this._doDeleteOrPurge(G,Z)),Y.length===100)await Promise.all(Y),Y.length=0;if(Y.length>0)await Promise.all(Y)}async _doDeleteOrPurge($,Z,X){let Q=this.encodeKey($);this.validateKey(Q);let Y=(0,g5.headers)();if(Y.set(v78.kvOperationHdr,Z),Z==="PURGE"){let G=X;if(Y.set(Z5.JsHeaders.RollupHdr,Z5.JsHeaders.RollupValueSubject),typeof G?.ttl==="string"&&G.ttl!=="")Y.set(Z5.PubHeaders.MessageTTL,`${G.ttl}`)}if(X?.previousSeq)Y.set(Z5.PubHeaders.ExpectedLastSubjectSequenceHdr,`${X.previousSeq}`);await this.js.publish(this.subjectForKey(Q,!0),g5.Empty,{headers:Y})}_buildCC($,Z,X={}){let Y=(!Array.isArray($)?[$]:$).map((K)=>{let W=this.encodeKey(K);return this.validateSearchKey(K),this.fullKeyName(W)}),G=Z5.DeliverPolicy.LastPerSubject;if(Z===y5.KvWatchInclude.AllHistory)G=Z5.DeliverPolicy.All;if(Z===y5.KvWatchInclude.UpdatesOnly)G=Z5.DeliverPolicy.New;let J=void 0;if(Y.length===1)J=Y[0],Y=void 0;return Object.assign({deliver_policy:G,ack_policy:Z5.AckPolicy.None,filter_subjects:Y,filter_subject:J,flow_control:!0,idle_heartbeat:(0,g5.nanos)(5000)},X)}remove($){return this.purge($)}async history($={}){let Z=$.key??">",X={};X.headers_only=$.headers_only||!1;let Q=new g5.QueuedIteratorImpl,Y=()=>{Q.stop()},G=this._buildCC(Z,y5.KvWatchInclude.AllHistory,X),J=await this.js.consumers.getPushConsumer(this.stream,G);if(Q._data=J,(await J.info(!0)).num_pending===0)return Q.push(Y),Q;let W=await J.consume({callback:(H)=>{let N=this.jmToWatchEntry(H,!1);if(Q.push(N),Q.received++,H.info.pending===0)Q.push(Y)}});return W.closed().then(()=>{Q.push(Y)}),(async()=>{for await(let H of W.status())switch(H.type){case"heartbeat":Q.push(()=>{Q.stop()});break}})().then(),Q.iterClosed.then(()=>{W.stop()}),Q}canSetWatcherName(){let $=this.js.nc,{ok:Z}=$.features.get(g5.Feature.JS_NEW_CONSUMER_CREATE_API);return Z}async watch($={}){let Z=$.key??">",X=new g5.QueuedIteratorImpl,Q={};Q.headers_only=$.headers_only||!1;let Y=y5.KvWatchInclude.LastValue;if($.include===y5.KvWatchInclude.AllHistory)Y=y5.KvWatchInclude.AllHistory;else if($.include===y5.KvWatchInclude.UpdatesOnly)Y=y5.KvWatchInclude.UpdatesOnly;let G=$.ignoreDeletes===!0,J=this._buildCC(Z,Y,Q);if(J.name=`KV_WATCHER_${g5.nuid.next()}`,$.resumeFromRevision&&$.resumeFromRevision>0)J.deliver_policy=Z5.DeliverPolicy.StartSequence,J.opt_start_seq=$.resumeFromRevision;let K=await this.js.consumers.getPushConsumer(this.stream,J),H=(await K.info(!0)).num_pending,N=Y===y5.KvWatchInclude.UpdatesOnly||H===0;X._data=K;let U=0,F=await K.consume({callback:(w)=>{if(!N)U++,N=U>=H;let B=this.jmToWatchEntry(w,N);if(G&&B.operation==="DEL")return;X.push(B),X.received++}});return X.iterClosed.then(()=>{F.stop()}),F.closed().then(()=>{X.push(()=>{X.stop()})}),X}async keys($=">"){let Z=new g5.QueuedIteratorImpl,X=this._buildCC($,y5.KvWatchInclude.LastValue,{headers_only:!0}),Q=await this.js.consumers.getPushConsumer(this.stream,X);if((await Q.info()).num_pending===0)return Z.stop(),Z;Z._data=Q;let G=await Q.consume({callback:(J)=>{let K=J.headers?.get(v78.kvOperationHdr);if(K!=="DEL"&&K!=="PURGE"){let W=this.decodeKey(J.subject.substring(this.prefixLen));Z.push(W)}if(J.info.pending===0)G.stop()}});return(async()=>{for await(let J of G.status())switch(J.type){case"heartbeat":Z.push(()=>{Z.stop()});break}})().then(),G.closed().then(()=>{Z.push(()=>{Z.stop()})}),Z.iterClosed.then(()=>{G.stop()}),Z}purgeBucket($){return this.jsm.streams.purge(this.bucketName(),$)}destroy(){return this.jsm.streams.delete(this.bucketName())}async status(){let Z=this.js.nc.info?.cluster??"",X=this.bucketName(),Q=await this.jsm.streams.info(X);return new VX0(Q,Z)}}v78.Bucket=By;class VX0{si;cluster;constructor($,Z=""){this.si=$,this.cluster=Z}get bucket(){return this.si.config.name.startsWith(y5.kvPrefix)?this.si.config.name.substring(y5.kvPrefix.length):this.si.config.name}get values(){return this.si.state.messages}get history(){return this.si.config.max_msgs_per_subject}get ttl(){return(0,g5.millis)(this.si.config.max_age)}get markerTTL(){if(typeof this.si.config.subject_delete_marker_ttl==="number")return(0,g5.millis)(this.si.config.subject_delete_marker_ttl);return 0}get bucket_location(){return this.cluster}get backingStore(){return this.si.config.storage}get storage(){return this.si.config.storage}get replicas(){return this.si.config.num_replicas}get description(){return this.si.config.description??""}get maxBucketSize(){return this.si.config.max_bytes}get maxValueSize(){return this.si.config.max_msg_size}get max_bytes(){return this.si.config.max_bytes}get placement(){return this.si.config.placement||{cluster:"",tags:[]}}get placementCluster(){return this.si.config.placement?.cluster??""}get republish(){return this.si.config.republish??{src:"",dest:""}}get streamInfo(){return this.si}get size(){return this.si.state.bytes}get metadata(){return this.si.config.metadata??{}}get compression(){if(this.si.config.compression)return this.si.config.compression!==Z5.StoreCompression.None;return!1}}v78.KvStatusImpl=VX0;class _78{bucket;sm;prefixLen;codec;constructor($,Z,X,Q){this.bucket=$,this.prefixLen=Z,this.sm=X,this.codec=Q}get rawKey(){return this.sm.subject.substring(this.prefixLen)}get key(){return this.codec.key.decode(this.rawKey)}get value(){return this.codec.value.decode(this.sm.data)}get delta(){return 0}get created(){return this.sm.time}get revision(){return this.sm.seq}get operation(){if(this.sm.header?.has("Nats-Marker-Reason")){if(this.sm.header?.get("Nats-Marker-Reason")==="MaxAge")return"PURGE"}return this.sm.header?.get(v78.kvOperationHdr)||"PUT"}get length(){let $=this.sm.header.get(Z5.JsHeaders.MessageSizeHdr)||"";if($!=="")return parseInt($,10);return this.sm.data.length}json($){return JSON.parse(g5.TD.decode(this.value),$)}string(){return g5.TD.decode(this.value)}}class x78{bucket;sm;prefixLen;update;codec;constructor($,Z,X,Q,Y){this.bucket=$,this.prefixLen=Z,this.sm=X,this.update=Q,this.codec=Y}get rawKey(){return this.sm.subject.substring(this.prefixLen)}get key(){return this.codec.key.decode(this.rawKey)}get value(){return this.codec.value.decode(this.sm.data)}get created(){return new Date((0,g5.millis)(this.sm.info.timestampNanos))}get revision(){return this.sm.seq}get operation(){if(this.sm.headers?.has("Nats-Marker-Reason")){if(this.sm.headers?.get("Nats-Marker-Reason")==="MaxAge")return"PURGE"}return this.sm.headers?.get(v78.kvOperationHdr)||"PUT"}get delta(){return this.sm.info.pending}get length(){let $=this.sm.headers?.get(Z5.JsHeaders.MessageSizeHdr)||"";if($!=="")return parseInt($,10);return this.sm.data.length}get isUpdate(){return this.update}json($){return JSON.parse(g5.TD.decode(this.value),$)}string(){return g5.TD.decode(this.value)}}});var Eo0=_((CJ)=>{Object.defineProperty(CJ,"__esModule",{value:!0});CJ.validateKey=CJ.validateBucket=CJ.NoopKvCodecs=CJ.Kvm=CJ.defaultBucketOpts=CJ.Bucket=CJ.Base64KeyCodec=CJ.KvWatchInclude=CJ.kvPrefix=void 0;var y78=Lo0();Object.defineProperty(CJ,"kvPrefix",{enumerable:!0,get:function(){return y78.kvPrefix}});Object.defineProperty(CJ,"KvWatchInclude",{enumerable:!0,get:function(){return y78.KvWatchInclude}});var xE=b78();Object.defineProperty(CJ,"Base64KeyCodec",{enumerable:!0,get:function(){return xE.Base64KeyCodec}});Object.defineProperty(CJ,"Bucket",{enumerable:!0,get:function(){return xE.Bucket}});Object.defineProperty(CJ,"defaultBucketOpts",{enumerable:!0,get:function(){return xE.defaultBucketOpts}});Object.defineProperty(CJ,"Kvm",{enumerable:!0,get:function(){return xE.Kvm}});Object.defineProperty(CJ,"NoopKvCodecs",{enumerable:!0,get:function(){return xE.NoopKvCodecs}});Object.defineProperty(CJ,"validateBucket",{enumerable:!0,get:function(){return xE.validateBucket}});Object.defineProperty(CJ,"validateKey",{enumerable:!0,get:function(){return xE.validateKey}})});var zo0=_((ew)=>{Object.defineProperty(ew,"__esModule",{value:!0});ew.NoopKvCodecs=ew.Kvm=ew.defaultBucketOpts=ew.Bucket=ew.Base64KeyCodec=ew.KvWatchInclude=void 0;var r74=Eo0();Object.defineProperty(ew,"KvWatchInclude",{enumerable:!0,get:function(){return r74.KvWatchInclude}});var In=Eo0();Object.defineProperty(ew,"Base64KeyCodec",{enumerable:!0,get:function(){return In.Base64KeyCodec}});Object.defineProperty(ew,"Bucket",{enumerable:!0,get:function(){return In.Bucket}});Object.defineProperty(ew,"defaultBucketOpts",{enumerable:!0,get:function(){return In.defaultBucketOpts}});Object.defineProperty(ew,"Kvm",{enumerable:!0,get:function(){return In.Kvm}});Object.defineProperty(ew,"NoopKvCodecs",{enumerable:!0,get:function(){return In.NoopKvCodecs}})});function CX0(){let $=new TextEncoder,Z=new TextDecoder;return{encode:(X)=>$.encode(JSON.stringify(X)),decode:(X)=>JSON.parse(Z.decode(X))}}class Po0{options;kv=null;codec=CX0();constructor($){this.options=$}async init(){let $=this.options.getJetStream();if(!$)return;this.kv=await new h78.Kvm($).create(s74,{storage:g78.StorageType.Memory})}async get($,Z){if(!this.kv)return null;try{let X=await this.kv.get(`${$}.${Z}`);if(!X?.value?.length)return null;if(X.operation==="DEL"||X.operation==="PURGE")return null;return this.codec.decode(X.value)}catch{return null}}async set($,Z,X){if(!this.kv)return;try{await this.kv.put(`${$}.${Z}`,this.codec.encode(X))}catch{}}async invalidate($){if(!this.kv)return;await Promise.all(["tools","resources","prompts"].map(async(X)=>{try{await this.kv.delete(`${X}.${$}`)}catch{}}))}teardown(){this.kv=null}}function e74($,Z,X){if(X<=0)return!0;if($===void 0)return!0;return Z-$>=X}function _X0($){return $ instanceof S1&&$.code===b1.MethodNotFound}function $X4($){return $ instanceof S1&&$.code===-32000&&/connection closed/i.test($.message)}async function ZB($,Z,X,Q,Y,G=0){if(!Q)try{return await X()}catch(H){if(_X0(H))return[];return qn.add(1,{type:$,outcome:"error",stage:"no_cache"}),null}let J=`${$}:${Z}`,K=await Q.get($,Z);if(K===null)try{let H=await X();return Q.set($,Z,H).catch(()=>{}),jo0.set(J,Date.now()),qn.add(1,{type:$,outcome:"miss",stage:"miss"}),H}catch(H){if(_X0(H))return Q.set($,Z,[]).catch(()=>{}),[];return qn.add(1,{type:$,outcome:"error",stage:"miss"}),null}if(qn.add(1,{type:$,outcome:"hit",stage:"hit"}),e74(jo0.get(J),Date.now(),G)&&!xX0.has(J)){xX0.add(J),jo0.set(J,Date.now());let H=X().then((N)=>Q.set($,Z,N)).catch((N)=>{if(_X0(N)||$X4(N)){if(_X0(N))Q.set($,Z,[]).catch(()=>{});return}qn.add(1,{type:$,outcome:"error",stage:"revalidation"})}).finally(()=>xX0.delete(J));Y?.(H)}return K}function Ao0($){u78=$}function G9(){return u78}var g78,h78,qn,s74="DECOCMS_MCP_LISTS",xX0,jo0,$B=30000,u78=null;var pY=O(()=>{Y9();R5();g78=S(rD(),1),h78=S(zo0(),1),qn=D6.createCounter("mcp_list_cache.fetches",{description:"MCP list cache fetch outcomes (hit, miss, error)",unit:"{fetches}"});xX0=new Set;D6.createObservableGauge("mcp_list_cache.pending_revalidations",{description:"In-flight background MCP list revalidations on this pod",unit:"{revalidations}"}).addCallback(($)=>$.observe(xX0.size));jo0=new Map});var Mn=($,Z)=>{if(Z===null||Z===void 0)return;let X=$.replace(/\[(\w+)\]/g,".$1").split(".").filter(Boolean),Q=Z;for(let Y of X){if(Q===null||Q===void 0||typeof Q!=="object")return;Q=Q[Y]}return Q};function vX0($){let Z=$.split("::");if(Z.length!==2||!Z[0]||!Z[1])throw Error(`Invalid scope format: ${$}. Expected format: "KEY::SCOPE"`);return Z}function ZX4($){try{return vX0($)}catch{return null}}function XX4($){if(typeof $==="object"&&$!==null&&"value"in $){let Z=$.value;if(typeof Z==="string")return Z}return null}function To0($,Z){let X={};if(!$||!Z)return X;for(let Q of Z){if(Q==="*"){X["*"]=["*"];continue}let Y=ZX4(Q);if(!Y)continue;let[G,J]=Y,K=Mn(G,$),W=XX4(K);if(W){if(!X[W])X[W]=[];X[W].push(J)}}return X}function c78($,Z){let X=To0($,Z);return new Set(Object.keys(X).filter((Q)=>Q!=="*"))}var Ro0=()=>{};async function l78($){if(!$.refreshToken)return{success:!1,permanent:!1,error:"No refresh token available"};if(!$.tokenEndpoint)return{success:!1,permanent:!1,error:"No token endpoint available"};if(!$.clientId)return{success:!1,permanent:!1,error:"No client ID available"};try{let Z=new URLSearchParams({grant_type:"refresh_token",refresh_token:$.refreshToken,client_id:$.clientId});if($.clientSecret)Z.set("client_secret",$.clientSecret);if($.scope)Z.set("scope",$.scope);let X=await fetch($.tokenEndpoint,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:Z.toString()});if(!X.ok){let Y=await X.text(),G,J;try{let W=JSON.parse(Y);G=W.error,J=W.error_description}catch{}let K=X.status===400&&!!G&&QX4.has(G);return(K?console.error:console.warn)("[TokenRefresh] refresh failed",{connectionId:$.connectionId,tokenEndpoint:$.tokenEndpoint,status:X.status,errorCode:G,errorDescription:J,permanent:K}),{success:!1,permanent:K,status:X.status,errorCode:G,error:J||G||`Token refresh failed: ${X.status}`}}let Q=await X.json();return{success:!0,accessToken:Q.access_token,refreshToken:Q.refresh_token||$.refreshToken,expiresIn:Q.expires_in,scope:Q.scope}}catch(Z){return console.warn("[TokenRefresh] network/parse error",{connectionId:$.connectionId,tokenEndpoint:$.tokenEndpoint,message:Z instanceof Error?Z.message:String(Z)}),{success:!1,permanent:!1,error:Z instanceof Error?Z.message:"Token refresh failed"}}}var QX4;var d78=O(()=>{QX4=new Set(["invalid_grant","bad_refresh_token"])});import{createHash as YX4,randomBytes as GX4,timingSafeEqual as Nw5}from"crypto";function KX4($){return $.toString("base64").replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/g,"")}function qo0($){return YX4("sha256").update($).digest("hex")}function n78($){let Z=Io0.length+1,X=Z+i78;if(!$.startsWith(`${Io0}_`)||$.length<=X+1||$[X]!=="_")return null;let Q=$.slice(Z,X),Y=$.slice(X+1);if(!m78.test(Q)||!m78.test(Y))return null;return Q}function p78(){let $=KX4(GX4(JX4)),Z=$.slice(0,i78),X=`${Io0}_${Z}_${$}`;return{plaintext:X,prefix:Z,hash:qo0(X)}}var Io0="stv",JX4=32,i78=12,m78;var t78=O(()=>{m78=/^[A-Za-z0-9_-]+$/});function o78($){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 Mo0{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=p78(),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:$4("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:o78(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?o78(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=n78($);if(!Z)return null;let X=qo0($),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:$4("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 fX0="credential:access-token:read",bX0="credential:configuration:read";var yX0=O(()=>{dX();t78()});function vE($){let Z=String($??"");if(Z&&!Z.includes("T"))return Z.replace(" ","T")+"Z";return Z}function k8($){return $.replace(/\0/g,"").replace(/\\/g,"\\\\").replace(/'/g,"''")}function i6($){let Z=Number($??0);return Number.isFinite(Z)?Z:0}function HX4($){if(!WX4.has($))throw Error(`Invalid groupByColumn: ${$}`);return $}function ko0($){if(!NX4.test($))throw Error(`Invalid JSONPath: ${$}`);if($.startsWith("$."))return $;if($.startsWith("."))return`$${$}`;return`$.${$}`}function _o0($){return $.replace(/^\$\./,"").split(".").map((X)=>`'${k8(X)}'`).join(", ")}function wX4($){let Z=UX4.exec($);if(!Z||!Z[1]||!Z[2])throw Error(`Invalid interval: ${$}`);let X=parseInt(Z[1],10),Q=Z[2],Y=FX4[Q];if(X<1||X>Y)throw Error(`Invalid interval amount: ${X}${Q} (max ${Y}${Q})`);return{amount:X,unit:Q}}function XB($,Z,X="timestamp"){let{amount:Q,unit:Y}=wX4($),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 kn($,Z,X){if(X==="duckdb")return`json_extract_string(${$}, '${Z}')`;let Q=_o0(Z);return`JSONExtractString(${$}, ${Q})`}function BX4($,Z,X){if(X==="duckdb")return`CAST(json_extract_string(${$}, '${Z}') AS DOUBLE)`;let Q=_o0(Z);return`JSONExtractFloat(${$}, ${Q})`}function r78($,Z,X){if(X==="duckdb")return`TRY_CAST(json_extract_string(${$}, '${Z}') AS DOUBLE)`;let Q=_o0(Z);return`toFloat64OrZero(JSONExtractString(${$}, ${Q}))`}function So0($){if($===null||$===void 0)return{};if(typeof $==="object")return $;let Z=String($);try{return JSON.parse(Z)}catch{return{_decocms_truncated:Z}}}function Vo0($){return{id:String($.id??""),organizationId:String($.organization_id??""),connectionId:String($.connection_id??""),toolName:String($.tool_name??""),input:So0($.input),output:So0($.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?So0($.properties):null}}function $X8($,Z){let X=[];if($.properties)for(let[Q,Y]of Object.entries($.properties)){let G=k8(Q),J=k8(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=k8(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=k8(Q),J=k8(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=k8(Q),J=k8(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 s78($,Z){let X=[];if(xJ(X,Z?.startDate,$),!Z)return X;if(Z.connectionIds?.length){let Q=Z.connectionIds.map((Y)=>`'${k8(Y)}'`).join(",");X.push(`connection_id IN (${Q})`)}if(Z.toolNames?.length){let Q=Z.toolNames.map((Y)=>`'${k8(Y)}'`).join(",");X.push(`tool_name IN (${Q})`)}if(Z.virtualMcpIds?.length){let Q=Z.virtualMcpIds.map((Y)=>`'${k8(Y)}'`).join(",");X.push(`virtual_mcp_id IN (${Q})`)}if(Z.endDate)X.push(_J(Z.endDate,$));if(Z.propertyFilters)X.push(...$X8(Z.propertyFilters,$));return X}function e78($,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 _J($,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 xJ($,Z,X,Q="timestamp"){if(Z)$.push(e78(Z,X,Q));else if(X==="clickhouse")$.push(e78(new Date(Date.now()-OX4),X,Q))}class xo0{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 = '${k8($.organizationId)}'`];if($.connectionId)X.push(`connection_id = '${k8($.connectionId)}'`);if($.excludeConnectionIds?.length){let F=$.excludeConnectionIds.map((w)=>`'${k8(w)}'`).join(",");X.push(`connection_id NOT IN (${F})`)}if($.virtualMcpId)X.push(`virtual_mcp_id = '${k8($.virtualMcpId)}'`);if($.toolName)X.push(`tool_name = '${k8($.toolName)}'`);if($.isError!==void 0)X.push(`is_error = ${$.isError?1:0}`);if(xJ(X,$.startDate,this.dialect),$.endDate)X.push(_J($.endDate,this.dialect));if($.propertyFilters)X.push(...$X8($.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 F=`SELECT ${a78}, count(*) OVER () AS _total FROM ${Z} WHERE ${J} ORDER BY timestamp DESC LIMIT ${Y} OFFSET ${G}`,w=await this.engine.query(F);if(w.length===0)return{logs:[],total:0};let B=Number(w[0]._total??0);return{logs:w.map(Vo0),total:B}}let K=`SELECT count(*) AS total FROM ${Z} WHERE ${J}`,W=`SELECT ${a78} FROM ${Z} WHERE ${J} ORDER BY timestamp DESC LIMIT ${Y} OFFSET ${G}`,[H,N]=await Promise.all([this.engine.query(K),this.engine.query(W)]),U=Number(H[0]?.total??0);return{logs:N.map(Vo0),total:U}}async getById($,Z){if(!$||!Z)return null;let Q=`SELECT * FROM ${this.sourceFactory($)} WHERE organization_id = '${k8($)}' AND id = '${k8(Z)}' LIMIT 1`,Y=await this.engine.query(Q);if(Y.length===0)return null;return Vo0(Y[0])}async getStats($){if(!$.organizationId)throw Error("organizationId is required");let Z=this.sourceFactory($.organizationId,{startDate:$.startDate,endDate:$.endDate}),X=[`organization_id = '${k8($.organizationId)}'`];if(xJ(X,$.startDate,this.dialect),$.endDate)X.push(_J($.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 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=XB($.interval,X,"timestamp"),J=(E)=>`coalesce(${r78("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})`,N=[`organization_id = '${k8($.organizationId)}'`,`connection_id = '${k8($.connectionId)}'`];if(xJ(N,$.startDate,X),$.endDate)N.push(_J($.endDate,X));if($.userIds?.length){let E=$.userIds.slice(0,100).map((z)=>`'${k8(z)}'`).join(",");N.push(`user_id IN (${E})`)}let U=N.join(" AND "),F=Math.min(Math.max(1,Math.floor($.topN??5)),20),w=`${K} AS calls,
|
|
1927
1927
|
${W} AS errors,
|
|
1928
1928
|
avg(duration_ms) AS avg,
|
|
1929
1929
|
sum(${J("input_tokens")}) AS in_tok,
|