decocms 4.164.2 → 4.164.3
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-BfAWdd1s.js → AlertCircle-BrCKa_1S.js} +1 -1
- package/dist/client/assets/{AreaChart-CJnyJWgM.js → AreaChart-HdMqEjSb.js} +1 -1
- package/dist/client/assets/{ArrowUp-BIoffiYm.js → ArrowUp-B55yy-Iu.js} +1 -1
- package/dist/client/assets/{ArrowUpRight-C2dG_b3O.js → ArrowUpRight-CxQ-4OFb.js} +1 -1
- package/dist/client/assets/{Check-lMDR-DuJ.js → Check-slTbmrfk.js} +1 -1
- package/dist/client/assets/{CheckCircle-Cgx4FXov.js → CheckCircle-Ca_60oGP.js} +1 -1
- package/dist/client/assets/{ChevronDown-DjmnrKyu.js → ChevronDown-OE6pruf5.js} +1 -1
- package/dist/client/assets/{ChevronRight-DUwhBjwb.js → ChevronRight-vApPNvnB.js} +1 -1
- package/dist/client/assets/{ChevronUp-BgQfnJZU.js → ChevronUp-CY1qeZ56.js} +1 -1
- package/dist/client/assets/{Copy01-BpnhfF8n.js → Copy01-D0lIolzz.js} +1 -1
- package/dist/client/assets/{CpuChip01-BsLXJTEr.js → CpuChip01-B8yajlLx.js} +1 -1
- package/dist/client/assets/{DotsVertical-DgToKQaq.js → DotsVertical-JmvtLG9l.js} +1 -1
- package/dist/client/assets/{Eye-KFh5P2BI.js → Eye-IjWBQ0bV.js} +1 -1
- package/dist/client/assets/{FilterLines-B2bJHtBK.js → FilterLines-9Irkf-h4.js} +1 -1
- package/dist/client/assets/{HardDrive-Y3kR_V0O.js → HardDrive-wJf40woN.js} +1 -1
- package/dist/client/assets/{Key01-BMth40jC.js → Key01-COu1DVre.js} +1 -1
- package/dist/client/assets/{LayoutLeft-CgDwsh-m.js → LayoutLeft-BoyuJJ9H.js} +1 -1
- package/dist/client/assets/{LinkExternal01-RofV7vEq.js → LinkExternal01-CK7r4iZU.js} +1 -1
- package/dist/client/assets/{LogOut01-s13aUx8k.js → LogOut01-UXnIoS5z.js} +1 -1
- package/dist/client/assets/{Monitor01-u6WYnmdo.js → Monitor01-4k4yr01O.js} +1 -1
- package/dist/client/assets/{Palette-DEAPUfW-.js → Palette-ChYHhwg8.js} +1 -1
- package/dist/client/assets/{Play-Bb2lQ-RG.js → Play-BTAg1Jut.js} +1 -1
- package/dist/client/assets/{Plus-BAkoCnkU.js → Plus-4ltmVsjR.js} +1 -1
- package/dist/client/assets/{SearchLg-CLeiiyFG.js → SearchLg-COreqxeT.js} +1 -1
- package/dist/client/assets/{SearchMd-CBCwU0Qy.js → SearchMd-DJmzNNnu.js} +1 -1
- package/dist/client/assets/{Settings02-D3qtZA1F.js → Settings02-TMToTnKM.js} +1 -1
- package/dist/client/assets/{Shield01-DliQ-vxN.js → Shield01-CslDKlES.js} +1 -1
- package/dist/client/assets/{Star01-BZv_clu-.js → Star01-DbPWenwQ.js} +1 -1
- package/dist/client/assets/{Stars01-b_-N_rSk.js → Stars01-BljGS1uJ.js} +1 -1
- package/dist/client/assets/{Stars02-_iMqTyA8.js → Stars02-DTiN2W8_.js} +1 -1
- package/dist/client/assets/{Sun-BfvHejHj.js → Sun-Dx81-v79.js} +1 -1
- package/dist/client/assets/{SwitchHorizontal01-Dl2ECbAu.js → SwitchHorizontal01-BAIDCaTC.js} +1 -1
- package/dist/client/assets/{Tool01-CbhbBxli.js → Tool01-DLcTFCtZ.js} +1 -1
- package/dist/client/assets/{Tool02-BZFCku19.js → Tool02-BAvK24mp.js} +1 -1
- package/dist/client/assets/{Trash01-BZvXAAOY.js → Trash01-vinVevib.js} +1 -1
- package/dist/client/assets/{TrendUp01--q_kHviQ.js → TrendUp01-D4MK6OtJ.js} +1 -1
- package/dist/client/assets/{Upload01-BbnwoP-3.js → Upload01-B3i78CO0.js} +1 -1
- package/dist/client/assets/{User01-f_A44Ut_.js → User01-ClkQP9k6.js} +1 -1
- package/dist/client/assets/{Users01-ld_XEHkT.js → Users01-BeOKna-6.js} +1 -1
- package/dist/client/assets/{Users03-CNX-W7XZ.js → Users03-Di7lajI6.js} +1 -1
- package/dist/client/assets/{X-yBjZ03-0.js → X-g8Ct9LUH.js} +1 -1
- package/dist/client/assets/{XCircle-JS71sncr.js → XCircle-qo7rG2V5.js} +1 -1
- package/dist/client/assets/{XClose-DYGIb6Bc.js → XClose-M-2xXjEy.js} +1 -1
- package/dist/client/assets/{Zap-n8rE3zZY.js → Zap-Dff54E1-.js} +1 -1
- package/dist/client/assets/{ZapSquare-DsnNLxbh.js → ZapSquare-D9eUP097.js} +1 -1
- package/dist/client/assets/{access-gate-mRYW95HJ.js → access-gate-Br10F4wg.js} +1 -1
- package/dist/client/assets/{add-section-modal-D11PEXIV.js → add-section-modal-DlBChPSs.js} +1 -1
- package/dist/client/assets/{agent-icon-Bh7RQQI-.js → agent-icon-XXLPGnJH.js} +1 -1
- package/dist/client/assets/{agents-list-ByrNatwy.js → agents-list-BwTBEIZj.js} +1 -1
- package/dist/client/assets/{ai-providers-BlbQP_BB.js → ai-providers-D6DSgvsi.js} +1 -1
- package/dist/client/assets/{alert-Cvt8uCkX.js → alert-DqawXGJK.js} +1 -1
- package/dist/client/assets/{alert-dialog-CqFBCUbe.js → alert-dialog-ClSFfgFj.js} +1 -1
- package/dist/client/assets/{app-editor-eFij54Rl.js → app-editor-oI3oe0TL.js} +1 -1
- package/dist/client/assets/{auth-B19sSCAr.js → auth-Cu2mTaxQ.js} +1 -1
- package/dist/client/assets/{auth-catchall-BlQWgrAY.js → auth-catchall-oM8l0jXe.js} +1 -1
- package/dist/client/assets/{auth-entry-DWzeZ_ka.js → auth-entry-3AmFnckH.js} +1 -1
- package/dist/client/assets/{auth-split-layout-BAcMCZZQ.js → auth-split-layout-fc8CHiCY.js} +1 -1
- package/dist/client/assets/{authenticate-and-persist-oauth-Cj1MT39L.js → authenticate-and-persist-oauth-DZ9EEAxZ.js} +1 -1
- package/dist/client/assets/{automation-list-row-DhdQVNeX.js → automation-list-row-CfJMEElH.js} +1 -1
- package/dist/client/assets/{automation-runs-CgFXb4kL.js → automation-runs-D2BrE387.js} +1 -1
- package/dist/client/assets/{automations-DXEi-4kz.js → automations-BzLvnjlR.js} +1 -1
- package/dist/client/assets/{avatar-CFgUWzrE.js → avatar-_4_IFBa5.js} +1 -1
- package/dist/client/assets/{badge-CE54giAC.js → badge-BI-TEhh1.js} +1 -1
- package/dist/client/assets/{block-document-C2SOomTm.js → block-document-D99k_GoF.js} +1 -1
- package/dist/client/assets/{brand-context-anjuTq0z.js → brand-context-C1DlvwKD.js} +1 -1
- package/dist/client/assets/{buckets-DcIctQCB.js → buckets-BWbWEoyo.js} +1 -1
- package/dist/client/assets/{bulk-category-panel-DbqTrWWe.js → bulk-category-panel-BxtbI4vo.js} +1 -1
- package/dist/client/assets/{calendar-BEGpB9t3.js → calendar-Dcgxa1TN.js} +1 -1
- package/dist/client/assets/{capability-load-error-jWxO8TQ4.js → capability-load-error-BSPlWAbm.js} +1 -1
- package/dist/client/assets/{card-L9BbYfI6.js → card-CO-s1Ctk.js} +1 -1
- package/dist/client/assets/{category-editor-HE_BXOwA.js → category-editor-oZNCaYBH.js} +1 -1
- package/dist/client/assets/{chat-context-M6v_Bq_E.js → chat-context-C-FeM_iY.js} +1 -1
- package/dist/client/assets/{checkbox-DONW1DHr.js → checkbox-BVNTji4e.js} +1 -1
- package/dist/client/assets/{cli-auth-success-Bx8vCVSr.js → cli-auth-success-a6TjT0HM.js} +1 -1
- package/dist/client/assets/{collection-detail-95o9kGLk.js → collection-detail-BR-z8lRX.js} +1 -1
- package/dist/client/assets/{collection-display-button-DeaRRYiq.js → collection-display-button-BlLynq9E.js} +1 -1
- package/dist/client/assets/{collection-search-BBDqQhrv.js → collection-search-BRjXi2fq.js} +1 -1
- package/dist/client/assets/{collection-table-wrapper-B71_NB6R.js → collection-table-wrapper-Cuo8OOSz.js} +1 -1
- package/dist/client/assets/{collection-tabs-CWw_mUA4.js → collection-tabs-ZVGuDvGJ.js} +1 -1
- package/dist/client/assets/{command-CT9J2ri1.js → command-qEv_yu8J.js} +1 -1
- package/dist/client/assets/{commerce-onboarding-DwOWuvPJ.js → commerce-onboarding-Dx9ZMm3w.js} +1 -1
- package/dist/client/assets/{companions-core-CEgpdXdA.js → companions-core-rnM7Nldy.js} +1 -1
- package/dist/client/assets/{connect-BYNLHaYL.js → connect-Cj3gi92U.js} +1 -1
- package/dist/client/assets/{connection-card-obFBC805.js → connection-card-Bch_diRw.js} +1 -1
- package/dist/client/assets/{connection-detail-COd2IeEn.js → connection-detail-bojAaTeL.js} +1 -1
- package/dist/client/assets/{connection-form-helpers-E9Xs5chD.js → connection-form-helpers-B1xTy1d1.js} +1 -1
- package/dist/client/assets/{connection-CrllO5ik.js → connection-j9t_awY1.js} +1 -1
- package/dist/client/assets/{connections-3_hyqh98.js → connections-D11gB0Ul.js} +1 -1
- package/dist/client/assets/{decopilot-sse-pool-C2HL4pNV.js → decopilot-sse-pool-CG1ciWhn.js} +1 -1
- package/dist/client/assets/{dialog-d_oLAt_T.js → dialog-BZWmEmnc.js} +1 -1
- package/dist/client/assets/{domain-settings-BjgLr3_1.js → domain-settings-m01eg_Ze.js} +1 -1
- package/dist/client/assets/{drawer-Bms59w4g.js → drawer-D4yURQYD.js} +1 -1
- package/dist/client/assets/{dropdown-menu-SI704ShB.js → dropdown-menu-BAIhfE3G.js} +1 -1
- package/dist/client/assets/{empty-state-D5_vGLSN.js → empty-state-H14vpo8M.js} +1 -1
- package/dist/client/assets/{extract-connection-data-DyOK3GJJ.js → extract-connection-data-CvjcAK4w.js} +1 -1
- package/dist/client/assets/{file-explorer-ch6FswHo.js → file-explorer-Cp0nEgNp.js} +1 -1
- package/dist/client/assets/{form-B3BeIXGB.js → form-B24bo8HF.js} +1 -1
- package/dist/client/assets/{general-DGmkNegp.js → general-CBCEkKqJ.js} +1 -1
- package/dist/client/assets/{github-repo-picker-DQSmgwpQ.js → github-repo-picker-BN5fiEeJ.js} +1 -1
- package/dist/client/assets/{hooks-SnhEHqqH.js → hooks-Bt9Ya1aR.js} +1 -1
- package/dist/client/assets/{index-HIbch74d.js → index-B7TfJ3Fw.js} +1 -1
- package/dist/client/assets/{index-ZXPMZyqm.js → index-CEFCbQcZ.js} +1 -1
- package/dist/client/assets/{index-CZYdmXdz.js → index-Cjnyj2GY.js} +5 -5
- package/dist/client/assets/{index-BAL4Jdyy.js → index-CkROdOL6.js} +1 -1
- package/dist/client/assets/{index-CHt4UOmg.js → index-ClaSdpI1.js} +1 -1
- package/dist/client/assets/{index-BB49BvuU.js → index-De8HYGIg.js} +1 -1
- package/dist/client/assets/{index-CL_EU56Z.js → index-DiWMv8kv.js} +1 -1
- package/dist/client/assets/{index-bZOlkM0D.js → index-DprCqbgS.js} +1 -1
- package/dist/client/assets/{index-Vm_odaf_.js → index-DzdiTVyo.js} +1 -1
- package/dist/client/assets/{index-BVTf3F1q.js → index-NTTxJNl2.js} +3 -3
- package/dist/client/assets/{index-C92UMw5P.js → index-jkXahzfR.js} +3 -3
- package/dist/client/assets/{index-redirect-BF_984kn.js → index-redirect-t7y6hDNc.js} +1 -1
- package/dist/client/assets/{input-s5nILNvj.js → input-BE8G9zWR.js} +1 -1
- package/dist/client/assets/{integration-icon--Zj9DYXe.js → integration-icon-Bzl_jiKw.js} +1 -1
- package/dist/client/assets/{invite-member-dialog-BBnF4hyO.js → invite-member-dialog-Di6ykb0V.js} +1 -1
- package/dist/client/assets/{label-C3MhwnKJ.js → label-CkBtS0XG.js} +1 -1
- package/dist/client/assets/{layout-BdYVtoZ3.js → layout-Cegh3T8-.js} +1 -1
- package/dist/client/assets/{login-D_kHiTiB.js → login-Bkpwy-_-.js} +1 -1
- package/dist/client/assets/{mcp-oauth-BWOx7U-S.js → mcp-oauth-IwqLMhF_.js} +1 -1
- package/dist/client/assets/{members-CztZKoIW.js → members-dwqfN9fg.js} +1 -1
- package/dist/client/assets/{monaco-editor-CM2Q4xfM.js → monaco-editor-BXS1pDbC.js} +1 -1
- package/dist/client/assets/{monitoring-stats-row-CAYStNTu.js → monitoring-stats-row-Y2txTiHq.js} +1 -1
- package/dist/client/assets/{multi-select-CDqLj0Ab.js → multi-select-CWSIqk_J.js} +1 -1
- package/dist/client/assets/{oauth-callback-ai-provider-ByKeOgPi.js → oauth-callback-ai-provider-CwTxky_i.js} +1 -1
- package/dist/client/assets/{oauth-callback-D_pTrl7U.js → oauth-callback-hyMcZ3_E.js} +1 -1
- package/dist/client/assets/{onboarding-CQvyUSEE.js → onboarding-CQJfpddk.js} +1 -1
- package/dist/client/assets/{org-layout-CY6JBqvL.js → org-layout-DnYynauA.js} +1 -1
- package/dist/client/assets/{organization-choice-XMMQvBy6.js → organization-choice-D-ydKTIR.js} +1 -1
- package/dist/client/assets/{orgs-BKo_F5Yp.js → orgs-HKEgkbTM.js} +1 -1
- package/dist/client/assets/{page-seo-form-D5nELH1f.js → page-seo-form-CRY_YgMP.js} +1 -1
- package/dist/client/assets/{popover-Ds15-H_r.js → popover-A5gOMvg8.js} +1 -1
- package/dist/client/assets/{post-editor-DwtF7owi.js → post-editor-B74yqHTm.js} +1 -1
- package/dist/client/assets/{primitives-BCU9P-Zi.js → primitives-BQc0toCn.js} +1 -1
- package/dist/client/assets/{profile-B27b46oc.js → profile-B_wGq81Q.js} +1 -1
- package/dist/client/assets/project-app-view-CDFntae4.js +1 -0
- package/dist/client/assets/record-editor-BQZBqHhV.js +1 -0
- package/dist/client/assets/{redirect-editor-5GxIbQoz.js → redirect-editor-BqXjCXyl.js} +1 -1
- package/dist/client/assets/registry-CHZ0nkoh.js +2 -0
- package/dist/client/assets/{registry-layout-d3IA7BOu.js → registry-layout-Bwyg541c.js} +1 -1
- package/dist/client/assets/{reports-C2Z_OOMD.js → reports-C7rJZ0zb.js} +1 -1
- package/dist/client/assets/{require-capability-CYACHSWA.js → require-capability-CMgDJbpX.js} +1 -1
- package/dist/client/assets/{required-auth-layout-B9j7RrGd.js → required-auth-layout-CoBxcbmt.js} +1 -1
- package/dist/client/assets/{reset-password-CmmVm6OV.js → reset-password-BfGavreo.js} +1 -1
- package/dist/client/assets/{roles-ecZgmCNW.js → roles-DvLTEqLu.js} +1 -1
- package/dist/client/assets/{search-input-DizUfD5h.js → search-input-CXhD3o93.js} +1 -1
- package/dist/client/assets/{secrets-D2njIHeS.js → secrets-Cj9AmUrK.js} +1 -1
- package/dist/client/assets/{sections-editor-DfAVq2fv.js → sections-editor-q2fy-e46.js} +1 -1
- package/dist/client/assets/{select-DpytsLU9.js → select-C9y4axAn.js} +1 -1
- package/dist/client/assets/{select-model-Dh0na2DG.js → select-model-3a3WP-mg.js} +1 -1
- package/dist/client/assets/{self-tool-result-DuTLCSb_.js → self-tool-result-4krcRvxm.js} +1 -1
- package/dist/client/assets/{seo-editor-Ds99xmrg.js → seo-editor-DjC8Pfog.js} +1 -1
- package/dist/client/assets/{settings-layout-Yx3WZOx3.js → settings-layout-DI2UkHDY.js} +1 -1
- package/dist/client/assets/{settings-section-C4dDsMlK.js → settings-section-OIbtM6Ap.js} +1 -1
- package/dist/client/assets/{shell-controls-k_bpeBa7.js → shell-controls-DyBEMWQM.js} +1 -1
- package/dist/client/assets/{shell-layout-BojIGYdH.js → shell-layout-B_F27NRR.js} +1 -1
- package/dist/client/assets/{sidebar-CEELrWph.js → sidebar-DIU3v7Vs.js} +1 -1
- package/dist/client/assets/{skeleton-cps4cBpF.js → skeleton-BwI4FkrC.js} +1 -1
- package/dist/client/assets/{spinner-6oA_T5wT.js → spinner-DaCwqyK7.js} +1 -1
- package/dist/client/assets/{sso-fNURnQaE.js → sso-B9SwbTR4.js} +1 -1
- package/dist/client/assets/{store-CGIhi9G2.js → store-DG-LjM3E.js} +1 -1
- package/dist/client/assets/store-registry-wDZJSw4M.js +2 -0
- package/dist/client/assets/{studio-tools-CpKmajV3.js → studio-tools-B3L9CCF2.js} +1 -1
- package/dist/client/assets/{switch-B6ietJOq.js → switch-WjSoHU5L.js} +1 -1
- package/dist/client/assets/{tab-id-CjesO2jF.js → tab-id-D2JuLUam.js} +1 -1
- package/dist/client/assets/{table-AyyLUMMR.js → table-B6X-wYue.js} +1 -1
- package/dist/client/assets/{tabs-mzlvM9xo.js → tabs-vK7sP7Tk.js} +1 -1
- package/dist/client/assets/{textarea-BVaycnZf.js → textarea-BixfMFbI.js} +1 -1
- package/dist/client/assets/{toggle-group-Bi2eYcDw.js → toggle-group-sdzcGZqt.js} +1 -1
- package/dist/client/assets/{toolbar-L_bEBAub.js → toolbar-C7tp7A0W.js} +1 -1
- package/dist/client/assets/{tooltip-_tbY2Asg.js → tooltip-jK-__CYr.js} +1 -1
- package/dist/client/assets/{use-ai-providers-B_0yGWLR.js → use-ai-providers-iCccdGc1.js} +1 -1
- package/dist/client/assets/{use-automations-BeYCf3le.js → use-automations-BUr6oN5W.js} +1 -1
- package/dist/client/assets/{use-autosave-Ccs5yF72.js → use-autosave-BoXZwuPc.js} +1 -1
- package/dist/client/assets/{use-capability-CuDfi892.js → use-capability-_phTjvE6.js} +1 -1
- package/dist/client/assets/{use-clock-tick-B6WooEI8.js → use-clock-tick-ChjqwaWO.js} +1 -1
- package/dist/client/assets/{use-connection-Bd_jpf4N.js → use-connection-Dk6h1S8Q.js} +1 -1
- package/dist/client/assets/{use-copy-q-yYpnot.js → use-copy-B3FMQPgc.js} +1 -1
- package/dist/client/assets/{use-create-virtual-mcp-BH9RqXEc.js → use-create-virtual-mcp-lP994meF.js} +1 -1
- package/dist/client/assets/{use-debounced-autosave-BFtE6Ebz.js → use-debounced-autosave-BkeGmA8R.js} +1 -1
- package/dist/client/assets/{use-debounced-value-GpZ1mi-v.js → use-debounced-value-35Ew4adl.js} +1 -1
- package/dist/client/assets/{use-deco-credits-CUzNHxow.js → use-deco-credits-Bz4kQre2.js} +1 -1
- package/dist/client/assets/{use-decopilot-events-_3yeXkvf.js → use-decopilot-events-DESm1xFp.js} +1 -1
- package/dist/client/assets/{use-delete-connection-DaFomjHc.js → use-delete-connection-Bv-XFvT7.js} +1 -1
- package/dist/client/assets/{use-deployment-admin-DLMcnhKI.js → use-deployment-admin-BMZ9GmLK.js} +1 -1
- package/dist/client/assets/{use-file-configs-BVBVH9ie.js → use-file-configs-DbQbjjGU.js} +1 -1
- package/dist/client/assets/{use-infinite-scroll-CXgjR-Xw.js → use-infinite-scroll-bz44YEu_.js} +1 -1
- package/dist/client/assets/{use-join-requests-RfqT7PGo.js → use-join-requests-DkkHKHo5.js} +1 -1
- package/dist/client/assets/{use-mcp-auth-status-DjDWpWN2.js → use-mcp-auth-status-DinHVY4x.js} +1 -1
- package/dist/client/assets/{use-mcp-client-DYDnC7jC.js → use-mcp-client-BY0sWUOA.js} +1 -1
- package/dist/client/assets/{use-mcp-tools-DKT9QN7a.js → use-mcp-tools-B3VTnP2a.js} +1 -1
- package/dist/client/assets/{use-members-CSIpTkhO.js → use-members-BvIEYTQh.js} +1 -1
- package/dist/client/assets/{use-mobile-CqQD3V7d.js → use-mobile-e4E9JEgD.js} +1 -1
- package/dist/client/assets/{use-navigate-to-agent-_qOFR2k5.js → use-navigate-to-agent--UNprsDY.js} +1 -1
- package/dist/client/assets/{use-org-auth-client-DX4MSTlq.js → use-org-auth-client-1VtyJaTX.js} +1 -1
- package/dist/client/assets/{use-org-sso-B4IlMIyg.js → use-org-sso-CdLNJ1dh.js} +1 -1
- package/dist/client/assets/{use-organization-roles-DIQI7xI7.js → use-organization-roles-BfK1lhL9.js} +1 -1
- package/dist/client/assets/{use-organization-settings-DbYxMOQO.js → use-organization-settings-CB3fZhik.js} +1 -1
- package/dist/client/assets/{use-registry-connections-MnJfMvX7.js → use-registry-connections-IwesJon2.js} +1 -1
- package/dist/client/assets/{use-secrets-ChYNs_PH.js → use-secrets-BgAgV-MY.js} +1 -1
- package/dist/client/assets/{use-status-sounds-D4xvXthG.js → use-status-sounds-DBMxI1Wl.js} +1 -1
- package/dist/client/assets/{use-tags-DnMjb4eU.js → use-tags-CmxfsfLz.js} +1 -1
- package/dist/client/assets/{use-view-mode-BFf8H3PE.js → use-view-mode-Bx_ivyi4.js} +1 -1
- package/dist/client/assets/{use-virtual-mcp-CiLzfsBK.js → use-virtual-mcp-CwaifoJ4.js} +1 -1
- package/dist/client/assets/useInfiniteQuery-uQbAfv6P.js +1 -0
- package/dist/client/assets/{useQueries-D7EzIUl0.js → useQueries-D0fe-xQH.js} +1 -1
- package/dist/client/assets/{useRouterState-Dg3aZaTF.js → useRouterState-gffqqBYx.js} +1 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-CrozBMs6.js +1 -0
- package/dist/client/assets/{users-TvJpkvfl.js → users-Dyg8TUkz.js} +1 -1
- package/dist/client/assets/{variant-calendar-E-Dgf8on.js → variant-calendar-9WB2vopZ.js} +1 -1
- package/dist/client/assets/{view-mode-toggle-Ctj98hwO.js → view-mode-toggle-BZPZ4tB7.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/project-app-view-Tb39SpT_.js +0 -1
- package/dist/client/assets/record-editor-DKoZkjKa.js +0 -1
- package/dist/client/assets/registry-NDRiiTi9.js +0 -2
- package/dist/client/assets/store-registry-BIJayFZ3.js +0 -2
- package/dist/client/assets/useInfiniteQuery-3qhR0YFW.js +0 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-BD49lQEk.js +0 -1
package/dist/server/cli.js
CHANGED
|
@@ -1252,7 +1252,7 @@ Usage: deco services <up|down|status>`),process.exit(1)}}var gh1=O(()=>{Xv()});f
|
|
|
1252
1252
|
`.execute($);if(Number(W.rows[0]?.cnt)===0){console.warn(`Failed to migrate ${J}/${K}, keeping in old table`);continue}}await Sf`
|
|
1253
1253
|
DELETE FROM kysely_migration WHERE name = ${X}
|
|
1254
1254
|
`.execute($)}}async function yd1($){await Fy6($),await wy6($);let Z=new fd1({db:$,provider:{getMigrations:()=>Promise.resolve(fc0)}}),{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 By6($){let{keepOpen:Z=!1,database:X,skipBetterAuth:Q=!1}=$??{},Y="skipped";if(!Q&&!X)Y=await Ag0();let G=X??X6(),J=async()=>{if(!Z&&!X)await mF(G).catch((K)=>{console.warn("Warning: Error closing database:",K)})};try{let K=await yd1(G.db);return await J(),{betterAuth:Y,kysely:K}}catch(K){throw await J(),K}}async function Oy6(){let $=X6(),Z=new fd1({db:$.db,provider:{getMigrations:()=>Promise.resolve(fc0)}}),{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 hd1=O(()=>{vd1();Tg0();J7()});async function F50($){let Z={...process.env},X=K00($,Z);console.log(EN1(X.settings.encryptionKey));let{ensureServices:Q}=await Promise.resolve().then(() => (R$0(),T$0)),{outputs:Y,services:G}=await Q({home:X.settings.dataDir,externalDatabaseUrl:X.externalDatabaseUrl,externalNatsUrl:X.externalNatsUrl});if(!X.skipMigrations){let{migrateBetterAuth:K}=await Promise.resolve().then(() => (Tg0(),Bc1));await K(Y.databaseUrl);let{createDatabase:W}=await Promise.resolve().then(() => (J7(),xu1)),{migrateToLatest:H}=await Promise.resolve().then(() => (hd1(),gd1)),N=W(Y.databaseUrl);await H({keepOpen:!0,database:N,skipBetterAuth:!0})}let J={...X.settings,databaseUrl:Y.databaseUrl,natsUrls:Y.natsUrls,...Y.s3?{s3Endpoint:Y.s3.endpoint,s3Bucket:Y.s3.bucket,s3AccessKeyId:Y.s3.accessKeyId,s3SecretAccessKey:Y.s3.secretAccessKey,s3ForcePathStyle:Y.s3.forcePathStyle}:{},...Y.natsTunnel?{natsPublicUrl:Y.natsTunnel.publicUrl,natsAccountJwt:Y.natsTunnel.accountJwt,natsAccountSigningKey:Y.natsTunnel.accountSigningKey,natsOperatorJwt:Y.natsTunnel.operatorJwt,natsTunnelPublicEnabled:!0,natsCredsPath:Y.natsTunnel.credsPath}:{}};return hh1(J),{settings:J,services:G.map((K)=>({name:K.name==="PostgreSQL"?"Postgres":K.name,port:K.port})),managedServiceNames:G.filter((K)=>K.owner==="managed").map((K)=>K.name)}}var bc0=O(()=>{Xv();v8()});var ld1={};j0(ld1,{updateService:()=>PD,subscribeCliState:()=>hc0,setTuiConsoleIntercepted:()=>w50,setServerUrl:()=>Zm,setMigrationsDone:()=>$m,setDevMode:()=>Ey6,resetCliStateForTests:()=>Ly6,isTuiConsoleIntercepted:()=>B50,getCliState:()=>gc0,addLogEntry:()=>oF});function ud1(){return{services:[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}],migrationsStatus:"pending",serverUrl:null,logs:[]}}function Ly6(){TQ=ud1()}function Dy6(){return[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}]}function ed(){for(let $ of yc0)$()}function gc0(){return TQ}function hc0($){return yc0.add($),()=>yc0.delete($)}function PD($){TQ={...TQ,services:TQ.services.map((Z)=>Z.name===$.name?$:Z)},ed()}function $m(){TQ={...TQ,migrationsStatus:"done"},ed()}function Zm($){TQ={...TQ,serverUrl:$},ed()}function oF($){let Z=[...TQ.logs,$];TQ={...TQ,logs:Z.length>500?Z.slice(-500):Z},ed()}function Ey6(){TQ={...TQ,services:[...Dy6(),{name:"API",status:"pending",port:0},{name:"Vite",status:"pending",port:0}]},ed()}function w50($){cd1=$}function B50(){return cd1}var TQ,yc0,cd1=!1;var AD=O(()=>{TQ=ud1();yc0=new Set});import{createServer as dd1}from"net";function zy6($){return new Promise((Z)=>{let X=dd1();X.once("error",()=>Z(!1)),X.listen($,"0.0.0.0",()=>{X.close(()=>Z(!0))})})}async function Xm($){if(await zy6($))return $;let Z=await new Promise((X,Q)=>{let Y=dd1();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 uc0=()=>{};function Qm($){return $.replace(/\x1b\[[0-9;]*m/g,"")}var cc0={};j0(cc0,{startDevServer:()=>Py6});import{join as jy6}from"path";function md1($){let Z=$.getReader(),X=new TextDecoder,Q="";function Y(){let G=Q.split(`
|
|
1255
|
-
`);Q=G.pop()??"";for(let J of G){let K=Qm(J).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;oF({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=Qm(Q).replace(/^\[\d+\]\s*/,"").trim();if(G)oF({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:G})}})()}async function Py6($){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 Xm(Number(Y)+1):await Xm(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await F50({port:String(J),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let L of W)PD({name:L.name,status:"ready",port:L.port});$m();let N=jy6(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.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)md1(F.stdout),md1(F.stderr);Zm(G),PD({name:"Vite",status:"ready",port:Number(Y)}),PD({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(() => (R$0(),T$0));await D(K.dataDir)}};return process.on("SIGINT",()=>B("SIGINT")),process.on("SIGTERM",()=>B("SIGTERM")),{port:Number(Y),process:F}}var lc0=O(()=>{bc0();AD();uc0()});var O50;var dc0=O(()=>{O50={name:"decocms",version:"4.164.2",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/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 Ty6,Text as id1}from"ink";import{jsx as Ry6,jsxs as nd1}from"react/jsx-runtime";function pd1({version:$}){return nd1(Ty6,{flexDirection:"column",marginTop:1,children:[n$0.map((Z,X)=>Ry6(id1,{color:p$0[X],children:Z},X)),nd1(id1,{dimColor:!0,children:[" v",$]})]})}var td1=O(()=>{dd()});import{Box as TD,Text as rF}from"ink";import{Spinner as Iy6}from"@inkjs/ui";import{jsx as VY,jsxs as Vf}from"react/jsx-runtime";function od1({status:$}){if($==="pending")return VY(Iy6,{label:""});return VY(rF,{color:"green",children:"\u2713"})}function qy6($){return`${$.name}: ${$.port||"...."}`}function rd1({services:$,migrationsStatus:Z,home:X,serverUrl:Q}){return Vf(TD,{flexDirection:"column",paddingBottom:1,children:[VY(pd1,{version:O50.version}),VY(TD,{marginBottom:1,children:VY(rF,{dimColor:!0,children:"\u2500".repeat(80)})}),VY(TD,{children:Vf(rF,{dimColor:!0,children:["Home: ",X]})}),Vf(TD,{gap:2,children:[$.map((Y)=>Vf(TD,{gap:1,children:[VY(rF,{children:qy6(Y)}),VY(od1,{status:Y.status})]},Y.name)),Vf(TD,{gap:1,children:[VY(rF,{children:"Migrations"}),VY(od1,{status:Z})]})]}),VY(TD,{children:Q?Vf(rF,{children:["Open in browser: ",VY(rF,{color:"cyan",children:Q})]}):VY(rF,{dimColor:!0,children:"Starting..."})})]})}var ad1=O(()=>{dc0();td1()});import{Box as My6,Text as Ym}from"ink";import{jsx as mc0,jsxs as ic0}from"react/jsx-runtime";function ky6($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function sd1({logs:$}){return mc0(My6,{flexDirection:"column",children:$.map((Z,X)=>{if(Z.rawLine)return mc0(Ym,{dimColor:!0,children:Z.rawLine},X);let Q=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return ic0(Ym,{children:[ic0(Ym,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),mc0(Ym,{color:ky6(Z.status),children:Z.status}),ic0(Ym,{dimColor:!0,children:[" ",Q.padStart(8)]})]},X)})})}var ed1=()=>{};var nc0={};j0(nc0,{App:()=>Cy6});import{Box as Sy6}from"ink";import{useSyncExternalStore as Vy6}from"react";import{jsx as $m1,jsxs as _y6}from"react/jsx-runtime";function Cy6({home:$}){let Z=Vy6(hc0,gc0);return _y6(Sy6,{flexDirection:"column",children:[$m1(rd1,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),$m1(sd1,{logs:Z.logs})]})}var pc0=O(()=>{ad1();ed1();AD()});var ZJ="thread-gate",JN="decopilot-hosted-harness",hG="automations",aF="background-tools";var Zm1="6";function Xm1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:Zm1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var Qm1=()=>{};function xy6(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function tc0($,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 Ym1(){let $=xy6();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:tc0($,"--cpu-prof-dir")??process.cwd(),name:tc0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(tc0($,"--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 Gm1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let X=DD();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(()=>{}),L50=setInterval(()=>void Z().catch(()=>{}),$),L50.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(L50)clearInterval(L50)}}var L50;var Jm1=()=>{};import*as vy6 from"bun:jsc";function Km1(){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{fy6()}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=by6()?.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 fy6,by6;var Wm1=O(()=>{({startSamplingProfiler:fy6,samplingProfilerStackTraces:by6}=vy6)});function Hm1(){Ym1();let $=[Gm1(),Iu1(),Km1()];return()=>{for(let Z of $)Z()}}var Nm1=O(()=>{Fg0();Jm1();Wm1()});var RD=_((Um1)=>{Object.defineProperty(Um1,"__esModule",{value:!0});Um1.RepublishHeaders=Um1.DirectMsgHeaders=Um1.JsHeaders=Um1.AdvisoryKind=void 0;Um1.isOrderedPushConsumerOptions=yy6;Um1.isPullConsumer=gy6;Um1.isPushConsumer=hy6;Um1.isBoundPushConsumerOptions=uy6;function yy6($){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 gy6($){return $.isPullConsumer()}function hy6($){return $.isPushConsumer()}function uy6($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}Um1.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"};Um1.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"};Um1.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};Um1.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var CY=_((wm1)=>{Object.defineProperty(wm1,"__esModule",{value:!0});wm1.TD=wm1.TE=wm1.Empty=void 0;wm1.encode=oy6;wm1.decode=ry6;wm1.Empty=new Uint8Array(0);wm1.TE=new TextEncoder;wm1.TD=new TextDecoder;function ty6(...$){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 oy6(...$){let Z=[];for(let X=0;X<$.length;X++)Z.push(wm1.TE.encode($[X]));if(Z.length===0)return wm1.Empty;if(Z.length===1)return Z[0];return ty6(...Z)}function ry6($){if(!$||$.length===0)return"";return wm1.TD.decode($)}});var _Y=_((Lm1)=>{Object.defineProperty(Lm1,"__esModule",{value:!0});Lm1.errors=Lm1.PermissionViolationError=Lm1.NoRespondersError=Lm1.TimeoutError=Lm1.RequestError=Lm1.ProtocolError=Lm1.ConnectionError=Lm1.DrainingConnectionError=Lm1.ClosedConnectionError=Lm1.AuthorizationError=Lm1.UserAuthenticationExpiredError=Lm1.InvalidOperationError=Lm1.InvalidArgumentError=Lm1.InvalidSubjectError=void 0;class rc0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}Lm1.InvalidSubjectError=rc0;class D50 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 D50(`${$} ${Z}`,X)}}Lm1.InvalidArgumentError=D50;class ac0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}Lm1.InvalidOperationError=ac0;class E50 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new E50($);return null}}Lm1.UserAuthenticationExpiredError=E50;class z50 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 z50($);return null}}Lm1.AuthorizationError=z50;class sc0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}Lm1.ClosedConnectionError=sc0;class ec0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}Lm1.DrainingConnectionError=ec0;class $l0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}Lm1.ConnectionError=$l0;class Zl0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}Lm1.ProtocolError=Zl0;class Xl0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof j50}}Lm1.RequestError=Xl0;class Ql0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}Lm1.TimeoutError=Ql0;class j50 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}Lm1.NoRespondersError=j50;class P50 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 P50($,X,Q,Y)}}Lm1.PermissionViolationError=P50;Lm1.errors={AuthorizationError:z50,ClosedConnectionError:sc0,ConnectionError:$l0,DrainingConnectionError:ec0,InvalidArgumentError:D50,InvalidOperationError:ac0,InvalidSubjectError:rc0,NoRespondersError:j50,PermissionViolationError:P50,ProtocolError:Zl0,RequestError:Xl0,TimeoutError:Ql0,UserAuthenticationExpiredError:E50}});var XJ=_((Pm1)=>{Object.defineProperty(Pm1,"__esModule",{value:!0});Pm1.SimpleMutex=Pm1.Perf=void 0;Pm1.extend=wg6;Pm1.render=Bg6;Pm1.timeout=Og6;Pm1.delay=Lg6;Pm1.deadline=Dg6;Pm1.deferred=Gl0;Pm1.debugDeferred=Eg6;Pm1.shuffle=zg6;Pm1.collect=jg6;Pm1.jitter=jm1;Pm1.backoff=Pg6;Pm1.nanos=Ag6;Pm1.millis=Tg6;Pm1.randomToken=qg6;var Fg6=CY(),Yl0=_Y();function wg6($,...Z){for(let X=0;X<Z.length;X++){let Q=Z[X];Object.keys(Q).forEach(function(Y){$[Y]=Q[Y]})}return $}function Bg6($){return Fg6.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function Og6($,Z=!0){let X=Z?new Yl0.TimeoutError:null,Q,Y,G=new Promise((J,K)=>{Q={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(X===null)K(new Yl0.TimeoutError);else K(X)},$)});return Object.assign(G,Q)}function Lg6($=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 Dg6($,Z=1000){let X=Gl0(),Q=setTimeout(()=>{X.reject(new Yl0.TimeoutError)},Z);try{return await Promise.race([$,X])}finally{clearTimeout(Q)}}function Gl0(){let $={},Z=new Promise((X,Q)=>{$={resolve:X,reject:Q}});return Object.assign(Z,$)}function Eg6(){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 zg6($){for(let Z=$.length-1;Z>0;Z--){let X=Math.floor(Math.random()*(Z+1));[$[Z],$[X]]=[$[X],$[Z]]}return $}async function jg6($){let Z=[];for await(let X of $)Z.push(X);return Z}class Em1{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})}),$}}Pm1.Perf=Em1;class zm1{max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=Gl0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}Pm1.SimpleMutex=zm1;function jm1($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function Pg6($=[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 jm1(X>Z?$[Z]:$[X])}}}function Ag6($){return $*1e6}function Tg6($){return Math.floor($/1e6)}var Rg6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",KN=new Uint8Array(62);for(let $=0;$<62;$++)KN[$]=Rg6.charCodeAt($);var Ig6=218340105584896;function qg6(){let $=Math.floor(Math.random()*Ig6),Z=$%62,X=KN[Z];$=($-Z)/62,Z=$%62;let Q=KN[Z];$=($-Z)/62,Z=$%62;let Y=KN[Z];$=($-Z)/62,Z=$%62;let G=KN[Z];$=($-Z)/62,Z=$%62;let J=KN[Z];$=($-Z)/62,Z=$%62;let K=KN[Z];$=($-Z)/62,Z=$%62;let W=KN[Z];$=($-Z)/62;let H=KN[$];return String.fromCharCode(X,Q,Y,G,J,K,W,H)}});var Sm1=_((Mm1)=>{Object.defineProperty(Mm1,"__esModule",{value:!0});Mm1.nuid=Mm1.NuidImpl=void 0;var lg6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",sF=62,T50=12,Im1=10,Tm1=33,dg6=333,Rm1=T50+Im1,Kl0=new Uint8Array(sF);for(let $=0;$<sF;$++)Kl0[$]=lg6.charCodeAt($);var A50=4294967296,qm1=BigInt(sF)**BigInt(Im1),Gm=Number(qm1/(1n<<32n)),Jl0=Number(qm1%(1n<<32n));function mg6($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function ig6($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else mg6($)}class Wl0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(Rm1),this.cbuf=new Uint8Array(T50),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(Gm+1)),this.seqLo=Math.floor(Math.random()*A50);while($++<8&&this.seqHi===Gm&&this.seqLo>=Jl0);if(this.seqHi===Gm&&this.seqLo>=Jl0)this.seqLo=0;this.inc=Math.random()*(dg6-Tm1)+Tm1|0}setPre(){ig6(this.cbuf);for(let $=0;$<T50;$++)this.buf[$]=Kl0[this.cbuf[$]%sF]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let X=Rm1-1;X>=T50;X--){let Q=Math.floor($/sF),G=($-Q*sF)*A50+Z,J=Math.floor(G/sF),K=G-J*sF;this.buf[X]=Kl0[K],$=Q,Z=J}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=A50)this.seqLo-=A50,this.seqHi+=1;if(this.seqHi>Gm||this.seqHi===Gm&&this.seqLo>=Jl0)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()}}Mm1.NuidImpl=Wl0;Mm1.nuid=new Wl0});var xm1=_((Cm1)=>{Object.defineProperty(Cm1,"__esModule",{value:!0});Cm1.nuid=Cm1.Nuid=void 0;var Vm1=Sm1();Cm1.Nuid=Vm1.NuidImpl;Cm1.nuid=Vm1.nuid});var I50=_((R50)=>{Object.defineProperty(R50,"__esModule",{value:!0});R50.nuid=R50.Nuid=void 0;var vm1=xm1();Object.defineProperty(R50,"Nuid",{enumerable:!0,get:function(){return vm1.Nuid}});Object.defineProperty(R50,"nuid",{enumerable:!0,get:function(){return vm1.nuid}})});var eF=_((fm1)=>{Object.defineProperty(fm1,"__esModule",{value:!0});fm1.DEFAULT_HOST=fm1.DEFAULT_PORT=fm1.Match=void 0;fm1.syncIterator=ag6;fm1.createInbox=sg6;var og6=I50(),rg6=_Y();fm1.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function ag6($){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 sg6($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw rg6.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${og6.nuid.next()}`}fm1.DEFAULT_PORT=4222;fm1.DEFAULT_HOST="127.0.0.1"});var Jm=_((hm1)=>{Object.defineProperty(hm1,"__esModule",{value:!0});hm1.DataBuffer=void 0;var ym1=CY();class gm1{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 ym1.TE.encode($)}static toAscii($){return ym1.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}}hm1.DataBuffer=gm1});var ID=_((lm1)=>{Object.defineProperty(lm1,"__esModule",{value:!0});lm1.LF=lm1.CR=lm1.CRLF=lm1.CR_LF_LEN=lm1.CR_LF=void 0;lm1.setTransportFactory=Jh6;lm1.defaultPort=Kh6;lm1.getUrlParseFn=Wh6;lm1.newTransport=Hh6;lm1.getResolveFn=Nh6;lm1.protoLen=cm1;lm1.extractProtocolMessage=Uh6;var Qh6=CY(),Yh6=eF(),Gh6=Jm(),xY;function Jh6($){xY=$}function Kh6(){return xY!==void 0&&xY.defaultPort!==void 0?xY.defaultPort:Yh6.DEFAULT_PORT}function Wh6(){return xY!==void 0&&xY.urlParseFn?xY.urlParseFn:void 0}function Hh6(){if(!xY||typeof xY.factory!=="function")throw Error("transport fn is not set");return xY.factory()}function Nh6(){return xY!==void 0&&xY.dnsResolveFn?xY.dnsResolveFn:void 0}lm1.CR_LF=`\r
|
|
1255
|
+
`);Q=G.pop()??"";for(let J of G){let K=Qm(J).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;oF({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=Qm(Q).replace(/^\[\d+\]\s*/,"").trim();if(G)oF({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:G})}})()}async function Py6($){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 Xm(Number(Y)+1):await Xm(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await F50({port:String(J),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let L of W)PD({name:L.name,status:"ready",port:L.port});$m();let N=jy6(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.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)md1(F.stdout),md1(F.stderr);Zm(G),PD({name:"Vite",status:"ready",port:Number(Y)}),PD({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(() => (R$0(),T$0));await D(K.dataDir)}};return process.on("SIGINT",()=>B("SIGINT")),process.on("SIGTERM",()=>B("SIGTERM")),{port:Number(Y),process:F}}var lc0=O(()=>{bc0();AD();uc0()});var O50;var dc0=O(()=>{O50={name:"decocms",version:"4.164.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 Ty6,Text as id1}from"ink";import{jsx as Ry6,jsxs as nd1}from"react/jsx-runtime";function pd1({version:$}){return nd1(Ty6,{flexDirection:"column",marginTop:1,children:[n$0.map((Z,X)=>Ry6(id1,{color:p$0[X],children:Z},X)),nd1(id1,{dimColor:!0,children:[" v",$]})]})}var td1=O(()=>{dd()});import{Box as TD,Text as rF}from"ink";import{Spinner as Iy6}from"@inkjs/ui";import{jsx as VY,jsxs as Vf}from"react/jsx-runtime";function od1({status:$}){if($==="pending")return VY(Iy6,{label:""});return VY(rF,{color:"green",children:"\u2713"})}function qy6($){return`${$.name}: ${$.port||"...."}`}function rd1({services:$,migrationsStatus:Z,home:X,serverUrl:Q}){return Vf(TD,{flexDirection:"column",paddingBottom:1,children:[VY(pd1,{version:O50.version}),VY(TD,{marginBottom:1,children:VY(rF,{dimColor:!0,children:"\u2500".repeat(80)})}),VY(TD,{children:Vf(rF,{dimColor:!0,children:["Home: ",X]})}),Vf(TD,{gap:2,children:[$.map((Y)=>Vf(TD,{gap:1,children:[VY(rF,{children:qy6(Y)}),VY(od1,{status:Y.status})]},Y.name)),Vf(TD,{gap:1,children:[VY(rF,{children:"Migrations"}),VY(od1,{status:Z})]})]}),VY(TD,{children:Q?Vf(rF,{children:["Open in browser: ",VY(rF,{color:"cyan",children:Q})]}):VY(rF,{dimColor:!0,children:"Starting..."})})]})}var ad1=O(()=>{dc0();td1()});import{Box as My6,Text as Ym}from"ink";import{jsx as mc0,jsxs as ic0}from"react/jsx-runtime";function ky6($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function sd1({logs:$}){return mc0(My6,{flexDirection:"column",children:$.map((Z,X)=>{if(Z.rawLine)return mc0(Ym,{dimColor:!0,children:Z.rawLine},X);let Q=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return ic0(Ym,{children:[ic0(Ym,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),mc0(Ym,{color:ky6(Z.status),children:Z.status}),ic0(Ym,{dimColor:!0,children:[" ",Q.padStart(8)]})]},X)})})}var ed1=()=>{};var nc0={};j0(nc0,{App:()=>Cy6});import{Box as Sy6}from"ink";import{useSyncExternalStore as Vy6}from"react";import{jsx as $m1,jsxs as _y6}from"react/jsx-runtime";function Cy6({home:$}){let Z=Vy6(hc0,gc0);return _y6(Sy6,{flexDirection:"column",children:[$m1(rd1,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),$m1(sd1,{logs:Z.logs})]})}var pc0=O(()=>{ad1();ed1();AD()});var ZJ="thread-gate",JN="decopilot-hosted-harness",hG="automations",aF="background-tools";var Zm1="6";function Xm1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:Zm1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var Qm1=()=>{};function xy6(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function tc0($,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 Ym1(){let $=xy6();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:tc0($,"--cpu-prof-dir")??process.cwd(),name:tc0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(tc0($,"--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 Gm1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let X=DD();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(()=>{}),L50=setInterval(()=>void Z().catch(()=>{}),$),L50.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(L50)clearInterval(L50)}}var L50;var Jm1=()=>{};import*as vy6 from"bun:jsc";function Km1(){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{fy6()}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=by6()?.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 fy6,by6;var Wm1=O(()=>{({startSamplingProfiler:fy6,samplingProfilerStackTraces:by6}=vy6)});function Hm1(){Ym1();let $=[Gm1(),Iu1(),Km1()];return()=>{for(let Z of $)Z()}}var Nm1=O(()=>{Fg0();Jm1();Wm1()});var RD=_((Um1)=>{Object.defineProperty(Um1,"__esModule",{value:!0});Um1.RepublishHeaders=Um1.DirectMsgHeaders=Um1.JsHeaders=Um1.AdvisoryKind=void 0;Um1.isOrderedPushConsumerOptions=yy6;Um1.isPullConsumer=gy6;Um1.isPushConsumer=hy6;Um1.isBoundPushConsumerOptions=uy6;function yy6($){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 gy6($){return $.isPullConsumer()}function hy6($){return $.isPushConsumer()}function uy6($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}Um1.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"};Um1.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"};Um1.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};Um1.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var CY=_((wm1)=>{Object.defineProperty(wm1,"__esModule",{value:!0});wm1.TD=wm1.TE=wm1.Empty=void 0;wm1.encode=oy6;wm1.decode=ry6;wm1.Empty=new Uint8Array(0);wm1.TE=new TextEncoder;wm1.TD=new TextDecoder;function ty6(...$){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 oy6(...$){let Z=[];for(let X=0;X<$.length;X++)Z.push(wm1.TE.encode($[X]));if(Z.length===0)return wm1.Empty;if(Z.length===1)return Z[0];return ty6(...Z)}function ry6($){if(!$||$.length===0)return"";return wm1.TD.decode($)}});var _Y=_((Lm1)=>{Object.defineProperty(Lm1,"__esModule",{value:!0});Lm1.errors=Lm1.PermissionViolationError=Lm1.NoRespondersError=Lm1.TimeoutError=Lm1.RequestError=Lm1.ProtocolError=Lm1.ConnectionError=Lm1.DrainingConnectionError=Lm1.ClosedConnectionError=Lm1.AuthorizationError=Lm1.UserAuthenticationExpiredError=Lm1.InvalidOperationError=Lm1.InvalidArgumentError=Lm1.InvalidSubjectError=void 0;class rc0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}Lm1.InvalidSubjectError=rc0;class D50 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 D50(`${$} ${Z}`,X)}}Lm1.InvalidArgumentError=D50;class ac0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}Lm1.InvalidOperationError=ac0;class E50 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new E50($);return null}}Lm1.UserAuthenticationExpiredError=E50;class z50 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 z50($);return null}}Lm1.AuthorizationError=z50;class sc0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}Lm1.ClosedConnectionError=sc0;class ec0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}Lm1.DrainingConnectionError=ec0;class $l0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}Lm1.ConnectionError=$l0;class Zl0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}Lm1.ProtocolError=Zl0;class Xl0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof j50}}Lm1.RequestError=Xl0;class Ql0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}Lm1.TimeoutError=Ql0;class j50 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}Lm1.NoRespondersError=j50;class P50 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 P50($,X,Q,Y)}}Lm1.PermissionViolationError=P50;Lm1.errors={AuthorizationError:z50,ClosedConnectionError:sc0,ConnectionError:$l0,DrainingConnectionError:ec0,InvalidArgumentError:D50,InvalidOperationError:ac0,InvalidSubjectError:rc0,NoRespondersError:j50,PermissionViolationError:P50,ProtocolError:Zl0,RequestError:Xl0,TimeoutError:Ql0,UserAuthenticationExpiredError:E50}});var XJ=_((Pm1)=>{Object.defineProperty(Pm1,"__esModule",{value:!0});Pm1.SimpleMutex=Pm1.Perf=void 0;Pm1.extend=wg6;Pm1.render=Bg6;Pm1.timeout=Og6;Pm1.delay=Lg6;Pm1.deadline=Dg6;Pm1.deferred=Gl0;Pm1.debugDeferred=Eg6;Pm1.shuffle=zg6;Pm1.collect=jg6;Pm1.jitter=jm1;Pm1.backoff=Pg6;Pm1.nanos=Ag6;Pm1.millis=Tg6;Pm1.randomToken=qg6;var Fg6=CY(),Yl0=_Y();function wg6($,...Z){for(let X=0;X<Z.length;X++){let Q=Z[X];Object.keys(Q).forEach(function(Y){$[Y]=Q[Y]})}return $}function Bg6($){return Fg6.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function Og6($,Z=!0){let X=Z?new Yl0.TimeoutError:null,Q,Y,G=new Promise((J,K)=>{Q={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(X===null)K(new Yl0.TimeoutError);else K(X)},$)});return Object.assign(G,Q)}function Lg6($=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 Dg6($,Z=1000){let X=Gl0(),Q=setTimeout(()=>{X.reject(new Yl0.TimeoutError)},Z);try{return await Promise.race([$,X])}finally{clearTimeout(Q)}}function Gl0(){let $={},Z=new Promise((X,Q)=>{$={resolve:X,reject:Q}});return Object.assign(Z,$)}function Eg6(){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 zg6($){for(let Z=$.length-1;Z>0;Z--){let X=Math.floor(Math.random()*(Z+1));[$[Z],$[X]]=[$[X],$[Z]]}return $}async function jg6($){let Z=[];for await(let X of $)Z.push(X);return Z}class Em1{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})}),$}}Pm1.Perf=Em1;class zm1{max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=Gl0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}Pm1.SimpleMutex=zm1;function jm1($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function Pg6($=[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 jm1(X>Z?$[Z]:$[X])}}}function Ag6($){return $*1e6}function Tg6($){return Math.floor($/1e6)}var Rg6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",KN=new Uint8Array(62);for(let $=0;$<62;$++)KN[$]=Rg6.charCodeAt($);var Ig6=218340105584896;function qg6(){let $=Math.floor(Math.random()*Ig6),Z=$%62,X=KN[Z];$=($-Z)/62,Z=$%62;let Q=KN[Z];$=($-Z)/62,Z=$%62;let Y=KN[Z];$=($-Z)/62,Z=$%62;let G=KN[Z];$=($-Z)/62,Z=$%62;let J=KN[Z];$=($-Z)/62,Z=$%62;let K=KN[Z];$=($-Z)/62,Z=$%62;let W=KN[Z];$=($-Z)/62;let H=KN[$];return String.fromCharCode(X,Q,Y,G,J,K,W,H)}});var Sm1=_((Mm1)=>{Object.defineProperty(Mm1,"__esModule",{value:!0});Mm1.nuid=Mm1.NuidImpl=void 0;var lg6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",sF=62,T50=12,Im1=10,Tm1=33,dg6=333,Rm1=T50+Im1,Kl0=new Uint8Array(sF);for(let $=0;$<sF;$++)Kl0[$]=lg6.charCodeAt($);var A50=4294967296,qm1=BigInt(sF)**BigInt(Im1),Gm=Number(qm1/(1n<<32n)),Jl0=Number(qm1%(1n<<32n));function mg6($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function ig6($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else mg6($)}class Wl0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(Rm1),this.cbuf=new Uint8Array(T50),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(Gm+1)),this.seqLo=Math.floor(Math.random()*A50);while($++<8&&this.seqHi===Gm&&this.seqLo>=Jl0);if(this.seqHi===Gm&&this.seqLo>=Jl0)this.seqLo=0;this.inc=Math.random()*(dg6-Tm1)+Tm1|0}setPre(){ig6(this.cbuf);for(let $=0;$<T50;$++)this.buf[$]=Kl0[this.cbuf[$]%sF]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let X=Rm1-1;X>=T50;X--){let Q=Math.floor($/sF),G=($-Q*sF)*A50+Z,J=Math.floor(G/sF),K=G-J*sF;this.buf[X]=Kl0[K],$=Q,Z=J}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=A50)this.seqLo-=A50,this.seqHi+=1;if(this.seqHi>Gm||this.seqHi===Gm&&this.seqLo>=Jl0)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()}}Mm1.NuidImpl=Wl0;Mm1.nuid=new Wl0});var xm1=_((Cm1)=>{Object.defineProperty(Cm1,"__esModule",{value:!0});Cm1.nuid=Cm1.Nuid=void 0;var Vm1=Sm1();Cm1.Nuid=Vm1.NuidImpl;Cm1.nuid=Vm1.nuid});var I50=_((R50)=>{Object.defineProperty(R50,"__esModule",{value:!0});R50.nuid=R50.Nuid=void 0;var vm1=xm1();Object.defineProperty(R50,"Nuid",{enumerable:!0,get:function(){return vm1.Nuid}});Object.defineProperty(R50,"nuid",{enumerable:!0,get:function(){return vm1.nuid}})});var eF=_((fm1)=>{Object.defineProperty(fm1,"__esModule",{value:!0});fm1.DEFAULT_HOST=fm1.DEFAULT_PORT=fm1.Match=void 0;fm1.syncIterator=ag6;fm1.createInbox=sg6;var og6=I50(),rg6=_Y();fm1.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function ag6($){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 sg6($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw rg6.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${og6.nuid.next()}`}fm1.DEFAULT_PORT=4222;fm1.DEFAULT_HOST="127.0.0.1"});var Jm=_((hm1)=>{Object.defineProperty(hm1,"__esModule",{value:!0});hm1.DataBuffer=void 0;var ym1=CY();class gm1{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 ym1.TE.encode($)}static toAscii($){return ym1.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}}hm1.DataBuffer=gm1});var ID=_((lm1)=>{Object.defineProperty(lm1,"__esModule",{value:!0});lm1.LF=lm1.CR=lm1.CRLF=lm1.CR_LF_LEN=lm1.CR_LF=void 0;lm1.setTransportFactory=Jh6;lm1.defaultPort=Kh6;lm1.getUrlParseFn=Wh6;lm1.newTransport=Hh6;lm1.getResolveFn=Nh6;lm1.protoLen=cm1;lm1.extractProtocolMessage=Uh6;var Qh6=CY(),Yh6=eF(),Gh6=Jm(),xY;function Jh6($){xY=$}function Kh6(){return xY!==void 0&&xY.defaultPort!==void 0?xY.defaultPort:Yh6.DEFAULT_PORT}function Wh6(){return xY!==void 0&&xY.urlParseFn?xY.urlParseFn:void 0}function Hh6(){if(!xY||typeof xY.factory!=="function")throw Error("transport fn is not set");return xY.factory()}function Nh6(){return xY!==void 0&&xY.dnsResolveFn?xY.dnsResolveFn:void 0}lm1.CR_LF=`\r
|
|
1256
1256
|
`;lm1.CR_LF_LEN=lm1.CR_LF.length;lm1.CRLF=Gh6.DataBuffer.fromAscii(lm1.CR_LF);lm1.CR=new Uint8Array(lm1.CRLF)[0];lm1.LF=new Uint8Array(lm1.CRLF)[1];function cm1($){for(let Z=0;Z<$.length;Z++){let X=Z+1;if($.byteLength>X&&$[Z]===lm1.CR&&$[X]===lm1.LF)return X+1}return 0}function Uh6($){let Z=cm1($);if(Z>0){let Q=new Uint8Array($).slice(0,Z);return Qh6.TD.decode(Q)}return""}});var wl0=_((rm1)=>{Object.defineProperty(rm1,"__esModule",{value:!0});rm1.ipV4=pm1;rm1.isIP=Ah6;rm1.parseIP=tm1;var Km=4,qD=16,q50=48,nm1=57,mm1=65,jh6=70,im1=97,Ph6=102,Fl0=16777215;function pm1($,Z,X,Q){let Y=new Uint8Array(qD);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 Ah6($){return tm1($)!==void 0}function tm1($){for(let Z=0;Z<$.length;Z++)switch($[Z]){case".":return om1($);case":":return Th6($)}return}function om1($){let Z=new Uint8Array(Km);for(let X=0;X<Km;X++){if($.length===0)return;if(X>0){if($[0]!==".")return;$=$.substring(1)}let{n:Q,c:Y,ok:G}=Rh6($);if(!G||Q>255)return;$=$.substring(Y),Z[X]=Q}return pm1(Z[0],Z[1],Z[2],Z[3])}function Th6($){let Z=new Uint8Array(qD),X=-1;if($.length>=2&&$[0]===":"&&$[1]===":"){if(X=0,$=$.substring(2),$.length===0)return Z}let Q=0;while(Q<qD){let{n:Y,c:G,ok:J}=Ih6($);if(!J||Y>65535)return;if(G<$.length&&$[G]==="."){if(X<0&&Q!=qD-Km)return;if(Q+Km>qD)return;let K=om1($);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+=Km;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<qD){if(X<0)return;let Y=qD-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 Rh6($){let Z=0,X=0;for(Z=0;Z<$.length&&q50<=$.charCodeAt(Z)&&$.charCodeAt(Z)<=nm1;Z++)if(X=X*10+($.charCodeAt(Z)-q50),X>=Fl0)return{n:Fl0,c:Z,ok:!1};if(Z===0)return{n:0,c:0,ok:!1};return{n:X,c:Z,ok:!0}}function Ih6($){let Z=0,X=0;for(X=0;X<$.length;X++){if(q50<=$.charCodeAt(X)&&$.charCodeAt(X)<=nm1)Z*=16,Z+=$.charCodeAt(X)-q50;else if(im1<=$.charCodeAt(X)&&$.charCodeAt(X)<=Ph6)Z*=16,Z+=$.charCodeAt(X)-im1+10;else if(mm1<=$.charCodeAt(X)&&$.charCodeAt(X)<=jh6)Z*=16,Z+=$.charCodeAt(X)-mm1+10;else break;if(Z>=Fl0)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 zl0=_((sm1)=>{Object.defineProperty(sm1,"__esModule",{value:!0});sm1.Servers=sm1.ServerImpl=void 0;sm1.isIPV4OrHostname=am1;sm1.hostPort=El0;var Bl0=ID(),Ol0=XJ(),Ll0=wl0(),Sh6=eF(),Vh6=_Y();function am1($){if($.indexOf("[")!==-1||$.indexOf("::")!==-1)return!1;if($.indexOf(".")!==-1)return!0;if($.split(":").length<=2)return!0;return!1}function Dl0($){return!am1($)}function Ch6($){let X=$.toUpperCase().indexOf("::FFFF:");if(X!==-1&&$.indexOf(".")!==-1){let Q=$.substring(X+7);return Q=Q.replace("[",""),Q.replace("]","")}return $}function El0($){if($=$.trim(),$.match(/^(.*:\/\/)(.*)/m))$=$.replace(/^(.*:\/\/)(.*)/gm,"$2");if($=Ch6($),Dl0($)&&$.indexOf("[")===-1)$=`[${$}]`;let Z=Dl0($)?$.match(/(]:)(\d+)/):$.match(/(:)(\d+)/),X=Z&&Z.length===3&&Z[1]&&Z[2]?parseInt(Z[2]):Sh6.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 Cf{src;listen;hostname;port;didConnect;reconnects;lastConnect;gossiped;tlsName;resolves;constructor($,Z=!1){this.src=$,this.tlsName="";let X=El0($);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,Ll0.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}://${Dl0(Q)?"["+Q+"]":Q}`);G.port=`${this.port}`;let J=new Cf(G.host,!1);J.tlsName=this.hostname,Z.push(J)}}if($.randomize)(0,Ol0.shuffle)(Z);return this.resolves=Z,Z}}sm1.ServerImpl=Cf;class M50{firstSelect;servers;currentServer;tlsName;randomize;constructor($={}){this.firstSelect=!0,this.servers=[],this.tlsName="",this.randomize=$.randomize||!1}setServers($){if(!Array.isArray($)||$.length===0)throw Vh6.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}=El0(Y),J=X.get(G);if(J)J.gossiped=!1,Q.push(J);else Q.push(new Cf(Y))}if(this.randomize)(0,Ol0.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,Ll0.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 Cf($,Z);if((0,Ll0.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 M50.freezeAll(this.servers)}snapshotForHandler(){let $=this.currentServer;if(!$)return this.snapshot();let Z=this.servers.indexOf($);if(Z<=0)return this.snapshot();return M50.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 Cf(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,Ol0.shuffle)(W),this.servers=K?[K,...W]:W}return{added:X,deleted:Q}}}sm1.Servers=M50});var k50=_((Xi1)=>{Object.defineProperty(Xi1,"__esModule",{value:!0});Xi1.QueuedIteratorImpl=void 0;var jl0=XJ(),$i1=_Y();class Zi1{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,jl0.deferred)(),this.yields=[],this.iterClosed=(0,jl0.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 $i1.InvalidOperationError("iterator cannot be used when a callback is registered");if(this.yielding)throw new $i1.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,jl0.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}}Xi1.QueuedIteratorImpl=Zi1});var Pl0=_((Ji1)=>{Object.defineProperty(Ji1,"__esModule",{value:!0});Ji1.MuxSubscription=void 0;var fh6=eF(),Yi1=_Y();class Gi1{baseInbox;reqs;constructor(){this.reqs=new Map}size(){return this.reqs.size}init($){return this.baseInbox=`${(0,fh6.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 Yi1.NoRespondersError(Q.requestSubject):null;Q.resolver($,Z)}}}}close(){let $=new Yi1.RequestError("connection closed");this.reqs.forEach((Z)=>{Z.resolver($,{})})}}Ji1.MuxSubscription=Gi1});var Al0=_((Hi1)=>{Object.defineProperty(Hi1,"__esModule",{value:!0});Hi1.Heartbeat=void 0;var bh6=XJ();class Wi1{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,bh6.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})}}Hi1.Heartbeat=Wi1});var Il0=_((Bi1)=>{Object.defineProperty(Bi1,"__esModule",{value:!0});Bi1.DenoBuffer=Bi1.MAX_SIZE=Bi1.AssertionError=void 0;Bi1.assert=Fi1;Bi1.concat=wi1;Bi1.append=gh6;Bi1.readAll=hh6;Bi1.writeAll=uh6;var yh6=CY();class Tl0 extends Error{constructor($){super($);this.name="AssertionError"}}Bi1.AssertionError=Tl0;function Fi1($,Z="Assertion failed."){if(!$)throw new Tl0(Z)}var Ui1=32768;Bi1.MAX_SIZE=4294967294;function S50($,Z,X=0){let Q=Z.byteLength-X;if($.byteLength>Q)$=$.subarray(0,Q);return Z.set($,X),$.byteLength}function wi1($,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 gh6($,Z){return wi1($,Uint8Array.of(Z))}class Rl0{_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($){Fi1($<=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=S50(this._buf.subarray(this._off),$);return this._off+=Z,Z}writeByte($){return this.write(Uint8Array.of($))}writeString($){return this.write(yh6.TE.encode($))}write($){let Z=this._grow($.byteLength);return S50($,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)S50(this._buf.subarray(this._off),this._buf);else if(Q+$>Bi1.MAX_SIZE)throw Error("The buffer cannot be grown beyond the maximum size.");else{let Y=new Uint8Array(Math.min(2*Q+$,Bi1.MAX_SIZE));S50(this._buf.subarray(this._off),Y),this._buf=Y}return this._off=0,this._reslice(Math.min(Z+$,Bi1.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(Ui1);while(!0){let Q=this.capacity-this.length<Ui1,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}}}Bi1.DenoBuffer=Rl0;function hh6($){let Z=new Rl0;return Z.readFrom($),Z.bytes()}function uh6($,Z){let X=0;while(X<Z.length)X+=$.write(Z.subarray(X))}});var kl0=_((zi1)=>{Object.defineProperty(zi1,"__esModule",{value:!0});zi1.cc=zi1.State=zi1.Parser=zi1.Kind=void 0;zi1.describe=ph6;var ql0=Il0(),Ml0=CY();zi1.Kind={OK:0,ERR:1,MSG:2,INFO:3,PING:4,PONG:5};function ph6($){let Z,X="";switch($.kind){case zi1.Kind.MSG:Z="MSG";break;case zi1.Kind.OK:Z="OK";break;case zi1.Kind.ERR:Z="ERR",X=Ml0.TD.decode($.data);break;case zi1.Kind.PING:Z="PING";break;case zi1.Kind.PONG:Z="PONG";break;case zi1.Kind.INFO:Z="INFO",X=Ml0.TD.decode($.data)}return`${Z}: ${X}`}function Li1(){let $={};return $.sid=-1,$.hdr=-1,$.size=-1,$}var Di1=48,th6=57,_f=67108864;class Ei1{dispatcher;state;as;drop;hdr;ma;argBuf;msgBuf;constructor($){this.dispatcher=$,this.state=zi1.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 zi1.State.OP_START:switch(X){case zi1.cc.M:case zi1.cc.m:this.state=zi1.State.OP_M,this.hdr=-1,this.ma=Li1();break;case zi1.cc.H:case zi1.cc.h:this.state=zi1.State.OP_H,this.hdr=0,this.ma=Li1();break;case zi1.cc.P:case zi1.cc.p:this.state=zi1.State.OP_P;break;case zi1.cc.PLUS:this.state=zi1.State.OP_PLUS;break;case zi1.cc.MINUS:this.state=zi1.State.OP_MINUS;break;case zi1.cc.I:case zi1.cc.i:this.state=zi1.State.OP_I;break;default:throw this.fail($.subarray(Z))}break;case zi1.State.OP_H:switch(X){case zi1.cc.M:case zi1.cc.m:this.state=zi1.State.OP_M;break;default:throw this.fail($.subarray(Z))}break;case zi1.State.OP_M:switch(X){case zi1.cc.S:case zi1.cc.s:this.state=zi1.State.OP_MS;break;default:throw this.fail($.subarray(Z))}break;case zi1.State.OP_MS:switch(X){case zi1.cc.G:case zi1.cc.g:this.state=zi1.State.OP_MSG;break;default:throw this.fail($.subarray(Z))}break;case zi1.State.OP_MSG:switch(X){case zi1.cc.SPACE:case zi1.cc.TAB:this.state=zi1.State.OP_MSG_SPC;break;default:throw this.fail($.subarray(Z))}break;case zi1.State.OP_MSG_SPC:switch(X){case zi1.cc.SPACE:case zi1.cc.TAB:continue;default:this.state=zi1.State.MSG_ARG,this.as=Z}break;case zi1.State.MSG_ARG:switch(X){case zi1.cc.CR:this.drop=1;break;case zi1.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=zi1.State.MSG_PAYLOAD,Z=this.as+this.ma.size-1;break}default:if(this.argBuf)this.argBuf.writeByte(X)}break;case zi1.State.MSG_PAYLOAD:if(this.msgBuf)if(this.msgBuf.length>=this.ma.size){let Q=this.msgBuf.bytes({copy:!1});this.dispatcher.push({kind:zi1.Kind.MSG,msg:this.ma,data:Q}),this.argBuf=void 0,this.msgBuf=void 0,this.state=zi1.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:zi1.Kind.MSG,msg:this.ma,data:$.subarray(this.as,Z)}),this.argBuf=void 0,this.msgBuf=void 0,this.state=zi1.State.MSG_END;break;case zi1.State.MSG_END:switch(X){case zi1.cc.NL:this.drop=0,this.as=Z+1,this.state=zi1.State.OP_START;break;default:continue}break;case zi1.State.OP_PLUS:switch(X){case zi1.cc.O:case zi1.cc.o:this.state=zi1.State.OP_PLUS_O;break;default:throw this.fail($.subarray(Z))}break;case zi1.State.OP_PLUS_O:switch(X){case zi1.cc.K:case zi1.cc.k:this.state=zi1.State.OP_PLUS_OK;break;default:throw this.fail($.subarray(Z))}break;case zi1.State.OP_PLUS_OK:switch(X){case zi1.cc.NL:this.dispatcher.push({kind:zi1.Kind.OK}),this.drop=0,this.state=zi1.State.OP_START;break}break;case zi1.State.OP_MINUS:switch(X){case zi1.cc.E:case zi1.cc.e:this.state=zi1.State.OP_MINUS_E;break;default:throw this.fail($.subarray(Z))}break;case zi1.State.OP_MINUS_E:switch(X){case zi1.cc.R:case zi1.cc.r:this.state=zi1.State.OP_MINUS_ER;break;default:throw this.fail($.subarray(Z))}break;case zi1.State.OP_MINUS_ER:switch(X){case zi1.cc.R:case zi1.cc.r:this.state=zi1.State.OP_MINUS_ERR;break;default:throw this.fail($.subarray(Z))}break;case zi1.State.OP_MINUS_ERR:switch(X){case zi1.cc.SPACE:case zi1.cc.TAB:this.state=zi1.State.OP_MINUS_ERR_SPC;break;default:throw this.fail($.subarray(Z))}break;case zi1.State.OP_MINUS_ERR_SPC:switch(X){case zi1.cc.SPACE:case zi1.cc.TAB:continue;default:this.state=zi1.State.MINUS_ERR_ARG,this.as=Z}break;case zi1.State.MINUS_ERR_ARG:switch(X){case zi1.cc.CR:this.drop=1;break;case zi1.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:zi1.Kind.ERR,data:Q}),this.drop=0,this.as=Z+1,this.state=zi1.State.OP_START;break}default:if(this.argBuf)this.argBuf.write(Uint8Array.of(X))}break;case zi1.State.OP_P:switch(X){case zi1.cc.I:case zi1.cc.i:this.state=zi1.State.OP_PI;break;case zi1.cc.O:case zi1.cc.o:this.state=zi1.State.OP_PO;break;default:throw this.fail($.subarray(Z))}break;case zi1.State.OP_PO:switch(X){case zi1.cc.N:case zi1.cc.n:this.state=zi1.State.OP_PON;break;default:throw this.fail($.subarray(Z))}break;case zi1.State.OP_PON:switch(X){case zi1.cc.G:case zi1.cc.g:this.state=zi1.State.OP_PONG;break;default:throw this.fail($.subarray(Z))}break;case zi1.State.OP_PONG:switch(X){case zi1.cc.NL:this.dispatcher.push({kind:zi1.Kind.PONG}),this.drop=0,this.state=zi1.State.OP_START;break}break;case zi1.State.OP_PI:switch(X){case zi1.cc.N:case zi1.cc.n:this.state=zi1.State.OP_PIN;break;default:throw this.fail($.subarray(Z))}break;case zi1.State.OP_PIN:switch(X){case zi1.cc.G:case zi1.cc.g:this.state=zi1.State.OP_PING;break;default:throw this.fail($.subarray(Z))}break;case zi1.State.OP_PING:switch(X){case zi1.cc.NL:this.dispatcher.push({kind:zi1.Kind.PING}),this.drop=0,this.state=zi1.State.OP_START;break}break;case zi1.State.OP_I:switch(X){case zi1.cc.N:case zi1.cc.n:this.state=zi1.State.OP_IN;break;default:throw this.fail($.subarray(Z))}break;case zi1.State.OP_IN:switch(X){case zi1.cc.F:case zi1.cc.f:this.state=zi1.State.OP_INF;break;default:throw this.fail($.subarray(Z))}break;case zi1.State.OP_INF:switch(X){case zi1.cc.O:case zi1.cc.o:this.state=zi1.State.OP_INFO;break;default:throw this.fail($.subarray(Z))}break;case zi1.State.OP_INFO:switch(X){case zi1.cc.SPACE:case zi1.cc.TAB:this.state=zi1.State.OP_INFO_SPC;break;default:throw this.fail($.subarray(Z))}break;case zi1.State.OP_INFO_SPC:switch(X){case zi1.cc.SPACE:case zi1.cc.TAB:continue;default:this.state=zi1.State.INFO_ARG,this.as=Z}break;case zi1.State.INFO_ARG:switch(X){case zi1.cc.CR:this.drop=1;break;case zi1.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:zi1.Kind.INFO,data:Q}),this.drop=0,this.as=Z+1,this.state=zi1.State.OP_START;break}default:if(this.argBuf)this.argBuf.writeByte(X)}break;default:throw this.fail($.subarray(Z))}}if((this.state===zi1.State.MSG_ARG||this.state===zi1.State.MINUS_ERR_ARG||this.state===zi1.State.INFO_ARG)&&!this.argBuf)this.argBuf=new ql0.DenoBuffer($.subarray(this.as,Z-this.drop));if(this.state===zi1.State.MSG_PAYLOAD&&!this.msgBuf){if(!this.argBuf)this.cloneMsgArg();this.msgBuf=new ql0.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 ql0.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 zi1.cc.SPACE:case zi1.cc.TAB:case zi1.cc.CR:case zi1.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],_f);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],_f);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}: ${Ml0.TD.decode($)}`)}processHeaderMsgArgs($){let Z=[],X=-1;for(let Q=0;Q<$.length;Q++)switch($[Q]){case zi1.cc.SPACE:case zi1.cc.TAB:case zi1.cc.CR:case zi1.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],_f),this.ma.size=this.protoParseInt(Z[3],_f);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],_f),this.ma.size=this.protoParseInt(Z[4],_f);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]<Di1||$[Q]>th6)return-1;X=X*10+($[Q]-Di1)}return Z!==void 0&&X>Z?-1:X}}zi1.Parser=Ei1;zi1.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};zi1.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 _50=_((Pi1)=>{Object.defineProperty(Pi1,"__esModule",{value:!0});Pi1.MsgHdrsImpl=void 0;Pi1.canonicalMIMEHeaderKey=Vl0;Pi1.headers=ah6;var ji1=CY(),QJ=eF(),C50=_Y();function Vl0($){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 C50.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 ah6($=0,Z=""){if($===0&&Z!=="")throw C50.InvalidArgumentError.format("code","is required");else if($>0&&Z==="")throw C50.InvalidArgumentError.format("description","is required");return new xf($,Z)}var Sl0="NATS/1.0";class xf{_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 xf,Q=ji1.TD.decode($).split(`\r
|
|
1257
1257
|
`),Y=Q[0];if(Y!==Sl0){let G=Y.replace(Sl0,"").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 $=Sl0;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
|
|
1258
1258
|
${Z}: ${X[Q]}`;return`${$}\r
|
|
@@ -3916,7 +3916,7 @@ When unsure between the two, lean toward NOT requiring review for small frontend
|
|
|
3916
3916
|
|
|
3917
3917
|
Respond with the structured verdict and a short reason.`,De8;var ze8=O(()=>{h4();aB();sJ1();rA$=eJ1.object({requiresReview:eJ1.boolean().describe("true if the changes should go through pull-request review"),reason:eJ1.string().describe("One short sentence explaining the decision (max ~120 chars)")});De8={requiresReview:!1,reason:""}});function $T$($){if(!$||$.includes(".."))return!1;return eA$.test($)}function je8($){let Z=typeof $.__resolveType==="string"?$.__resolveType:null;if(!Z||!$T$(Z))return null;let{__resolveType:X,...Q}=$;return{resolveType:Z,payload:Q}}function Pe8($,Z){return`${$.replace(/\/+$/,"")}/deco/invoke/${Z}`}var eA$;var Ae8=O(()=>{eA$=/^[\w./@-]+$/});function $K1($){let Z;try{Z=new URL($)}catch{return null}if(!Z.hostname.endsWith(".localhost"))return null;let X=Z.host;return Z.hostname="127.0.0.1",{url:Z.toString(),hostHeader:X}}function Te8($,Z){let X=$?.githubRepo;if(!X?.owner||!X?.name)return null;if(!X.connectionId)return X;if(!Z.includes(X.connectionId))return null;return X}async function Re8($,Z,X,Q){if(!Q.connectionId)throw new Dc("Push requires a connected GitHub account. Connect mcp-github for this project and restart the sandbox.");let Y=$.organization?.id;if(!Y)throw new Dc(NX);await vH0({ctx:$,connectionId:Q.connectionId,organizationId:Y,forceRefresh:!0,onLegacyMintError:(N)=>{let U=N instanceof Error?N.message:NX;throw new Dc(U)}});let{cloneUrl:G,gitUserName:J,gitUserEmail:K}=await Au(Q.connectionId,Q.owner,Q.name,$.db,$.vault),W=mI0($),H=await Z.proxyDaemonRequest(X,"/_sandbox/config",{method:"PUT",headers:new Headers({"content-type":"application/json"}),body:JSON.stringify({git:{repository:{cloneUrl:G},identity:{userName:J,userEmail:K}},...W?{operator:W}:{}})});if(!H.ok){let N=await uO(H,ZT$).catch(()=>H.statusText);throw Error(`Failed to refresh sandbox git credentials (${H.status}): ${N}`)}}var ZT$=10485760,Dc;var Ie8=O(()=>{hB();iJ1();la();fH0();Dc=class Dc extends Error{constructor($){super($);this.name="GitPushAuthError"}}});function QT$($){let Z=$.startsWith("thread:")?$.slice(7):$;if(!Z||Z.length>255||Z.includes("..")||Z.startsWith("/")||Z.endsWith("/")||Z.endsWith(".lock")||!XT$.test(Z))throw Error(`Invalid branch name: ${$}`)}function Rx($){return AbortSignal.any([$.req.raw.signal,AbortSignal.timeout(GT$)])}function Ix($){let{runner:Z}=$.get("vmClaim");if(!Z)return $.json({error:"No sandbox runner configured"},503);return Z}function ZK1($,Z){let Q=(iI0.get($)??Promise.resolve()).catch(()=>{}).then(Z),Y=Q.catch(()=>{});return iI0.set($,Y),Y.finally(()=>{if(iI0.get($)===Y)iI0.delete($)}),Q}async function rZ($,Z,X){let Q=Ix($);if(Q instanceof Response)return Q;let{claimName:Y,userId:G,projectRef:J}=$.get("vmClaim"),K=X?.method??"POST",W=null,H=new Headers;if(X?.jsonBody!==void 0)W=X.jsonBody,H.set("content-type","application/json");else if(X?.forwardJsonBody)W=await $.req.text(),H.set("content-type","application/json");let N=X?.signal,U={method:K,headers:H,body:W,...N?{signal:N}:{}},F=async()=>{let w=await Q.proxyDaemonRequest(Y,Z,U);if(X?.map404to410&&w.status===404){try{await w.body?.cancel()}catch{}if(await Q.adoptLiveClaim?.({userId:G,projectRef:J},Y))w=await Q.proxyDaemonRequest(Y,Z,U);if(w.status===404){try{await w.body?.cancel()}catch{}return new Response(JSON.stringify({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."}),{status:410,headers:{"content-type":"application/json",...LG}})}}let B=await w.text(),L=X?.redactRepoDirUnlessDesktop&&Q.kind!=="user-desktop"?KT$(B):B,D=w.headers.get("content-type")??"application/json";return new Response(L,{status:w.status,headers:{"content-type":D,...LG}})};try{if(N){let w=F();return w.catch(()=>{}),await Promise.race([w,new Promise((L,D)=>{if(N.aborted)return D(N.reason);N.addEventListener("abort",()=>D(N.reason),{once:!0})})])}return await F()}catch(w){let B=w instanceof Error?w.message:String(w);return $.json({error:`Daemon unreachable: ${B}`},502)}}function KT$($){try{let Z=JSON.parse($);if(Z&&typeof Z==="object"&&!Array.isArray(Z)&&"repoDir"in Z)return JSON.stringify({...Z,repoDir:null})}catch{}return $}async function nI0($,Z,X,Q="GET",Y){let G=await $.proxyDaemonRequest(Z,X,{method:Q,headers:new Headers,body:null});if(G.status===404&&Y){try{await G.body?.cancel()}catch{}if(await $.adoptLiveClaim?.(Y,Z))G=await $.proxyDaemonRequest(Z,X,{method:Q,headers:new Headers,body:null})}if(G.status===404){try{await G.body?.cancel()}catch{}throw Error("SANDBOX_GONE")}let J=await G.text();if(!G.ok)try{let K=JSON.parse(J);throw Error(K.error??`Daemon error (${G.status})`)}catch(K){if(K instanceof Error&&K.message!==J)throw K;throw Error(`Daemon error (${G.status})`)}return JSON.parse(J)}function WT$($){return ke8.includes($)}var XT$,qe8=524288,YT$=65536,GT$=1e4,Me8=2000,JT$,iI0,LG,ke8,Se8=()=>{let $=new V1;return $.use("/:virtualMcpId/:branch/*",JT$),$.post("/:virtualMcpId/:branch/write",(Z)=>rZ(Z,"/_sandbox/write",{forwardJsonBody:!0,signal:Rx(Z)})),$.post("/:virtualMcpId/:branch/unlink",(Z)=>rZ(Z,"/_sandbox/unlink",{forwardJsonBody:!0,signal:Rx(Z)})),$.post("/:virtualMcpId/:branch/mkdir",(Z)=>rZ(Z,"/_sandbox/mkdir",{forwardJsonBody:!0,signal:Rx(Z)})),$.post("/:virtualMcpId/:branch/rename",(Z)=>rZ(Z,"/_sandbox/rename",{forwardJsonBody:!0,signal:Rx(Z)})),$.post("/:virtualMcpId/:branch/read",(Z)=>rZ(Z,"/_sandbox/read",{forwardJsonBody:!0,signal:Rx(Z)})),$.post("/:virtualMcpId/:branch/glob",(Z)=>rZ(Z,"/_sandbox/glob",{forwardJsonBody:!0,signal:Rx(Z)})),$.post("/:virtualMcpId/:branch/grep",(Z)=>rZ(Z,"/_sandbox/grep",{forwardJsonBody:!0,signal:Rx(Z)})),$.post("/:virtualMcpId/:branch/exec/:script",async(Z)=>{let X=Z.req.param("script");if(!X)return Z.json({error:"missing script name"},400);return rZ(Z,`/_sandbox/exec/${encodeURIComponent(X)}`)}),$.post("/:virtualMcpId/:branch/exec/:script/kill",async(Z)=>{let X=Z.req.param("script");if(!X)return Z.json({error:"missing script name"},400);return rZ(Z,`/_sandbox/exec/${encodeURIComponent(X)}/kill`)}),$.get("/:virtualMcpId/:branch/config",(Z)=>rZ(Z,"/_sandbox/config",{method:"GET",map404to410:!0,redactRepoDirUnlessDesktop:!0})),$.put("/:virtualMcpId/:branch/config",(Z)=>rZ(Z,"/_sandbox/config",{method:"PUT",forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/setup/:step",async(Z)=>{let X=Z.req.param("step");if(!X||!WT$(X))return Z.json({error:`step must be one of: ${ke8.join(", ")}`},400);if(X==="start"){let Q=Z.get("vmClaim");if(Q.runner){let Y=W0(Z.var.studioContext),G=wJ0(Q.virtualMcpMetadata);try{await xH0({ctx:Z.var.studioContext,runner:Q.runner,handle:Q.claimName,orgId:Y.id,userId:Q.callerUserId,entries:G})}catch(J){let K=J instanceof Error?J.message:String(J);return Z.json({error:`Failed to push env to daemon: ${K}`},502)}}}return rZ(Z,`/_sandbox/setup/${X}`,{signal:Z.req.raw.signal,map404to410:!0})}),$.get("/:virtualMcpId/:branch/events",(Z)=>{let X=Z.get("vmClaim");if(!X.runner)return oU(Z,async(Q)=>{await Q.writeSSE({event:"phase",data:JSON.stringify({kind:"failed",reason:"unknown",message:"No sandbox runner configured on this studio instance."})})});return Ue8(Z,{ctx:Z.var.studioContext,claimName:X.claimName,runner:X.runner,virtualMcpId:X.virtualMcpId,branch:X.branch,userId:X.userId,projectRef:X.projectRef,virtualMcpMetadata:X.virtualMcpMetadata})}),$.get("/:virtualMcpId/:branch/git/status",(Z)=>rZ(Z,"/_sandbox/git/status",{method:"GET",map404to410:!0,signal:AbortSignal.any([Z.req.raw.signal,AbortSignal.timeout(Me8)])})),$.post("/:virtualMcpId/:branch/git/status",(Z)=>rZ(Z,"/_sandbox/git/status",{map404to410:!0,signal:AbortSignal.any([Z.req.raw.signal,AbortSignal.timeout(Me8)])})),$.post("/:virtualMcpId/:branch/git/diff",(Z)=>rZ(Z,"/_sandbox/git/diff",{forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/git/publish",async(Z)=>{let X=Ix(Z);if(X instanceof Response)return X;let{claimName:Q,virtualMcpMetadata:Y,connectionIds:G}=Z.get("vmClaim"),J=Z.var.studioContext;return ZK1(Q,async()=>{try{await nJ1(J,X,Q);let K=Te8(Y,G);if(K)await Re8(J,X,Q,K)}catch(K){if(K instanceof Dc)return Z.json({error:K.message},403,LG);let W=K instanceof Error?K.message:String(K);return Z.json({error:W},502,LG)}return rZ(Z,"/_sandbox/git/publish",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/discard",(Z)=>{let{claimName:X}=Z.get("vmClaim");return ZK1(X,()=>rZ(Z,"/_sandbox/git/discard",{forwardJsonBody:!0,map404to410:!0}))}),$.post("/:virtualMcpId/:branch/git/rebase",async(Z)=>{let X=Ix(Z);if(X instanceof Response)return X;let{claimName:Q}=Z.get("vmClaim"),Y=Z.var.studioContext;return ZK1(Q,async()=>{try{await nJ1(Y,X,Q)}catch(G){let J=G instanceof Error?G.message:String(G);return Z.json({error:J},502,LG)}return rZ(Z,"/_sandbox/git/rebase",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/suggest-commit",C7({maxSize:qe8,onError:(Z)=>Z.json({error:"Payload too large"},413,LG)}),async(Z)=>{let X=Ix(Z);if(X instanceof Response)return X;let{claimName:Q,userId:Y,projectRef:G}=Z.get("vmClaim"),J=Z.var.studioContext;try{let K=await Z.req.json().catch(()=>({})),W=K.status,H=K.diff,N=H!=null&&typeof H.diffs==="object"&&H.diffs!==null,[U,F]=oJ1(W)&&N?[W,H]:await Promise.all([nI0(X,Q,"/_sandbox/git/status","GET",{userId:Y,projectRef:G}),nI0(X,Q,"/_sandbox/git/diff","GET",{userId:Y,projectRef:G})]),w=await Le8(J,U,F);return Z.json(w,200,LG)}catch(K){let W=K instanceof Error?K.message:String(K);if(W==="SANDBOX_GONE")return Z.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,LG);return Z.json({error:W},502,LG)}}),$.post("/:virtualMcpId/:branch/git/judge-review",C7({maxSize:qe8,onError:(Z)=>Z.json({error:"Payload too large"},413,LG)}),async(Z)=>{let X=Ix(Z);if(X instanceof Response)return X;let{claimName:Q,userId:Y,projectRef:G}=Z.get("vmClaim"),J=Z.var.studioContext;try{let K=await Z.req.json().catch(()=>({})),W=K.status,H=K.diff,N=H!=null&&typeof H.diffs==="object"&&H.diffs!==null,[U,F]=oJ1(W)&&N?[W,H]:await Promise.all([nI0(X,Q,"/_sandbox/git/status","GET",{userId:Y,projectRef:G}),nI0(X,Q,"/_sandbox/git/diff","GET",{userId:Y,projectRef:G})]),w=await Ee8(J,U,F,typeof K.language==="string"?K.language:void 0);return Z.json(w,200,LG)}catch(K){let W=K instanceof Error?K.message:String(K);if(W==="SANDBOX_GONE")return Z.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,LG);return Z.json({error:W},502,LG)}}),$.get("/:virtualMcpId/:branch/preview-fetch",async(Z)=>{let X=Ix(Z);if(X instanceof Response)return X;let{claimName:Q}=Z.get("vmClaim"),Y=Z.req.query("path");if(!Y||!Y.startsWith("/")||Y.startsWith("//")||Y.includes("..")||Y.includes("\\"))return Z.json({error:"Path not allowed"},403);let G;try{G=await X.getPreviewUrl(Q)}catch{return Z.json({error:"Preview not available"},502)}if(!G)return Z.json({error:"Preview not available"},502);let J=G.replace(/\/+$/,""),K=$K1(`${J}${Y}`),W;try{W=await fetch(K?.url??`${J}${Y}`,{...K?{headers:{host:K.hostHeader}}:{}})}catch{return Z.json({error:"Preview unreachable"},502)}let H;try{H=await W.text()}catch{return Z.json({error:"Preview unreachable"},502)}return new Response(H,{status:W.status,headers:{"content-type":W.headers.get("content-type")??"application/json"}})}),$.post("/:virtualMcpId/:branch/preview-invoke",C7({maxSize:YT$,onError:(Z)=>Z.json({error:"Payload too large"},413)}),async(Z)=>{let X=Ix(Z);if(X instanceof Response)return X;let{claimName:Q}=Z.get("vmClaim"),Y;try{Y=await X.getPreviewUrl(Q)}catch{return Z.json({error:"Preview not available"},502)}if(!Y)return Z.json({error:"Preview not available"},502);let G;try{G=await Z.req.json()}catch{return Z.json({error:"Invalid JSON body"},400)}if(!G||typeof G!=="object"||Array.isArray(G))return Z.json({error:"Invalid JSON body"},400);let J=je8(G);if(!J)return Z.json({error:"Invalid or missing __resolveType"},400);let K=Pe8(Y,J.resolveType),W=$K1(K),H;try{H=await fetch(W?.url??K,{method:"POST",headers:{"content-type":"application/json",...W?{host:W.hostHeader}:{}},body:JSON.stringify(J.payload),signal:AbortSignal.timeout(30000)})}catch{return Z.json({error:"Preview unreachable"},502)}let N;try{N=await H.text()}catch{return Z.json({error:"Preview unreachable"},502)}return new Response(N,{status:H.status,headers:{"content-type":H.headers.get("content-type")??"application/json"}})}),$};var Ve8=O(()=>{Y4();Ox();Lc();Ke8();SU();He8();rz();hu();Ne8();Fe8();wX1();qr();sJ1();ze8();Ae8();Ie8();XT$=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;JT$=Je8(async($,Z)=>{let X=$.var.studioContext;try{B0(X)}catch{return $.json({error:"Unauthorized"},401)}let Q=k1(X);if(!Q)return $.json({error:"Unauthorized"},401);let Y;try{Y=W0(X)}catch{return $.json({error:"Organization scope required"},403)}let G=$.req.param("virtualMcpId"),J=$.req.param("branch");if(!G||!J)return $.json({error:"virtualMcpId and branch are required"},400);try{QT$(J)}catch(w){let B=w instanceof Error?w.message:String(w);return $.json({error:B},400)}let K=await X.storage.virtualMcps.findById(G);if(!K||K.organization_id!==Y.id)return $.json({error:"Virtual MCP not found"},404);let W=ua({orgId:Y.id,virtualMcpId:G,branch:J}),H=await oz(X,J,Q),N=We8({userId:H,projectRef:W},J),U=K.metadata??null,F;try{F=(await zK(X,{userId:H,branch:J,virtualMcpMetadata:U})).provider}catch{F=null}if(!F)return $.json({error:"No sandbox runner found"},404);return $.set("vmClaim",{claimName:N,callerUserId:Q,runner:F,virtualMcpId:G,branch:J,userId:H,projectRef:W,virtualMcpMetadata:U,connectionIds:K.connections?.map((w)=>w.connection_id)??[]}),Z()});iI0=new Map;LG={"Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache"};ke8=["clone","install","start"]});var Ce8=($)=>{let Z=new V1;if(Z.use("*",Bx),Z.route("/",KI0()),Z.route("/",po8()),Z.route("/",ps8()),Z.route("/",is8()),Z.route("/",cI0()),Z.route("/tools",$e8()),Z.route("/",as8()),Z.route("/",Ss8({kvStorage:$.kvStorage})),Z.route("/",Ms8()),Z.route("/fs",us8({getConnection:$.getNatsConnection})),Z.route("/sandbox",Se8()),Z.route("/",ls8()),Z.route("/deco-sites",HI0()),Z.route("/sso",jR0()),Z.route("/",lI0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",uo8()),$.mountDevAssets)Z.route("/dev-assets",NI0({orgFromPath:!0}));return Z.use("/mcp/:connectionId?",$.mcpAuth),Z.use("/mcp/:connectionId/ui-resource",$.mcpAuth),Z.use("/mcp/gateway/:virtualMcpId?",$.mcpAuth),Z.use("/mcp/virtual-mcp/:virtualMcpId?",$.mcpAuth),Z.use("/mcp/self",$.mcpAuth),Z.route("/",QF8()),Z.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",$.betterAuthProtectedResourceHandler),Z.get("/mcp/.well-known/oauth-protected-resource",$.betterAuthProtectedResourceHandler),Z.route("/mcp",DJ0()),Z.route("/mcp/self",uI0()),Z.route("/mcp",jJ0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var _e8=O(()=>{Y4();F31();co8();D31();UI0();Cs();N31();ks8();Vs8();cs8();Oo();YG1();PJ0();gJ1();ds8();ns8();ts8();ss8();uJ1();Ze8();cJ1();EJ0();Ve8()});function NT$($){return $.filter((Z)=>Z.vendors?.alias).map((Z)=>({name:Z.name,title:Z.title,description:Z.description,logo:Z.logo,category:Z.category,vendor:{alias:Z.vendors.alias,url:Z.vendors.url}}))}async function UT$($,Z){let X=await fetch(`${$}/rest/v1/apps?select=name,title,description,logo,category,vendors(alias,url)`,{headers:{apikey:Z,Authorization:`Bearer ${Z}`,Accept:"application/json"},signal:AbortSignal.timeout(HT$)});if(!X.ok){let Q=await X.text().catch(()=>X.statusText);throw console.error(`[deco-apps] Supabase error (${X.status}): ${Q.slice(0,200)}`),Error(`External service error (${X.status})`)}return await X.json()}var HT$=1e4,FT$=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},xe8=()=>{let $=new V1;return $.use("*",FT$),$.get("/",async(Z)=>{let X=Y1(),Q=X.decoSupabaseUrl,Y=X.decoSupabaseServiceKey;if(!Q||!Y)return Z.json({apps:[]});try{let G=await UT$(Q,Y);return Z.json({apps:NT$(G)})}catch(G){return console.error("[deco-apps] GET error:",G),Z.json({error:"Failed to fetch apps"},502)}}),$};var ve8=O(()=>{Y4();v8()});import{z as g1}from"zod";function AH($,Z="invalid_request_error",X=null,Q=null){return{error:{message:$,type:Z,param:X,code:Q}}}function AT$($){if(!$)return null;let Z=$.indexOf(":");if(Z===-1)return{credentialId:null,modelId:$};let X=$.substring(0,Z),Q=$.substring(Z+1);if(!X||!Q)return null;return{credentialId:X,modelId:Q}}function TT$($,Z,X){try{return JSON.parse($)}catch{throw new ye8(`Invalid JSON in tool call arguments for function '${X}' (tool_call_id: ${Z}): ${$}`)}}function RT$($){let Z={};for(let X of $)if(X.role==="assistant"&&X.tool_calls)for(let Q of X.tool_calls)Z[Q.id]=Q.function.name;return $.map((X)=>{switch(X.role){case"system":return{role:"system",content:X.content};case"user":if(typeof X.content==="string")return{role:"user",content:X.content};return{role:"user",content:X.content.map((Y)=>{if(Y.type==="text")return{type:"text",text:Y.text};return{type:"image",image:Y.image_url.url}})};case"assistant":if(X.tool_calls&&X.tool_calls.length>0)return{role:"assistant",content:X.tool_calls.map((Y)=>({type:"tool-call",toolCallId:Y.id,toolName:Y.function.name,input:TT$(Y.function.arguments,Y.id,Y.function.name)}))};return{role:"assistant",content:X.content??""};case"tool":let Q=Z[X.tool_call_id]??"unknown";return{role:"tool",content:[{type:"tool-result",toolCallId:X.tool_call_id,toolName:Q,output:{type:"text",value:X.content}}]}}})}function IT$($){let Z=$.map((X)=>{let Q=X.function.parameters?tY(X.function.parameters):tY({type:"object",properties:{}});return[X.function.name,h8({description:X.function.description,inputSchema:Q})]});return Object.fromEntries(Z)}function qT$($){if(!$)return;return{openai:{response_format:$}}}function MT$(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function fe8($,Z,X,Q,Y,G){let J={model:$,messages:Z,tools:X,temperature:Q.temperature,maxTokens:Q.max_tokens,topP:Q.top_p,frequencyPenalty:Q.frequency_penalty,presencePenalty:Q.presence_penalty,stopSequences:Q.stop?Array.isArray(Q.stop)?Q.stop:[Q.stop]:void 0,abortSignal:G};return Y?{...J,providerOptions:Y}:J}function be8($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var wT$=256,BT$,OT$,LT$,DT$,ET$,zT$,jT$,PT$,ye8,ge8,he8;var ue8=O(()=>{h4();Y4();Lc();EU();BT$=g1.object({type:g1.literal("function"),function:g1.object({name:g1.string(),description:g1.string().optional(),parameters:g1.record(g1.string(),g1.unknown()).optional()})}),OT$=g1.object({id:g1.string(),type:g1.literal("function"),function:g1.object({name:g1.string(),arguments:g1.string()})}),LT$=g1.discriminatedUnion("role",[g1.object({role:g1.literal("system"),content:g1.string(),name:g1.string().optional()}),g1.object({role:g1.literal("user"),content:g1.union([g1.string(),g1.array(g1.union([g1.object({type:g1.literal("text"),text:g1.string()}),g1.object({type:g1.literal("image_url"),image_url:g1.object({url:g1.string(),detail:g1.string().optional()})})]))]),name:g1.string().optional()}),g1.object({role:g1.literal("assistant"),content:g1.string().nullable().optional(),name:g1.string().optional(),tool_calls:g1.array(OT$).optional()}),g1.object({role:g1.literal("tool"),content:g1.string(),tool_call_id:g1.string()})]),DT$=g1.object({type:g1.literal("text")}),ET$=g1.object({type:g1.literal("json_object")}),zT$=g1.object({type:g1.literal("json_schema"),json_schema:g1.object({name:g1.string(),description:g1.string().optional(),schema:g1.record(g1.string(),g1.unknown()),strict:g1.boolean().optional()})}),jT$=g1.union([DT$,ET$,zT$]),PT$=g1.object({model:g1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:g1.array(LT$),stream:g1.boolean().optional().default(!1),temperature:g1.number().min(0).max(2).optional(),max_tokens:g1.number().positive().optional(),top_p:g1.number().min(0).max(1).optional(),frequency_penalty:g1.number().min(-2).max(2).optional(),presence_penalty:g1.number().min(-2).max(2).optional(),stop:g1.union([g1.string(),g1.array(g1.string())]).optional(),tools:g1.array(BT$).optional(),tool_choice:g1.union([g1.literal("auto"),g1.literal("none"),g1.literal("required"),g1.object({type:g1.literal("function"),function:g1.object({name:g1.string()})})]).optional(),response_format:jT$.optional(),user:g1.string().optional()});ye8=class ye8 extends Error{constructor($){super($);this.name="MessageConversionError"}};ge8=new V1;ge8.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),X=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(AH("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(AH("Organization context is required. Ensure your API key has organization metadata.","invalid_request_error","organization"),400);if((Z.organization.slug??Z.organization.id)!==X)return $.json(AH("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Q=await $.req.json(),Y=PT$.safeParse(Q);if(!Y.success){let D=Y.error.issues[0]??{message:"Invalid request",path:[]};return $.json(AH(`Invalid request: ${D.message}`,"invalid_request_error",D.path.length>0?D.path.join("."):null),400)}let G=Y.data,J=AT$(G.model);if(!J)return $.json(AH("Invalid model format. Expected 'model_id' or 'credential_id:model_id' (e.g., 'claude-sonnet-4-6' or 'key_abc123:claude-sonnet-4-6')","invalid_request_error","model"),400);let{credentialId:K}=J,{modelId:W}=J;if(!K){let E=(await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id})).find((z)=>hD(z.providerId));if(!E)return $.json(AH("No AI provider credentials configured for this organization. Add a credential in settings or specify one explicitly via 'credential_id:model_id'.","invalid_request_error","model"),400);K=E.id}let H;try{H=await Z.aiProviders.activate(K,Z.organization.id)}catch{return $.json(AH(`AI provider credential not found or inaccessible: ${K}`,"invalid_request_error","model"),404)}let N=H.aiSdk.languageModel(W),U=RT$(G.messages),F=G.tools?IT$(G.tools):void 0,w=qT$(G.response_format),B=MT$(),L=Math.floor(Date.now()/1000);if(G.stream)return oU($,async(D)=>{let E=fe8(N,U,F,G,w,$.req.raw.signal);try{let z=YO(E),j=!1,A=0,P="",I=async()=>{if(P.length===0)return;let C=P;P="",await D.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:L,model:G.model,choices:[{index:0,delta:{content:C},finish_reason:null}]})})};for await(let C of z.fullStream){if(!j&&(C.type==="text-delta"||C.type==="tool-call"))await D.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:L,model:G.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),j=!0;if(C.type==="text-delta"){if(P+=C.text,P.length>=wT$)await I()}else if(C.type==="tool-call"){await I();let M=A++;await D.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:L,model:G.model,choices:[{index:0,delta:{tool_calls:[{index:M,id:C.toolCallId,type:"function",function:{name:C.toolName,arguments:JSON.stringify(C.input)}}]},finish_reason:null}]})})}else if(C.type==="finish")await I(),await D.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:L,model:G.model,choices:[{index:0,delta:{},finish_reason:be8(C.finishReason)}],usage:C.totalUsage?{prompt_tokens:C.totalUsage.inputTokens??0,completion_tokens:C.totalUsage.outputTokens??0,total_tokens:C.totalUsage.totalTokens??0}:void 0})})}await I(),await D.writeSSE({data:"[DONE]"})}catch(z){let j=z;console.error("[openai-compat:stream] Error:",j.message),await D.writeSSE({data:JSON.stringify({error:{message:j.message,type:"server_error"}})})}});else{let D=fe8(N,U,F,G,w,$.req.raw.signal),E=await XO(D),z={role:"assistant",content:E.text||null};if(E.toolCalls&&E.toolCalls.length>0)z.tool_calls=E.toolCalls.map((j)=>({id:j.toolCallId,type:"function",function:{name:j.toolName,arguments:JSON.stringify("input"in j?j.input:{})}})),z.content=null;return $.json({id:B,object:"chat.completion",created:L,model:G.model,choices:[{index:0,message:z,finish_reason:be8(E.finishReason)}],usage:{prompt_tokens:E.usage?.inputTokens??0,completion_tokens:E.usage?.outputTokens??0,total_tokens:E.usage?.totalTokens??0}})}}catch(Q){let Y=Q;if(Y.name==="AbortError")return $.json(AH("Request aborted","invalid_request_error"),400);if(Y.name==="MessageConversionError")return $.json(AH(Y.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",Y.message,Y.stack),$.json(AH(Y.message,"server_error"),500)}});he8=ge8});function ST$(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??kT$}}var ce8,kT$="https://ph.studio.decocms.com",le8;var de8=O(()=>{Y4();sm0();Hx();XZ();v8();eY1();dc0();ce8=new V1;ce8.get("/",($)=>{let Z={version:O50.version,theme:yr1(),...pD().logo&&{logo:pD().logo},...OH()&&{internalUrl:c$0()},...Y1().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!Y1().firecrawlApiKey,auth:ti8(),posthog:ST$(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:!OH()&&Y1().sandboxProviderKind==="agent-sandbox"}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});le8=ce8});function Ec($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function XK1($){return(Ec($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((X)=>X.charAt(0).toUpperCase()+X.slice(1)).join(" ")}function ie8($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(Ec($))}&sz=${Z}`}function me8($,Z){let X=$.trim();if(X.length<=Z)return X;let Q=X.slice(0,Z-1),Y=Q.lastIndexOf(" ");return`${(Y>Z*0.6?Q.slice(0,Y):Q).trimEnd()}\u2026`}function ne8($){let{brand:Z,domain:X,score:Q,verdict:Y}=$,G=typeof Q==="number"?`${Z} commerce report \u2014 ${Math.round(Q)}/100 \xB7 decocms`:`${Z} commerce report \xB7 decocms`,J=`See the full ${Z} scorecard \u2014 SEO, performance, conversion & AEO signals scored by decocms.`,K=Y?.trim()?me8(`${Y.trim().replace(/\s+/g," ")} \u2014 ${J}`,200):me8(`How does ${X} really perform? ${J}`,200);return{title:G,description:K}}import{z as Z1}from"zod";var qx,VT$,CT$,_T$,xT$,pe8;var te8=O(()=>{qx=Z1.enum(["good","bad","neutral"]),VT$=Z1.preprocess(($)=>{if(Array.isArray($))return{kind:"text",value:$.find((X)=>X!==null&&typeof X!=="object")??""};return $!==null&&typeof $==="object"?$:{kind:"text",value:$}},Z1.object({kind:Z1.enum(["text","number","sparkline","badge","score"]).catch("text"),value:Z1.coerce.string().optional(),tone:qx.optional(),muted:Z1.boolean().optional(),delta:Z1.coerce.string().optional(),deltaDir:Z1.enum(["up","down","neutral"]).optional(),points:Z1.array(Z1.coerce.number()).optional(),label:Z1.coerce.string().optional()}).transform(($)=>{if($.kind==="badge"&&$.label==null)$.label=$.value??"";if($.kind==="score"){let Z=Number($.value);if(Number.isNaN(Z))return{...$,kind:"text"}}return $})),CT$=Z1.preprocess(($)=>{let Z=$;if(Z&&typeof Z==="object"&&!Array.isArray(Z)&&Array.isArray(Z.cells))Z=Z.cells;if(Array.isArray(Z)&&Z.length===1&&Array.isArray(Z[0]))Z=Z[0];if(Array.isArray(Z))return Z;if(Z&&typeof Z==="object")return Object.values(Z);return Z},Z1.array(VT$)),_T$={key:Z1.coerce.string(),title:Z1.coerce.string(),eyebrow:Z1.coerce.string().optional(),headline:Z1.coerce.string(),annotation:Z1.coerce.string().optional(),methodology:Z1.coerce.string().optional(),sources:Z1.array(Z1.object({name:Z1.coerce.string(),logoUrl:Z1.coerce.string()})).optional()},xT$=Z1.discriminatedUnion("template",[Z1.object({template:Z1.literal("cover"),score:Z1.object({value:Z1.coerce.number(),max:Z1.coerce.number().optional(),grade:Z1.coerce.string().optional(),label:Z1.coerce.string().optional()}).optional(),brandImage:Z1.coerce.string().optional(),screenshot:Z1.coerce.string().optional(),mobileScreenshot:Z1.coerce.string().optional()}),Z1.object({template:Z1.literal("cta"),ctaUrl:Z1.coerce.string().optional(),ctaLabel:Z1.coerce.string().optional(),bullets:Z1.array(Z1.coerce.string()).optional()}),Z1.object({template:Z1.literal("series"),points:Z1.array(Z1.coerce.number()).min(2),xLabels:Z1.array(Z1.coerce.string()).min(1),unit:Z1.coerce.string().optional(),callout:Z1.object({index:Z1.coerce.number(),value:Z1.coerce.string(),tone:qx.optional()})}),Z1.object({template:Z1.literal("threshold"),value:Z1.coerce.string().default(""),metricLabel:Z1.coerce.string().optional(),ratio:Z1.coerce.number(),thresholdRatio:Z1.coerce.number().optional(),thresholdLabel:Z1.coerce.string().default(""),tone:qx.optional()}),Z1.object({template:Z1.literal("stats"),stats:Z1.array(Z1.object({value:Z1.coerce.string(),label:Z1.coerce.string(),tone:qx.optional()})).min(1)}),Z1.object({template:Z1.literal("bars"),items:Z1.array(Z1.object({value:Z1.coerce.string(),label:Z1.coerce.string(),ratio:Z1.coerce.number(),tone:qx.optional()})).min(1)}),Z1.object({template:Z1.literal("gauges"),gauges:Z1.array(Z1.object({label:Z1.coerce.string(),value:Z1.coerce.string(),status:Z1.enum(["good","warn","bad"]).catch("warn"),caption:Z1.coerce.string().optional(),ratio:Z1.coerce.number().optional()})).min(1)}),Z1.object({template:Z1.literal("checklist"),checks:Z1.array(Z1.object({label:Z1.coerce.string(),status:Z1.enum(["pass","fail","warn"]).catch("fail"),value:Z1.coerce.string().optional()})).min(1)}),Z1.object({template:Z1.literal("table"),columns:Z1.array(Z1.object({label:Z1.coerce.string(),align:Z1.enum(["left","right"]).optional()})).min(1),rows:Z1.array(CT$).min(1),highlightRow:Z1.coerce.number().optional()}),Z1.object({template:Z1.literal("products"),products:Z1.array(Z1.object({name:Z1.coerce.string(),price:Z1.coerce.string().optional(),image:Z1.coerce.string().optional(),url:Z1.coerce.string().optional()})).min(1)}),Z1.object({template:Z1.literal("list"),entries:Z1.array(Z1.object({label:Z1.coerce.string(),severity:Z1.enum(["error","warning","notice"]).catch("notice")})).min(1),moreCount:Z1.coerce.number().optional()}),Z1.object({template:Z1.literal("keywords"),volumeLabel:Z1.coerce.string().optional(),keywords:Z1.array(Z1.object({term:Z1.coerce.string(),volume:Z1.coerce.string(),position:Z1.coerce.number().catch(0)})).min(1)}),Z1.object({template:Z1.literal("competitor"),metricLabel:Z1.coerce.string().optional(),competitors:Z1.array(Z1.object({name:Z1.coerce.string(),value:Z1.coerce.string(),tone:qx.optional(),isYou:Z1.boolean().optional()})).min(1)}),Z1.object({template:Z1.literal("scorecard"),rivalLabel:Z1.coerce.string().optional(),dimensions:Z1.array(Z1.object({label:Z1.coerce.string(),you:Z1.coerce.string(),rival:Z1.coerce.string().optional(),rivalName:Z1.coerce.string().optional(),tone:qx.optional()})).min(1)})]),pe8=Z1.object({..._T$,template:xT$})});function pI0($){let Z=[],X=[...$.sections].sort((Q,Y)=>Q.position-Y.position).map((Q)=>{let Y=pe8.safeParse(Q.props);if(Y.success)return Y.data;let G=Y.error.issues[0];return Z.push({section_type:Q.section_type,position:Q.position,reason:G?`${G.path.join(".")||"(root)"}: ${G.message}`:"contract violation"}),null}).filter((Q)=>Q!==null);return{deck:{meta:{...$.meta,scores:$.summary?.scores},slides:X},drops:Z}}var QK1=O(()=>{te8()});import{join as oe8}from"path";async function fT$($){try{let Z=await fetch(`${mG({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(vT$)});if(!Z.ok)return null;let X=await Z.json(),{deck:Q}=pI0(X);if(!Q.slides.length)return null;let Y=Q.slides.find((K)=>K.template.template==="cover"),G=Y?.template,J=G&&G.template==="cover"?G:void 0;return{brand:Q.meta.brand?.trim()||XK1($),score:Q.meta.scores?.cover??J?.score?.value,verdict:Y?.annotation?.trim()||Y?.headline?.trim()||void 0}}catch{return null}}function DG($){return $.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""")}function bT$($,Z){let X=Ec($),Q=Z?.brand?.trim()||XK1(X),Y=ie8(X,128),J=`${(Y1().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(X)}`,{title:K,description:W}=ne8({brand:Q,domain:X,score:Z?.score,verdict:Z?.verdict}),H=`${J}/og.png`,N=`${Q} commerce report by decocms`;return[`<title>${DG(K)}</title>`,`<meta name="description" content="${DG(W)}" />`,'<meta name="robots" content="noindex, follow" />','<meta property="og:type" content="website" />','<meta property="og:site_name" content="decocms" />',`<meta property="og:title" content="${DG(K)}" />`,`<meta property="og:description" content="${DG(W)}" />`,`<meta property="og:url" content="${DG(J)}" />`,`<meta property="og:image" content="${DG(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${DG(N)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${DG(K)}" />`,`<meta name="twitter:description" content="${DG(W)}" />`,`<meta name="twitter:image" content="${DG(H)}" />`,`<meta name="twitter:image:alt" content="${DG(N)}" />`,`<link rel="canonical" href="${DG(J)}" />`,`<link rel="icon" href="${DG(Y)}" sizes="any" />`].join(`
|
|
3918
3918
|
`)}function yT$($,Z){return $.replace(/<title>[\s\S]*?<\/title>\s*/i,"").replace(/<meta\s+name="(?:description|twitter:[^"]*)"[^>]*>\s*/gi,"").replace(/<meta\s+property="og:[^"]*"[^>]*>\s*/gi,"").replace(/<link\s+rel="icon"[^>]*>\s*/gi,"").replace("</head>",` ${Z}
|
|
3919
|
-
</head>`)}function re8($){let Z=new V1;return Z.get("/:domain/og.png",async(X)=>{let Q=Ec(X.req.param("domain")),Y=async()=>{let G=$?Bun.file(oe8($,"report-og-fallback.png")):null;if(!G||!await G.exists())return X.notFound();return X.body(new Uint8Array(await G.arrayBuffer()),200,{"Content-Type":"image/png","Cache-Control":"public, max-age=0, s-maxage=3600"})};try{let G=await fetch(`${mG({})}/api/v2/public/diagnostics/${encodeURIComponent(Q)}/og.png`,{signal:AbortSignal.timeout(gT$)}),J=G.headers.get("content-type")??"";if(!G.ok||!J.startsWith("image/")||!G.body)return Y();return X.body(G.body,200,{"Content-Type":J,"Cache-Control":"public, max-age=0, s-maxage=86400"})}catch{return Y()}}),Z.get("/:domain",async(X)=>{let Q=X.req.param("domain"),Y=$?oe8($,"index.html"):null,G=Y?Bun.file(Y):null;if(!G||!await G.exists())return X.notFound();let J=await G.text();try{let K=await fT$(Ec(Q)),W=bT$(Q,K);return X.html(yT$(J,W),200,{"Cache-Control":"public, max-age=0, s-maxage=300"})}catch{return X.html(J)}}),Z}var vT$=2500,gT$=1e4;var ae8=O(()=>{Y4();QK1();Ow();v8()});function Ye($,Z){return fetch(`${mG({})}${$}`,Z)}async function hT$($,Z,X){let Q=new URLSearchParams;if(Z)Q.set("pw",Z);if(X)Q.set("lang",X);let Y=Q.toString()?`?${Q.toString()}`:"",G=await Ye(`/api/v2/public/diagnostics/${encodeURIComponent($)}${Y}`,{headers:{Accept:"application/json"}});if(G.status===404)return{status:"not_found",deck:null,scanned_at:null,drops:[]};if(!G.ok)throw Error(`report read HTTP ${G.status}`);let J=await G.json(),{deck:K,drops:W}=pI0(J);return{status:K.slides.length?"ready":"empty",deck:K,scanned_at:J.scanned_at,drops:W}}var uT$,Mx,se8;var ee8=O(()=>{Y4();w3();Ow();QK1();uT$=new Set(["complete","errored","terminated","unknown"]),Mx=new V1;Mx.use("*",async($,Z)=>{let X=await q6.api.getSession({headers:$.req.raw.headers});if(!X?.user?.id)return $.json({error:"Authentication required"},401,{"Cache-Control":"private, no-store",Vary:"Cookie"});$.set("reportUser",{email:X.user.email}),await Z(),$.header("Cache-Control","private, no-store"),$.header("Vary","Cookie");return});Mx.get("/site/:domain",async($)=>{let Z=$.req.param("domain").trim();if(!Z)return $.json({error:"domain is required"},400);let X=$.req.query("key")?.trim()||void 0,Q=$.req.query("lang")?.trim()||void 0;try{let Y=await hT$(Z,X,Q);return $.header("Cache-Control","private, no-store"),$.json(Y)}catch{return $.json({error:"report read failed"},502)}});Mx.post("/run",async($)=>{let Z;try{Z=await $.req.json()}catch{return $.json({error:"invalid JSON"},400)}let X=typeof Z.domain==="string"?Z.domain.trim():"";if(!X)return $.json({error:"domain is required"},400);let Q=$.get("reportUser").email,Y=typeof Z.distinctId==="string"&&Z.distinctId.trim()&&Z.distinctId.length<=200?Z.distinctId.trim():void 0;try{let G=await Ye("/api/v2/diagnostics/run",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${cD({})}`},body:JSON.stringify({url:X,email:Q,distinct_id:Y})});if(!G.ok)return $.json({error:`run HTTP ${G.status}`},502);let J=await G.json(),K=J.blocked?{state:"blocked"}:J.status==="fresh"?{state:"fresh"}:J.mode==="sync"?{state:"sync"}:{state:"running",id:J.id??null};return $.json(K)}catch{return $.json({error:"run failed"},502)}});Mx.get("/status",async($)=>{let Z=$.req.query("id");if(!Z)return $.json({error:"id is required"},400);try{let X=await Ye(`/api/v2/diagnostics/status?id=${encodeURIComponent(Z)}`,{headers:{Authorization:`Bearer ${cD({})}`}});if(!X.ok)return $.json({error:`status HTTP ${X.status}`},502);let Y=(await X.json()).status??"unknown",G={done:uT$.has(Y),status:Y};return $.json(G)}catch{return $.json({error:"status failed"},502)}});Mx.get("/link-token/:id",async($)=>{let Z=$.req.param("id");try{let X=await Ye(`/api/v2/public/link-tokens/${encodeURIComponent(Z)}`,{headers:{Accept:"application/json"}});if(X.status===404)return $.json(null);if(!X.ok)return $.json({error:`link token HTTP ${X.status}`},502);return $.json(await X.json())}catch{return $.json({error:"link token resolve failed"},502)}});Mx.get("/suggest",async($)=>{let Z=($.req.query("q")??"").trim().slice(0,64);if(Z.length<2)return $.json({suggestions:[]});try{let X=await Ye(`/api/v2/public/suggest?q=${encodeURIComponent(Z)}`,{headers:{Accept:"application/json"}});if(!X.ok)return $.json({suggestions:[]});let Q=await X.json();return $.json({suggestions:Array.isArray(Q.suggestions)?Q.suggestions:[]})}catch{return $.json({suggestions:[]})}});se8=Mx});import{createHmac as cT$,timingSafeEqual as lT$}from"crypto";function $06($,Z,X,Q=Date.now()){if(!Z||!X)return!1;let Y,G=[];for(let H of Z.split(",")){let N=H.indexOf("=");if(N<=0)continue;let U=H.slice(0,N).trim(),F=H.slice(N+1).trim();if(U==="t")Y=F;else if(U==="v1")G.push(F)}if(!Y||G.length===0)return!1;let J=Number(Y);if(!Number.isFinite(J)||Math.abs(Q/1000-J)>dT$)return!1;let K=cT$("sha256",X).update(`${Y}.${$}`).digest("hex"),W=Buffer.from(K,"hex");return G.some((H)=>{let N=Buffer.from(H,"hex");return W.length===N.length&&lT$(W,N)})}function Z06($){let Z;try{Z=JSON.parse($)}catch{return null}let X=f3(Z),Q=f3(f3(X?.data)?.object);if(!X||typeof X.type!=="string"||!Q)return null;return{id:v3(X.id),type:X.type,created:typeof X.created==="number"?X.created:void 0,livemode:typeof X.livemode==="boolean"?X.livemode:void 0,data:{object:Q}}}function mT$($){switch($){case"active":case"trialing":return"active";case"past_due":return"past_due";default:return"canceled"}}function v3($){return typeof $==="string"?$:void 0}function f3($){return typeof $==="object"&&$!==null?$:void 0}function tI0($){return typeof $==="number"?new Date($*1000):null}function JK1($){return v3($)??v3(f3($)?.id)}function iT$($){return JK1($.subscription)??v3(f3(f3($.parent)?.subscription_details)?.subscription)}function nT$($){let Z=tI0($.current_period_end);if(Z)return Z;let X=f3($.items)?.data;if(!Array.isArray(X))return null;let Q=0;for(let Y of X){let G=f3(Y)?.current_period_end;if(typeof G==="number"&&G>Q)Q=G}return Q>0?new Date(Q*1000):null}function YK1($,Z){let X=tI0($.created);return!!X&&!!Z.lastStripeEventAt&&X<Z.lastStripeEventAt}function GK1($,Z){let X=tI0($.created);if(!X)return;return Z.lastStripeEventAt&&Z.lastStripeEventAt>X?void 0:X}async function pT$($,Z){let X=Z.data.object;switch(Z.type){case"checkout.session.completed":case"checkout.session.async_payment_succeeded":{let Q=v3(f3(X.metadata)?.orgId);if(!Q)return{handled:!1,reason:"no orgId"};if(v3(f3(X.metadata)?.kind)==="topup"){if(X.mode!=="payment")return{handled:!1,reason:"topup with wrong mode"};if(v3(X.payment_status)!=="paid")return{handled:!1,reason:"payment not confirmed"};let K=v3(X.id);if(!K)return console.error("stripe webhook: topup session without id",{eventId:Z.id,organizationId:Q}),{handled:!1,reason:"topup session without id"};let W=Number(f3(X.metadata)?.creditCents);if(!Number.isInteger(W)||W<=0)return console.error("stripe webhook: paid topup with bad metadata \u2014 credit NOT applied",{eventId:Z.id,organizationId:Q,creditCents:f3(X.metadata)?.creditCents}),{handled:!1,reason:"bad topup metadata"};return{handled:!0,organizationId:Q,topUp:{creditCents:W,referenceId:`stripe-topup:${K}`}}}if(X.mode!=="subscription")return{handled:!1,reason:"not a subscription checkout"};if(v3(X.payment_status)!=="paid")return{handled:!1,reason:"payment not confirmed"};let Y=await $.getBilling(Q);if(!Y)return{handled:!1,reason:"unknown org"};if(Y.legacy||Y.billingMode!=="self_serve")return console.error("stripe webhook: refused checkout bind",{organizationId:Q,eventId:Z.id,legacy:Y.legacy,billingMode:Y.billingMode}),{handled:!1,reason:"org is not self-serve"};let G=JK1(X.subscription);if(Y.stripeSubscriptionId&&G&&Y.stripeSubscriptionId!==G)return console.error("stripe webhook: refused checkout rebind",{organizationId:Q,eventId:Z.id}),{handled:!1,reason:"org already bound to another subscription",orphanSubscriptionId:G};if(YK1(Z,Y))return{handled:!1,reason:"stale event"};let J=`stripe-checkout:${v3(X.id)??crypto.randomUUID()}`;return await $.updateStripeState(Q,{stripeCustomerId:JK1(X.customer),stripeSubscriptionId:G,status:"active",benefitsReferenceId:J,lastStripeEventAt:GK1(Z,Y)}),{handled:!0,organizationId:Q,benefitsReferenceId:J}}case"customer.subscription.updated":case"customer.subscription.deleted":{let Q=v3(X.id);if(!Q)return{handled:!1,reason:"no sub id"};let Y=await $.getBillingByStripeSubscriptionId(Q);if(!Y)return{handled:!1,reason:"unknown subscription"};let G=Z.type==="customer.subscription.deleted";if(!G&&YK1(Z,Y))return{handled:!1,reason:"stale event"};let J=G?"canceled":mT$(X.status),K=nT$(X),W=`stripe-sub:${Q}:${J}:${K?.getTime()??0}`;return await $.updateStripeState(Y.organizationId,{status:J,currentPeriodEnd:K,...G&&{stripeSubscriptionId:null},benefitsReferenceId:W,lastStripeEventAt:GK1(Z,Y)}),{handled:!0,organizationId:Y.organizationId,benefitsReferenceId:W}}case"invoice.paid":{let Q=iT$(X);if(!Q)return{handled:!1,reason:"no sub id"};let Y=await $.getBillingByStripeSubscriptionId(Q);if(!Y)return{handled:!1,reason:"unknown subscription"};if(YK1(Z,Y))return{handled:!1,reason:"stale event"};let G=`stripe-invoice:${v3(X.id)??crypto.randomUUID()}`;return await $.updateStripeState(Y.organizationId,{status:"active",currentPeriodEnd:tI0(X.period_end),benefitsReferenceId:G,lastStripeEventAt:GK1(Z,Y)}),{handled:!0,organizationId:Y.organizationId,benefitsReferenceId:G}}default:return{handled:!1,reason:`unhandled event ${Z.type}`}}}async function oT$($,Z){let[X,Q]=await Promise.all([$.getBilling(Z),$.listPaidSeatUserIds(Z)]);if(!Gb(X))return;if(await tB8({subscriptionId:X.stripeSubscriptionId,targetQuantity:Q.length}))console.error("stripe webhook: reconciled diverged seat quantity",{organizationId:Z,targetQuantity:Q.length})}async function X06($){let Z=new ON(X6().db),X=await pT$(Z,$);if(X.handled&&X.topUp)await qt1({organizationId:X.organizationId,amountCents:X.topUp.creditCents,referenceId:X.topUp.referenceId});if(X.handled&&X.benefitsReferenceId)try{await PN(X.organizationId,X.benefitsReferenceId,"apply")}catch(Q){console.error("Failed to enqueue benefit sync (sweep covers):",Q)}if(X.handled&&tT$.has($.type))try{await oT$(Z,X.organizationId)}catch(Q){console.error("Failed to reconcile seat quantity (next cycle):",Q)}if(!X.handled&&X.orphanSubscriptionId)try{await pB8(X.orphanSubscriptionId),console.error("stripe webhook: canceled orphan subscription",{subscriptionId:X.orphanSubscriptionId,eventId:$.id})}catch(Q){if(!(Q instanceof aQ&&(Q.status===400||Q.status===404)))throw Q}return X}var dT$=300,tT$;var Q06=O(()=>{J7();tf();Xh();F90();Jb();tT$=new Set(["checkout.session.completed","checkout.session.async_payment_succeeded","invoice.paid"])});var rT$=1048576,KK1;var Y06=O(()=>{Y4();Ox();v8();Q06();KK1=new V1;KK1.post("/webhook",C7({maxSize:rT$,onError:($)=>$.json({error:"payload too large"},413)}),async($)=>{let Z=Y1().stripeWebhookSecret;if(!Z)return $.json({error:"stripe billing not configured"},503);let X=await $.req.text();if(!$06(X,$.req.header("stripe-signature"),Z))return $.json({error:"invalid signature"},400);let Y=Z06(X);if(!Y)return $.json({error:"invalid payload"},400);let G=await X06(Y);return console.log("stripe webhook",{eventId:Y.id,type:Y.type,livemode:Y.livemode,...G}),$.json({received:!0})})});function G06($,Z){if(Z.startsWith("text/html")||Z.startsWith("image/svg"))$.set("Content-Security-Policy","sandbox allow-scripts allow-modals allow-same-origin")}var J06,aT$,sT$,K06;var W06=O(()=>{Y4();OJ();iu();Wb();J06=new V1,aT$=["range","if-none-match","if-modified-since"],sT$=["content-type","content-length","content-range","accept-ranges","etag","last-modified"];J06.get("/:org/files/*",async($)=>{let Z=$.get("studioContext"),X=Z.organization?.id;if(!Z.auth?.user?.id){if(eu($))return $.redirect(`/login?next=${encodeURIComponent($.req.path)}`,302);throw new N8(401,{message:"Authentication required"})}if(!X)throw new N8(401,{message:"Organization context required"});let Q=$.req.path.replace(/^.*\/files\//,"");if(!Q)throw new N8(400,{message:"Missing file key"});let Y=await Ts(Q,Z);if(!Y)throw new N8(503,{message:"Object storage not configured"});if(Y.startsWith("data:")&&BJ()){let W=Y.match(/^data:([^;]+);base64,(.+)$/s);if(!W)throw new N8(500,{message:"Invalid data URL from storage"});let[,H,N]=W,U=Buffer.from(N,"base64"),F=new Headers({"Content-Type":H,"Cache-Control":"private, max-age=86400"});return G06(F,H),new Response(U,{status:200,headers:F})}let G=new Headers;for(let W of aT$){let H=$.req.header(W);if(H)G.set(W,H)}let J=await fetch(Y,{headers:G});if(J.status===403||J.status===404)throw new N8(404,{message:"File not found"});if(!J.ok&&J.status!==304&&J.status!==416)throw console.error(`[files] upstream storage error ${J.status} for key:`,Q),new N8(502,{message:"Upstream storage error"});let K=new Headers;for(let W of sT$){let H=J.headers.get(W);if(H)K.set(W,H)}return K.set("Cache-Control","private, max-age=86400"),G06(K,K.get("content-type")??""),new Response(J.body,{status:J.status,headers:K})});K06=J06});var Ge=_((kx)=>{var eT$=kx&&kx.__createBinding||(Object.create?function($,Z,X,Q){if(Q===void 0)Q=X;var Y=Object.getOwnPropertyDescriptor(Z,X);if(!Y||("get"in Y?!Z.__esModule:Y.writable||Y.configurable))Y={enumerable:!0,get:function(){return Z[X]}};Object.defineProperty($,Q,Y)}:function($,Z,X,Q){if(Q===void 0)Q=X;$[Q]=Z[X]}),$R$=kx&&kx.__exportStar||function($,Z){for(var X in $)if(X!=="default"&&!Object.prototype.hasOwnProperty.call(Z,X))eT$(Z,$,X)};Object.defineProperty(kx,"__esModule",{value:!0});$R$(vY(),kx)});var U06=_((H06)=>{Object.defineProperty(H06,"__esModule",{value:!0});H06.version=void 0;H06.version="3.4.0"});var B06=_((TH)=>{var ZR$=TH&&TH.__importDefault||function($){return $&&$.__esModule?$:{default:$}};Object.defineProperty(TH,"__esModule",{value:!0});TH.NodeTransport=TH.VERSION=void 0;TH.nodeResolveHost=KR$;var t$=Ge(),XR$=U0("net"),WK1=U0("tls"),QR$=U0("path"),F06=U0("fs"),YR$=ZR$(U0("dns")),GR$=U06();TH.VERSION=GR$.version;var JR$="nats.js";class w06{socket;version;lang;yields=[];signal=(0,t$.deferred)();closedNotification=(0,t$.deferred)();options;connected=!1;tlsName="";done=!1;closeError;constructor(){this.lang=JR$,this.version=TH.VERSION}async connect($,Z){this.tlsName=$.tlsName,this.options=Z;let{tls:X}=this.options,{handshakeFirst:Q}=X||{};try{if(Q===!0)this.socket=await this.tlsFirst($);else this.socket=await this.dial($);if(this.done)this.socket?.destroy();let Y=await this.peekInfo();(0,t$.checkOptions)(Y,Z);let{tls_required:G,tls_available:J}=Y,K=J===!0&&Z.tls!==null;if(!Q&&(G||K))this.socket=await this.startTLS();if(this.done)this.socket?.destroy();if(G&&this.socket.encrypted!==!0)throw t$.errors.InvalidArgumentError.format("tls","is not available on this server");return this.connected=!0,this.setupHandlers(),this.signal.resolve(),Promise.resolve()}catch(Y){let G=Y;if(!G)G=new t$.errors.ConnectionError("error connecting - node provided an undefined error");let{code:J}=G,K=J==="ECONNREFUSED"?new t$.errors.ConnectionError("connection refused",{cause:G}):G;throw this.socket?.destroy(),K}}dial($){let Z=(0,t$.deferred)(),X,Q=(0,XR$.createConnection)($.port,$.hostname,()=>{Z.resolve(Q),Q.removeAllListeners()});return Q.on("error",(Y)=>{X=Y}),Q.on("close",()=>{Q.removeAllListeners(),Z.reject(X)}),Q.setNoDelay(!0),Z}get isClosed(){return this.done}close($){return this._closed($,!1)}peekInfo(){let $=(0,t$.deferred)(),Z;return this.socket.on("data",(X)=>{this.yields.push(X);let Q=t$.DataBuffer.concat(...this.yields),Y=(0,t$.extractProtocolMessage)(Q);if(Y!=="")try{let G=t$.INFO.exec(Y);if(!G)throw Error("unexpected response from server");let J=JSON.parse(G[1]);$.resolve(J)}catch(G){$.reject(G)}finally{this.socket.removeAllListeners()}}),this.socket.on("error",(X)=>{Z=X}),this.socket.on("close",()=>{this.socket.removeAllListeners(),$.reject(Z)}),$}loadFile($){if(!$)return Promise.resolve();let Z=(0,t$.deferred)();try{if($=(0,QR$.resolve)($),!(0,F06.existsSync)($))Z.reject(Error(`${$} doesn't exist`));(0,F06.readFile)($,(X,Q)=>{if(X)return Z.reject(X);Z.resolve(Q)})}catch(X){Z.reject(X)}return Z}async loadClientCerts(){let $={},{certFile:Z,cert:X,caFile:Q,ca:Y,keyFile:G,key:J}=this.options.tls;try{if(Z){let K=await this.loadFile(Z);if(K)$.cert=K}else if(X)$.cert=X;if(G){let K=await this.loadFile(G);if(K)$.key=K}else if(J)$.key=J;if(Q){let K=await this.loadFile(Q);if(K)$.ca=[K]}else if(Y)$.ca=Y;return Promise.resolve($)}catch(K){return Promise.reject(K)}}async tlsFirst($){let Z,X={servername:this.tlsName,rejectUnauthorized:!0};if(this.socket)X.socket=this.socket;if(typeof this.options.tls==="object")try{let Y=await this.loadClientCerts()||{};X=(0,t$.extend)(X,this.options.tls,Y)}catch(Y){return Promise.reject(new t$.errors.ConnectionError(Y.message,{cause:Y}))}let Q=(0,t$.deferred)();try{let Y=(0,WK1.connect)($.port,$.hostname,X,()=>{Y.removeAllListeners(),Q.resolve(Y)});Y.on("error",(G)=>{Z=G}),Y.on("secureConnect",()=>{if(X.rejectUnauthorized===!1)return;if(!Y.authorized)throw Y.authorizationError}),Y.on("close",()=>{Q.reject(Z),Y.removeAllListeners()}),Y.setNoDelay(!0)}catch(Y){Q.reject(new t$.errors.ConnectionError(Y.message,{cause:Y}))}return Q}async startTLS(){let $,Z={socket:this.socket,servername:this.tlsName,rejectUnauthorized:!0};if(typeof this.options.tls==="object")try{let Q=await this.loadClientCerts()||{};Z=(0,t$.extend)(Z,this.options.tls,Q)}catch(Q){return Promise.reject(new t$.errors.ConnectionError(Q.message,{cause:Q}))}let X=(0,t$.deferred)();try{let Q=(0,WK1.connect)(Z,()=>{Q.removeAllListeners(),X.resolve(Q)});Q.on("error",(Y)=>{$=Y}),Q.on("secureConnect",()=>{if(Z.rejectUnauthorized===!1)return;if(!Q.authorized)throw Q.authorizationError}),Q.on("close",()=>{X.reject($),Q.removeAllListeners()})}catch(Q){X.reject(new t$.errors.ConnectionError(Q.message,{cause:Q}))}return X}setupHandlers(){let $;this.socket.on("data",(Z)=>{return this.yields.push(Z),this.signal.resolve()}),this.socket.on("error",(Z)=>{$=Z}),this.socket.on("end",()=>{if(this.socket?.destroyed)return;this.socket?.write(new Uint8Array(0),()=>{this.socket?.end()})}),this.socket.on("close",()=>{this._closed($,!1)})}[Symbol.asyncIterator](){return this.iterate()}async*iterate(){while(!0){if(this.yields.length===0)await this.signal;let $=this.yields;this.yields=[];for(let Z=0;Z<$.length;Z++){if(this.options.debug)console.info(`> ${(0,t$.render)($[Z])}`);yield $[Z]}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,t$.deferred)()}}discard(){if(this.done=!0,this.socket)try{this.socket.removeAllListeners(),this.socket.destroy()}catch{}}disconnect(){this._closed(void 0,!0).then().catch()}isEncrypted(){return this.socket instanceof WK1.TLSSocket}_send($){if(this.isClosed||this.socket===void 0)return Promise.resolve();if(this.options.debug)console.info(`< ${(0,t$.render)($)}`);let Z=(0,t$.deferred)();try{this.socket.write($,(X)=>{if(X){if(this.options.debug)console.error(`!!! ${(0,t$.render)($)}: ${X}`);return Z.reject(X)}return Z.resolve()})}catch(X){if(this.options.debug)console.error(`!!! ${(0,t$.render)($)}: ${X}`);Z.reject(X)}return Z}send($){this._send($).catch((X)=>{})}async _closed($,Z=!0){if(!this.connected)return;if(this.done){this.socket?.destroy();return}if(this.closeError=$,!$&&this.socket&&Z)try{await this._send(new TextEncoder().encode(""))}catch(X){if(this.options.debug)console.log("transport close terminated with an error",X)}try{if(this.socket)this.socket.removeAllListeners(),this.socket?.destroy(),this.socket=void 0}catch(X){console.log(X)}this.done=!0,this.closedNotification.resolve(this.closeError)}closed(){return this.closedNotification}}TH.NodeTransport=w06;function KR$($){let Z=(0,t$.deferred)();return YR$.default.lookup($,{all:!0},(X,Q)=>{if(X){Z.reject(X);return}let Y=[];for(let G of Q)Y.push(G.address);if(Y.length===0)Y.push($);Z.resolve(Y)}),Z}});var z06=_((E06)=>{Object.defineProperty(E06,"__esModule",{value:!0});E06.connect=WR$;var O06=B06(),L06=Ge(),D06=Ge();function WR$($={}){if((0,D06.hasWsProtocol)($))return Promise.reject(D06.errors.InvalidArgumentError.format("servers","node client doesn't support websockets, use the 'wsconnect' function instead"));return(0,L06.setTransportFactory)({factory:()=>{return new O06.NodeTransport},dnsResolveFn:O06.nodeResolveHost}),L06.NatsConnectionImpl.connect($)}});var j06=_((rU)=>{var NR$=rU&&rU.__createBinding||(Object.create?function($,Z,X,Q){if(Q===void 0)Q=X;var Y=Object.getOwnPropertyDescriptor(Z,X);if(!Y||("get"in Y?!Z.__esModule:Y.writable||Y.configurable))Y={enumerable:!0,get:function(){return Z[X]}};Object.defineProperty($,Q,Y)}:function($,Z,X,Q){if(Q===void 0)Q=X;$[Q]=Z[X]}),UR$=rU&&rU.__exportStar||function($,Z){for(var X in $)if(X!=="default"&&!Object.prototype.hasOwnProperty.call(Z,X))NR$(Z,$,X)};Object.defineProperty(rU,"__esModule",{value:!0});rU.connect=void 0;var FR$=z06();Object.defineProperty(rU,"connect",{enumerable:!0,get:function(){return FR$.connect}});UR$(Ge(),rU)});function R06($){let Z=$?.connectFn??LR$,X=null,Q=null,Y=!1,G=!1,J=!1,K=[];function W(){return X!==null&&!X.isClosed()&&!X.isDraining()&&!J}function H(){console.log(`[NatsProvider] fireReady: ${K.length} callbacks`);for(let F of K)try{F()}catch{}}function N(F){(async()=>{for await(let w of F.status())if(w.type==="disconnect")console.log("[NatsProvider] Disconnected"),J=!0;else if(w.type==="reconnect")console.log("[NatsProvider] Reconnected, re-firing ready callbacks"),J=!1,Q=null,H()})().catch(()=>{})}async function U(F,w){let B=0;while(!G)try{X=await Z({servers:F,timeout:OR$,reconnect:!0,maxReconnectAttempts:-1,...w?{authenticator:w}:{}}),console.log(`[NatsProvider] Connected to ${X.getServer()} after ${B} attempt(s)`),Q=null,J=!1,N(X),H();return}catch{B++;let L=zY(BR$,wR$,B-1,2,0.5);await Z6(L)}}return{init(F,w){if(Y)return;Y=!0,G=!1;let B=w?.creds?P06.credsAuthenticator(new TextEncoder().encode(w.creds)):void 0;U(F,B).catch(()=>{})},isConnected(){return W()},getConnection(){return W()?X:null},getJetStream(){if(!W())return null;if(!Q)Q=T06.jetstream(X);return Q},onReady(F){if(K.push(F),W())try{F()}catch{}},async drain(){if(G=!0,Y=!1,Q=null,J=!1,X){let F=X;X=null,await F.drain().catch(()=>{})}}}}function LR$($){return A06.connect($)}var P06,A06,T06,wR$=100,BR$=3000,OR$=3000;var I06=O(()=>{D5();P06=k(Dm(),1),A06=k(j06(),1),T06=k(fD(),1)});function HK1($,Z){return`${$}.${Z}`}class NK1{cache;constructor($){this.cache=Eu({ttlMs:$?.ttlMs??DR$,maxSize:$?.maxSize??ER$})}async get($,Z){return this.cache.get(HK1($,Z))??null}async set($,Z,X){this.cache.set(HK1($,Z),X)}async invalidate($,Z){this.cache.delete(HK1($,Z))}teardown(){this.cache.clear()}}var DR$=600000,ER$=5000;var q06=()=>{};function oI0($,Z){return`${$}:${Z}`}function UK1($){let Z=Eu({ttlMs:$?.ttlMs??zR$,maxSize:$?.maxSize??jR$}),X=$?.getConnection,Q=crypto.randomUUID(),Y=new TextEncoder,G=new TextDecoder,J=null;function K(W,H){let N=X?.();if(!N)return;try{N.publish(M06,Y.encode(JSON.stringify({organizationId:W,keyId:H,originId:Q})))}catch(U){console.warn("[ProviderKeyCache] Publish failed (non-critical):",U)}}return{get(W,H){return Z.get(oI0(W,H))},set(W,H,N){Z.set(oI0(W,H),N)},invalidate(W,H){Z.delete(oI0(W,H)),K(W,H)},start(){if(J)return;let W=X?.();if(!W)return;J=W.subscribe(M06),(async()=>{for await(let H of J)try{let N=JSON.parse(G.decode(H.data));if(N.originId===Q)continue;Z.delete(oI0(N.organizationId,N.keyId))}catch{}})().catch(console.error)},teardown(){J?.unsubscribe(),J=null,Z.clear()}}}var M06="studio.ai-provider-keys.invalidate",zR$=30000,jR$=5000;var k06=()=>{};class FK1{options;subscriptions=[];onCancel=null;encoder=new TextEncoder;originId=crypto.randomUUID();seenMessageIds=new Set;constructor($){this.options=$}async start($){if($)this.onCancel=$;if(this.subscriptions.length>0)return;if(!this.onCancel)return;let Z=this.options.getConnection();if(!Z)return;let X=new TextDecoder;this.subscriptions=S06.map((Q)=>Z.subscribe(Q));for(let Q of this.subscriptions)(async()=>{for await(let Y of Q)try{let G=JSON.parse(X.decode(Y.data));if(G.originId===this.originId)continue;if(G.messageId&&this.hasSeen(G.messageId))continue;this.onCancel?.(G.taskId)}catch{}})().catch(console.error)}broadcast($){if(/[.*>\s]/.test($)){console.warn("[NatsCancelBroadcast] Invalid threadId, skipping broadcast");return}this.onCancel?.($);try{let Z=this.options.getConnection();if(!Z)return;let X=this.encoder.encode(JSON.stringify({taskId:$,originId:this.originId,messageId:crypto.randomUUID()}));for(let Q of S06)Z.publish(Q,X)}catch(Z){console.warn("[NatsCancelBroadcast] Publish failed (non-critical):",Z)}}publishControlFrame($,Z){}async stop(){for(let $ of this.subscriptions)$.unsubscribe();this.subscriptions=[],this.seenMessageIds.clear(),this.onCancel=null}hasSeen($){if(this.seenMessageIds.has($))return!0;if(this.seenMessageIds.add($),this.seenMessageIds.size>1000){let Z=this.seenMessageIds.values().next().value;if(Z)this.seenMessageIds.delete(Z)}return!1}}var S06;var V06=O(()=>{S06=["studio.decopilot.cancel","mesh.decopilot.cancel"]});var C06=($)=>{let Z;return()=>Z??=$()},wK1,BK1;var _06=O(()=>{j5();wK1=C06(()=>L6.createHistogram("decopilot.stream.encode_ms",{description:"Per-chunk JSON.stringify+encode time for decopilot stream",unit:"ms"})),BK1=C06(()=>L6.createCounter("decopilot.stream.published_chunks",{description:"Logical decopilot stream chunks published to JetStream",unit:"{chunks}"}))});function MR$(){return{name:wU,subjects:[`${V30}.>`],storage:AK.StorageType.File,max_age:TR$,max_bytes:IR$,max_msgs_per_subject:qR$,discard:AK.DiscardPolicy.Old,retention:AK.RetentionPolicy.Limits,duplicate_window:RR$,num_replicas:1}}class f06{chunks=0;encodeMs=0;maxMs=0;bytes=0;windowStart=performance.now();constructor(){setInterval(()=>this.flush(),1e4).unref?.()}record($,Z){if(this.chunks++,this.encodeMs+=$,$>this.maxMs)this.maxMs=$;this.bytes+=Z}flush(){let $=performance.now(),Z=$-this.windowStart;if(this.chunks>0&&Z>0)console.warn(JSON.stringify({msg:"stream-encode-trace",windowMs:Math.round(Z),chunks:this.chunks,encodeMs:Math.round(this.encodeMs),pctOfLoop:+(this.encodeMs/Z*100).toFixed(1),maxChunkMs:+this.maxMs.toFixed(2),mbEncoded:+(this.bytes/1048576).toFixed(2)}));this.chunks=0,this.encodeMs=0,this.maxMs=0,this.bytes=0,this.windowStart=$}}function x06($){let Z=v06.headers();for(let[X,Q]of Object.entries($))Z.set(X,Q);return Z}function CR$($,Z){let X=0;return{publish(Q,Y,G,J){Q.publish(Y,G,J?{headers:J}:void 0).catch((K)=>{if(X++,AR$().add(1,{"org.id":Z??"unknown"}),X===1||X%100===0)console.warn(`[Decopilot] JetStream publish failed for thread ${$} (${X} total):`,K)})},get errorCount(){return X}}}function _R$($){if(!($ instanceof Error))return!1;if($.name==="TimeoutError")return!0;return/timeout|no responders|503/i.test($.message)}class OK1{options;js=null;jsm=null;constructor($){this.options=$}async init(){let $=this.options.getConnection();if(!$){console.log("[Decopilot] StreamBuffer.init skipped: NATS not connected yet");return}let Z=MR$(),X=await aZ(async()=>{let Q=this.options.getJetStreamManager?await this.options.getJetStreamManager():await AK.jetstreamManager($);try{await Q.streams.info(wU),await Q.streams.update(wU,Z)}catch(Y){if(Y instanceof Error&&Y.message.includes("stream not found"))await Q.streams.add(Z);else if(Y instanceof Error&&/can ?not change.*storage|storage type/i.test(Y.message))await Q.streams.delete(wU),await Q.streams.add(Z);else throw Y}return Q},{maxAttempts:5,minTimeout:250,maxTimeout:4000,jitter:0.5,isRetriable:_R$});this.js=this.options.getJetStream(),this.jsm=X,console.log(`[Decopilot] StreamBuffer.init ${this.js?"ready":"degraded (js=null)"}`)}pump($,Z,X,Q){let Y=this.js;if(!Y)return console.warn(`[Decopilot] pump: JetStream client unavailable for thread ${Z}; chunks NOT published to NATS`),Promise.resolve();let G=CR$(Z,Q),J=!1,K=()=>{if(J)return;J=!0;let H=fz8(Z);Y.publish(H.subject,H.data).catch(()=>{})};X.addEventListener("abort",K,{once:!0});let W=(H)=>{let N=performance.now(),U=A61(H,{runId:Z}),F=performance.now()-N;if(wK1().record(F),BK1().add(1,{"org.id":Q??"unknown"}),VR$?.record(F,U.reduce((w,B)=>w+B.data.length,0)),U.length===0){console.warn(`[Decopilot] dropping oversized stream chunk for thread ${Z}`);return}for(let w of U)G.publish(Y,w.subject,w.data,w.headers?x06(w.headers):void 0)};return(async()=>{let H=$.getReader(),N=0,U=0,F;try{while(!0){let{done:w,value:B}=await H.read();if(w)break;if(W(B),U++,++N>=64)N=0,await new Promise((L)=>setImmediate(L))}}catch(w){F=w,console.warn(`[Decopilot] stream pump error for thread ${Z}:`,w?.message??w)}finally{if(H.releaseLock(),K(),SR$)console.warn(JSON.stringify({msg:"decopilot-stream-diag",event:"pump-done",taskId:Z,publishedChunks:U,publishErrors:G.errorCount}))}if(F!==void 0)throw F})()}async publishRawChunk($,Z,X){let Q=this.js;if(!Q)return!1;let Y=performance.now(),G=A61(Z,{runId:$,dedup:X});if(wK1().record(performance.now()-Y),BK1().add(1),G.length===0)return console.warn(`[Decopilot] dropping oversized raw chunk for thread ${$} (> MAX_CHUNKED_BYTES)`),!0;for(let J of G)await Q.publish(J.subject,J.data,{...J.headers?{headers:x06(J.headers)}:{},...J.msgId?{msgID:J.msgId}:{}});return!0}async publishDone($,Z,X){let Q=this.js;if(!Q)return!1;let Y=vz8({runId:$,fenceToken:Z,finalSeq:X});return await Q.publish(Y.subject,Y.data,{msgID:Y.msgId}),!0}async createTailStream($,Z,X){let Q=this.js;if(!Q)return console.warn(`[Decopilot] createTailStream: JetStream client unavailable for thread ${$}; no live tail`),null;let Y=X?.deliverPolicy==="new"?AK.DeliverPolicy.New:AK.DeliverPolicy.All,G=X?.closeOnDone??!1,J=GO($),K;try{K=await(await Q.consumers.get(wU,{filter_subjects:J,deliver_policy:Y})).consume()}catch(L){return console.warn("[Decopilot] JetStream tail unavailable (non-critical):",L?.message??L),null}let N=f30({messages:async function*(){try{for await(let L of K)yield{subject:L.subject,data:L.data,headers:L.headers}}finally{K.stop()}}(),onCancel:()=>K.stop()}).pipeThrough(C30()).pipeThrough(_30()).getReader(),U=!1,F=()=>{if(U)return;U=!0;try{N.releaseLock()}catch{}},w=!1,B=()=>{if(w)return;w=!0,K.stop(),N.cancel().catch(()=>{}),F()};return Z?.addEventListener("abort",B,{once:!0}),new ReadableStream({async pull(L){for(;;){let{done:D,value:E}=await N.read();if(D){B(),L.close();return}let z=E;if(z.kind==="done"){if(G){B(),L.close();return}continue}L.enqueue(z.chunk);return}},cancel(){B()}})}purge($){if(!this.jsm)return;this.jsm.streams.purge(wU,{filter:GO($)}).catch(()=>{})}teardown(){this.js=null,this.jsm=null}}var AK,v06,PR$=($)=>{let Z;return()=>Z??=$()},AR$,TR$=86400000000000,RR$=120000000000,IR$=4294967296,qR$=500000,kR$,SR$,VR$;var b06=O(()=>{D5();T61();b30();x30();j5();_06();AK=k(fD(),1),v06=k(Dm(),1),AR$=PR$(()=>L6.createCounter("decopilot.stream.publish_errors",{description:"Number of JetStream publish failures for decopilot stream chunks",unit:"{errors}"}));kR$=process.env.STREAM_ENCODE_TRACE==="1",SR$=process.env.DECOPILOT_STREAM_TRACE==="1";VR$=kR$?new f06:null});function rI0($,Z,X,Q){if(!Q)return!1;return $.emit(Z,sK(X,Q.status,{title:Q.title??void 0,virtualMcpId:Q.virtual_mcp_id??void 0,createdBy:Q.created_by??void 0,triggerId:Q.trigger_id??null,branch:Q.branch??null,createdAt:Q.created_at,updatedAt:Q.updated_at})),!0}var y06=O(()=>{T6()});class LK1{storage;options;timer=null;constructor($,Z={}){this.storage=$;this.options=Z}start(){if(this.timer)return;let $=this.options.intervalMs??300000;this.timer=setInterval(()=>{this.runOnce()},$)}async runOnce(){let $=this.options.staleAfterMs??3600000;try{let Z=await this.storage.sweepAbandoned($);if(Z>0)console.log(`[async-research-sweeper] marked ${Z} stale jobs as abandoned`);return Z}catch(Z){return console.error("[async-research-sweeper] sweep failed",Z),0}}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}import{readdir as xR$,rm as aI0}from"fs/promises";import{join as sI0}from"path";async function eI0($){let Z=new Date;Z.setUTCDate(Z.getUTCDate()-vR$),Z.setUTCHours(0,0,0,0);let X=0;try{let Q=await Sx($);for(let Y of Q)if(/^\d{4}$/.test(Y))X+=await g06($,Y,Z);else if(!Y.startsWith(".")){let G=sI0($,Y),J=await Sx(G);for(let W of J){if(!/^\d{4}$/.test(W))continue;X+=await g06(G,W,Z)}if((await Sx(G)).length===0)await aI0(G,{recursive:!0,force:!0})}}catch(Q){console.warn("monitoring retention cleanup failed:",Q)}return X}async function g06($,Z,X){let Q=0,Y=sI0($,Z),G=await Sx(Y);for(let K of G){if(!/^\d{2}$/.test(K))continue;let W=sI0(Y,K),H=await Sx(W);for(let U of H){if(!/^\d{2}$/.test(U))continue;let F=new Date(`${Z}-${K}-${U}T00:00:00Z`);if(isNaN(F.getTime()))continue;if(F<X){let w=sI0(W,U);await aI0(w,{recursive:!0,force:!0}),Q++}}if((await Sx(W)).length===0)await aI0(W,{recursive:!0,force:!0})}if((await Sx(Y)).length===0)await aI0(Y,{recursive:!0,force:!0});return Q}async function Sx($){try{return(await xR$($)).filter((X)=>!X.startsWith("."))}catch{return[]}}var vR$=30;var DK1=()=>{};import{DBOS as EK1,SchedulerMode as fR$}from"@dbos-inc/dbos-sdk";async function yR$(){let $=[a3(),Lf(),QN()],Z=0;for(let X of $)try{Z+=await eI0(X)}catch(Q){console.error("[monitoring-retention] cleanup failed:",Q)}return console.log(`[monitoring-retention] deleted ${Z} day-dir(s) across ${$.length} signal dir(s)`),{deleted:Z,dirs:$.length}}async function gR$($,Z){await EK1.runStep(()=>yR$(),{name:"monitoringRetention"})}function u06(){if(h06)return;h06=!0;let $=EK1.registerWorkflow(gR$,{name:"monitoringRetentionWorkflow"});EK1.registerScheduled($,{name:"monitoringRetentionWorkflow",crontab:bR$,mode:fR$.ExactlyOncePerIntervalWhenActive})}var bR$="23 4 * * *",h06=!1;var c06=O(()=>{kY();DK1()});function l06($){return async(Z,X)=>{let Q=await $.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["member.role","organization.id as orgId","organization.slug as orgSlug","organization.name as orgName"]).where("member.userId","=",X).where("member.organizationId","=",Z).executeTakeFirst();if(!Q)return console.warn(`[automationContextFactory] User ${X} not found in org ${Z} \u2014 returning null`),null;let Y=await yB.create();Y.auth.user={id:X,role:Q.role},Y.organization={id:Q.orgId,slug:Q.orgSlug,name:Q.orgName};let G=await _01($.db,Z,Q.role);return Y.boundAuth=C01({auth:Y.authInstance,headers:new Headers,role:Q.role,permissions:G,userId:X}),Y.access=new dE(X,void 0,Y.boundAuth,Q.role,"self"),BG0(Y,{id:Q.orgId,slug:Q.orgSlug}),Y}}var d06=O(()=>{mE();Fo()});import{EventEmitter as hR$}from"events";var zK1;var m06=O(()=>{AD();zK1=new hR$;zK1.on("request",($)=>{oF($)})});function i06(){return async($,Z)=>{let X=Date.now(),Q=$.req.method,Y=$.req.path;if(Y==="/api/auth/get-session"||Y.includes("favicon")){await Z();return}let G="",J=!1;if(Y.startsWith("/mcp")&&Q==="POST"){J=!0;try{if($.req.header("Content-Type")?.includes("application/json")){let F=await $.req.raw.clone().json();if(F.method==="tools/call"&&F.params?.name){let w=zc(F.params.name),B=F.params.arguments||{},L=Object.keys(B).map((E)=>zc(E)),D=L.length>0?L.slice(0,3).join(",")+(L.length>3?"\u2026":""):"";G=`${X5.tool}${w}${X5.dim}(${D})${X5.reset}`}else if(F.method)G=`${X5.dim}${zc(F.method)}${X5.reset}`}}catch{}}let K=zc(Y);if(Y.startsWith("/mcp/conn_")){let N=Y.split("/")[2]??"";K=`/mcp/${X5.mcp}${zc(N.slice(0,12))}\u2026${X5.reset}`}else if(Y==="/mcp")K=`${X5.mcp}/mcp${X5.reset}`;else if(Y==="/mcp/registry")K=`${X5.mcp}/mcp/registry${X5.reset}`;let W=cR$(Q),H=J?"\u25C0":"\u2190";if(!B50())console.log(`${X5.dim}${H}${X5.reset} ${W}${Q}${X5.reset} ${K}${G?` ${G}`:""}`);try{await Z()}finally{let N=Date.now()-X,U=$.res.status,F=uR$(U),w=N<1000?`${N}ms`:`${(N/1000).toFixed(1)}s`,B=J?"\u25B6":"\u2192";if(!B50())console.log(`${X5.dim}${B}${X5.reset} ${W}${Q}${X5.reset} ${K}${G?` ${G}`:""} ${F}${U}${X5.reset} ${X5.duration}${w}${X5.reset}`);zK1.emit("request",{method:Q,path:zc(Y),status:U,duration:N,timestamp:new Date})}}}var X5,uR$=($)=>{if($>=500)return X5.serverError;if($>=400)return X5.clientError;if($>=300)return X5.redirect;return X5.ok},cR$=($)=>{return X5[$]||X5.reset},zc=($)=>{return $.replace(/\r/g,"").replace(/\n/g,"").replace(/\x1b\[[0-9;]*m/g,"").replace(/[\x00-\x1f\x7f-\x9f]/g,"")};var n06=O(()=>{AD();m06();X5={reset:"\x1B[0m",dim:"\x1B[2m",bold:"\x1B[1m",GET:"\x1B[36m",POST:"\x1B[33m",PUT:"\x1B[35m",DELETE:"\x1B[31m",ok:"\x1B[32m",redirect:"\x1B[36m",clientError:"\x1B[33m",serverError:"\x1B[31m",mcp:"\x1B[35m",tool:"\x1B[96m",duration:"\x1B[90m"}});import{createHmac as r06}from"crypto";import{mkdir as lR$,readdir as dR$,rm as p06,stat as a06}from"fs/promises";import{join as PK1,relative as mR$}from"path";import{z as T8}from"zod";function e06($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return PK1(iR$,Z)}function $16($){return $.replace(/^\/+/,"").replace(/\.\./g,"")}function jK1($,Z){let X=e06($),Q=$16(Z);return PK1(X,Q)}function nR$($,Z,X,Q){let Y=Y1().encryptionKey||"dev-secret",G=`${$}:${Z}:${X}:${Q}`;return r06("sha256",Y).update(G).digest("hex")}function o06($,Z,X,Q,Y){let G=Math.floor(Date.now()/1000)+Q,J=nR$(Z,X,G,Y),K=new URL(`/api/dev-assets/${Z}/${$16(X)}`,$);return K.searchParams.set("expires",G.toString()),K.searchParams.set("signature",J),K.searchParams.set("method",Y),K.toString()}function Z16($,Z,X){let Q=`${$}:${Z.getTime()}:${X}`;return`"${r06("md5","etag").update(Q).digest("hex")}"`}async function X16($,Z,X,Q,Y){try{let G=await dR$($,{withFileTypes:!0});for(let J of G){let K=PK1($,J.name),H=mR$(Z,K).replace(/\\/g,"/");if(X&&!H.startsWith(X))continue;if(J.isDirectory())if(Q){let N=H+"/";if(!X||N.startsWith(X)){if(!(X?H.slice(X.length):H).includes("/"))Y.commonPrefixes.add(N)}}else await X16(K,Z,X,Q,Y);else if(J.isFile()){if(Q&&X){let N=H.slice(X.length);if(N.includes(Q)){let U=N.indexOf(Q),F=X+N.slice(0,U+1);Y.commonPrefixes.add(F);continue}}try{let N=await a06(K);Y.objects.push({key:H,size:N.size,lastModified:N.mtime.toISOString(),etag:Z16(K,N.mtime,N.size)})}catch{}}}}catch{}}function Q16($,Z){let Q=W0($).id;return[{name:"LIST_OBJECTS",description:"List objects in the local assets directory with pagination support",inputSchema:T8.object({prefix:T8.string().optional(),maxKeys:T8.number().optional().default(1000),continuationToken:T8.string().optional(),delimiter:T8.string().optional()}),outputSchema:T8.object({objects:T8.array(T8.object({key:T8.string(),size:T8.number(),lastModified:T8.string(),etag:T8.string()})),nextContinuationToken:T8.string().optional(),isTruncated:T8.boolean(),commonPrefixes:T8.array(T8.string()).optional()}),handler:async(Y)=>{let G=Y,J=G.prefix||"",K=G.maxKeys??1000,W=G.delimiter,H=G.continuationToken,N=e06(Q);await lR$(N,{recursive:!0});let U={objects:[],commonPrefixes:new Set};await X16(N,N,J,W,U),U.objects.sort((D,E)=>D.key.localeCompare(E.key));let F=0;if(H){if(F=U.objects.findIndex((D)=>D.key>H),F===-1)F=U.objects.length}let w=U.objects.slice(F,F+K),B=F+K<U.objects.length,L=B?w[w.length-1]?.key:void 0;return{objects:w,isTruncated:B,nextContinuationToken:L,commonPrefixes:Array.from(U.commonPrefixes).sort()}}},{name:"GET_OBJECT_METADATA",description:"Get metadata for a file in the local assets directory",inputSchema:T8.object({key:T8.string()}),outputSchema:T8.object({contentType:T8.string().optional(),contentLength:T8.number(),lastModified:T8.string(),etag:T8.string(),metadata:T8.record(T8.string(),T8.string()).optional()}),handler:async(Y)=>{let G=Y,J=jK1(Q,G.key),K=await a06(J);return{contentType:z31(G.key),contentLength:K.size,lastModified:K.mtime.toISOString(),etag:Z16(J,K.mtime,K.size)}}},{name:"GET_PRESIGNED_URL",description:"Generate a presigned URL for downloading a file from local storage",inputSchema:T8.object({key:T8.string(),expiresIn:T8.number().optional()}),outputSchema:T8.object({url:T8.string(),expiresIn:T8.number()}),handler:async(Y)=>{let G=Y,J=G.expiresIn??t06;return{url:o06(Z,Q,G.key,J,"GET"),expiresIn:J}}},{name:"PUT_PRESIGNED_URL",description:"Generate a presigned URL for uploading a file to local storage",inputSchema:T8.object({key:T8.string(),expiresIn:T8.number().optional(),contentType:T8.string().optional()}),outputSchema:T8.object({url:T8.string(),expiresIn:T8.number()}),handler:async(Y)=>{let G=Y,J=G.expiresIn??t06;return{url:o06(Z,Q,G.key,J,"PUT"),expiresIn:J}}},{name:"DELETE_OBJECT",description:"Delete a single file from local storage",inputSchema:T8.object({key:T8.string()}),outputSchema:T8.object({success:T8.boolean(),key:T8.string()}),handler:async(Y)=>{let G=Y,J=jK1(Q,G.key);try{return await p06(J),{success:!0,key:G.key}}catch{return{success:!1,key:G.key}}}},{name:"DELETE_OBJECTS",description:"Delete multiple files from local storage",inputSchema:T8.object({keys:T8.array(T8.string()).max(1000)}),outputSchema:T8.object({deleted:T8.array(T8.string()),errors:T8.array(T8.object({key:T8.string(),message:T8.string()}))}),handler:async(Y)=>{let G=Y,J=[],K=[];return await Promise.all(G.keys.map(async(W)=>{let H=jK1(Q,W);try{await p06(H),J.push(W)}catch(N){K.push({key:W,message:N instanceof Error?N.message:"Unknown error"})}})),{deleted:J,errors:K}}}]}async function AK1($,Z,X){let Q=Q16(Z,X),Y=new vN({name:"dev-assets-mcp",version:"1.0.0"},{capabilities:{tools:{}},jsonSchemaValidator:A5});for(let J of Q){let K="shape"in J.inputSchema?J.inputSchema.shape:T8.object({}).shape,W=J.outputSchema&&"shape"in J.outputSchema?J.outputSchema.shape:T8.object({}).shape;Y.registerTool(J.name,{description:J.description??"",inputSchema:K,outputSchema:W,annotations:J.annotations,_meta:J._meta},async(H)=>{try{let N=await J.handler(H);return{content:[{type:"text",text:JSON.stringify(N)}],structuredContent:N}}catch(N){return{content:[{type:"text",text:`Error: ${N.message}`}],isError:!0}}})}let G=new GG({enableJsonResponse:$.headers.get("Accept")?.includes("application/json")??!1});return await Y.connect(G),tW(Y,G,$,"mcp:dev-assets")}async function Y16($,Z,X,Q){let G=Q16(X,Q).find((J)=>J.name===$);if(!G)return{content:[{type:"text",text:`Tool not found: ${$}`}],isError:!0};try{let J=await G.handler(Z);return{content:[{type:"text",text:JSON.stringify(J)}]}}catch(J){return{content:[{type:"text",text:J instanceof Error?J.message:String(J)}],isError:!0}}}var iR$="./data/assets",t06=3600,s06,G16;var J16=O(()=>{v8();Pr();Y4();ai();Ph();tX();UI0();s06=new V1;s06.all("/",async($)=>{let Z=$.get("studioContext"),X=new URL($.req.url),Q=`${X.protocol}//${X.host}`;return AK1($.req.raw,Z,Q)});G16=s06});var K16={};j0(K16,{mountDevRoutes:()=>pR$});function pR$($,Z){$.all("/mcp/:connectionId{.*_dev-assets$}",Z,async(Q)=>{let Y=Q.get("studioContext"),G=new URL(Q.req.url),J=`${G.protocol}//${G.host}`;return AK1(Q.req.raw,Y,J)}),$.all("/mcp/:connectionId{.*_dev-assets$}/call-tool/:toolName",Z,async(Q)=>{let Y=Q.get("studioContext"),G=new URL(Q.req.url),J=`${G.protocol}//${G.host}`,K=Q.req.param("toolName");if(!K)return Q.json({error:"Missing tool name"},400);let W=await Q.req.json(),H=await Y16(K,W,Y,J);if(H.isError)return Q.json(H.content,500);return Q.json(H.content)}),$.use("/mcp/dev-assets",Z),$.route("/mcp/dev-assets",G16);let X=new V1;X.use("*",jK({mountPath:"/api/dev-assets"})),X.route("/",NI0({orgFromPath:!1})),$.route("/api/dev-assets",X)}var W16=O(()=>{Y4();U31();UI0();J16()});import{sql as tR$}from"kysely";import{randomUUID as H16}from"crypto";import{z as oR$}from"zod";async function aR$($){let Z=new Date().toISOString(),X=H16(),Q=n4.SELF($.organizationId),Y="registry.publish_request.created",G={requestId:$.request.id,requestedId:$.request.requested_id,title:$.request.title,status:$.request.status,createdAt:$.request.created_at,requester:{name:$.request.requester_name,email:$.request.requester_email}};await $.db.insertInto("events").values({id:X,organization_id:$.organizationId,type:"registry.publish_request.created",source:Q,specversion:"1.0",subject:$.request.id,time:Z,datacontenttype:"application/json",dataschema:null,data:JSON.stringify(G),cron:null,status:"pending",attempts:0,last_error:null,next_retry_at:null,created_at:Z,updated_at:Z}).execute();let J=await $.db.selectFrom("event_subscriptions").select(["id"]).where("organization_id","=",$.organizationId).where("enabled","=",1).where("event_type","=","registry.publish_request.created").where((K)=>K.or([K("publisher","is",null),K("publisher","=",Q)])).execute();if(J.length>0)await $.db.insertInto("event_deliveries").values(J.map((K)=>({id:H16(),event_id:X,subscription_id:K.id,status:"pending",attempts:0,last_error:null,delivered_at:null,next_retry_at:null,created_at:Z}))).execute();try{await tR$`SELECT
|
|
3919
|
+
</head>`)}function re8($){let Z=new V1;return Z.get("/:domain/og.png",async(X)=>{let Q=Ec(X.req.param("domain")),Y=async()=>{let G=$?Bun.file(oe8($,"report-og-fallback.png")):null;if(!G||!await G.exists())return X.notFound();return X.body(new Uint8Array(await G.arrayBuffer()),200,{"Content-Type":"image/png","Cache-Control":"public, max-age=0, s-maxage=3600"})};try{let G=await fetch(`${mG({})}/api/v2/public/diagnostics/${encodeURIComponent(Q)}/og.png`,{signal:AbortSignal.timeout(gT$)}),J=G.headers.get("content-type")??"";if(!G.ok||!J.startsWith("image/")||!G.body)return Y();return X.body(G.body,200,{"Content-Type":J,"Cache-Control":"public, max-age=0, s-maxage=604800"})}catch{return Y()}}),Z.get("/:domain",async(X)=>{let Q=X.req.param("domain"),Y=$?oe8($,"index.html"):null,G=Y?Bun.file(Y):null;if(!G||!await G.exists())return X.notFound();let J=await G.text();try{let K=await fT$(Ec(Q)),W=bT$(Q,K);return X.html(yT$(J,W),200,{"Cache-Control":"public, max-age=0, s-maxage=300"})}catch{return X.html(J)}}),Z}var vT$=2500,gT$=1e4;var ae8=O(()=>{Y4();QK1();Ow();v8()});function Ye($,Z){return fetch(`${mG({})}${$}`,Z)}async function hT$($,Z,X){let Q=new URLSearchParams;if(Z)Q.set("pw",Z);if(X)Q.set("lang",X);let Y=Q.toString()?`?${Q.toString()}`:"",G=await Ye(`/api/v2/public/diagnostics/${encodeURIComponent($)}${Y}`,{headers:{Accept:"application/json"}});if(G.status===404)return{status:"not_found",deck:null,scanned_at:null,drops:[]};if(!G.ok)throw Error(`report read HTTP ${G.status}`);let J=await G.json(),{deck:K,drops:W}=pI0(J);return{status:K.slides.length?"ready":"empty",deck:K,scanned_at:J.scanned_at,drops:W}}var uT$,Mx,se8;var ee8=O(()=>{Y4();w3();Ow();QK1();uT$=new Set(["complete","errored","terminated","unknown"]),Mx=new V1;Mx.use("*",async($,Z)=>{let X=await q6.api.getSession({headers:$.req.raw.headers});if(!X?.user?.id)return $.json({error:"Authentication required"},401,{"Cache-Control":"private, no-store",Vary:"Cookie"});$.set("reportUser",{email:X.user.email}),await Z(),$.header("Cache-Control","private, no-store"),$.header("Vary","Cookie");return});Mx.get("/site/:domain",async($)=>{let Z=$.req.param("domain").trim();if(!Z)return $.json({error:"domain is required"},400);let X=$.req.query("key")?.trim()||void 0,Q=$.req.query("lang")?.trim()||void 0;try{let Y=await hT$(Z,X,Q);return $.header("Cache-Control","private, no-store"),$.json(Y)}catch{return $.json({error:"report read failed"},502)}});Mx.post("/run",async($)=>{let Z;try{Z=await $.req.json()}catch{return $.json({error:"invalid JSON"},400)}let X=typeof Z.domain==="string"?Z.domain.trim():"";if(!X)return $.json({error:"domain is required"},400);let Q=$.get("reportUser").email,Y=typeof Z.distinctId==="string"&&Z.distinctId.trim()&&Z.distinctId.length<=200?Z.distinctId.trim():void 0;try{let G=await Ye("/api/v2/diagnostics/run",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${cD({})}`},body:JSON.stringify({url:X,email:Q,distinct_id:Y})});if(!G.ok)return $.json({error:`run HTTP ${G.status}`},502);let J=await G.json(),K=J.blocked?{state:"blocked"}:J.status==="fresh"?{state:"fresh"}:J.mode==="sync"?{state:"sync"}:{state:"running",id:J.id??null};return $.json(K)}catch{return $.json({error:"run failed"},502)}});Mx.get("/status",async($)=>{let Z=$.req.query("id");if(!Z)return $.json({error:"id is required"},400);try{let X=await Ye(`/api/v2/diagnostics/status?id=${encodeURIComponent(Z)}`,{headers:{Authorization:`Bearer ${cD({})}`}});if(!X.ok)return $.json({error:`status HTTP ${X.status}`},502);let Y=(await X.json()).status??"unknown",G={done:uT$.has(Y),status:Y};return $.json(G)}catch{return $.json({error:"status failed"},502)}});Mx.get("/link-token/:id",async($)=>{let Z=$.req.param("id");try{let X=await Ye(`/api/v2/public/link-tokens/${encodeURIComponent(Z)}`,{headers:{Accept:"application/json"}});if(X.status===404)return $.json(null);if(!X.ok)return $.json({error:`link token HTTP ${X.status}`},502);return $.json(await X.json())}catch{return $.json({error:"link token resolve failed"},502)}});Mx.get("/suggest",async($)=>{let Z=($.req.query("q")??"").trim().slice(0,64);if(Z.length<2)return $.json({suggestions:[]});try{let X=await Ye(`/api/v2/public/suggest?q=${encodeURIComponent(Z)}`,{headers:{Accept:"application/json"}});if(!X.ok)return $.json({suggestions:[]});let Q=await X.json();return $.json({suggestions:Array.isArray(Q.suggestions)?Q.suggestions:[]})}catch{return $.json({suggestions:[]})}});se8=Mx});import{createHmac as cT$,timingSafeEqual as lT$}from"crypto";function $06($,Z,X,Q=Date.now()){if(!Z||!X)return!1;let Y,G=[];for(let H of Z.split(",")){let N=H.indexOf("=");if(N<=0)continue;let U=H.slice(0,N).trim(),F=H.slice(N+1).trim();if(U==="t")Y=F;else if(U==="v1")G.push(F)}if(!Y||G.length===0)return!1;let J=Number(Y);if(!Number.isFinite(J)||Math.abs(Q/1000-J)>dT$)return!1;let K=cT$("sha256",X).update(`${Y}.${$}`).digest("hex"),W=Buffer.from(K,"hex");return G.some((H)=>{let N=Buffer.from(H,"hex");return W.length===N.length&&lT$(W,N)})}function Z06($){let Z;try{Z=JSON.parse($)}catch{return null}let X=f3(Z),Q=f3(f3(X?.data)?.object);if(!X||typeof X.type!=="string"||!Q)return null;return{id:v3(X.id),type:X.type,created:typeof X.created==="number"?X.created:void 0,livemode:typeof X.livemode==="boolean"?X.livemode:void 0,data:{object:Q}}}function mT$($){switch($){case"active":case"trialing":return"active";case"past_due":return"past_due";default:return"canceled"}}function v3($){return typeof $==="string"?$:void 0}function f3($){return typeof $==="object"&&$!==null?$:void 0}function tI0($){return typeof $==="number"?new Date($*1000):null}function JK1($){return v3($)??v3(f3($)?.id)}function iT$($){return JK1($.subscription)??v3(f3(f3($.parent)?.subscription_details)?.subscription)}function nT$($){let Z=tI0($.current_period_end);if(Z)return Z;let X=f3($.items)?.data;if(!Array.isArray(X))return null;let Q=0;for(let Y of X){let G=f3(Y)?.current_period_end;if(typeof G==="number"&&G>Q)Q=G}return Q>0?new Date(Q*1000):null}function YK1($,Z){let X=tI0($.created);return!!X&&!!Z.lastStripeEventAt&&X<Z.lastStripeEventAt}function GK1($,Z){let X=tI0($.created);if(!X)return;return Z.lastStripeEventAt&&Z.lastStripeEventAt>X?void 0:X}async function pT$($,Z){let X=Z.data.object;switch(Z.type){case"checkout.session.completed":case"checkout.session.async_payment_succeeded":{let Q=v3(f3(X.metadata)?.orgId);if(!Q)return{handled:!1,reason:"no orgId"};if(v3(f3(X.metadata)?.kind)==="topup"){if(X.mode!=="payment")return{handled:!1,reason:"topup with wrong mode"};if(v3(X.payment_status)!=="paid")return{handled:!1,reason:"payment not confirmed"};let K=v3(X.id);if(!K)return console.error("stripe webhook: topup session without id",{eventId:Z.id,organizationId:Q}),{handled:!1,reason:"topup session without id"};let W=Number(f3(X.metadata)?.creditCents);if(!Number.isInteger(W)||W<=0)return console.error("stripe webhook: paid topup with bad metadata \u2014 credit NOT applied",{eventId:Z.id,organizationId:Q,creditCents:f3(X.metadata)?.creditCents}),{handled:!1,reason:"bad topup metadata"};return{handled:!0,organizationId:Q,topUp:{creditCents:W,referenceId:`stripe-topup:${K}`}}}if(X.mode!=="subscription")return{handled:!1,reason:"not a subscription checkout"};if(v3(X.payment_status)!=="paid")return{handled:!1,reason:"payment not confirmed"};let Y=await $.getBilling(Q);if(!Y)return{handled:!1,reason:"unknown org"};if(Y.legacy||Y.billingMode!=="self_serve")return console.error("stripe webhook: refused checkout bind",{organizationId:Q,eventId:Z.id,legacy:Y.legacy,billingMode:Y.billingMode}),{handled:!1,reason:"org is not self-serve"};let G=JK1(X.subscription);if(Y.stripeSubscriptionId&&G&&Y.stripeSubscriptionId!==G)return console.error("stripe webhook: refused checkout rebind",{organizationId:Q,eventId:Z.id}),{handled:!1,reason:"org already bound to another subscription",orphanSubscriptionId:G};if(YK1(Z,Y))return{handled:!1,reason:"stale event"};let J=`stripe-checkout:${v3(X.id)??crypto.randomUUID()}`;return await $.updateStripeState(Q,{stripeCustomerId:JK1(X.customer),stripeSubscriptionId:G,status:"active",benefitsReferenceId:J,lastStripeEventAt:GK1(Z,Y)}),{handled:!0,organizationId:Q,benefitsReferenceId:J}}case"customer.subscription.updated":case"customer.subscription.deleted":{let Q=v3(X.id);if(!Q)return{handled:!1,reason:"no sub id"};let Y=await $.getBillingByStripeSubscriptionId(Q);if(!Y)return{handled:!1,reason:"unknown subscription"};let G=Z.type==="customer.subscription.deleted";if(!G&&YK1(Z,Y))return{handled:!1,reason:"stale event"};let J=G?"canceled":mT$(X.status),K=nT$(X),W=`stripe-sub:${Q}:${J}:${K?.getTime()??0}`;return await $.updateStripeState(Y.organizationId,{status:J,currentPeriodEnd:K,...G&&{stripeSubscriptionId:null},benefitsReferenceId:W,lastStripeEventAt:GK1(Z,Y)}),{handled:!0,organizationId:Y.organizationId,benefitsReferenceId:W}}case"invoice.paid":{let Q=iT$(X);if(!Q)return{handled:!1,reason:"no sub id"};let Y=await $.getBillingByStripeSubscriptionId(Q);if(!Y)return{handled:!1,reason:"unknown subscription"};if(YK1(Z,Y))return{handled:!1,reason:"stale event"};let G=`stripe-invoice:${v3(X.id)??crypto.randomUUID()}`;return await $.updateStripeState(Y.organizationId,{status:"active",currentPeriodEnd:tI0(X.period_end),benefitsReferenceId:G,lastStripeEventAt:GK1(Z,Y)}),{handled:!0,organizationId:Y.organizationId,benefitsReferenceId:G}}default:return{handled:!1,reason:`unhandled event ${Z.type}`}}}async function oT$($,Z){let[X,Q]=await Promise.all([$.getBilling(Z),$.listPaidSeatUserIds(Z)]);if(!Gb(X))return;if(await tB8({subscriptionId:X.stripeSubscriptionId,targetQuantity:Q.length}))console.error("stripe webhook: reconciled diverged seat quantity",{organizationId:Z,targetQuantity:Q.length})}async function X06($){let Z=new ON(X6().db),X=await pT$(Z,$);if(X.handled&&X.topUp)await qt1({organizationId:X.organizationId,amountCents:X.topUp.creditCents,referenceId:X.topUp.referenceId});if(X.handled&&X.benefitsReferenceId)try{await PN(X.organizationId,X.benefitsReferenceId,"apply")}catch(Q){console.error("Failed to enqueue benefit sync (sweep covers):",Q)}if(X.handled&&tT$.has($.type))try{await oT$(Z,X.organizationId)}catch(Q){console.error("Failed to reconcile seat quantity (next cycle):",Q)}if(!X.handled&&X.orphanSubscriptionId)try{await pB8(X.orphanSubscriptionId),console.error("stripe webhook: canceled orphan subscription",{subscriptionId:X.orphanSubscriptionId,eventId:$.id})}catch(Q){if(!(Q instanceof aQ&&(Q.status===400||Q.status===404)))throw Q}return X}var dT$=300,tT$;var Q06=O(()=>{J7();tf();Xh();F90();Jb();tT$=new Set(["checkout.session.completed","checkout.session.async_payment_succeeded","invoice.paid"])});var rT$=1048576,KK1;var Y06=O(()=>{Y4();Ox();v8();Q06();KK1=new V1;KK1.post("/webhook",C7({maxSize:rT$,onError:($)=>$.json({error:"payload too large"},413)}),async($)=>{let Z=Y1().stripeWebhookSecret;if(!Z)return $.json({error:"stripe billing not configured"},503);let X=await $.req.text();if(!$06(X,$.req.header("stripe-signature"),Z))return $.json({error:"invalid signature"},400);let Y=Z06(X);if(!Y)return $.json({error:"invalid payload"},400);let G=await X06(Y);return console.log("stripe webhook",{eventId:Y.id,type:Y.type,livemode:Y.livemode,...G}),$.json({received:!0})})});function G06($,Z){if(Z.startsWith("text/html")||Z.startsWith("image/svg"))$.set("Content-Security-Policy","sandbox allow-scripts allow-modals allow-same-origin")}var J06,aT$,sT$,K06;var W06=O(()=>{Y4();OJ();iu();Wb();J06=new V1,aT$=["range","if-none-match","if-modified-since"],sT$=["content-type","content-length","content-range","accept-ranges","etag","last-modified"];J06.get("/:org/files/*",async($)=>{let Z=$.get("studioContext"),X=Z.organization?.id;if(!Z.auth?.user?.id){if(eu($))return $.redirect(`/login?next=${encodeURIComponent($.req.path)}`,302);throw new N8(401,{message:"Authentication required"})}if(!X)throw new N8(401,{message:"Organization context required"});let Q=$.req.path.replace(/^.*\/files\//,"");if(!Q)throw new N8(400,{message:"Missing file key"});let Y=await Ts(Q,Z);if(!Y)throw new N8(503,{message:"Object storage not configured"});if(Y.startsWith("data:")&&BJ()){let W=Y.match(/^data:([^;]+);base64,(.+)$/s);if(!W)throw new N8(500,{message:"Invalid data URL from storage"});let[,H,N]=W,U=Buffer.from(N,"base64"),F=new Headers({"Content-Type":H,"Cache-Control":"private, max-age=86400"});return G06(F,H),new Response(U,{status:200,headers:F})}let G=new Headers;for(let W of aT$){let H=$.req.header(W);if(H)G.set(W,H)}let J=await fetch(Y,{headers:G});if(J.status===403||J.status===404)throw new N8(404,{message:"File not found"});if(!J.ok&&J.status!==304&&J.status!==416)throw console.error(`[files] upstream storage error ${J.status} for key:`,Q),new N8(502,{message:"Upstream storage error"});let K=new Headers;for(let W of sT$){let H=J.headers.get(W);if(H)K.set(W,H)}return K.set("Cache-Control","private, max-age=86400"),G06(K,K.get("content-type")??""),new Response(J.body,{status:J.status,headers:K})});K06=J06});var Ge=_((kx)=>{var eT$=kx&&kx.__createBinding||(Object.create?function($,Z,X,Q){if(Q===void 0)Q=X;var Y=Object.getOwnPropertyDescriptor(Z,X);if(!Y||("get"in Y?!Z.__esModule:Y.writable||Y.configurable))Y={enumerable:!0,get:function(){return Z[X]}};Object.defineProperty($,Q,Y)}:function($,Z,X,Q){if(Q===void 0)Q=X;$[Q]=Z[X]}),$R$=kx&&kx.__exportStar||function($,Z){for(var X in $)if(X!=="default"&&!Object.prototype.hasOwnProperty.call(Z,X))eT$(Z,$,X)};Object.defineProperty(kx,"__esModule",{value:!0});$R$(vY(),kx)});var U06=_((H06)=>{Object.defineProperty(H06,"__esModule",{value:!0});H06.version=void 0;H06.version="3.4.0"});var B06=_((TH)=>{var ZR$=TH&&TH.__importDefault||function($){return $&&$.__esModule?$:{default:$}};Object.defineProperty(TH,"__esModule",{value:!0});TH.NodeTransport=TH.VERSION=void 0;TH.nodeResolveHost=KR$;var t$=Ge(),XR$=U0("net"),WK1=U0("tls"),QR$=U0("path"),F06=U0("fs"),YR$=ZR$(U0("dns")),GR$=U06();TH.VERSION=GR$.version;var JR$="nats.js";class w06{socket;version;lang;yields=[];signal=(0,t$.deferred)();closedNotification=(0,t$.deferred)();options;connected=!1;tlsName="";done=!1;closeError;constructor(){this.lang=JR$,this.version=TH.VERSION}async connect($,Z){this.tlsName=$.tlsName,this.options=Z;let{tls:X}=this.options,{handshakeFirst:Q}=X||{};try{if(Q===!0)this.socket=await this.tlsFirst($);else this.socket=await this.dial($);if(this.done)this.socket?.destroy();let Y=await this.peekInfo();(0,t$.checkOptions)(Y,Z);let{tls_required:G,tls_available:J}=Y,K=J===!0&&Z.tls!==null;if(!Q&&(G||K))this.socket=await this.startTLS();if(this.done)this.socket?.destroy();if(G&&this.socket.encrypted!==!0)throw t$.errors.InvalidArgumentError.format("tls","is not available on this server");return this.connected=!0,this.setupHandlers(),this.signal.resolve(),Promise.resolve()}catch(Y){let G=Y;if(!G)G=new t$.errors.ConnectionError("error connecting - node provided an undefined error");let{code:J}=G,K=J==="ECONNREFUSED"?new t$.errors.ConnectionError("connection refused",{cause:G}):G;throw this.socket?.destroy(),K}}dial($){let Z=(0,t$.deferred)(),X,Q=(0,XR$.createConnection)($.port,$.hostname,()=>{Z.resolve(Q),Q.removeAllListeners()});return Q.on("error",(Y)=>{X=Y}),Q.on("close",()=>{Q.removeAllListeners(),Z.reject(X)}),Q.setNoDelay(!0),Z}get isClosed(){return this.done}close($){return this._closed($,!1)}peekInfo(){let $=(0,t$.deferred)(),Z;return this.socket.on("data",(X)=>{this.yields.push(X);let Q=t$.DataBuffer.concat(...this.yields),Y=(0,t$.extractProtocolMessage)(Q);if(Y!=="")try{let G=t$.INFO.exec(Y);if(!G)throw Error("unexpected response from server");let J=JSON.parse(G[1]);$.resolve(J)}catch(G){$.reject(G)}finally{this.socket.removeAllListeners()}}),this.socket.on("error",(X)=>{Z=X}),this.socket.on("close",()=>{this.socket.removeAllListeners(),$.reject(Z)}),$}loadFile($){if(!$)return Promise.resolve();let Z=(0,t$.deferred)();try{if($=(0,QR$.resolve)($),!(0,F06.existsSync)($))Z.reject(Error(`${$} doesn't exist`));(0,F06.readFile)($,(X,Q)=>{if(X)return Z.reject(X);Z.resolve(Q)})}catch(X){Z.reject(X)}return Z}async loadClientCerts(){let $={},{certFile:Z,cert:X,caFile:Q,ca:Y,keyFile:G,key:J}=this.options.tls;try{if(Z){let K=await this.loadFile(Z);if(K)$.cert=K}else if(X)$.cert=X;if(G){let K=await this.loadFile(G);if(K)$.key=K}else if(J)$.key=J;if(Q){let K=await this.loadFile(Q);if(K)$.ca=[K]}else if(Y)$.ca=Y;return Promise.resolve($)}catch(K){return Promise.reject(K)}}async tlsFirst($){let Z,X={servername:this.tlsName,rejectUnauthorized:!0};if(this.socket)X.socket=this.socket;if(typeof this.options.tls==="object")try{let Y=await this.loadClientCerts()||{};X=(0,t$.extend)(X,this.options.tls,Y)}catch(Y){return Promise.reject(new t$.errors.ConnectionError(Y.message,{cause:Y}))}let Q=(0,t$.deferred)();try{let Y=(0,WK1.connect)($.port,$.hostname,X,()=>{Y.removeAllListeners(),Q.resolve(Y)});Y.on("error",(G)=>{Z=G}),Y.on("secureConnect",()=>{if(X.rejectUnauthorized===!1)return;if(!Y.authorized)throw Y.authorizationError}),Y.on("close",()=>{Q.reject(Z),Y.removeAllListeners()}),Y.setNoDelay(!0)}catch(Y){Q.reject(new t$.errors.ConnectionError(Y.message,{cause:Y}))}return Q}async startTLS(){let $,Z={socket:this.socket,servername:this.tlsName,rejectUnauthorized:!0};if(typeof this.options.tls==="object")try{let Q=await this.loadClientCerts()||{};Z=(0,t$.extend)(Z,this.options.tls,Q)}catch(Q){return Promise.reject(new t$.errors.ConnectionError(Q.message,{cause:Q}))}let X=(0,t$.deferred)();try{let Q=(0,WK1.connect)(Z,()=>{Q.removeAllListeners(),X.resolve(Q)});Q.on("error",(Y)=>{$=Y}),Q.on("secureConnect",()=>{if(Z.rejectUnauthorized===!1)return;if(!Q.authorized)throw Q.authorizationError}),Q.on("close",()=>{X.reject($),Q.removeAllListeners()})}catch(Q){X.reject(new t$.errors.ConnectionError(Q.message,{cause:Q}))}return X}setupHandlers(){let $;this.socket.on("data",(Z)=>{return this.yields.push(Z),this.signal.resolve()}),this.socket.on("error",(Z)=>{$=Z}),this.socket.on("end",()=>{if(this.socket?.destroyed)return;this.socket?.write(new Uint8Array(0),()=>{this.socket?.end()})}),this.socket.on("close",()=>{this._closed($,!1)})}[Symbol.asyncIterator](){return this.iterate()}async*iterate(){while(!0){if(this.yields.length===0)await this.signal;let $=this.yields;this.yields=[];for(let Z=0;Z<$.length;Z++){if(this.options.debug)console.info(`> ${(0,t$.render)($[Z])}`);yield $[Z]}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,t$.deferred)()}}discard(){if(this.done=!0,this.socket)try{this.socket.removeAllListeners(),this.socket.destroy()}catch{}}disconnect(){this._closed(void 0,!0).then().catch()}isEncrypted(){return this.socket instanceof WK1.TLSSocket}_send($){if(this.isClosed||this.socket===void 0)return Promise.resolve();if(this.options.debug)console.info(`< ${(0,t$.render)($)}`);let Z=(0,t$.deferred)();try{this.socket.write($,(X)=>{if(X){if(this.options.debug)console.error(`!!! ${(0,t$.render)($)}: ${X}`);return Z.reject(X)}return Z.resolve()})}catch(X){if(this.options.debug)console.error(`!!! ${(0,t$.render)($)}: ${X}`);Z.reject(X)}return Z}send($){this._send($).catch((X)=>{})}async _closed($,Z=!0){if(!this.connected)return;if(this.done){this.socket?.destroy();return}if(this.closeError=$,!$&&this.socket&&Z)try{await this._send(new TextEncoder().encode(""))}catch(X){if(this.options.debug)console.log("transport close terminated with an error",X)}try{if(this.socket)this.socket.removeAllListeners(),this.socket?.destroy(),this.socket=void 0}catch(X){console.log(X)}this.done=!0,this.closedNotification.resolve(this.closeError)}closed(){return this.closedNotification}}TH.NodeTransport=w06;function KR$($){let Z=(0,t$.deferred)();return YR$.default.lookup($,{all:!0},(X,Q)=>{if(X){Z.reject(X);return}let Y=[];for(let G of Q)Y.push(G.address);if(Y.length===0)Y.push($);Z.resolve(Y)}),Z}});var z06=_((E06)=>{Object.defineProperty(E06,"__esModule",{value:!0});E06.connect=WR$;var O06=B06(),L06=Ge(),D06=Ge();function WR$($={}){if((0,D06.hasWsProtocol)($))return Promise.reject(D06.errors.InvalidArgumentError.format("servers","node client doesn't support websockets, use the 'wsconnect' function instead"));return(0,L06.setTransportFactory)({factory:()=>{return new O06.NodeTransport},dnsResolveFn:O06.nodeResolveHost}),L06.NatsConnectionImpl.connect($)}});var j06=_((rU)=>{var NR$=rU&&rU.__createBinding||(Object.create?function($,Z,X,Q){if(Q===void 0)Q=X;var Y=Object.getOwnPropertyDescriptor(Z,X);if(!Y||("get"in Y?!Z.__esModule:Y.writable||Y.configurable))Y={enumerable:!0,get:function(){return Z[X]}};Object.defineProperty($,Q,Y)}:function($,Z,X,Q){if(Q===void 0)Q=X;$[Q]=Z[X]}),UR$=rU&&rU.__exportStar||function($,Z){for(var X in $)if(X!=="default"&&!Object.prototype.hasOwnProperty.call(Z,X))NR$(Z,$,X)};Object.defineProperty(rU,"__esModule",{value:!0});rU.connect=void 0;var FR$=z06();Object.defineProperty(rU,"connect",{enumerable:!0,get:function(){return FR$.connect}});UR$(Ge(),rU)});function R06($){let Z=$?.connectFn??LR$,X=null,Q=null,Y=!1,G=!1,J=!1,K=[];function W(){return X!==null&&!X.isClosed()&&!X.isDraining()&&!J}function H(){console.log(`[NatsProvider] fireReady: ${K.length} callbacks`);for(let F of K)try{F()}catch{}}function N(F){(async()=>{for await(let w of F.status())if(w.type==="disconnect")console.log("[NatsProvider] Disconnected"),J=!0;else if(w.type==="reconnect")console.log("[NatsProvider] Reconnected, re-firing ready callbacks"),J=!1,Q=null,H()})().catch(()=>{})}async function U(F,w){let B=0;while(!G)try{X=await Z({servers:F,timeout:OR$,reconnect:!0,maxReconnectAttempts:-1,...w?{authenticator:w}:{}}),console.log(`[NatsProvider] Connected to ${X.getServer()} after ${B} attempt(s)`),Q=null,J=!1,N(X),H();return}catch{B++;let L=zY(BR$,wR$,B-1,2,0.5);await Z6(L)}}return{init(F,w){if(Y)return;Y=!0,G=!1;let B=w?.creds?P06.credsAuthenticator(new TextEncoder().encode(w.creds)):void 0;U(F,B).catch(()=>{})},isConnected(){return W()},getConnection(){return W()?X:null},getJetStream(){if(!W())return null;if(!Q)Q=T06.jetstream(X);return Q},onReady(F){if(K.push(F),W())try{F()}catch{}},async drain(){if(G=!0,Y=!1,Q=null,J=!1,X){let F=X;X=null,await F.drain().catch(()=>{})}}}}function LR$($){return A06.connect($)}var P06,A06,T06,wR$=100,BR$=3000,OR$=3000;var I06=O(()=>{D5();P06=k(Dm(),1),A06=k(j06(),1),T06=k(fD(),1)});function HK1($,Z){return`${$}.${Z}`}class NK1{cache;constructor($){this.cache=Eu({ttlMs:$?.ttlMs??DR$,maxSize:$?.maxSize??ER$})}async get($,Z){return this.cache.get(HK1($,Z))??null}async set($,Z,X){this.cache.set(HK1($,Z),X)}async invalidate($,Z){this.cache.delete(HK1($,Z))}teardown(){this.cache.clear()}}var DR$=600000,ER$=5000;var q06=()=>{};function oI0($,Z){return`${$}:${Z}`}function UK1($){let Z=Eu({ttlMs:$?.ttlMs??zR$,maxSize:$?.maxSize??jR$}),X=$?.getConnection,Q=crypto.randomUUID(),Y=new TextEncoder,G=new TextDecoder,J=null;function K(W,H){let N=X?.();if(!N)return;try{N.publish(M06,Y.encode(JSON.stringify({organizationId:W,keyId:H,originId:Q})))}catch(U){console.warn("[ProviderKeyCache] Publish failed (non-critical):",U)}}return{get(W,H){return Z.get(oI0(W,H))},set(W,H,N){Z.set(oI0(W,H),N)},invalidate(W,H){Z.delete(oI0(W,H)),K(W,H)},start(){if(J)return;let W=X?.();if(!W)return;J=W.subscribe(M06),(async()=>{for await(let H of J)try{let N=JSON.parse(G.decode(H.data));if(N.originId===Q)continue;Z.delete(oI0(N.organizationId,N.keyId))}catch{}})().catch(console.error)},teardown(){J?.unsubscribe(),J=null,Z.clear()}}}var M06="studio.ai-provider-keys.invalidate",zR$=30000,jR$=5000;var k06=()=>{};class FK1{options;subscriptions=[];onCancel=null;encoder=new TextEncoder;originId=crypto.randomUUID();seenMessageIds=new Set;constructor($){this.options=$}async start($){if($)this.onCancel=$;if(this.subscriptions.length>0)return;if(!this.onCancel)return;let Z=this.options.getConnection();if(!Z)return;let X=new TextDecoder;this.subscriptions=S06.map((Q)=>Z.subscribe(Q));for(let Q of this.subscriptions)(async()=>{for await(let Y of Q)try{let G=JSON.parse(X.decode(Y.data));if(G.originId===this.originId)continue;if(G.messageId&&this.hasSeen(G.messageId))continue;this.onCancel?.(G.taskId)}catch{}})().catch(console.error)}broadcast($){if(/[.*>\s]/.test($)){console.warn("[NatsCancelBroadcast] Invalid threadId, skipping broadcast");return}this.onCancel?.($);try{let Z=this.options.getConnection();if(!Z)return;let X=this.encoder.encode(JSON.stringify({taskId:$,originId:this.originId,messageId:crypto.randomUUID()}));for(let Q of S06)Z.publish(Q,X)}catch(Z){console.warn("[NatsCancelBroadcast] Publish failed (non-critical):",Z)}}publishControlFrame($,Z){}async stop(){for(let $ of this.subscriptions)$.unsubscribe();this.subscriptions=[],this.seenMessageIds.clear(),this.onCancel=null}hasSeen($){if(this.seenMessageIds.has($))return!0;if(this.seenMessageIds.add($),this.seenMessageIds.size>1000){let Z=this.seenMessageIds.values().next().value;if(Z)this.seenMessageIds.delete(Z)}return!1}}var S06;var V06=O(()=>{S06=["studio.decopilot.cancel","mesh.decopilot.cancel"]});var C06=($)=>{let Z;return()=>Z??=$()},wK1,BK1;var _06=O(()=>{j5();wK1=C06(()=>L6.createHistogram("decopilot.stream.encode_ms",{description:"Per-chunk JSON.stringify+encode time for decopilot stream",unit:"ms"})),BK1=C06(()=>L6.createCounter("decopilot.stream.published_chunks",{description:"Logical decopilot stream chunks published to JetStream",unit:"{chunks}"}))});function MR$(){return{name:wU,subjects:[`${V30}.>`],storage:AK.StorageType.File,max_age:TR$,max_bytes:IR$,max_msgs_per_subject:qR$,discard:AK.DiscardPolicy.Old,retention:AK.RetentionPolicy.Limits,duplicate_window:RR$,num_replicas:1}}class f06{chunks=0;encodeMs=0;maxMs=0;bytes=0;windowStart=performance.now();constructor(){setInterval(()=>this.flush(),1e4).unref?.()}record($,Z){if(this.chunks++,this.encodeMs+=$,$>this.maxMs)this.maxMs=$;this.bytes+=Z}flush(){let $=performance.now(),Z=$-this.windowStart;if(this.chunks>0&&Z>0)console.warn(JSON.stringify({msg:"stream-encode-trace",windowMs:Math.round(Z),chunks:this.chunks,encodeMs:Math.round(this.encodeMs),pctOfLoop:+(this.encodeMs/Z*100).toFixed(1),maxChunkMs:+this.maxMs.toFixed(2),mbEncoded:+(this.bytes/1048576).toFixed(2)}));this.chunks=0,this.encodeMs=0,this.maxMs=0,this.bytes=0,this.windowStart=$}}function x06($){let Z=v06.headers();for(let[X,Q]of Object.entries($))Z.set(X,Q);return Z}function CR$($,Z){let X=0;return{publish(Q,Y,G,J){Q.publish(Y,G,J?{headers:J}:void 0).catch((K)=>{if(X++,AR$().add(1,{"org.id":Z??"unknown"}),X===1||X%100===0)console.warn(`[Decopilot] JetStream publish failed for thread ${$} (${X} total):`,K)})},get errorCount(){return X}}}function _R$($){if(!($ instanceof Error))return!1;if($.name==="TimeoutError")return!0;return/timeout|no responders|503/i.test($.message)}class OK1{options;js=null;jsm=null;constructor($){this.options=$}async init(){let $=this.options.getConnection();if(!$){console.log("[Decopilot] StreamBuffer.init skipped: NATS not connected yet");return}let Z=MR$(),X=await aZ(async()=>{let Q=this.options.getJetStreamManager?await this.options.getJetStreamManager():await AK.jetstreamManager($);try{await Q.streams.info(wU),await Q.streams.update(wU,Z)}catch(Y){if(Y instanceof Error&&Y.message.includes("stream not found"))await Q.streams.add(Z);else if(Y instanceof Error&&/can ?not change.*storage|storage type/i.test(Y.message))await Q.streams.delete(wU),await Q.streams.add(Z);else throw Y}return Q},{maxAttempts:5,minTimeout:250,maxTimeout:4000,jitter:0.5,isRetriable:_R$});this.js=this.options.getJetStream(),this.jsm=X,console.log(`[Decopilot] StreamBuffer.init ${this.js?"ready":"degraded (js=null)"}`)}pump($,Z,X,Q){let Y=this.js;if(!Y)return console.warn(`[Decopilot] pump: JetStream client unavailable for thread ${Z}; chunks NOT published to NATS`),Promise.resolve();let G=CR$(Z,Q),J=!1,K=()=>{if(J)return;J=!0;let H=fz8(Z);Y.publish(H.subject,H.data).catch(()=>{})};X.addEventListener("abort",K,{once:!0});let W=(H)=>{let N=performance.now(),U=A61(H,{runId:Z}),F=performance.now()-N;if(wK1().record(F),BK1().add(1,{"org.id":Q??"unknown"}),VR$?.record(F,U.reduce((w,B)=>w+B.data.length,0)),U.length===0){console.warn(`[Decopilot] dropping oversized stream chunk for thread ${Z}`);return}for(let w of U)G.publish(Y,w.subject,w.data,w.headers?x06(w.headers):void 0)};return(async()=>{let H=$.getReader(),N=0,U=0,F;try{while(!0){let{done:w,value:B}=await H.read();if(w)break;if(W(B),U++,++N>=64)N=0,await new Promise((L)=>setImmediate(L))}}catch(w){F=w,console.warn(`[Decopilot] stream pump error for thread ${Z}:`,w?.message??w)}finally{if(H.releaseLock(),K(),SR$)console.warn(JSON.stringify({msg:"decopilot-stream-diag",event:"pump-done",taskId:Z,publishedChunks:U,publishErrors:G.errorCount}))}if(F!==void 0)throw F})()}async publishRawChunk($,Z,X){let Q=this.js;if(!Q)return!1;let Y=performance.now(),G=A61(Z,{runId:$,dedup:X});if(wK1().record(performance.now()-Y),BK1().add(1),G.length===0)return console.warn(`[Decopilot] dropping oversized raw chunk for thread ${$} (> MAX_CHUNKED_BYTES)`),!0;for(let J of G)await Q.publish(J.subject,J.data,{...J.headers?{headers:x06(J.headers)}:{},...J.msgId?{msgID:J.msgId}:{}});return!0}async publishDone($,Z,X){let Q=this.js;if(!Q)return!1;let Y=vz8({runId:$,fenceToken:Z,finalSeq:X});return await Q.publish(Y.subject,Y.data,{msgID:Y.msgId}),!0}async createTailStream($,Z,X){let Q=this.js;if(!Q)return console.warn(`[Decopilot] createTailStream: JetStream client unavailable for thread ${$}; no live tail`),null;let Y=X?.deliverPolicy==="new"?AK.DeliverPolicy.New:AK.DeliverPolicy.All,G=X?.closeOnDone??!1,J=GO($),K;try{K=await(await Q.consumers.get(wU,{filter_subjects:J,deliver_policy:Y})).consume()}catch(L){return console.warn("[Decopilot] JetStream tail unavailable (non-critical):",L?.message??L),null}let N=f30({messages:async function*(){try{for await(let L of K)yield{subject:L.subject,data:L.data,headers:L.headers}}finally{K.stop()}}(),onCancel:()=>K.stop()}).pipeThrough(C30()).pipeThrough(_30()).getReader(),U=!1,F=()=>{if(U)return;U=!0;try{N.releaseLock()}catch{}},w=!1,B=()=>{if(w)return;w=!0,K.stop(),N.cancel().catch(()=>{}),F()};return Z?.addEventListener("abort",B,{once:!0}),new ReadableStream({async pull(L){for(;;){let{done:D,value:E}=await N.read();if(D){B(),L.close();return}let z=E;if(z.kind==="done"){if(G){B(),L.close();return}continue}L.enqueue(z.chunk);return}},cancel(){B()}})}purge($){if(!this.jsm)return;this.jsm.streams.purge(wU,{filter:GO($)}).catch(()=>{})}teardown(){this.js=null,this.jsm=null}}var AK,v06,PR$=($)=>{let Z;return()=>Z??=$()},AR$,TR$=86400000000000,RR$=120000000000,IR$=4294967296,qR$=500000,kR$,SR$,VR$;var b06=O(()=>{D5();T61();b30();x30();j5();_06();AK=k(fD(),1),v06=k(Dm(),1),AR$=PR$(()=>L6.createCounter("decopilot.stream.publish_errors",{description:"Number of JetStream publish failures for decopilot stream chunks",unit:"{errors}"}));kR$=process.env.STREAM_ENCODE_TRACE==="1",SR$=process.env.DECOPILOT_STREAM_TRACE==="1";VR$=kR$?new f06:null});function rI0($,Z,X,Q){if(!Q)return!1;return $.emit(Z,sK(X,Q.status,{title:Q.title??void 0,virtualMcpId:Q.virtual_mcp_id??void 0,createdBy:Q.created_by??void 0,triggerId:Q.trigger_id??null,branch:Q.branch??null,createdAt:Q.created_at,updatedAt:Q.updated_at})),!0}var y06=O(()=>{T6()});class LK1{storage;options;timer=null;constructor($,Z={}){this.storage=$;this.options=Z}start(){if(this.timer)return;let $=this.options.intervalMs??300000;this.timer=setInterval(()=>{this.runOnce()},$)}async runOnce(){let $=this.options.staleAfterMs??3600000;try{let Z=await this.storage.sweepAbandoned($);if(Z>0)console.log(`[async-research-sweeper] marked ${Z} stale jobs as abandoned`);return Z}catch(Z){return console.error("[async-research-sweeper] sweep failed",Z),0}}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}import{readdir as xR$,rm as aI0}from"fs/promises";import{join as sI0}from"path";async function eI0($){let Z=new Date;Z.setUTCDate(Z.getUTCDate()-vR$),Z.setUTCHours(0,0,0,0);let X=0;try{let Q=await Sx($);for(let Y of Q)if(/^\d{4}$/.test(Y))X+=await g06($,Y,Z);else if(!Y.startsWith(".")){let G=sI0($,Y),J=await Sx(G);for(let W of J){if(!/^\d{4}$/.test(W))continue;X+=await g06(G,W,Z)}if((await Sx(G)).length===0)await aI0(G,{recursive:!0,force:!0})}}catch(Q){console.warn("monitoring retention cleanup failed:",Q)}return X}async function g06($,Z,X){let Q=0,Y=sI0($,Z),G=await Sx(Y);for(let K of G){if(!/^\d{2}$/.test(K))continue;let W=sI0(Y,K),H=await Sx(W);for(let U of H){if(!/^\d{2}$/.test(U))continue;let F=new Date(`${Z}-${K}-${U}T00:00:00Z`);if(isNaN(F.getTime()))continue;if(F<X){let w=sI0(W,U);await aI0(w,{recursive:!0,force:!0}),Q++}}if((await Sx(W)).length===0)await aI0(W,{recursive:!0,force:!0})}if((await Sx(Y)).length===0)await aI0(Y,{recursive:!0,force:!0});return Q}async function Sx($){try{return(await xR$($)).filter((X)=>!X.startsWith("."))}catch{return[]}}var vR$=30;var DK1=()=>{};import{DBOS as EK1,SchedulerMode as fR$}from"@dbos-inc/dbos-sdk";async function yR$(){let $=[a3(),Lf(),QN()],Z=0;for(let X of $)try{Z+=await eI0(X)}catch(Q){console.error("[monitoring-retention] cleanup failed:",Q)}return console.log(`[monitoring-retention] deleted ${Z} day-dir(s) across ${$.length} signal dir(s)`),{deleted:Z,dirs:$.length}}async function gR$($,Z){await EK1.runStep(()=>yR$(),{name:"monitoringRetention"})}function u06(){if(h06)return;h06=!0;let $=EK1.registerWorkflow(gR$,{name:"monitoringRetentionWorkflow"});EK1.registerScheduled($,{name:"monitoringRetentionWorkflow",crontab:bR$,mode:fR$.ExactlyOncePerIntervalWhenActive})}var bR$="23 4 * * *",h06=!1;var c06=O(()=>{kY();DK1()});function l06($){return async(Z,X)=>{let Q=await $.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["member.role","organization.id as orgId","organization.slug as orgSlug","organization.name as orgName"]).where("member.userId","=",X).where("member.organizationId","=",Z).executeTakeFirst();if(!Q)return console.warn(`[automationContextFactory] User ${X} not found in org ${Z} \u2014 returning null`),null;let Y=await yB.create();Y.auth.user={id:X,role:Q.role},Y.organization={id:Q.orgId,slug:Q.orgSlug,name:Q.orgName};let G=await _01($.db,Z,Q.role);return Y.boundAuth=C01({auth:Y.authInstance,headers:new Headers,role:Q.role,permissions:G,userId:X}),Y.access=new dE(X,void 0,Y.boundAuth,Q.role,"self"),BG0(Y,{id:Q.orgId,slug:Q.orgSlug}),Y}}var d06=O(()=>{mE();Fo()});import{EventEmitter as hR$}from"events";var zK1;var m06=O(()=>{AD();zK1=new hR$;zK1.on("request",($)=>{oF($)})});function i06(){return async($,Z)=>{let X=Date.now(),Q=$.req.method,Y=$.req.path;if(Y==="/api/auth/get-session"||Y.includes("favicon")){await Z();return}let G="",J=!1;if(Y.startsWith("/mcp")&&Q==="POST"){J=!0;try{if($.req.header("Content-Type")?.includes("application/json")){let F=await $.req.raw.clone().json();if(F.method==="tools/call"&&F.params?.name){let w=zc(F.params.name),B=F.params.arguments||{},L=Object.keys(B).map((E)=>zc(E)),D=L.length>0?L.slice(0,3).join(",")+(L.length>3?"\u2026":""):"";G=`${X5.tool}${w}${X5.dim}(${D})${X5.reset}`}else if(F.method)G=`${X5.dim}${zc(F.method)}${X5.reset}`}}catch{}}let K=zc(Y);if(Y.startsWith("/mcp/conn_")){let N=Y.split("/")[2]??"";K=`/mcp/${X5.mcp}${zc(N.slice(0,12))}\u2026${X5.reset}`}else if(Y==="/mcp")K=`${X5.mcp}/mcp${X5.reset}`;else if(Y==="/mcp/registry")K=`${X5.mcp}/mcp/registry${X5.reset}`;let W=cR$(Q),H=J?"\u25C0":"\u2190";if(!B50())console.log(`${X5.dim}${H}${X5.reset} ${W}${Q}${X5.reset} ${K}${G?` ${G}`:""}`);try{await Z()}finally{let N=Date.now()-X,U=$.res.status,F=uR$(U),w=N<1000?`${N}ms`:`${(N/1000).toFixed(1)}s`,B=J?"\u25B6":"\u2192";if(!B50())console.log(`${X5.dim}${B}${X5.reset} ${W}${Q}${X5.reset} ${K}${G?` ${G}`:""} ${F}${U}${X5.reset} ${X5.duration}${w}${X5.reset}`);zK1.emit("request",{method:Q,path:zc(Y),status:U,duration:N,timestamp:new Date})}}}var X5,uR$=($)=>{if($>=500)return X5.serverError;if($>=400)return X5.clientError;if($>=300)return X5.redirect;return X5.ok},cR$=($)=>{return X5[$]||X5.reset},zc=($)=>{return $.replace(/\r/g,"").replace(/\n/g,"").replace(/\x1b\[[0-9;]*m/g,"").replace(/[\x00-\x1f\x7f-\x9f]/g,"")};var n06=O(()=>{AD();m06();X5={reset:"\x1B[0m",dim:"\x1B[2m",bold:"\x1B[1m",GET:"\x1B[36m",POST:"\x1B[33m",PUT:"\x1B[35m",DELETE:"\x1B[31m",ok:"\x1B[32m",redirect:"\x1B[36m",clientError:"\x1B[33m",serverError:"\x1B[31m",mcp:"\x1B[35m",tool:"\x1B[96m",duration:"\x1B[90m"}});import{createHmac as r06}from"crypto";import{mkdir as lR$,readdir as dR$,rm as p06,stat as a06}from"fs/promises";import{join as PK1,relative as mR$}from"path";import{z as T8}from"zod";function e06($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return PK1(iR$,Z)}function $16($){return $.replace(/^\/+/,"").replace(/\.\./g,"")}function jK1($,Z){let X=e06($),Q=$16(Z);return PK1(X,Q)}function nR$($,Z,X,Q){let Y=Y1().encryptionKey||"dev-secret",G=`${$}:${Z}:${X}:${Q}`;return r06("sha256",Y).update(G).digest("hex")}function o06($,Z,X,Q,Y){let G=Math.floor(Date.now()/1000)+Q,J=nR$(Z,X,G,Y),K=new URL(`/api/dev-assets/${Z}/${$16(X)}`,$);return K.searchParams.set("expires",G.toString()),K.searchParams.set("signature",J),K.searchParams.set("method",Y),K.toString()}function Z16($,Z,X){let Q=`${$}:${Z.getTime()}:${X}`;return`"${r06("md5","etag").update(Q).digest("hex")}"`}async function X16($,Z,X,Q,Y){try{let G=await dR$($,{withFileTypes:!0});for(let J of G){let K=PK1($,J.name),H=mR$(Z,K).replace(/\\/g,"/");if(X&&!H.startsWith(X))continue;if(J.isDirectory())if(Q){let N=H+"/";if(!X||N.startsWith(X)){if(!(X?H.slice(X.length):H).includes("/"))Y.commonPrefixes.add(N)}}else await X16(K,Z,X,Q,Y);else if(J.isFile()){if(Q&&X){let N=H.slice(X.length);if(N.includes(Q)){let U=N.indexOf(Q),F=X+N.slice(0,U+1);Y.commonPrefixes.add(F);continue}}try{let N=await a06(K);Y.objects.push({key:H,size:N.size,lastModified:N.mtime.toISOString(),etag:Z16(K,N.mtime,N.size)})}catch{}}}}catch{}}function Q16($,Z){let Q=W0($).id;return[{name:"LIST_OBJECTS",description:"List objects in the local assets directory with pagination support",inputSchema:T8.object({prefix:T8.string().optional(),maxKeys:T8.number().optional().default(1000),continuationToken:T8.string().optional(),delimiter:T8.string().optional()}),outputSchema:T8.object({objects:T8.array(T8.object({key:T8.string(),size:T8.number(),lastModified:T8.string(),etag:T8.string()})),nextContinuationToken:T8.string().optional(),isTruncated:T8.boolean(),commonPrefixes:T8.array(T8.string()).optional()}),handler:async(Y)=>{let G=Y,J=G.prefix||"",K=G.maxKeys??1000,W=G.delimiter,H=G.continuationToken,N=e06(Q);await lR$(N,{recursive:!0});let U={objects:[],commonPrefixes:new Set};await X16(N,N,J,W,U),U.objects.sort((D,E)=>D.key.localeCompare(E.key));let F=0;if(H){if(F=U.objects.findIndex((D)=>D.key>H),F===-1)F=U.objects.length}let w=U.objects.slice(F,F+K),B=F+K<U.objects.length,L=B?w[w.length-1]?.key:void 0;return{objects:w,isTruncated:B,nextContinuationToken:L,commonPrefixes:Array.from(U.commonPrefixes).sort()}}},{name:"GET_OBJECT_METADATA",description:"Get metadata for a file in the local assets directory",inputSchema:T8.object({key:T8.string()}),outputSchema:T8.object({contentType:T8.string().optional(),contentLength:T8.number(),lastModified:T8.string(),etag:T8.string(),metadata:T8.record(T8.string(),T8.string()).optional()}),handler:async(Y)=>{let G=Y,J=jK1(Q,G.key),K=await a06(J);return{contentType:z31(G.key),contentLength:K.size,lastModified:K.mtime.toISOString(),etag:Z16(J,K.mtime,K.size)}}},{name:"GET_PRESIGNED_URL",description:"Generate a presigned URL for downloading a file from local storage",inputSchema:T8.object({key:T8.string(),expiresIn:T8.number().optional()}),outputSchema:T8.object({url:T8.string(),expiresIn:T8.number()}),handler:async(Y)=>{let G=Y,J=G.expiresIn??t06;return{url:o06(Z,Q,G.key,J,"GET"),expiresIn:J}}},{name:"PUT_PRESIGNED_URL",description:"Generate a presigned URL for uploading a file to local storage",inputSchema:T8.object({key:T8.string(),expiresIn:T8.number().optional(),contentType:T8.string().optional()}),outputSchema:T8.object({url:T8.string(),expiresIn:T8.number()}),handler:async(Y)=>{let G=Y,J=G.expiresIn??t06;return{url:o06(Z,Q,G.key,J,"PUT"),expiresIn:J}}},{name:"DELETE_OBJECT",description:"Delete a single file from local storage",inputSchema:T8.object({key:T8.string()}),outputSchema:T8.object({success:T8.boolean(),key:T8.string()}),handler:async(Y)=>{let G=Y,J=jK1(Q,G.key);try{return await p06(J),{success:!0,key:G.key}}catch{return{success:!1,key:G.key}}}},{name:"DELETE_OBJECTS",description:"Delete multiple files from local storage",inputSchema:T8.object({keys:T8.array(T8.string()).max(1000)}),outputSchema:T8.object({deleted:T8.array(T8.string()),errors:T8.array(T8.object({key:T8.string(),message:T8.string()}))}),handler:async(Y)=>{let G=Y,J=[],K=[];return await Promise.all(G.keys.map(async(W)=>{let H=jK1(Q,W);try{await p06(H),J.push(W)}catch(N){K.push({key:W,message:N instanceof Error?N.message:"Unknown error"})}})),{deleted:J,errors:K}}}]}async function AK1($,Z,X){let Q=Q16(Z,X),Y=new vN({name:"dev-assets-mcp",version:"1.0.0"},{capabilities:{tools:{}},jsonSchemaValidator:A5});for(let J of Q){let K="shape"in J.inputSchema?J.inputSchema.shape:T8.object({}).shape,W=J.outputSchema&&"shape"in J.outputSchema?J.outputSchema.shape:T8.object({}).shape;Y.registerTool(J.name,{description:J.description??"",inputSchema:K,outputSchema:W,annotations:J.annotations,_meta:J._meta},async(H)=>{try{let N=await J.handler(H);return{content:[{type:"text",text:JSON.stringify(N)}],structuredContent:N}}catch(N){return{content:[{type:"text",text:`Error: ${N.message}`}],isError:!0}}})}let G=new GG({enableJsonResponse:$.headers.get("Accept")?.includes("application/json")??!1});return await Y.connect(G),tW(Y,G,$,"mcp:dev-assets")}async function Y16($,Z,X,Q){let G=Q16(X,Q).find((J)=>J.name===$);if(!G)return{content:[{type:"text",text:`Tool not found: ${$}`}],isError:!0};try{let J=await G.handler(Z);return{content:[{type:"text",text:JSON.stringify(J)}]}}catch(J){return{content:[{type:"text",text:J instanceof Error?J.message:String(J)}],isError:!0}}}var iR$="./data/assets",t06=3600,s06,G16;var J16=O(()=>{v8();Pr();Y4();ai();Ph();tX();UI0();s06=new V1;s06.all("/",async($)=>{let Z=$.get("studioContext"),X=new URL($.req.url),Q=`${X.protocol}//${X.host}`;return AK1($.req.raw,Z,Q)});G16=s06});var K16={};j0(K16,{mountDevRoutes:()=>pR$});function pR$($,Z){$.all("/mcp/:connectionId{.*_dev-assets$}",Z,async(Q)=>{let Y=Q.get("studioContext"),G=new URL(Q.req.url),J=`${G.protocol}//${G.host}`;return AK1(Q.req.raw,Y,J)}),$.all("/mcp/:connectionId{.*_dev-assets$}/call-tool/:toolName",Z,async(Q)=>{let Y=Q.get("studioContext"),G=new URL(Q.req.url),J=`${G.protocol}//${G.host}`,K=Q.req.param("toolName");if(!K)return Q.json({error:"Missing tool name"},400);let W=await Q.req.json(),H=await Y16(K,W,Y,J);if(H.isError)return Q.json(H.content,500);return Q.json(H.content)}),$.use("/mcp/dev-assets",Z),$.route("/mcp/dev-assets",G16);let X=new V1;X.use("*",jK({mountPath:"/api/dev-assets"})),X.route("/",NI0({orgFromPath:!1})),$.route("/api/dev-assets",X)}var W16=O(()=>{Y4();U31();UI0();J16()});import{sql as tR$}from"kysely";import{randomUUID as H16}from"crypto";import{z as oR$}from"zod";async function aR$($){let Z=new Date().toISOString(),X=H16(),Q=n4.SELF($.organizationId),Y="registry.publish_request.created",G={requestId:$.request.id,requestedId:$.request.requested_id,title:$.request.title,status:$.request.status,createdAt:$.request.created_at,requester:{name:$.request.requester_name,email:$.request.requester_email}};await $.db.insertInto("events").values({id:X,organization_id:$.organizationId,type:"registry.publish_request.created",source:Q,specversion:"1.0",subject:$.request.id,time:Z,datacontenttype:"application/json",dataschema:null,data:JSON.stringify(G),cron:null,status:"pending",attempts:0,last_error:null,next_retry_at:null,created_at:Z,updated_at:Z}).execute();let J=await $.db.selectFrom("event_subscriptions").select(["id"]).where("organization_id","=",$.organizationId).where("enabled","=",1).where("event_type","=","registry.publish_request.created").where((K)=>K.or([K("publisher","is",null),K("publisher","=",Q)])).execute();if(J.length>0)await $.db.insertInto("event_deliveries").values(J.map((K)=>({id:H16(),event_id:X,subscription_id:K.id,status:"pending",attempts:0,last_error:null,delivered_at:null,next_retry_at:null,created_at:Z}))).execute();try{await tR$`SELECT
|
|
3920
3920
|
pg_notify('studio_events', ${X}),
|
|
3921
3921
|
pg_notify('mesh_events', ${X})
|
|
3922
3922
|
`.execute($.db)}catch{}}async function sR$($,Z){let Q=(await $.selectFrom("organization").select(["id"]).where("id","=",Z).execute())[0];if(Q?.id)return Q.id;return(await $.selectFrom("organization").select(["id"]).where("slug","=",Z).execute())[0]?.id??null}async function eR$($,Z){let X=await $.selectFrom("virtual_mcp_plugin_configs").innerJoin("connections","connections.id","virtual_mcp_plugin_configs.virtual_mcp_id").select(["virtual_mcp_plugin_configs.settings as settings"]).where("connections.organization_id","=",Z).where("virtual_mcp_plugin_configs.plugin_id","=",Vj).execute();for(let Q of X){let Y=Q.settings,G=typeof Y==="string"?(()=>{try{return JSON.parse(Y)}catch{return{}}})():Y??{};if(G.acceptPublishRequests===!0){let J=G.rateLimitWindow==="minute"?"minute":"hour",K=G.rateLimitMax,W=typeof K==="number"&&Number.isFinite(K)&&K>=1?Math.floor(K):U16;return{acceptPublishRequests:!0,requireApiToken:G.requireApiToken===!0,rateLimitEnabled:G.rateLimitEnabled===void 0?N16:G.rateLimitEnabled===!0,rateLimitWindow:J,rateLimitMax:W}}}return{acceptPublishRequests:!1,requireApiToken:!1,rateLimitEnabled:N16,rateLimitWindow:rR$,rateLimitMax:U16}}async function $I$($,Z,X){let Q=X==="minute"?60000:3600000,Y=new Date(Date.now()-Q).toISOString(),G=await $.selectFrom("private_registry_publish_request").select((J)=>J.fn.countAll().as("count")).where("organization_id","=",Z).where("created_at",">=",Y).executeTakeFirst();return Number(G?.count??0)}async function ZI$($,Z,X,Q){let Y=await $.selectFrom("private_registry_item").select(["id","title"]).where("organization_id","=",Z).where((G)=>G.or([G("id","=",X),G("title","=",Q)])).executeTakeFirst();return Y?{id:String(Y.id),title:String(Y.title)}:null}function F16($){let{db:Z,db:X}=$,Q=new Xg(X),Y=new Qg(X);return async(G)=>{let J=G.req.param("orgRef")??G.req.param("org");if(!J)return G.json({error:"Organization not found"},404);let K=await sR$(Z,J);if(!K)return G.json({error:"Organization not found"},404);let W=await eR$(Z,K);if(!W.acceptPublishRequests)return G.json({error:"Publish requests are not enabled for this registry."},403);if(W.requireApiToken){let w=G.req.header("Authorization"),B=w?.startsWith("Bearer ")?w.slice(7).trim():null;if(!B)return G.json({error:"API key required. Use Authorization: Bearer <key>"},401);if(!await Y.validate(K,B))return G.json({error:"Invalid API key"},401)}if(W.rateLimitEnabled){if(await $I$(X,K,W.rateLimitWindow)>=W.rateLimitMax)return G.json({error:"Too many publish requests. Please try again later.",retryAfterSeconds:W.rateLimitWindow==="minute"?60:3600},429)}let H;try{H=await G.req.json()}catch{return G.json({error:"Invalid JSON body"},400)}let N=Af8.safeParse(H);if(!N.success)return G.json({error:"Invalid publish request payload",details:oR$.treeifyError(N.error)},400);let U=await ZI$(X,K,N.data.data.id,N.data.data.title);if(U)return G.json({error:"A registry item with the same id or title already exists. Please use a different name/id.",conflict:U},409);let F=await Q.createOrUpdate({organization_id:K,requested_id:N.data.data.id,title:N.data.data.title,description:N.data.data.description??null,_meta:N.data.data._meta,server:N.data.data.server,requester_name:N.data.requester?.name??null,requester_email:N.data.requester?.email??null});try{await aR$({db:Z,organizationId:K,request:F})}catch(w){console.warn("[private-registry] failed to emit publish-request event:",w)}return d1.capture({distinctId:N.data.requester?.email??`org:${K}`,event:"registry_publish_request_submitted",groups:{organization:K},properties:{organization_id:K,request_id:F.id,requested_id:F.requested_id,title:N.data.data.title,requester_email:N.data.requester?.email??null}}),G.json({id:F.id,requested_id:F.requested_id,status:F.status},201)}}var N16=!0,rR$="hour",U16=100;var w16=O(()=>{k$();T6();ju();Ja0();Ka0();F9()});var B16={};j0(B16,{createPublishRequestHandler:()=>F16,createPublicMCPHandler:()=>kf8});var O16=O(()=>{zu();w16()});var T16={};j0(T16,{watchHandler:()=>A16,resolveCorsOrigin:()=>P16,isSsoExemptPath:()=>j16,createApp:()=>wI$});import{readFileSync as XI$}from"fs";import{PrometheusSerializer as QI$}from"@opentelemetry/exporter-prometheus";import{DBOS as jc}from"@dbos-inc/dbos-sdk";import{oAuthDiscoveryMetadata as WI$,oAuthProtectedResourceMetadata as HI$}from"better-auth/plugins";async function YI$($){let Z=$.connect(),X;try{X=await Promise.race([Z,D16(L16)])}catch{return Z.then((Q)=>Q.release(!0)).catch(()=>{}),!1}try{return await Promise.race([X.query("SELECT 1"),D16(L16)]),X.release(),!0}catch{return X.release(!0),!1}}function D16($){return new Promise((Z,X)=>setTimeout(()=>X(Error("pg health-check timeout")),$))}async function GI$($,Z){let{items:X}=await $.storage.connections.list(Z,{where:{field:["connection_url"],operator:"like",value:`${lo1}%`},limit:1}),Q=X[0];if(!Q?.configuration_state)return null;return Q.configuration_state.project_locator}function JI$($){let Z=new URLSearchParams;if($){let[X,Q]=$.split("/");if(X)Z.set("workspace_hint",X);if(Q)Z.set("project_hint",Q)}else Z.set("auto_personal","true");return Z.set("force_new","true"),Z}function j16($){return $.startsWith("/api/org-sso/")||$.startsWith("/api/auth/")||$.startsWith("/api/tools/management")||$.startsWith("/oauth-proxy/")||/^\/api\/[^/]+\/oauth-proxy\//.test($)||$.startsWith(`${$G1}/`)}function P16($,{baseUrl:Z,requestOrigin:X}){let Q;try{Q=new URL($).hostname}catch{return null}if(Q==="localhost"||Q==="127.0.0.1")return $;let Y=Z??X;try{if(new URL(Y).origin===$)return $}catch{}return null}async function wI$($={}){let Z=$.database??X6(),X=!1;H9.stop().catch((a)=>{console.error("[SSEHub] Error stopping previous broadcast (HMR cleanup):",a)});let Q,Y,G=new NK1,J,K,W,H=null;if($.disableNats)J=UK1(),Q={get:async()=>null,set:async()=>{},invalidate:async()=>{},teardown:()=>{}},Y=new Ar,K={start:async()=>{},broadcast:()=>{},publishControlFrame:()=>{},stop:async()=>{}},W={init:async()=>{},pump:(a)=>{return(async()=>{let T0=a.getReader();try{while(!0){let{done:v0}=await T0.read();if(v0)break}}catch{}finally{T0.releaseLock()}})()},publishRawChunk:async()=>!1,publishDone:async()=>!1,createTailStream:async()=>null,purge:()=>{},teardown:()=>{}};else{H=R06();let a=Y1().natsCredsPath,T0;if(a)try{T0=XI$(a,"utf8")}catch(v1){console.error(`[app] failed to read NATS_CREDS at ${a}; connecting anonymously`,v1)}H.init(Y1().natsUrls,T0?{creds:T0}:void 0);let v0=Oa0()?new Qo0({getJetStream:()=>H.getJetStream()}):null;v0?.init().catch(()=>{}),Q=v0;let w1=new m41({getJetStream:()=>H.getJetStream()});w1.init().catch(()=>{}),Y=w1,J=UK1({getConnection:()=>H.getConnection()}),K=new FK1({getConnection:()=>H.getConnection()}),W=new OK1({getConnection:()=>H.getConnection(),getJetStream:()=>H.getJetStream()}),Ii8(H),H.onReady(()=>{v0?.init().catch((v1)=>{console.error("[McpListCache] Deferred init failed:",v1)}),w1.init().catch((v1)=>{console.error("[ConnectionCircuitStore] Deferred init failed:",v1)}),J.start(),R38(()=>H.getConnection()),W.init().catch((v1)=>{console.warn("[Decopilot] StreamBuffer init failed (late-join disabled):",v1)})})}if(Pc)await Pc();Yo0(Q),i41(Y);let U={storage:new Ng(Z.db),sseHub:H9},F=new x61(U),w=new gp(Z.db),B=new LK1(w);B.start(),K.start((a)=>{oR0(a),F.execute({type:"CANCEL",taskId:a}).catch((T0)=>{console.error("[Decopilot] CancelBroadcast execute failed:",T0)})}).catch((a)=>{console.error("[Decopilot] CancelBroadcast start failed:",a)}),H?.onReady(()=>{K.start().catch((a)=>{console.error("[CancelBroadcast] Deferred start failed:",a)})});let L=()=>H?.getConnection()??null;Y31(L),H?.onReady(()=>Y31(L)),W.init().catch((a)=>{console.warn("[Decopilot] StreamBuffer init failed, attach/late-join disabled:",a)}),Pc=async()=>{await F.stopAll(),F.dispose(),B.dispose(),K.stop().catch(()=>{}),Ro8(),W.teardown(),Q?.teardown(),G.teardown(),J.teardown(),I38(),Y.teardown(),Yo0(null),i41(null)};let D=new V1;if(D.use("*",nm0({enabled:(a)=>Ub(a,"debug")==="1"})),D.use("*",Qg0),D.use("/*",Mr1({origin:(a,T0)=>P16(a,{baseUrl:Y1().baseUrl,requestOrigin:new URL(T0.req.url).origin}),credentials:!0,allowMethods:["GET","POST","PUT","DELETE","OPTIONS"],allowHeaders:["Content-Type","Authorization","mcp-protocol-version"],exposeHeaders:["WWW-Authenticate"]})),D.use("*",async(a,T0)=>{if(await T0(),a.req.path.includes("/files/"))return;if(a.req.path.includes("/fs/")&&a.req.path.endsWith("/read"))return;a.header("X-Frame-Options","DENY"),a.header("Content-Security-Policy","frame-ancestors 'none'")}),!Y1().noTui)D.use("*",i06());D.use("*",async(a,T0)=>{if(await T0(),Vd(a.req.path))return;if(a.res.status>=500){let w1=await a.res.clone().text();console.error(`[5xx Response] ${a.req.method} ${a.req.path} - ${a.res.status}:`,w1)}}),D.get(G7.HEALTH,(a)=>{if(X)return a.json({status:"shutting_down"},503);return a.json({status:"ok"})}),D.get(G7.HEALTH_LIVE,(a)=>{return a.json({status:"ok"})}),D.get(G7.HEALTH_READY,async(a)=>{if(X)return a.json({status:"shutting_down"},503);let T0={};if(T0.postgres={status:await YI$(Z.pool)?"up":"down"},H)T0.nats=H.isConnected()?{status:"up"}:{status:"down"};else T0.nats={status:"down"};let v0=T0.postgres.status==="up",w1=v0?200:503;return a.json({status:v0?"ready":"not_ready",services:T0},w1)}),D.get(G7.METRICS,async(a)=>{try{let T0=await Kg0.collect(),v0=KI$.serialize(T0.resourceMetrics);return a.text(v0,200,{"Content-Type":"text/plain; version=0.0.4; charset=utf-8"})}catch(T0){return console.error("Failed to collect metrics:",T0),a.text("# Error collecting metrics",500)}}),D.get(`${G7.DBOS_QUEUE_DEPTH_PREFIX}:queueName`,async(a)=>{let T0=a.req.param("queueName");if(!NI$.has(T0))return a.json({error:`Unknown queue: ${T0}`},404);let v0=await jc.listQueuedWorkflows({queueName:T0,status:"ENQUEUED"});return a.json({queue_length:v0.length})}),D.get(G7.HOSTED_RUN_PENDING,(a)=>{let{active:T0,pending:v0,max:w1}=Fj8();return a.json({pending:v0,active:T0,max:w1})}),D.route("/api/config",le8),D.route("/api/_reports",se8),D.route("/api/_stripe",KK1),D.route("/report",re8($.clientDir)),D.route("/api/auth/custom",oi8),D.route("/api/auth/desktop",si8),D.all("/api/auth/admin/*",Xn8),D.all("/api/auth/*",async(a)=>{return await q6.handler(a.req.raw)});let E=XF8();E.use("/.well-known/oauth-protected-resource/mcp/:connectionId",wx),E.use("/mcp/:connectionId/.well-known/oauth-protected-resource",wx),D.route("/",E),D.get("/.well-known/oauth-protected-resource/api/:org/mcp/:connectionId",wo),D.route("/",JF8()),D.use("/oauth-proxy/:connectionId/*",wx),D.all("/oauth-proxy/:connectionId/*",E16);let z=async(a)=>{let v0=await UI$()(a.req.raw),w1=await v0.json();return Response.json(w1,v0)};D.use("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",wx),D.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",z);let j=async(a)=>{let v0=await FI$()(a.req.raw),w1=await v0.json();return Response.json(w1,v0)};D.get("/.well-known/oauth-authorization-server/*/:gateway?/:connectionId?",j);let A=Ai8({ttlMs:120000}),P=await cU8({db:Z.db,auth:q6,encryption:{key:Y1().encryptionKey},observability:{tracer:cF,meter:L6},modelListCache:G,providerKeyCache:J,memberRoleCache:A});yB.set(P);let I=new MN(Y1().encryptionKey);Pt1({db:Z.db,baseUrl:AQ()});let C=qQ0(Z.db),M=new Sp(Z.db),S=l06({db:Z.db});h41({storage:C,studioContextFactory:S}),o61({studioContextFactory:S,deps:{runRegistry:F,cancelBroadcast:K,streamBuffer:W,sseHub:H9}}),l61({dispatchRunFn:zo8,studioContextFactory:S,deps:{runRegistry:F,cancelBroadcast:K,streamBuffer:W,sseHub:H9}});let m=new Ng(Z.db),v=new pE(Z.db);tz8({getJetStream:()=>H?.getJetStream()??null,getJetStreamManager:async()=>{let a=H?.getConnection();return a?await z16.jetstreamManager(a):null},messageParts:m.messageParts(),resolveRun:async(a)=>{let T0=await Z.db.selectFrom("threads").select(["organization_id","created_by","message_storage_version","status","run_fence_token","title"]).where("id","=",a).executeTakeFirst();return T0?{orgId:T0.organization_id,createdBy:T0.created_by,version:T0.message_storage_version??1,status:T0.status,runFenceToken:T0.run_fence_token,title:T0.title??null}:null},completeRunIfNotCompleted:async(a,T0)=>{let v0=await m.completeRunIfNotCompleted(a,T0);if(rI0(H9,T0,a,v0),v0)await wr(v,a,T0),Q41({contextFactory:S,taskBoard:v,threadId:a,orgId:T0});return v0},markRunRequiresAction:async(a,T0)=>{let v0=await m.requiresActionIfInProgress(a,T0);return rI0(H9,T0,a,v0),v0},markRunFailed:async(a,T0,v0,w1)=>{let v1=await m.markRunFailed(a,T0,v0,w1);if(rI0(H9,T0,a,v1),v1)await wr(v,a,T0),Q41({contextFactory:S,taskBoard:v,threadId:a,orgId:T0});return v1},clearSynthesizedError:async(a,T0)=>{await m.messageParts().replaceMessageParts(a,KO(a,T0),[])},persistTitle:(a,T0,v0)=>m.update(a,T0,{title:v0}),onTitleUpdated:async({runId:a,orgId:T0,title:v0})=>{let w1=await m.get(a,T0).catch(()=>null);H9.emit(T0,sK(a,w1?.status??"in_progress",{title:v0,virtualMcpId:w1?.virtual_mcp_id??void 0,createdBy:w1?.created_by,triggerId:w1?.trigger_id,branch:w1?.branch??null,createdAt:w1?.created_at,updatedAt:w1?.updated_at}))},bumpProgress:async({runId:a,orgId:T0})=>{await m.bumpProgress(a,T0)},recordCompleted:async({runId:a,orgId:T0,distinctId:v0,usage:w1})=>{d1.capture({distinctId:v0,event:"chat_message_completed",groups:{organization:T0},properties:{organization_id:T0,thread_id:a,transport:"projector",input_tokens:w1.inputTokens,output_tokens:w1.outputTokens,total_tokens:w1.totalTokens}})},recordFailed:async({runId:a,orgId:T0,distinctId:v0,reason:w1,kind:v1})=>{d1.capture({distinctId:v0,event:"chat_message_failed",groups:{organization:T0},properties:{organization_id:T0,thread_id:a,transport:"projector",error_category:v1,error_message:w1}})},purgeRun:async(a)=>{W.purge(a)}}),ot8({studioContextFactory:S,systemDatabaseUrl:wg0(Y1().databaseUrl,Y1().databasePgSsl),streamBuffer:W}),u06(),At1(),uo1();let b=async(a,T0,v0)=>{let w1=await C.findById(a,T0);if(!w1)throw Error("Automation not found");return l41({automationId:w1.id,organizationId:w1.organization_id,triggerId:null})},t=new $c(C,({automation:a,trigger:T0,contextMessages:v0,idempotencyKey:w1})=>jr({automationId:a.id,organizationId:a.organization_id,triggerId:T0.id,contextMessages:v0},{idempotencyKey:w1})),y=[a3(),Lf(),QN()];for(let a of y)eI0(a).then(()=>{}).catch((T0)=>console.error("[monitoring] Retention cleanup failed:",T0));let X0=()=>Z.db.deleteFrom("apikey").where("expiresAt","<",new Date).execute().then(()=>{}).catch((a)=>console.error("[auth] Expired API key cleanup failed:",a));X0(),setInterval(X0,86400000).unref(),D.use("*",async(a,T0)=>{if(Zg0(a.req.path))return T0();let v0={measure:async(v1,b8)=>{iG(a,v1);try{return await b8()}finally{hY(a,v1)}}},w1=await yB.create(a.req.raw,{timings:v0});w1.automationRunner=b,a.set("studioContext",w1);try{await T0()}finally{let v1=w1.pendingRevalidations;if(v1.length>0)Promise.race([Promise.allSettled(v1),Z6(30000)]).catch((o0)=>console.error("[studio] revalidation cleanup error:",o0))}}),D.use("/api/:org/decopilot/*",Bx),D.use("/api/:org/v1/*",Bx),D.use("/api/:org/files/*",Bx),D.use("*",async(a,T0)=>{if(j16(a.req.path))return T0();let v0=a.get("studioContext");if(!v0?.organization?.id||!v0?.auth?.user?.id)return T0();if(!(await v0.storage.orgSsoConfig.getByOrgId(v0.organization.id))?.enforced)return T0();if(!await v0.storage.orgSsoSessions.isValid(v0.auth.user.id,v0.organization.id))return a.json({error:"SSO authentication required for this organization"},403);return T0()});let w0=new V1;w0.use("*",jK({mountPath:"/api/org-sso"})),w0.route("/",jR0()),D.route("/api/org-sso",w0),D.get("/api/tools/management",(a)=>{return a.json({tools:tm0,grouped:nD()})}),D.use("/mcp/*",async(a,T0)=>{iG(a,"mcp");try{return await T0()}finally{hY(a,"mcp")}});let M0=async(a,T0)=>{let v0=a.var.studioContext;if(!v0.auth.user?.id&&!v0.auth.apiKey?.id){let w1=new URL(a.req.url),v1=a.req.header("x-forwarded-proto")?.split(",")[0]?.trim(),b8=v1?`${v1}://${w1.host}`:w1.origin;return a.res=new Response(null,{status:401,headers:{"WWW-Authenticate":`Bearer realm="mcp",resource_metadata="${b8}${w1.pathname}/.well-known/oauth-protected-resource"`}})}return await T0()};if(D.use("/mcp/:connectionId?",M0),D.use("/mcp/gateway/:virtualMcpId?",M0),D.use("/mcp/virtual-mcp/:virtualMcpId?",M0),D.use("/mcp/self",M0),BJ()){let{mountDevRoutes:a}=(W16(),G20(K16));a(D,M0)}let $0=new V1;$0.use("*",jK({mountPath:"/mcp"})),$0.route("/",DJ0()),D.route("/mcp",$0);let e=new V1;e.use("*",jK({mountPath:"/mcp/self"})),e.route("/",uI0()),D.route("/mcp/self",e);let A0=new V1;A0.use("*",jK({mountPath:"/mcp"})),A0.route("/",jJ0()),D.route("/mcp",A0),D.use("/api/:org/models/*",async(a,T0)=>{iG(a,"llm_models");try{return await T0()}finally{hY(a,"llm_models")}});let Z0=H31({cancelBroadcast:K,streamBuffer:W,runRegistry:F});D.route("/api",Z0),D.use("/api/:org/files/*",Bx),D.route("/api",K06);let k0=new V1;k0.use("*",jK({mountPath:"/api"})),k0.route("/",cI0()),D.route("/api",k0),D.route("/api",he8);let p0=new V1;p0.use("*",jK({mountPath:"/api"})),p0.route("/",lI0({tokenStorage:M,automationEventDispatcher:t})),D.route("/api",p0);let m0=new Cp(Z.db),a0=new V1;a0.use("*",jK({mountPath:"/api"})),a0.route("/",KI0()),D.route("/api",a0),D.route("/api/deco-sites",io8()),D.route("/api/deco-apps",xe8());let H0=new V1;H0.use("*",jK({mountPath:"/api/deco-sites"})),H0.route("/",HI0()),D.route("/api/deco-sites",H0);let{createPublishRequestHandler:S0,createPublicMCPHandler:C0}=await Promise.resolve().then(() => (O16(),B16)),I0={db:Z.db,vault:{encrypt:(a)=>I.encrypt(a),decrypt:(a)=>I.decrypt(a)}},Q0=S0(I0),N0=C0(I0);D.use("/org/:orgRef/registry/publish-request",wx),D.post("/org/:orgRef/registry/publish-request",Q0),D.use("/org/:orgSlug/registry/*",wx),D.all("/org/:orgSlug/registry/*",N0),D.post("/api/:org/registry/publish-request",Q0),D.all("/api/:org/registry/*",N0),D.route($G1,Qn8());let u0=Ce8({kvStorage:m0,runRegistry:F,streamBuffer:W,sseHub:H9,cancelBroadcast:K,tokenStorage:M,automationEventDispatcher:t,mountDevAssets:BJ(),mcpAuth:M0,oauthProxyHandler:E16,watchHandler:A16,betterAuthProtectedResourceHandler:z,getNatsConnection:()=>H?.getConnection()??null});return D.route("/api/:org",u0),D.notFound((a)=>{return a.json({error:"Not Found",path:a.req.path},404)}),D.onError(_o8),Object.assign(D,{markShuttingDown:()=>{X=!0},shutdown:async()=>{if(console.log("[shutdown] Stopping workers..."),await Promise.allSettled([H9.stop(),Pc?Promise.resolve(Pc()).finally(()=>{Pc=null}):Promise.resolve()]),H)await H.drain().catch((a)=>console.error("[shutdown] NATS drain error:",a));console.log("[shutdown] Flushing telemetry..."),await bG().catch((a)=>console.error("[shutdown] Telemetry flush error:",a)),console.log("[shutdown] Closing database..."),await mF(Z).catch((a)=>console.error("[shutdown] Database close error:",a)),console.log("[shutdown] Cleanup complete.")},initDbos:async()=>{await jc.registerQueue(hG,{partitionQueue:!0,concurrency:b41,minPollingIntervalMs:y41}),await jc.registerQueue(ZJ,{partitionQueue:!0,concurrency:p61}),await jc.registerQueue(JN,{partitionQueue:!0,concurrency:c61}),await jc.registerQueue(aF,{partitionQueue:!0,concurrency:tt8}),await w31(C),await Promise.allSettled(["automations-gate","automations-global"].map((a)=>jc.deleteQueue(a))),await g41(Z.pool),LZ8().catch((a)=>{console.error("[studio-pack-backfill] failed:",a)}),Tt1().catch((a)=>{console.error("[org-fs] public-sets boot sync kick failed:",a)})}})}var z16,L16=5000,Pc=null,E16=async($)=>{let Z=$.req.param("connectionId");if(!Z)return $.json({error:"Missing connectionId"},400);let X=$.req.path.split("/").filter(Boolean),Q=X[X.length-1],Y=$.get("studioContext");if(!Y)Y=await yB.create($.req.raw),$.set("studioContext",Y);let G=$.req.param("org")?Y.organization?.id:void 0,J=await Y.storage.connections.findById(Z,G);if(!J?.connection_url)return $.json({error:"Connection not found"},404);let K=await ng(J.connection_url),W,H=new URL(J.connection_url),U=(typeof J.metadata?.oauthResource==="string"&&J.metadata.oauthResource.length>0?J.metadata.oauthResource:void 0)??J.connection_url;if(K.ok)W=(await K.json()).authorization_servers?.[0];if(!W)W=H.origin;let F=await Bo(W);if(!F.ok)return $.json({error:"Failed to get auth server metadata"},502);let w=await F.json(),B;if(Q==="authorize")B=w.authorization_endpoint;else if(Q==="token")B=w.token_endpoint;else if(Q==="register")B=w.registration_endpoint;if(!B)return $.json({error:`Unknown OAuth endpoint: ${Q}`},404);let L=new URL(B),D=new URL($.req.url);if(L.search=D.search,Q==="authorize"){let m=L.searchParams.get("redirect_uri");if(m){let v=Y1().baseUrl??D.origin;try{let b=new URL(m),t=new URL(v);if(!(b.origin===t.origin||b.hostname==="localhost"))return $.json({error:"invalid_request",error_description:"redirect_uri is not allowed"},400)}catch{return $.json({error:"invalid_request",error_description:"redirect_uri is malformed"},400)}L.searchParams.set("redirect_uri",m)}if(L.searchParams.has("resource"))L.searchParams.set("resource",U);if(do1(J.connection_url))try{let v=await GI$(Y,J.organization_id),b=JI$(v);for(let[t,y]of b)L.searchParams.set(t,y)}catch(v){console.warn("[oauth-proxy] Failed to get smart OAuth params, proceeding without:",v)}return $.redirect(L.toString(),302)}let E={Accept:$.req.header("Accept")||"application/json"},z=$.req.header("Content-Type");if(z)E["Content-Type"]=z;let j=$.req.header("Authorization");if(j)E.Authorization=j;let A,P=null,I=null;if($.req.method!=="GET"&&$.req.method!=="HEAD")if(Q==="token"&&z?.includes("application/x-www-form-urlencoded")){if(j?.toLowerCase().startsWith("basic "))try{let y=atob(j.slice(6).trim()),X0=y.indexOf(":");if(X0!==-1){let w0=decodeURIComponent(y.slice(0,X0)),M0=decodeURIComponent(y.slice(X0+1));P=w0||null,I=M0||null}}catch{}let m=await $.req.formData();if(m.has("resource"))m.set("resource",U);let v=m.get("client_id"),b=m.get("client_secret");if(typeof v==="string"&&v)P=v;if(typeof b==="string"&&b)I=b;let t=new URLSearchParams;for(let[y,X0]of m.entries())t.append(y,X0.toString());A=t.toString()}else if(Q==="register"&&z?.toLowerCase().includes("application/json")){let m=await Y.db.selectFrom("organization").select(["id","slug","name"]).where("id","=",J.organization_id).executeTakeFirst(),v=await $.req.text(),b={};try{b=v?JSON.parse(v):{}}catch{A=v}let t=typeof b==="object"&&b!==null&&!Array.isArray(b);if(A===void 0&&!t)A=v;if(A===void 0){let y=b,X0=y.metadata&&typeof y.metadata==="object"?y.metadata:{};y.metadata={...X0,organization_id:J.organization_id,...m?.slug?{organization_slug:m.slug}:{},...m?.name?{organization_name:m.name}:{}},A=JSON.stringify(y),E["Content-Type"]="application/json"}}else A=$.req.raw.body??void 0;let C=await fetch(L.toString(),{method:$.req.method,headers:E,body:A,duplex:"half",redirect:"manual"}),M=new Headers,S=["connection","keep-alive","transfer-encoding","content-encoding","content-length"];for(let[m,v]of C.headers.entries())if(!S.includes(m.toLowerCase()))M.set(m,v);if(Q==="token"&&C.ok){let m=await C.text();try{let v=JSON.parse(m);if(typeof v.access_token==="string"&&v.access_token){let b=typeof v.expires_in==="number"?new Date(Date.now()+v.expires_in*1000):null,t=null;try{t=await pg(J.connection_url)??B}catch{t=B}let y={connectionId:Z,accessToken:v.access_token,refreshToken:typeof v.refresh_token==="string"?v.refresh_token:null,scope:typeof v.scope==="string"?v.scope:null,expiresAt:b,clientId:P,clientSecret:I,tokenEndpoint:t};await new y5(Y.db,Y.vault).upsert(y)}}catch(v){console.error("[oauth-proxy] failed to persist downstream token:",v)}return new Response(m,{status:C.status,statusText:C.statusText,headers:M})}return new Response(C.body,{status:C.status,statusText:C.statusText,headers:M})},A16=async($)=>{let Z=$.var.studioContext;if(!(Z.auth.user?.id??Z.auth.apiKey?.userId))return $.json({error:"Unauthorized"},401);let Q=Z.organization?.id;if(!Q)return $.json({error:"organization id missing"},400);let Y=$.req.query("types"),G=Y?Y.split(",").map((K)=>K.trim()).filter(Boolean):null,J=crypto.randomUUID();return oU($,async(K)=>{if(await K.writeSSE({event:"connected",data:JSON.stringify({listenerId:J,organizationId:Q,typePatterns:G,connectedAt:new Date().toISOString()})}),!H9.add({id:J,organizationId:Q,typePatterns:G?.length?G:null,push:(N)=>{K.writeSSE({id:N.id,event:N.type,data:JSON.stringify(N)}).catch(()=>{H9.remove(Q,J)})}})){await K.writeSSE({event:"error",data:JSON.stringify({error:"Too many connections",message:"SSE connection limit reached. Try again later."})});return}let H=setInterval(()=>{K.writeSSE({event:"keepalive",data:""}).catch(()=>{clearInterval(H)})},30000);await new Promise((N)=>{K.onAbort(()=>{clearInterval(H),H9.remove(Q,J),N()})})})},KI$,NI$,UI$=()=>HI$(q6),FI$=()=>WI$(q6);var R16=O(()=>{D5();v8();Rt1();Jb();XZ();Wb();T6();Y4();GZ0();kr1();pm0();w3();Fo();iY1();J7();j5();k$();eY1();ei8();Yn8();YG1();Vo8();N31();nJ();OG0();U31();xo8();F31();_e8();D31();ve8();EJ0();Oo();ue8();PJ0();cJ1();de8();ae8();ee8();Y06();W06();uJ1();gJ1();V$0();ji();I06();dY();tQ0();vp();p41();q06();k06();V06();G31();b06();v61();y06();Sa0();up();XQ();G41();va0();c06();EX0();DK1();kY();B31();lz();g61();C61();EX0();X31();rr0();ar0();d06();Fb();n06();Lc();iY1();$I0();rR0();z16=k(fD(),1);KI$=new QI$,NI$=new Set([hG,ZJ,JN,aF])});var k16={};j0(k16,{resolveClientDir:()=>jI$,resolveAssetPathWithTraversalCheck:()=>M16,isPathWithinDirectory:()=>q16,createAssetHandler:()=>PI$});import{resolve as Je,dirname as BI$,join as OI$,extname as LI$,basename as DI$,sep as I16}from"path";function EI$($,Z){if($===Z||DI$($)==="index.html")return{"Cache-Control":"no-cache"};if($.includes(`${I16}assets${I16}`))return{"Cache-Control":"public, max-age=31536000, immutable"};return{}}function q16($,Z){let X=Je(Z),Q=Je($);return Q===X||Q.startsWith(X+"/")}function M16({requestPath:$,clientDir:Z}){let X=$.startsWith("/")?$.slice(1):$,Q=Je(Z,X);if(!q16(Q,Z))return null;return Q}function jI$($,Z="../client"){let X=new URL($),Q=BI$(X.pathname);return Je(Q,Z)}function PI$($={}){let{env:Z="production",clientDir:X=zI$,isServerPath:Q=()=>!1}=$;if(Z==="development")return async function(G){return null};return async function(G){if(G.method!=="GET")return null;let J=new URL(G.url),K;try{K=decodeURIComponent(J.pathname)}catch{return null}if(Q(K))return null;let W=M16({requestPath:K,clientDir:X});if(!W)return null;let H=OI$(W,"index.html"),N=Je(X,"index.html"),U=G.headers.get("accept"),w=U?.includes("text/html")||U?.includes("*/*")&&["",".html"].includes(LI$(W))?[H,N]:[];for(let B of[W,...w])try{let L=Bun.file(B);if(await L.exists())return new Response(L,{headers:EI$(B,N)})}catch{}if(K.includes("/assets/"))return new Response("Not Found",{status:404,headers:{"Cache-Control":"no-store"}});return null}}var zI$="./dist/client";var S16=()=>{};var V16={};j0(V16,{tryUpgradePreviewWs:()=>kI$,tryHandlePreviewHttp:()=>MI$,previewWebSocketHandler:()=>SI$,parsePreviewBaseDomain:()=>qI$,isPreviewWsData:()=>$20,extractHandleFromHost:()=>TK1});function RI$($){if($.method!=="GET")return!1;return($.headers.get("accept")??"").includes("text/html")}function II$(){return new Response(TI$,{status:503,headers:{"content-type":"text/html; charset=utf-8","cache-control":"no-store","retry-after":"1","access-control-allow-origin":"*"}})}function qI$($){if(!$||$.trim()==="")return null;let Z=$.includes("{handle}")?$.replace("{handle}","__handle__"):$,X;try{X=new URL(Z)}catch{return null}let Q=X.hostname;if($.includes("{handle}")){let Y=Q.indexOf(".");if(Y<=0||Y===Q.length-1)return null;return Q.slice(Y+1)}return Q}function TK1($,Z){if(!$||!Z)return null;let X=$.indexOf(":"),Q=(X>=0?$.slice(0,X):$).toLowerCase(),G=`.${Z.toLowerCase().replace(/^\.+|\.+$/g,"")}`;if(!Q.endsWith(G))return null;let J=Q.slice(0,Q.length-G.length);if(!J||J.includes("."))return null;return J}async function MI$($,Z){let X=TK1($.headers.get("host"),Z.baseDomain);if(!X)return null;let Q=await Z.getRunner();if(!Q)return We(503,"preview proxy not configured");let Y=await Q.proxyPreviewRequest(X,$);if(Y.headers.get(Wx)&&RI$($))return II$();return Y.headers.delete(Wx),Y}function We($,Z){return new Response(JSON.stringify({error:Z}),{status:$,headers:{"content-type":"application/json","access-control-allow-origin":"*"}})}function $20($){return typeof $==="object"&&$!==null&&$.kind==="preview"}async function kI$($,Z,X){if(($.headers.get("upgrade")??"").toLowerCase()!=="websocket")return null;let Q=TK1($.headers.get("host"),X.baseDomain);if(!Q)return null;let Y=await X.getRunner();if(!Y)return We(503,"preview proxy not configured");let G=await Y.resolvePreviewUpstreamUrl(Q);if(!G)return We(404,"sandbox not found");let J=new URL($.url);if(J.pathname.startsWith("/_sandbox")||J.pathname.startsWith("/_decopilot_vm"))return We(404,"not found");let K=`${G.replace(/^http/,"ws")}${J.pathname}${J.search}`,W=$.headers.get("sec-websocket-protocol"),H=W?W.split(",").map((F)=>F.trim()).filter(Boolean):[],N={kind:"preview",upstreamUrl:K,upstreamProtocols:H,pending:[],upstream:null,closed:!1};if(!Z.upgrade($,{data:N}))return We(426,"upgrade failed");return}function Ke($,Z,X,Q){if(Z.closed)return;Z.closed=!0;try{$.close(X,Q)}catch{}try{Z.upstream?.close()}catch{}}var AI$=256,TI$='<!DOCTYPE html><html><head><meta charset="utf-8"><title>Connecting\u2026</title><style>body{font-family:system-ui,sans-serif;display:flex;align-items:center;justify-content:center;min-height:100vh;margin:0;background:#fafafa;color:#555}div{text-align:center;max-width:420px;padding:24px}h3{margin:0 0 8px}p{margin:0;font-size:14px;color:#999;line-height:1.5}</style></head><body><div><h3>Connecting to sandbox\u2026</h3><p>Waiting for the sandbox to come online. This page refreshes automatically.</p></div><script>setTimeout(function(){window.location.reload()},1500)</script></body></html>',SI$;var C16=O(()=>{TY1();SI$={open($){let Z=$.data;if(!$20(Z))return;let X;try{X=Z.upstreamProtocols.length>0?new WebSocket(Z.upstreamUrl,Z.upstreamProtocols):new WebSocket(Z.upstreamUrl)}catch(Q){console.warn(`[preview-ws] failed to dial upstream ${Z.upstreamUrl}: ${Q instanceof Error?Q.message:String(Q)}`),Ke($,Z,1011,"upstream connect failed");return}X.binaryType="arraybuffer",Z.upstream=X,X.addEventListener("open",()=>{while(Z.pending.length>0){let Q=Z.pending.shift();if(Q!==void 0)X.send(Q)}}),X.addEventListener("message",(Q)=>{if(Z.closed)return;$.send(Q.data)}),X.addEventListener("close",(Q)=>{Ke($,Z,Q.code||1000,Q.reason||"")}),X.addEventListener("error",()=>{Ke($,Z,1011,"upstream error")})},message($,Z){let X=$.data;if(!$20(X))return;let Q=X.upstream;if(Q&&Q.readyState===WebSocket.OPEN){Q.send(Z);return}if(X.pending.length>=AI$){Ke($,X,1011,"preview ws backlog overflow");return}X.pending.push(Z)},close($){let Z=$.data;if(!$20(Z))return;Ke($,Z,1000,"")}}});var tI$={};import{existsSync as yI$}from"fs";function b16($,Z){if(!Z)return $;let X=new URL($);if(!X.searchParams.has("sslmode"))X.searchParams.set("sslmode","verify-full");return X.toString()}function uI$($){let Z=new Headers($.headers);for(let[X,Q]of Object.entries(hI$))Z.set(X,Q);return new Response($.body,{status:$.status,statusText:$.statusText,headers:Z})}async function pI$($){let Z;try{Z=await VI$.create({systemDatabaseUrl:b16(b3.databaseUrl,b3.databasePgSsl),systemDatabaseSchemaName:"dbos"});let X=await Z.listWorkflows({status:"PENDING",queueName:ZJ,executorId:$,loadInput:!1,loadOutput:!1});if(X.length===0){console.log(`[shutdown] no in-flight thread-gate gates to hand off (executor ${$})`);return}let Q=X.map((Y)=>Y.workflowID);await Z.resumeWorkflows(Q,{queueName:ZJ}),console.log(`[shutdown] re-enqueued ${Q.length} in-flight thread-gate gate(s) for re-adoption by a live executor (from ${$}):`,Q)}catch(X){console.error("[shutdown] thread-gate handoff failed:",X)}finally{await Z?.destroy().catch(()=>{})}}async function X20($){if(f16)return;f16=!0,console.log(`
|