decocms 4.83.0 → 4.83.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/assets/{AlertCircle-DPEsW7A8.js → AlertCircle-C-LWGksh.js} +1 -1
- package/dist/client/assets/{AreaChart-BDBkVxFA.js → AreaChart-BuQ7pYh_.js} +1 -1
- package/dist/client/assets/{ArrowUp-B_VVATf8.js → ArrowUp-BeEo8zxR.js} +1 -1
- package/dist/client/assets/{ArrowUpRight-DPt871Ex.js → ArrowUpRight-Cpd1Kvoc.js} +1 -1
- package/dist/client/assets/{CheckCircle-Bhjgrg4k.js → CheckCircle-D6vue6JR.js} +1 -1
- package/dist/client/assets/{ChevronDown-ClEtq8UA.js → ChevronDown-Chms7f47.js} +1 -1
- package/dist/client/assets/{ChevronRight-B9DmLAKh.js → ChevronRight-DGKhdwsU.js} +1 -1
- package/dist/client/assets/{ChevronUp-Y_qcNB-R.js → ChevronUp-B2kc02W-.js} +1 -1
- package/dist/client/assets/{Copy01-tOHQDVdb.js → Copy01-BLPcoB-x.js} +1 -1
- package/dist/client/assets/{DotsVertical-CmHvBgAo.js → DotsVertical-Bv_Wu1PR.js} +1 -1
- package/dist/client/assets/{Eye-DkqzK9v4.js → Eye--S6NkM5F.js} +1 -1
- package/dist/client/assets/{FilterLines-Da90Z39y.js → FilterLines-CVyIbk7P.js} +1 -1
- package/dist/client/assets/{Globe01-BptLpR6D.js → Globe01-D8U_-ef0.js} +1 -1
- package/dist/client/assets/{Globe04-5erCJGew.js → Globe04-Cf7fSPDC.js} +1 -1
- package/dist/client/assets/{HardDrive-BWMqpfxS.js → HardDrive-BDXue_9V.js} +1 -1
- package/dist/client/assets/{Image01-XM4bpaLw.js → Image01-BOJVTyLq.js} +1 -1
- package/dist/client/assets/{Key01-ByxRAii_.js → Key01-DgOZ1Vl-.js} +1 -1
- package/dist/client/assets/{LayoutLeft-B9Jd6ymK.js → LayoutLeft-uipFY-Sc.js} +1 -1
- package/dist/client/assets/{LinkExternal01-CKVW-eEM.js → LinkExternal01-Cq7tHe_6.js} +1 -1
- package/dist/client/assets/{Monitor01-ClZ2KmM9.js → Monitor01-C0kqyHBJ.js} +1 -1
- package/dist/client/assets/{Package-CDoMKJ25.js → Package-2_HSkxNk.js} +1 -1
- package/dist/client/assets/{Palette-Dj74Mlc6.js → Palette-DUf6RWjx.js} +1 -1
- package/dist/client/assets/{Play-D5sDqr8I.js → Play-D27HpOrJ.js} +1 -1
- package/dist/client/assets/{Plus-JOcsz2OW.js → Plus-CX4xPpn4.js} +1 -1
- package/dist/client/assets/{SearchLg-BHMKxNfO.js → SearchLg-EiBSceY9.js} +1 -1
- package/dist/client/assets/{SearchMd-C-NJ_45S.js → SearchMd-CjaEgvWB.js} +1 -1
- package/dist/client/assets/{Settings02-CVFCJqEn.js → Settings02-5t6-pGmO.js} +1 -1
- package/dist/client/assets/{Shield01-Bj6HGuxh.js → Shield01-DxxbOkrj.js} +1 -1
- package/dist/client/assets/{Star01-QG8pK1yw.js → Star01-DBLmagOx.js} +1 -1
- package/dist/client/assets/{Stars01-DqPZujie.js → Stars01-D-dD7V12.js} +1 -1
- package/dist/client/assets/{Stars02-D1eOi134.js → Stars02-BHQ6SybJ.js} +1 -1
- package/dist/client/assets/{Sun-DHI7Rs1S.js → Sun-7RqH2_Dg.js} +1 -1
- package/dist/client/assets/{SwitchHorizontal01-D8ShLQwH.js → SwitchHorizontal01-Dm27fxw8.js} +1 -1
- package/dist/client/assets/{Tool01-C6ssLf07.js → Tool01-Bk7pamHg.js} +1 -1
- package/dist/client/assets/{Tool02-BHHNM_g4.js → Tool02-CngweHED.js} +1 -1
- package/dist/client/assets/{Trash01-BtophoGC.js → Trash01-Bi1KaIxH.js} +1 -1
- package/dist/client/assets/{TrendUp01-WOe5Y0pM.js → TrendUp01-DsSWSiUz.js} +1 -1
- package/dist/client/assets/{Upload01-CXhKVCP8.js → Upload01-BWPUocl6.js} +1 -1
- package/dist/client/assets/{User01-uwH1s6Qn.js → User01-s23e9wZl.js} +1 -1
- package/dist/client/assets/{Users01-suVU8oKl.js → Users01-CNMhmtlD.js} +1 -1
- package/dist/client/assets/{Users03-Zrh5Q_ci.js → Users03-CTnD7KhC.js} +1 -1
- package/dist/client/assets/{X-BolYo4iB.js → X-CLk-1WTe.js} +1 -1
- package/dist/client/assets/{XCircle-CnJ70X3w.js → XCircle-2O_4kWp7.js} +1 -1
- package/dist/client/assets/{XClose-BdaQO-2_.js → XClose-DSEAQFLe.js} +1 -1
- package/dist/client/assets/{Zap-BzNhtsnx.js → Zap-BAgOs3IO.js} +1 -1
- package/dist/client/assets/{ZapSquare-DMvgJwuD.js → ZapSquare-T3uj9o0S.js} +1 -1
- package/dist/client/assets/{ZoomOut-B5XPtpBa.js → ZoomOut-B7mxhvah.js} +1 -1
- package/dist/client/assets/{access-gate-CjWAQSdR.js → access-gate-avJTtHpg.js} +1 -1
- package/dist/client/assets/{add-section-modal-CyW16nLc.js → add-section-modal-BL-x5qaG.js} +1 -1
- package/dist/client/assets/{agent-icon-BGgFt2fk.js → agent-icon-D18juLx-.js} +1 -1
- package/dist/client/assets/{agents-list-MwwVi6Ba.js → agents-list-DLkLGDrw.js} +1 -1
- package/dist/client/assets/{ai-providers-DAP6QknZ.js → ai-providers-KsLhnp0X.js} +1 -1
- package/dist/client/assets/{alert-Beqn0Fvg.js → alert-Bele4j8y.js} +1 -1
- package/dist/client/assets/{alert-dialog-CwKyb2j-.js → alert-dialog-BNeEAttR.js} +1 -1
- package/dist/client/assets/{app-editor-DseSILWA.js → app-editor-B0BrwnQg.js} +1 -1
- package/dist/client/assets/{auth-D4bTHSVX.js → auth-D4yHRD2-.js} +1 -1
- package/dist/client/assets/{auth-catchall-BKLc7QKI.js → auth-catchall-CNZ3D5s7.js} +1 -1
- package/dist/client/assets/{auth-entry-1PWVON9e.js → auth-entry-C-qYM8sO.js} +1 -1
- package/dist/client/assets/{auth-split-layout-B6cSVZVN.js → auth-split-layout-DYTsk60r.js} +1 -1
- package/dist/client/assets/{authenticate-and-persist-oauth-Bt8Gm2rH.js → authenticate-and-persist-oauth-BlDhuvWq.js} +1 -1
- package/dist/client/assets/{automation-list-row-P3Wfaud1.js → automation-list-row-XKqqDi6F.js} +1 -1
- package/dist/client/assets/{automation-runs-0Gp5Pl3p.js → automation-runs-C0y-Gi-l.js} +25 -25
- package/dist/client/assets/{automations-B1Pch092.js → automations-DdZPK7BE.js} +1 -1
- package/dist/client/assets/{autosend-kl7RNqnt.js → autosend-Pu6JcU1z.js} +1 -1
- package/dist/client/assets/{avatar-BxCDP7Ot.js → avatar-CB-s6LW3.js} +1 -1
- package/dist/client/assets/{badge-CJKB36w7.js → badge-D2OV8wRl.js} +1 -1
- package/dist/client/assets/{block-document-BNPa3FEr.js → block-document-CMsWkopF.js} +1 -1
- package/dist/client/assets/{brand-context-D3Rlfh4r.js → brand-context-DWWqlpVW.js} +1 -1
- package/dist/client/assets/{buckets-eqtPNxJ7.js → buckets-Bml_f-qW.js} +1 -1
- package/dist/client/assets/{bulk-category-panel-CzrR4JyW.js → bulk-category-panel-CwTU2Dke.js} +1 -1
- package/dist/client/assets/{calendar-DeTvDsBF.js → calendar-Cy0H8dDP.js} +1 -1
- package/dist/client/assets/{capability-load-error-DB_oh7IY.js → capability-load-error-C8Uwu5_s.js} +1 -1
- package/dist/client/assets/{card-9tKE7GXF.js → card-BJLhqcLf.js} +1 -1
- package/dist/client/assets/{category-editor-BQbsXApg.js → category-editor-CfWwzNXf.js} +1 -1
- package/dist/client/assets/{chat-context-CwNi3A6G.js → chat-context-BzGsRBEi.js} +1 -1
- package/dist/client/assets/{checkbox-Diqx1FoE.js → checkbox-fY0uDGwg.js} +1 -1
- package/dist/client/assets/{cli-auth-success-DvYAFC0B.js → cli-auth-success-B08QkmvU.js} +1 -1
- package/dist/client/assets/{collection-detail-Cv0k2_GT.js → collection-detail-BZt_Ibwr.js} +1 -1
- package/dist/client/assets/{collection-display-button-hHnJ4_g2.js → collection-display-button-Cc0b3ED_.js} +1 -1
- package/dist/client/assets/{collection-search-kUG_oKbb.js → collection-search-Bv843kn7.js} +1 -1
- package/dist/client/assets/{collection-table-wrapper-B9yKUfMg.js → collection-table-wrapper-DjmKYjAk.js} +1 -1
- package/dist/client/assets/{collection-tabs-BTDZrBXn.js → collection-tabs-B6yGaiCr.js} +1 -1
- package/dist/client/assets/{command-N0I3WfMj.js → command-DWwqFTuu.js} +1 -1
- package/dist/client/assets/{commerce-onboarding-BySa1y-W.js → commerce-onboarding-dLv4vpps.js} +1 -1
- package/dist/client/assets/{companions-core-CXFBjxtL.js → companions-core-NOLgowrv.js} +1 -1
- package/dist/client/assets/{connect-desktop-dialog-ChBtls8K.js → connect-desktop-dialog-DEpb0pcU.js} +1 -1
- package/dist/client/assets/{connection-card-D0_c6gO9.js → connection-card-o0DDUNHv.js} +1 -1
- package/dist/client/assets/{connection-detail-BE-m8wny.js → connection-detail-Cswj6S4W.js} +1 -1
- package/dist/client/assets/{connection-form-helpers-BYaB09EC.js → connection-form-helpers-EPDDGUte.js} +1 -1
- package/dist/client/assets/{connections-BFAOtXPe.js → connections-6qWoAdqX.js} +1 -1
- package/dist/client/assets/{decopilot-sse-pool-BLGL0LsS.js → decopilot-sse-pool-D-2tGt-o.js} +1 -1
- package/dist/client/assets/{dialog-BxyVzjQ3.js → dialog-BFqbrhnG.js} +1 -1
- package/dist/client/assets/{domain-settings-BK0JpUz3.js → domain-settings-IW5nZczN.js} +1 -1
- package/dist/client/assets/{drawer-CQKQzuhR.js → drawer-Cl_dvusi.js} +1 -1
- package/dist/client/assets/{dropdown-menu-BScjo8--.js → dropdown-menu-EfeTZxQL.js} +1 -1
- package/dist/client/assets/{empty-state-es2nRb_j.js → empty-state-DQOY2xmV.js} +1 -1
- package/dist/client/assets/{extract-connection-data-C2_0wEKz.js → extract-connection-data-C6T0yo3M.js} +1 -1
- package/dist/client/assets/{file-explorer-ipUahnFG.js → file-explorer-BIc5X5VW.js} +1 -1
- package/dist/client/assets/{file-type-icon-L2ARwYHI.js → file-type-icon-D2keXo94.js} +1 -1
- package/dist/client/assets/{files-CEyq4COK.js → files-CSH75kzv.js} +1 -1
- package/dist/client/assets/{form-BBrmDTao.js → form-CGKisGk6.js} +1 -1
- package/dist/client/assets/{general-mpELEztz.js → general-BfoX5LCV.js} +1 -1
- package/dist/client/assets/{github-repo-picker-ClgZW6LI.js → github-repo-picker-BRMhPL_0.js} +1 -1
- package/dist/client/assets/{hooks-faeU6CoI.js → hooks-BSMoXVbD.js} +1 -1
- package/dist/client/assets/{index-DJmEqij6.js → index-BCsh3PYH.js} +1 -1
- package/dist/client/assets/{index-D521UaSg.js → index-BKqtjTbw.js} +1 -1
- package/dist/client/assets/{index-CesmbZpg.js → index-BmwqFaiy.js} +5 -5
- package/dist/client/assets/{index-DNRNEGzF.js → index-ByT194y-.js} +1 -1
- package/dist/client/assets/{index-CxWNtx9x.js → index-CAIYhjul.js} +3 -3
- package/dist/client/assets/{index-BXoUOnNS.js → index-CUgYJaPV.js} +1 -1
- package/dist/client/assets/{index-DIB09EG-.js → index-CXCcDBTq.js} +1 -1
- package/dist/client/assets/{index-D1EuIdjV.js → index-ChtsFoQQ.js} +1 -1
- package/dist/client/assets/{index-DxY7xoBM.js → index-D2HwJQV5.js} +2 -2
- package/dist/client/assets/{index-DI-ckLEU.js → index-DSgOediN.js} +1 -1
- package/dist/client/assets/{index-8daa3oHu.js → index-DrJmHyyo.js} +1 -1
- package/dist/client/assets/{index-B7DxR0_h.js → index-H4hcES42.js} +1 -1
- package/dist/client/assets/{index-HF6wstce.js → index-Rb2bYeF_.js} +1 -1
- package/dist/client/assets/{index-DU67rOKJ.js → index-S3X52veH.js} +1 -1
- package/dist/client/assets/{index-redirect-B1CSBKQb.js → index-redirect-CEHG6qWB.js} +1 -1
- package/dist/client/assets/{input-C9EhK1Lu.js → input-Dzav8ivG.js} +1 -1
- package/dist/client/assets/{integration-icon-Bz3MOu79.js → integration-icon-Db96f3jT.js} +1 -1
- package/dist/client/assets/{invite-member-dialog-B4o_u0Yn.js → invite-member-dialog-9O6Lre1u.js} +1 -1
- package/dist/client/assets/{label-JPT2W8Pg.js → label-DaAsoL9V.js} +1 -1
- package/dist/client/assets/{layout-DDwESlPa.js → layout-Br8401sd.js} +1 -1
- package/dist/client/assets/{login-CyRsInne.js → login-DceebZPc.js} +1 -1
- package/dist/client/assets/{mcp-oauth-DUn-Fuzj.js → mcp-oauth-Bzb4iSTT.js} +1 -1
- package/dist/client/assets/{members-C17VYqOT.js → members-DJky7gY8.js} +1 -1
- package/dist/client/assets/{monaco-editor-DYNno9ow.js → monaco-editor-c4RVis_9.js} +1 -1
- package/dist/client/assets/{monitoring-stats-row-B1B3SvpD.js → monitoring-stats-row-CgDrRjXa.js} +1 -1
- package/dist/client/assets/{multi-select-CTnDksvV.js → multi-select-DswivzJU.js} +1 -1
- package/dist/client/assets/{oauth-callback-C2RnV8Ra.js → oauth-callback-N8Kmr_2u.js} +1 -1
- package/dist/client/assets/{oauth-callback-ai-provider-qznLDLZZ.js → oauth-callback-ai-provider-B07g_XT9.js} +1 -1
- package/dist/client/assets/{onboarding-DUVBk0XQ.js → onboarding-BKAjTwg-.js} +1 -1
- package/dist/client/assets/{org-install-DQ2uKUYH.js → org-install-HCB4vzUC.js} +1 -1
- package/dist/client/assets/{org-layout-Bln5VKHy.js → org-layout-C0Q-q-fX.js} +1 -1
- package/dist/client/assets/{organization-choice-BzUmyMzq.js → organization-choice-D9DKvqVz.js} +1 -1
- package/dist/client/assets/{orgs-CQnP3RnF.js → orgs-BrqG5BVm.js} +1 -1
- package/dist/client/assets/{page-seo-form-BtLUHPsW.js → page-seo-form-DZCzqL8q.js} +1 -1
- package/dist/client/assets/page-seo-sheet-MkscnSYp.js +1 -0
- package/dist/client/assets/{popover-BPf7qyUL.js → popover-Zrs8wv0F.js} +1 -1
- package/dist/client/assets/{post-editor-BLwE05et.js → post-editor-CdSGWiLa.js} +1 -1
- package/dist/client/assets/{primitives-DdZDjvVV.js → primitives-CSHAedU0.js} +1 -1
- package/dist/client/assets/{profile-8a3_1Shi.js → profile-L8yVo8jE.js} +1 -1
- package/dist/client/assets/project-app-view-D7_4EXf8.js +1 -0
- package/dist/client/assets/record-editor-sr_hR6uA.js +1 -0
- package/dist/client/assets/redirect-editor-DYiAiFDJ.js +1 -0
- package/dist/client/assets/registry-2F4l4D0M.js +2 -0
- package/dist/client/assets/{registry-layout-DTk5e6HH.js → registry-layout-ftVzyud_.js} +2 -2
- package/dist/client/assets/{reports-qdBRQ4pV.js → reports--rTbu3V7.js} +1 -1
- package/dist/client/assets/{require-capability-Bspi0oGk.js → require-capability-BYn5Rk3O.js} +1 -1
- package/dist/client/assets/{required-auth-layout-0AnIaBaR.js → required-auth-layout-CoT_XXkN.js} +1 -1
- package/dist/client/assets/{reset-password-D0qvkNvH.js → reset-password-CgNFAvmH.js} +1 -1
- package/dist/client/assets/{roles-BwrRDzH5.js → roles-DMRweu6k.js} +1 -1
- package/dist/client/assets/{search-input-Bdl49Lyd.js → search-input-Cq8-y1F0.js} +1 -1
- package/dist/client/assets/{secrets-BGFKYnKe.js → secrets-CmPAp_up.js} +1 -1
- package/dist/client/assets/{sections-editor-BKlLtB36.js → sections-editor-wyl18rw9.js} +1 -1
- package/dist/client/assets/select-model-DI8jnYOT.js +4 -0
- package/dist/client/assets/{select-BjS6pi0R.js → select-peZlJuYe.js} +1 -1
- package/dist/client/assets/{self-tool-result-CzsRIvtg.js → self-tool-result-DYrHsoN8.js} +1 -1
- package/dist/client/assets/{seo-editor-CMScpL2i.js → seo-editor-BJVKSK5H.js} +1 -1
- package/dist/client/assets/{settings-layout-Cbmu_dvI.js → settings-layout-CPUHm_YX.js} +1 -1
- package/dist/client/assets/{settings-section-C5ntTZ3s.js → settings-section-B1GgY2if.js} +1 -1
- package/dist/client/assets/{shell-controls-CZu8nt18.js → shell-controls-C_p4ZmTF.js} +1 -1
- package/dist/client/assets/{shell-layout-ElsOHGco.js → shell-layout-CTslVDtx.js} +1 -1
- package/dist/client/assets/{sidebar-Du3GhEXu.js → sidebar-BjlDvhlo.js} +1 -1
- package/dist/client/assets/{skeleton-DYrRZj58.js → skeleton-DeOjoVUO.js} +1 -1
- package/dist/client/assets/{sso-DwHclfbW.js → sso-D363gW46.js} +1 -1
- package/dist/client/assets/{store-D1pr97wp.js → store-DvP7myd4.js} +1 -1
- package/dist/client/assets/store-registry-r9GmOZET.js +2 -0
- package/dist/client/assets/{studio-tools-HHcBk3Yy.js → studio-tools-C0-5Z8k5.js} +1 -1
- package/dist/client/assets/{switch-Co9VnPF1.js → switch-DG2ijYXZ.js} +1 -1
- package/dist/client/assets/{table-7Pa2oc8U.js → table-fSAZqdik.js} +1 -1
- package/dist/client/assets/{tabs-DIYXMj-h.js → tabs-59hacXBf.js} +1 -1
- package/dist/client/assets/{textarea-azsnX4mp.js → textarea-B9TUwSCj.js} +1 -1
- package/dist/client/assets/{toggle-group-_FACvaFN.js → toggle-group-CP4FEYCM.js} +1 -1
- package/dist/client/assets/{toolbar-WAIhuPvK.js → toolbar-Bn_kiKpu.js} +1 -1
- package/dist/client/assets/{toolbar-icon-button-CFa583yL.js → toolbar-icon-button-DChgCAZk.js} +1 -1
- package/dist/client/assets/{tooltip-CTQ3jqyw.js → tooltip-DBcnpVTx.js} +1 -1
- package/dist/client/assets/{use-ai-providers-C3gvqXwZ.js → use-ai-providers-B0J5EZdH.js} +1 -1
- package/dist/client/assets/{use-automations-CV0g4TCD.js → use-automations-CajzdSeA.js} +1 -1
- package/dist/client/assets/{use-autosave-BUYSmKJl.js → use-autosave-BvYo7aS2.js} +1 -1
- package/dist/client/assets/{use-capability-DzMeZG_B.js → use-capability-CEtXiCRz.js} +1 -1
- package/dist/client/assets/{use-clock-tick-4n-sf8En.js → use-clock-tick-r_qU_UzB.js} +1 -1
- package/dist/client/assets/{use-collections-CR5m--3v.js → use-collections-DHkHvLr2.js} +1 -1
- package/dist/client/assets/{use-connection-Bja1yNlO.js → use-connection-DRK2N5z2.js} +1 -1
- package/dist/client/assets/{use-copy-BV3KPbyw.js → use-copy-BHgKL0On.js} +1 -1
- package/dist/client/assets/{use-create-virtual-mcp-Uhf3saYW.js → use-create-virtual-mcp-DaHNk0Ix.js} +1 -1
- package/dist/client/assets/{use-debounced-autosave-CrTBH0r8.js → use-debounced-autosave-CBxkub0J.js} +1 -1
- package/dist/client/assets/{use-debounced-value-DiZ6agyj.js → use-debounced-value-Bc5YBXDl.js} +1 -1
- package/dist/client/assets/{use-deco-credits-CrWRWg5d.js → use-deco-credits-CbUWlpHm.js} +1 -1
- package/dist/client/assets/{use-decopilot-events-By89abVN.js → use-decopilot-events-lkWlYZO4.js} +1 -1
- package/dist/client/assets/{use-delete-connection-rmpivgwt.js → use-delete-connection-Bz-L6aVH.js} +1 -1
- package/dist/client/assets/{use-deployment-admin-Dx9ZkF6I.js → use-deployment-admin-BmRZ12zi.js} +1 -1
- package/dist/client/assets/{use-file-configs-CKVr-c7q.js → use-file-configs-CRDwG08w.js} +1 -1
- package/dist/client/assets/{use-infinite-scroll-B1UJmYzB.js → use-infinite-scroll-C_OzT98l.js} +1 -1
- package/dist/client/assets/{use-join-requests-C6fMCeHB.js → use-join-requests-x3YhuWSS.js} +1 -1
- package/dist/client/assets/{use-mcp-auth-status-wzWeSyhc.js → use-mcp-auth-status-RbS9dxNI.js} +1 -1
- package/dist/client/assets/{use-mcp-client-CodYj4lk.js → use-mcp-client-BRDJsS2i.js} +1 -1
- package/dist/client/assets/{use-mcp-tools-DhezZmhh.js → use-mcp-tools-TLy2HClY.js} +1 -1
- package/dist/client/assets/{use-members-C5exRENp.js → use-members-T2DIW2PV.js} +1 -1
- package/dist/client/assets/{use-mobile-DmC5AwHK.js → use-mobile-COWtBi3l.js} +1 -1
- package/dist/client/assets/{use-navigate-to-agent-VNxYrStf.js → use-navigate-to-agent-DWAHU44q.js} +1 -1
- package/dist/client/assets/{use-org-auth-client-C-_6T-I_.js → use-org-auth-client-BICeQnTF.js} +1 -1
- package/dist/client/assets/{use-org-sso-D9Zrv9Ex.js → use-org-sso-Bd_0B726.js} +1 -1
- package/dist/client/assets/{use-organization-roles-kfhFanV-.js → use-organization-roles-DobbYYRj.js} +1 -1
- package/dist/client/assets/{use-organization-settings-C02fN1Pg.js → use-organization-settings-BJBqMmWF.js} +1 -1
- package/dist/client/assets/{use-registry-app-CntYFu2c.js → use-registry-app-C_q3DUZv.js} +1 -1
- package/dist/client/assets/{use-registry-connections-CSTpfPSI.js → use-registry-connections-CmUf1QlB.js} +1 -1
- package/dist/client/assets/{use-secrets-59JvHtO0.js → use-secrets-O5sD2Bgz.js} +1 -1
- package/dist/client/assets/{use-status-sounds-CrVwkBda.js → use-status-sounds-B96xiiHa.js} +1 -1
- package/dist/client/assets/{use-view-mode-Ba0ZEqUw.js → use-view-mode-BJOrvC1j.js} +1 -1
- package/dist/client/assets/{use-virtual-mcp-Bs6Z3XqB.js → use-virtual-mcp-63tB8KYL.js} +1 -1
- package/dist/client/assets/useInfiniteQuery-BSKFC7YM.js +1 -0
- package/dist/client/assets/{useRouterState-BStHehOf.js → useRouterState-BNyrcIx8.js} +1 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-Cwnl9Xjp.js +1 -0
- package/dist/client/assets/{users-DXYde7XY.js → users-DWHrGlvz.js} +1 -1
- package/dist/client/assets/{variant-calendar-BlhvVxku.js → variant-calendar-BVX3kYfI.js} +1 -1
- package/dist/client/assets/{view-mode-toggle-Behabpts.js → view-mode-toggle-DBojFra_.js} +1 -1
- package/dist/client/index.html +1 -1
- package/dist/server/cli.js +5 -5
- package/dist/server/server.js +5 -5
- package/package.json +1 -1
- package/dist/client/assets/page-seo-sheet-DG0rFMaK.js +0 -1
- package/dist/client/assets/project-app-view-C5gaZj3T.js +0 -1
- package/dist/client/assets/record-editor-DvEIA6tV.js +0 -1
- package/dist/client/assets/redirect-editor-BplQQqRM.js +0 -1
- package/dist/client/assets/registry-Bq_80-6l.js +0 -2
- package/dist/client/assets/select-model-Bj5d_bo2.js +0 -4
- package/dist/client/assets/store-registry-Q6zoLWY_.js +0 -2
- package/dist/client/assets/useInfiniteQuery-GqUtQwTk.js +0 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-oEtZEsYD.js +0 -1
package/dist/server/server.js
CHANGED
|
@@ -1188,7 +1188,7 @@ Description:
|
|
|
1188
1188
|
${Z.description}
|
|
1189
1189
|
`:"","How to work:","- First decide whether this task requires changing code in a repository. Some tasks (research, answering a question, planning) don't. If it doesn't, just do the work directly \u2014 don't load a repo or open a PR.","- If it DOES need code changes: use the `load_repo` tool to load the relevant repository, then make the change, commit on a new branch, push, and open a pull request. Only then does a PR apply.","- Prefer the GitHub tool to open the PR. If it errors or targets the wrong repo, fall back to `git push` + the GitHub REST API (the auth token is embedded in the `origin` URL).","- If a dev server is running it hot-reloads your changes \u2014 don't restart it, hunt for its port, or run a full typecheck/build just to verify a small edit.","- Change only what the task needs. Don't trace the definition of a pre-existing symbol that's incidental to your change \u2014 note it in one line and move on. Prefer one or two broad searches over many narrow retries.","- If you're blocked on a decision or information only a human has, call the `user_ask` tool instead of guessing or stopping.","",`(task id: ${Z.id})`].join(`
|
|
1190
1190
|
`),K={id:crypto.randomUUID(),role:"user",parts:[{type:"text",text:W}]};await new _G({storage:$.storage.threads.messageParts(),orgId:G,threadId:J.id,runId:J.id}).emitRequestMessage(K),await PN({threadId:J.id,source:"background-tool",request:{messages:[K],models:{credentialId:Y.credentialId,thinking:{id:Y.modelId,title:Y.modelMeta.title}},agent:{id:Q},temperature:0.5,toolApprovalLevel:"auto",mode:"default",organizationId:G,userId:X,taskId:J.id,runMetadata:{taskBoardItemId:Z.id}}})}var P90=O(()=>{Nv();Iv();vE();R8()});import{z as qv}from"zod";var fm0;var J5$=O(()=>{Y1();IE();Zl0();P90();aw();fm0=$0({name:"TASK_BOARD_ITEM_CREATE",description:"Create a new task board item for the organization.",annotations:{title:"Create Task Board Item",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!1},inputSchema:qv.object({title:qv.string().min(1),description:qv.string().nullable().optional(),status:$n.optional(),priority:TE.optional(),assigneeId:qv.string().nullable().optional(),dueDate:qv.string().datetime().nullable().optional()}),outputSchema:qv.object({item:Fv}),handler:async($,Z)=>{M0(Z),await Z.access.check();let G=Z.organization?.id;if(!G)throw Error("Organization ID required (no active organization in context)");if($.assigneeId)await f50(Z,G,$.assigneeId);let X=$.assigneeId===RY,Y=await Z.storage.taskBoard.create({organizationId:G,title:$.title,description:$.description??null,status:X?"todo":$.status,priority:$.priority,assigneeId:$.assigneeId??null,assignedBy:$.assigneeId?y1(Z):null,dueDate:$.dueDate??null,by:y1(Z)});return cW(G,Y),await Rv(Z,Y),{item:Y}}})});import{z as xm0}from"zod";var vm0;var W5$=O(()=>{Y1();IE();vm0=$0({name:"TASK_BOARD_ITEM_LIST",description:"List all task board items for the organization.",annotations:{title:"List Task Board Items",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:xm0.object({}),outputSchema:xm0.object({items:xm0.array(Fv)}),handler:async($,Z)=>{M0(Z),await Z.access.check();let G=Z.organization?.id;if(!G)throw Error("Organization ID required (no active organization in context)");return{items:await Z.storage.taskBoard.list(G)}}})});import{z as AN}from"zod";var ym0;var K5$=O(()=>{Y1();IE();Zl0();P90();aw();ym0=$0({name:"TASK_BOARD_ITEM_UPDATE",description:"Update a task board item's fields (title, description, status, priority, assignee), and/or link a chat thread to it.",annotations:{title:"Update Task Board Item",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:AN.object({id:AN.string(),title:AN.string().min(1).optional(),description:AN.string().nullable().optional(),status:$n.optional(),priority:TE.optional(),assigneeId:AN.string().nullable().optional(),dueDate:AN.string().datetime().nullable().optional(),linkThreadId:AN.string().optional()}),outputSchema:AN.object({item:Fv}),handler:async($,Z)=>{M0(Z),await Z.access.check();let G=Z.organization?.id;if(!G)throw Error("Organization ID required (no active organization in context)");if($.assigneeId)await f50(Z,G,$.assigneeId);if($.linkThreadId){if(!await Z.storage.taskBoard.getById($.id,G))throw Error(`Task board item not found: ${$.id}`);await Z.storage.taskBoard.linkThread($.id,$.linkThreadId,G)}let X=$.title!==void 0||$.description!==void 0||$.status!==void 0||$.priority!==void 0||$.assigneeId!==void 0||$.dueDate!==void 0,Y=$.assigneeId!==void 0?await Z.storage.taskBoard.getById($.id,G):null,Q=$.assigneeId!==void 0&&$.assigneeId!==(Y?.assigneeId??null),J=Q&&$.assigneeId===RY,W;if(X)W=await Z.storage.taskBoard.update($.id,G,{title:$.title,description:$.description,status:J?"todo":$.status,priority:$.priority,assigneeId:$.assigneeId,assignedBy:Q?$.assigneeId?y1(Z):null:void 0,dueDate:$.dueDate},y1(Z));else{let K=await Z.storage.taskBoard.getById($.id,G);if(!K)throw Error(`Task board item not found: ${$.id}`);W=K}if(J)cW(G,W),await Rv(Z,W);else if($.linkThreadId)cW(G,W);return{item:W}}})});import{z as A90}from"zod";var gm0;var w5$=O(()=>{Y1();aw();gm0=$0({name:"TASK_BOARD_ITEM_DELETE",description:"Delete a task board item.",annotations:{title:"Delete Task Board Item",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:A90.object({id:A90.string()}),outputSchema:A90.object({success:A90.boolean()}),handler:async($,Z)=>{M0(Z),await Z.access.check();let G=Z.organization?.id;if(!G)throw Error("Organization ID required (no active organization in context)");return await Z.storage.taskBoard.delete($.id,G),a4$(G,$.id),{success:!0}}})});import{z as T90}from"zod";async function Y56($,Z,G){if(G){let Y=await $.storage.connections.findById(G);if(Y&&Y.status==="active")return Y}let{items:X}=await $.storage.connections.list(Z,{slug:"mcp-github"});return X.find((Y)=>Y.status==="active")??null}function Q56($){if(!$||typeof $!=="object")return null;let Z=$;if(Z.isError)return null;if(Z.structuredContent&&typeof Z.structuredContent==="object"&&Object.keys(Z.structuredContent).length>0)return Z.structuredContent;let G=Z.content?.find((X)=>X.type==="text")?.text;if(!G)return null;try{return JSON.parse(G)}catch{return null}}async function J56($,Z,G){let X=await Y56($,Z,G.connectionId);if(!X)return hm0;let Y=await o9(X,$,!0);try{let Q=await Y.callTool({name:"pull_request_read",arguments:{method:"get",owner:G.repoOwner,repo:G.repoName,pullNumber:G.number}},void 0,{timeout:X56}),J=Q56(Q);if(!J)return hm0;let W=J.state;return{title:typeof J.title==="string"?J.title:null,body:typeof J.body==="string"?J.body:null,state:W==="closed"?"closed":W==="open"?"open":null,draft:typeof J.draft==="boolean"?J.draft:null,merged:typeof J.merged==="boolean"?J.merged:null}}catch{return hm0}finally{await Y.close().catch(()=>{})}}var X56=8000,hm0,cm0;var U5$=O(()=>{Y1();JN();IE();hm0={title:null,body:null,state:null,draft:null,merged:null};cm0=$0({name:"TASK_BOARD_ITEM_PRS_GET",description:"Get the GitHub pull requests linked to a task board item, each enriched with live state (title, open/closed, draft, merged) fetched from GitHub.",annotations:{title:"Get Task Board Item Pull Requests",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},inputSchema:T90.object({taskBoardItemId:T90.string()}),outputSchema:T90.object({prs:T90.array(y0$)}),handler:async({taskBoardItemId:$},Z)=>{M0(Z),await Z.access.check();let G=Z.organization?.id;if(!G)throw Error("Organization ID required (no active organization in context)");let X=await Z.storage.taskBoard.listPrs($,G);return{prs:await Promise.all(X.map(async(Q)=>{let J=await J56(Z,G,Q);return{url:Q.url,number:Q.number,repoOwner:Q.repoOwner,repoName:Q.repoName,createdAt:Q.createdAt,...J}}))}}})});var F5$=O(()=>{J5$();W5$();K5$();w5$();U5$()});import{z as TN}from"zod";var um0;var H5$=O(()=>{Y1();um0=$0({name:"TAGS_LIST",description:"List all tags available in the organization.",annotations:{title:"List Tags",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:TN.object({}),outputSchema:TN.object({tags:TN.array(TN.object({id:TN.string(),organizationId:TN.string(),name:TN.string(),createdAt:TN.string().describe("ISO 8601 timestamp")}))}),handler:async($,Z)=>{M0(Z),await Z.access.check();let G=O0(Z);return{tags:(await Z.storage.tags.listOrgTags(G.id)).map((Y)=>({...Y,createdAt:Y.createdAt instanceof Date?Y.createdAt.toISOString():String(Y.createdAt)}))}}})});import{z as IN}from"zod";var dm0;var N5$=O(()=>{Y1();dm0=$0({name:"TAGS_CREATE",description:"Create a new tag that can be assigned to organization members.",annotations:{title:"Create Tag",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!1},inputSchema:IN.object({name:IN.string().min(1).max(50).describe("Tag name")}),outputSchema:IN.object({tag:IN.object({id:IN.string(),organizationId:IN.string(),name:IN.string(),createdAt:IN.string().describe("ISO 8601 timestamp")})}),handler:async($,Z)=>{M0(Z),await Z.access.check();let G=O0(Z),X=await Z.storage.tags.createTag(G.id,$.name);return{tag:{...X,createdAt:X.createdAt instanceof Date?X.createdAt.toISOString():String(X.createdAt)}}}})});import{z as I90}from"zod";var lm0;var B5$=O(()=>{Y1();lm0=$0({name:"TAGS_DELETE",description:"Delete a tag and automatically remove it from all assigned members.",annotations:{title:"Delete Tag",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:I90.object({tagId:I90.string().describe("Tag ID to delete")}),outputSchema:I90.object({success:I90.boolean()}),handler:async($,Z)=>{M0(Z),await Z.access.check();let G=O0(Z),X=await Z.storage.tags.getTag($.tagId);if(!X)throw Error("Tag not found");if(X.organizationId!==G.id)throw Error("Tag does not belong to this organization");return await Z.storage.tags.deleteTag($.tagId),{success:!0}}})});import{z as sw}from"zod";var mm0;var O5$=O(()=>{Y1();mm0=$0({name:"MEMBER_TAGS_GET",description:"Get all tags currently assigned to a specific member.",annotations:{title:"Get Member Tags",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:sw.object({memberId:sw.string().describe("Member ID")}),outputSchema:sw.object({tags:sw.array(sw.object({id:sw.string(),organizationId:sw.string(),name:sw.string(),createdAt:sw.string().describe("ISO 8601 timestamp")}))}),handler:async($,Z)=>{M0(Z),await Z.access.check();let G=O0(Z);if(!await Z.storage.tags.verifyMemberOrg($.memberId,G.id))throw Error(`Member not found in this organization: ${$.memberId}`);return{tags:(await Z.storage.tags.getMemberTags($.memberId)).map((Q)=>({...Q,createdAt:Q.createdAt instanceof Date?Q.createdAt.toISOString():String(Q.createdAt)}))}}})});import{z as fQ}from"zod";var im0;var D5$=O(()=>{Y1();im0=$0({name:"MEMBER_TAGS_SET",description:"Replace all tags on a member with the given set. Pass empty array to clear.",annotations:{title:"Set Member Tags",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:fQ.object({memberId:fQ.string().describe("Member ID"),tagIds:fQ.array(fQ.string()).describe("Array of tag IDs to assign")}),outputSchema:fQ.object({success:fQ.boolean(),tags:fQ.array(fQ.object({id:fQ.string(),organizationId:fQ.string(),name:fQ.string(),createdAt:fQ.string().describe("ISO 8601 timestamp")}))}),handler:async($,Z)=>{M0(Z),await Z.access.check();let G=O0(Z);if(!await Z.storage.tags.verifyMemberOrg($.memberId,G.id))throw Error(`Member not found in this organization: ${$.memberId}`);for(let Q of $.tagIds){let J=await Z.storage.tags.getTag(Q);if(!J)throw Error(`Tag not found: ${Q}`);if(J.organizationId!==G.id)throw Error(`Tag does not belong to this organization: ${Q}`)}return await Z.storage.tags.setMemberTags($.memberId,$.tagIds),{success:!0,tags:(await Z.storage.tags.getMemberTags($.memberId)).map((Q)=>({...Q,createdAt:Q.createdAt instanceof Date?Q.createdAt.toISOString():String(Q.createdAt)}))}}})});var E5$=O(()=>{H5$();N5$();B5$();O5$();D5$()});function uW($,Z=Date.now()){let G=$.status;if(G==="in_progress"){let X=new Date($.updated_at).getTime(),Y=$.last_progress_at?new Date($.last_progress_at).getTime():Number.NaN,Q=Math.max(Number.isFinite(X)?X:Number.NEGATIVE_INFINITY,Number.isFinite(Y)?Y:Number.NEGATIVE_INFINITY);if(!Number.isFinite(Q)||Z-Q>1800000)G="expired"}return{id:$.id,organization_id:$.organization_id,title:$.title,description:$.description,created_at:$.created_at,updated_at:$.updated_at,created_by:$.created_by,updated_by:$.updated_by,hidden:$.hidden??!1,status:G,virtual_mcp_id:$.virtual_mcp_id||void 0,trigger_id:$.trigger_id,branch:$.branch,sandbox_provider_kind:$.sandbox_provider_kind,harness_id:$.harness_id,metadata:$.metadata&&Object.keys($.metadata).length>0?$.metadata:void 0,run_config:$.run_config}}var L5$=O(()=>{R8()});import{z as M$}from"zod";var z5$,w56,j5$,dW,P5$,A5$;var yE=O(()=>{L5$();z5$=M$.object({id:M$.string().describe("Unique message ID"),thread_id:M$.string().describe("ID of the parent thread"),metadata:M$.unknown().optional().describe("Optional message metadata"),parts:M$.array(M$.record(M$.string(),M$.unknown())).describe("Message content parts (AI SDK UIMessagePart format)"),role:M$.enum(["user","assistant","system"]).describe("Message role"),created_at:M$.string().datetime().describe("Timestamp of creation"),updated_at:M$.string().datetime().describe("Timestamp of last update")}),w56=M$.object({toolName:M$.string().describe("Fully qualified tool name"),appId:M$.string().describe("App ID that owns the tool"),args:M$.record(M$.string(),M$.unknown()).describe("Arguments used when expanding the tool"),expandedAt:M$.string().datetime().describe("When the tool was expanded")}),j5$=M$.object({expanded_tools:M$.array(w56).optional()}).catchall(M$.unknown()),dW=M$.object({id:M$.string().describe("Unique thread ID"),organization_id:M$.string().describe("Organization this thread belongs to"),title:M$.string().describe("Thread title"),description:M$.string().nullable().describe("Thread description"),created_at:M$.string().datetime().describe("Timestamp of creation"),updated_at:M$.string().datetime().describe("Timestamp of last update"),hidden:M$.boolean().optional().describe("Whether the thread is hidden"),status:M$.enum([...qb,"expired"]).describe("Thread execution status. 'expired' is virtual -- computed at read time for stale in_progress threads"),created_by:M$.string().describe("User ID who created the thread"),updated_by:M$.string().optional().describe("User ID who last updated the thread"),virtual_mcp_id:M$.string().optional().describe("Virtual MCP (agent) this thread was initiated with"),trigger_id:M$.string().nullable().optional().describe("Automation trigger that created this thread; null/absent for human-initiated threads."),branch:M$.string().nullable().optional().describe("Git branch this thread is pinned to (GitHub-linked vms only)"),sandbox_provider_kind:M$.string().nullable().optional().describe("Pinned on first message; identifies which sandbox provider to dispatch to (e.g. 'agent-sandbox', 'user-desktop')."),harness_id:M$.string().nullable().optional().describe("Pinned on first message; selects which harness runs the thread (e.g. 'claude-code', 'codex', 'decopilot')."),metadata:j5$.optional().describe("Free-form per-thread UI state (e.g. expanded_tools)"),run_config:M$.record(M$.string(),M$.unknown()).nullable().optional().describe("Persisted run configuration (contains agent and model info)")}),P5$=M$.object({id:M$.string().optional().describe("Optional custom ID for the thread"),title:M$.string().optional().describe("Thread title"),description:M$.string().nullish().describe("Thread description"),virtual_mcp_id:M$.string().describe("Virtual MCP (agent) this thread is bound to"),branch:M$.string().min(1).optional().describe("Preferred branch. Used only when the vMCP has a githubRepo; ignored otherwise. When omitted, the server picks the most-recently-touched branch from the user's sandboxMap, falling back to a freshly generated name.")}),A5$=M$.object({title:M$.string().optional().describe("New thread title"),description:M$.string().nullish().describe("New thread description"),hidden:M$.boolean().optional().describe("Whether the thread is hidden"),status:M$.enum(["requires_action","failed","in_progress","completed"]).optional().describe("New thread status (user-set override). 'expired' is a computed virtual status and cannot be set directly."),metadata:j5$.optional().describe("Full replacement of the thread's metadata object"),branch:M$.string().nullish().describe("New git branch for this thread"),virtual_mcp_id:M$.string().optional().describe("Re-point the thread at a different agent. Only meaningful for an unsent thread (changing the recipient of a new chat); the UI restricts it accordingly.")})});function U56($){return($??"").normalize("NFKD").replace(/[\u0300-\u036F]/g,"").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"user"}function R90($){let Z=U56($),G=Date.now().toString(36).split("").reverse().join("");return`${Z}-${G}`}import{z as T5$}from"zod";function N56($,Z){let G=$?.[Z];if(!G)return;return Object.entries(G).sort(([,Y],[,Q])=>{let J=Math.max(0,...Object.values(Y).map((K)=>K.createdAt??0));return Math.max(0,...Object.values(Q).map((K)=>K.createdAt??0))-J})[0]?.[0]}var F56,H56,nm0;var I5$=O(()=>{q4();Y1();yE();IG();F56=T5$.object({data:P5$.describe("Data for the new thread (id is auto-generated if not provided)")}),H56=T5$.object({item:dW.describe("The created thread entity")});nm0=$0({name:"COLLECTION_THREADS_CREATE",description:"Create a new thread for organizing messages and conversations.",annotations:{title:"Create Thread",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:F56,outputSchema:H56,handler:async($,Z)=>{M0(Z);let G=O0(Z);await Z.access.check();let X=y1(Z);if(!X)throw Error("User ID required to create thread");let{data:Y}=$,Q=Y.id??q6("thrd"),J=await Z.storage.virtualMcps.findById(Y.virtual_mcp_id,G.id);if(!J)throw Error(`Virtual MCP not found: ${Y.virtual_mcp_id}`);let W=J.metadata,K=W?.githubRepo,w=null;if(K)w=Y.branch??N56(W?.sandboxMap,X)??R90(Z.auth.user?.name??Z.auth.user?.email?.split("@")[0]);let U=await Z.storage.threads.create({id:Q,organization_id:G.id,title:Y.title,description:Y.description,virtual_mcp_id:Y.virtual_mcp_id,branch:w,created_by:X});return i1.capture({distinctId:X,event:"chat_started",groups:{organization:G.id},properties:{organization_id:G.id,thread_id:Q,has_title:!!$.data.title,created_via:"tool"}}),{item:uW(U)}}})});import{z as MY}from"zod";var B56,O56,gE;var pm0=O(()=>{TY();Y1();yE();B56=JJ.extend({where:MY.object({created_by:MY.string().optional(),trigger_ids:MY.array(MY.string()).optional(),virtual_mcp_id:MY.string().optional(),hidden:MY.boolean().optional(),has_trigger:MY.boolean().optional()}).optional(),startDate:MY.string().datetime().optional().describe("Filter threads updated at or after this ISO timestamp"),endDate:MY.string().datetime().optional().describe("Filter threads updated at or before this ISO timestamp"),search:MY.string().optional().describe("Full-text search on thread title (case-insensitive)"),status:MY.string().optional().describe("Filter by thread status (e.g. completed, failed, in_progress)"),userId:MY.string().optional().describe("Filter by the user who created the thread"),agentId:MY.string().optional().describe("Filter by agent (connection or virtual MCP) ID")}),O56=dw(dW),gE=$0({name:"COLLECTION_THREADS_LIST",description:"List threads with filtering, sorting, and pagination.",annotations:{title:"List Threads",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:B56,outputSchema:O56,handler:async($,Z)=>{await Z.access.check();let G=Z.auth.user?.id;if(!G)throw Error("User ID required to list threads");O0(Z);let X=$.offset??0,Y=$.limit??100,Q=$.where?.trigger_ids,J=$.where?.virtual_mcp_id,W=$.userId??($.where?.created_by==="me"?G:$.where?.created_by),{threads:K,total:w}=Q?.length?await Z.storage.threads.listByTriggerIds(Q,{limit:Y,offset:X}):await Z.storage.threads.list(W,{limit:Y,offset:X,virtualMcpId:J,startDate:$.startDate,endDate:$.endDate,search:$.search,status:$.status,agentId:$.agentId,includeArchived:$.where?.hidden,hasTrigger:$.where?.has_trigger}),U=X+Y<w,F=Date.now();return{items:K.map((H)=>uW(H,F)),totalCount:w,hasMore:U}}})});var D56,hE;var tm0=O(()=>{TY();Y1();yE();D56=li(dW),hE=$0({name:"COLLECTION_THREADS_GET",description:"Get a thread's details and metadata by ID.",annotations:{title:"Get Thread",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:di,outputSchema:D56,handler:async($,Z)=>{M0(Z),O0(Z),await Z.access.check();let G=await Z.storage.threads.get($.id);if(!G)return{item:null};return{item:uW(G)}}})});import{z as rm0}from"zod";var E56,L56,om0;var R5$=O(()=>{q4();Y1();yE();E56=rm0.object({id:rm0.string().describe("ID of the thread to update"),data:A5$.describe("Partial thread data to update")}),L56=rm0.object({item:dW.describe("The updated thread entity")}),om0=$0({name:"COLLECTION_THREADS_UPDATE",description:"Update a thread's title, description, or visibility.",annotations:{title:"Update Thread",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:E56,outputSchema:L56,handler:async($,Z)=>{M0(Z);let G=O0(Z);await Z.access.check();let X=y1(Z);if(!X)throw Error("User ID required to update thread");let{id:Y,data:Q}=$,J=await Z.storage.threads.get(Y);if(!J)throw Error("Thread not found in organization");if(Q.branch===null&&J.virtual_mcp_id){if((await Z.storage.virtualMcps.findById(J.virtual_mcp_id,O0(Z).id))?.metadata?.githubRepo)throw Error("Cannot set branch=null on a github-linked thread (vMCP has githubRepo)")}let W={title:Q.title,description:Q.description,hidden:Q.hidden,updated_by:X};if(Q.status)W.status=Q.status;if(Q.metadata!==void 0)W.metadata=Q.metadata;if(Q.branch!==void 0)W.branch=Q.branch;if(Q.virtual_mcp_id!==void 0)W.virtual_mcp_id=Q.virtual_mcp_id;let K=await Z.storage.threads.update(Y,W);if(Q.hidden!==void 0&&Q.hidden!==J.hidden)i1.capture({distinctId:X,event:Q.hidden?"chat_archived":"chat_unarchived",groups:{organization:G.id},properties:{organization_id:G.id,thread_id:Y}});return{item:uW(K)}}})});var am0;var q5$=O(()=>{TY();q4();Y1();yE();am0=$0({name:"COLLECTION_THREADS_DELETE",description:"Permanently delete a thread and all its messages.",annotations:{title:"Delete Thread",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:mi,outputSchema:ii(dW),handler:async($,Z)=>{M0(Z);let G=O0(Z);await Z.access.check();let X=await Z.storage.threads.get($.id);if(!X)throw Error(`Thread not found: ${$.id}`);await Z.storage.threads.delete($.id);let Y=y1(Z);if(Y)i1.capture({distinctId:Y,event:"chat_deleted",groups:{organization:G.id},properties:{organization_id:G.id,thread_id:$.id}});return{item:uW(X)}}})});import{z as z56}from"zod";function M5$($){if(!$)return null;if("field"in $&&$.field[0]==="thread_id"&&$.operator==="eq")return String($.value);if("conditions"in $&&($.operator==="and"||$.operator==="or"))for(let Z of $.conditions){let G=M5$(Z);if(G)return G}return null}var j56,P56,cE;var sm0=O(()=>{TY();Y1();yE();j56=JJ.extend({thread_id:z56.string().optional().describe("ID of the thread to list messages for (required)")}),P56=dw(z5$),cE=$0({name:"COLLECTION_THREAD_MESSAGES_LIST",description:"List messages in a thread with pagination. Requires thread_id. Returns messages in chronological order.",annotations:{title:"List Thread Messages",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:j56,outputSchema:P56,handler:async($,Z)=>{O0(Z),await Z.access.check();let G=$.thread_id??M5$($.where);if(!G)throw Error("thread_id is required (provide as top-level param or in where clause)");let X=$.offset??0,Y=$.limit??100,Q=$.orderBy?.[0]?.direction??"asc",J=await Z.storage.threads.get(G);if(!J)return{items:[],totalCount:0,hasMore:!1};if(J.message_storage_version===2){let{messages:U,total:F}=await Z.storage.threads.messageParts().loadWindow(G,{limit:Y,offset:X});return{items:U.map((H)=>({id:H.id,thread_id:G,role:H.role,parts:H.parts,metadata:H.metadata??null,created_at:H.created_at,updated_at:H.created_at})),totalCount:F,hasMore:X+Y<F}}let{messages:W,total:K}=await Z.storage.threads.listMessages(G,{limit:Y,offset:X,sort:Q}),w=X+Y<K;return{items:W,totalCount:K,hasMore:w}}})});function k5$($){return $!==null}function q90($,Z){if($===null)return!0;return $===Z}import{z as A56}from"zod";function ew($){return $==="cluster"?"agent-sandbox":$}function em0($){return`${$.userId}:${$.projectRef}`}var T56;var M90=O(()=>{T56=A56.enum(["agent-sandbox","user-desktop"])});class k90{map=new Map;async run($,Z){let G=this.map.get($);if(G)return G;let X=Z();this.map.set($,X);try{return await X}finally{this.map.delete($)}}}function S90($,Z,G,X){if(!$)return X(null);if(!$.withLock)return X($);return $.withLock(Z,G,X)}import{createHash as I56}from"crypto";function q56($,Z=16){return I56("sha256").update(em0($)).digest("hex").slice(0,Z)}function RN($,Z){let G=q56($),X=M56(Z);return X?`${X}-${G}`:`s-${G}`}function M56($){if(!$)return"";return($.split("/").pop()??"").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,R56).replace(/-+$/g,"")}var R56=24;var S5$=O(()=>{M90()});function V90($,Z){let G=$.replace(/\/+$/,"");if(G.includes("{handle}"))return`${G.replace("{handle}",Z)}/`;try{let X=new URL(G);return X.hostname=`${Z}.${X.hostname}`,`${X.toString()}/`}catch{return`${G}/${Z}/`}}function $U($){let Z=$?.userName?.trim();if(!Z||V5$.test(Z))return null;let G=$?.userEmail?.trim();if(!G||V5$.test(G))return{userName:Z};if(!k56.test(G))return{userName:Z};return{userName:Z,userEmail:G}}var V5$,k56;var C90=O(()=>{V5$=/[\r\n<>]/,k56=/^[^\s@<>]+@[^\s@<>]+\.[^\s@<>]+$/});function $i0($){let Z=$.repo,G=Z?{repository:{cloneUrl:Z.cloneUrl,repoName:Z.displayName??S56(Z.cloneUrl),...Z.branch?{branch:Z.branch}:{}},identity:{userName:Z.userName,userEmail:Z.userEmail}}:void 0,X=$.tenant,Y=$U({userName:X?.userName,userEmail:X?.userEmail})??void 0,Q=$.packageManager?{name:$.packageManager.name,...$.packageManager.path?{path:$.packageManager.path}:{}}:void 0,J=Q?{packageManager:Q,runtime:$.runtime,...$.port!==void 0?{port:$.port}:{}}:void 0;if(!G&&!J&&!Y)return null;return{...G?{git:G}:{},...Y?{operator:Y}:{},...J?{application:J}:{}}}function S56($){try{let Z=new URL($);return Z.pathname.replace(/^\/+/,"").replace(/\.git$/,"")||Z.hostname}catch{return $}}var C5$=O(()=>{C90()});function V56($){try{return new URL($).username.length>0}catch{return!1}}function Zi0($){let Z=$.repo?.cloneUrl;if(!Z||!V56(Z))return null;return{git:{repository:{cloneUrl:Z}}}}var _90=O(()=>{S5$();C5$()});function ZU($){if("threadId"in $){if(!$.threadId)throw Error("composeSandboxRef: threadId required");return`thread:${$.threadId}`}if(!$.orgId||!$.virtualMcpId||!$.branch)throw Error("composeSandboxRef: orgId, virtualMcpId and branch are all required for agent refs");return`agent:${$.orgId}:${$.virtualMcpId}:${$.branch}`}function C56($){return(typeof $.timeout==="number"&&$.timeout>0?Math.min($.timeout,120000):30000)+15000}function _56($,Z){if($.aborted)return Z.catch(()=>{}),Promise.reject($.reason??Error("aborted"));return new Promise((G,X)=>{let Y=()=>{Z.catch(()=>{}),X($.reason??Error("aborted"))};$.addEventListener("abort",Y,{once:!0}),Z.then(G,X).finally(()=>{$.removeEventListener("abort",Y)})})}async function b56($,Z,G,X,Y="POST",Q){let J=Q?.timeoutMs??C56(X??{}),W=AbortSignal.timeout(J),K=Q?.signal?AbortSignal.any([Q.signal,W]):W,w,U;try{let H={method:Y,headers:new Headers({"content-type":"application/json"}),body:null,signal:K};if(Y!=="GET"&&X!==null)H.body=JSON.stringify(X);({res:w,rawText:U}=await _56(K,(async()=>{let N=await $.proxyDaemonRequest(Z,G,H);return{res:N,rawText:await N.text()}})()))}catch(H){if(Q?.signal?.aborted)throw H;if(W.aborted)throw Error(`Sandbox ${Y} ${G} timed out after ${Math.round(J/1000)}s \u2014 the sandbox may be overloaded or its filesystem stalled. Retry, or use a smaller operation.`);throw new Mv(H)}let F;try{F=JSON.parse(U)}catch{console.error("[sandbox-fs-hooks] Failed to parse JSON response runner=%s path=%s status=%d rawText=%s",$.kind,G,w.status,U.slice(0,2000));let H=w.status>=500?" (server error)":w.status===0?" (no response)":"";throw Error(`Daemon ${G} returned invalid JSON (HTTP ${w.status}${H}): ${U.slice(0,800)}`)}if(!w.ok){console.error("[sandbox-fs-hooks] Non-OK response runner=%s path=%s status=%d body=%s",$.kind,G,w.status,U.slice(0,2000));let H=F.error??`Daemon ${G} failed (${w.status})`;if(w.status===404&&H==="sandbox not found")throw new Mv(Error(H));throw Error(H)}return F}function f56($){let Z=[];for(let G of $.split(`
|
|
1191
|
-
`)){if(!G)continue;let X=G.indexOf(":");if(X<0)continue;let Y=G.indexOf(":",X+1);if(Y<0)continue;let Q=G.slice(0,X),J=Number.parseInt(G.slice(X+1,Y),10);if(!Number.isFinite(J))continue;Z.push({file:Q,line:J,text:G.slice(Y+1)})}return Z}function Gi0($,Z){let{ensureHandle:G,invalidateHandle:X,canAutoRestart:Y}=Z,Q=(W)=>{let K=W instanceof Error?W.message:String(W);return Y?`Sandbox is unreachable and auto-restart did not recover it: ${K}`:"The sandbox is not running. Ask the user to start it by clicking the server button (left side of the header bar)."},J=async(W,K,w="POST",U)=>{let F=async(N)=>b56($,N,W,K,w,{signal:U,timeoutMs:Z.opTimeoutMs}),H=await G();try{return await F(H)}catch(N){if(!(N instanceof Mv)||!Y){if(N instanceof Mv)throw Error(Q(N.cause??N));throw N}console.warn(`[sandbox-fs-hooks] daemon ${W} unreachable \u2014 reaping sandbox and retrying once`,N.cause??N);try{await X()}catch(D){console.warn("[sandbox-fs-hooks] invalidateHandle failed",D)}let B;try{B=await G()}catch(D){throw Error(`Failed to restart sandbox: ${D instanceof Error?D.message:String(D)}`)}try{return await F(B)}catch(D){if(D instanceof Mv)throw Error(Q(D.cause??D));throw D}}};return{onProxy:(W,K,w,U)=>J(W,K,w,U),onRead:async(W)=>{return(await J("/_sandbox/read",{path:W})).content},onWrite:async(W,K)=>{await J("/_sandbox/write",{path:W,content:K})},onEdit:async(W,K)=>{for(let w of K)await J("/_sandbox/edit",{path:W,old_string:w.oldText,new_string:w.newText,replace_all:w.replaceAll===!0})},onBash:async(W,K)=>{return await J("/_sandbox/bash",{command:W,...K?.cwd!==void 0?{cwd:K.cwd}:{},...K?.timeoutMs!==void 0?{timeout:K.timeoutMs}:{}})},onGlob:async(W)=>{return(await J("/_sandbox/glob",{pattern:W})).files},onGrep:async(W,K)=>{let w=await J("/_sandbox/grep",{pattern:W,output_mode:"content",...K?.path!==void 0?{path:K.path}:{},...K?.glob!==void 0?{glob:K.glob}:{},...K?.caseInsensitive?{ignore_case:!0}:{}});return f56(w.results)}}}var Mv;var _5$=O(()=>{Mv=class Mv extends Error{code="DAEMON_UNREACHABLE";constructor($){super($ instanceof Error?$.message:"Daemon proxy failed");if($ instanceof Error)this.cause=$}}});function x56($){return $==="agent-sandbox"||$==="cluster"||$==="user-desktop"}function GU(){let $=process.env.STUDIO_SANDBOX_PROVIDER,Z=$&&$.length>0?$:"user-desktop";if(!x56(Z))throw Error(`Unknown STUDIO_SANDBOX_PROVIDER="${$}" \u2014 expected "agent-sandbox", "cluster", or "user-desktop".`);return ew(Z)}var kY=O(()=>{M90();M90();_90();_5$()});function b90($){return ew($.sandboxProviderKind)==="user-desktop"?{sandboxProviderKind:"user-desktop"}:{sandboxProviderKind:"agent-sandbox"}}var Xi0=O(()=>{kY()});function Yi0($){let Z=new AbortController,G=kv.get($);if(!G)G=new Set,kv.set($,G);return G.add(Z),Z}function Qi0($,Z){let G=kv.get($);if(!G)return;if(G.delete(Z),G.size===0)kv.delete($)}function f90($){let Z=kv.get($);if(!Z)return;for(let G of Z)G.abort();kv.delete($)}var kv;var x90=O(()=>{kv=new Map});function K7($){return`mesh-storage://${$}`}function An($){if(!$.startsWith("mesh-storage://"))return null;return $.slice(15)}function Ji0(){return/mesh-storage:\/\/([^\s"'<>[\]]+)/g}var uE="https://chrome.browserless.io",dE=32000;import{z as lW}from"zod";function v90($){if($>b5$){let Z=($/1048576).toFixed(1),G=b5$/1048576;throw Error(`Reference image too large: ${Z} MB (max ${G} MB). Use a smaller image.`)}}function u56($,Z){let G;try{G=new URL($)}catch{throw Error("Invalid image URL")}if(G.protocol!=="https:"&&!(Z&&G.protocol==="http:"))throw Error("Image URL must use HTTPS");for(let X of c56)if(X.test(G.hostname))throw Error("Image URL must not point to a private network address")}async function f5$($,Z){if(!Z?.getBytes)throw Error("Object storage read is not available");if(Z.head){let{size:X}=await Z.head($);v90(X)}let G=await Z.getBytes($);return v90(G.byteLength),G}async function d56($,Z){let G=An($);if(G!==null)return f5$(G,Z.objectStorage);let X=$.match(v56);if(X)return f5$(X[1],Z.objectStorage);if($.startsWith("data:")){let J=$.match(/^data:[^;]+;base64,(.+)$/s);if(!J)throw Error("Invalid data: URI");let W=Buffer.from(J[1],"base64");return v90(W.byteLength),W}u56($,Z.allowHttpExternalUrls===!0);let Y=await fetch($,{signal:Z.abortSignal});if(!Y.ok)throw Error(`Failed to fetch image from ${$}: ${Y.status}`);let Q=new Uint8Array(await Y.arrayBuffer());return v90(Q.byteLength),Q}async function Wi0($,Z){let{provider:G,imageModelInfo:X,objectStorage:Y}=Z,Q=G.aiSdk.imageModel(X.id),J=$.referenceImages&&$.referenceImages.length>0,W=J?await Promise.all($.referenceImages.map((N)=>{let B=N.uri??N.url;if(!B)throw Error("Reference image missing uri");return d56(B,Z)})):[],K=J?{text:$.prompt,images:W}:$.prompt,w=await Q90({model:Q,prompt:K,n:$.n??1,...$.aspectRatio?{aspectRatio:$.aspectRatio}:{},...Z.abortSignal?{abortSignal:Z.abortSignal}:{}});if(!Y)throw Error("Object storage is unavailable; cannot persist the generated image.");let U=$.n??1,F=w.images.length>U?w.images.slice(-U):w.images;return{success:!0,images:await Promise.all(F.map(async(N)=>{let B=N.mediaType??"image/png",D=B.split("/")[1]??"png",E=`generated-images/${crypto.randomUUID()}.${D}`,L=Uint8Array.from(atob(N.base64),(z)=>z.charCodeAt(0));return await Y.put(E,L,{contentType:B}),{uri:K7(E),mediaType:B}})),prompt:$.prompt,model:X.id,usage:{inputTokens:w.usage.inputTokens??0,outputTokens:w.usage.outputTokens??0},usedReferenceImages:J?$.referenceImages.length:0}}function y90($,Z){return x$({description:"Generate an image from a text description, optionally using reference images. Use this when the user asks you to create, generate, draw, or design an image. If the user has attached images and wants to modify or use them as a reference, pass them as referenceImages. "+"The image is displayed automatically by the UI \u2014 do NOT include image URLs or markdown images in your response.",inputSchema:F0(lE),execute:async(G,X)=>{let Y=performance.now();try{return await Wi0(G,Z)}finally{$.write({type:"data-tool-metadata",id:X.toolCallId,data:{latencyMs:performance.now()-Y}})}}})}function g90($,Z){let{objectStorage:G,toolOutputMap:X,pendingImages:Y}=Z;return x$({description:"Take a screenshot of a web page. Use this when you need to visually see a website, check its layout, verify a deployment, or inspect a page's appearance. "+"The screenshot is displayed automatically by the UI \u2014 do NOT include image URLs or markdown images in your response.",inputSchema:F0(h56),execute:async(Q,J)=>{let W=performance.now();try{let K=Z.browserlessToken??process.env.BROWSERLESS_TOKEN;if(!K)return{success:!1,error:"BROWSERLESS_TOKEN is not configured."};let w=await fetch(`${uE}/screenshot?token=${encodeURIComponent(K)}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({url:Q.url,options:{fullPage:Q.fullPage??!1,type:"jpeg",quality:g56},viewport:y56})});if(!w.ok){let D=await w.text().catch(()=>"Unknown error");return{success:!1,error:`Browserless screenshot failed (${w.status}): ${D}`,url:Q.url}}let U=new Uint8Array(await w.arrayBuffer()),F="image/jpeg",H=`screenshots/${crypto.randomUUID()}.jpg`,N,B=null;if(G)try{await G.put(H,U,{contentType:F}),N=K7(H),B=await G.presignedGetUrl?.(H,600)??null}catch(D){console.error("[take-screenshot] Failed to upload, using data: URI fallback",D),N=`data:${F};base64,${Buffer.from(U).toString("base64")}`}else N=`data:${F};base64,${Buffer.from(U).toString("base64")}`;if(!B)B=N.startsWith("data:")?N:`data:${F};base64,${Buffer.from(U).toString("base64")}`;return Y.push({url:B,mediaType:F,pageUrl:Q.url}),X.set(J.toolCallId,`Screenshot of ${Q.url} stored at ${N}`),{success:!0,image:{uri:N,mediaType:F},url:Q.url}}finally{$.write({type:"data-tool-metadata",id:J.toolCallId,data:{latencyMs:performance.now()-W}})}},toModelOutput({output:Q}){if(!Q.success)return{type:"text",value:Q.error??"Screenshot failed"};return{type:"text",value:`Screenshot of ${Q.url} captured successfully. The image is attached below.`}}})}var v56,b5$=20971520,y56,g56=80,lE,h56,c56;var mE=O(()=>{L6();L6();v56=/\/api\/[^/]+\/files\/([^?#]+)/,y56={width:1280,height:800},lE=lW.object({prompt:lW.string().max(1e4).describe("Detailed description of the image to generate. Be specific about style, composition, colors, and subject matter."),referenceImages:lW.array(lW.object({uri:lW.string().describe("URI of the reference image (e.g. mesh-storage://generated-images/uuid.png).")})).optional().describe("Reference images to use as input for image-to-image generation. Pass the URI of any image from the conversation (uploaded files, previously generated images, etc.) when the user wants to modify, transform, or use an existing image as a starting point."),aspectRatio:lW.enum(["1:1","16:9","9:16","4:3","3:4","3:2","2:3"]).optional().describe("Aspect ratio for the generated image. Defaults to 1:1."),n:lW.number().int().min(1).max(4).optional().describe("Number of images to generate. Defaults to 1.")}),h56=lW.object({url:lW.string().url().describe("The URL of the web page to screenshot."),fullPage:lW.boolean().optional().describe("When true, captures the full scrollable page instead of just the viewport. Defaults to false.")}),c56=[/^127\./,/^10\./,/^172\.(1[6-9]|2\d|3[01])\./,/^192\.168\./,/^169\.254\./,/^0\./,/^\[::1\]$/,/^\[fd/,/^\[fe80:/,/^\[::ffff:/i,/^localhost$/i]});function SY($){if($ instanceof Error)return $.message;if(typeof $==="object"&&$!==null)try{return JSON.stringify($)}catch{return"[unserializable object]"}return String($)}function x5$($){let G=$.split(/\.\s+/).filter((Y)=>!/https?:\/\//i.test(Y)&&!/openrouter/i.test(Y));if(G.length===0)return $;let X=G.join(". ").trim();return X.endsWith(".")?X:`${X}.`}function v5$($){if($ instanceof Error)return{message:$.message,statusCode:$.statusCode};if(typeof $==="object"&&$!==null){let Z=$,G=typeof Z.message==="string"?Z.message:SY($),X=typeof Z.statusCode==="number"?Z.statusCode:typeof Z.code==="number"?Z.code:void 0;return{message:G,statusCode:X}}return{message:String($)}}function h90($){let{message:Z,statusCode:G}=v5$($),X=Z.toLowerCase();return G===402||X.includes("credit")||X.includes("insufficient funds")||X.includes("insufficient balance")||X.includes("billing")||X.includes("quota exceeded")||X.includes("key limit")||X.includes("payment required")}function l56($){let Z=$.toLowerCase();if(Z.includes("circuit breaker is open"))return"A connected app is temporarily unreachable \u2014 it'll keep retrying. Try again in a moment.";if(!(Z.includes("error posting to endpoint")||Z.includes("streamable http error")))return null;if(/unauthorized|authentication required|forbidden|\b401\b|\b403\b/.test(Z))return"A connected app needs to be re-authenticated before it can be used. Reconnect it, then try again.";return"Couldn't reach a connected app. Try again in a moment."}function y5$($){let{message:Z}=v5$($),G=l56(Z);if(G)return G;if(h90($))return`[CREDITS] ${x5$(Z)}`;return x5$(Z)}function g5$($){let Z=$.indexOf(Ki0);if(Z===-1)return{baseId:$,signature:null};return{baseId:$.slice(0,Z),signature:$.slice(Z+Ki0.length)}}function m56($,Z){return`${$}${Ki0}${Z}`}function i56($,Z){return{...$,google:{...$?.google??{},thoughtSignature:Z}}}function n56($){let Z=$?.google?.thoughtSignature;return typeof Z==="string"?Z:null}function h5$($){let{baseId:Z,signature:G}=g5$($.toolCallId);if(G===null)return $;return{...$,toolCallId:Z,providerMetadata:i56($.providerMetadata,G)}}function p56($){switch($.type){case"tool-input-start":case"tool-input-delta":case"tool-input-end":{let{baseId:Z,signature:G}=g5$($.id);return G===null?$:{...$,id:Z}}case"tool-call":return h5$($);default:return $}}function t56($){let Z=new Map;for(let X of $.prompt){if(X.role!=="assistant")continue;for(let Y of X.content){if(Y.type!=="tool-call")continue;let Q=n56(Y.providerOptions);if(Q)Z.set(Y.toolCallId,Q)}}if(Z.size===0)return $;let G=$.prompt.map((X)=>{if(X.role!=="assistant"&&X.role!=="tool")return X;let Y=X.content.map((Q)=>{if(Q.type!=="tool-call"&&Q.type!=="tool-result")return Q;let J=Z.get(Q.toolCallId);return J?{...Q,toolCallId:m56(Q.toolCallId,J)}:Q});return{...X,content:Y}});return{...$,prompt:G}}function r56(){return{specificationVersion:"v3",transformParams:async({params:$})=>t56($),wrapStream:async({doStream:$})=>{let{stream:Z,...G}=await $();return{...G,stream:Z.pipeThrough(new TransformStream({transform(X,Y){Y.enqueue(p56(X))}}))}},wrapGenerate:async({doGenerate:$})=>{let Z=await $(),G=Z.content.map((X)=>X.type==="tool-call"?h5$(X):X);return{...Z,content:G}}}}function c5$($){return xE({model:$,middleware:r56()})}var Ki0="__thought__";var u5$=O(()=>{L6()});function a56($,Z){return xE({model:$,middleware:{specificationVersion:"v3",wrapStream:async({doStream:X,params:Y})=>{try{return await X()}catch(Q){if(!h90(Q))throw Q;return Z.doStream(Y)}},wrapGenerate:async({doGenerate:X,params:Y})=>{try{return await X()}catch(Q){if(!h90(Q))throw Q;return Z.doGenerate(Y)}}}})}function c90($,Z){let G={};if(Z.capabilities?.reasoning!==!1)G.reasoning={enabled:!0,effort:"medium"};let X=$.info?.id==="openrouter"&&Z.id!==wi0;if(X)G.models=[Z.id,wi0];let Y=(W,K)=>K&&Object.keys(K).length>0?$.aiSdk.languageModel(W,K):$.aiSdk.languageModel(W),Q=Y(Z.id,G),J=X?a56(Q,Y(wi0)):Q;return $.info?.id&&o56.has($.info.id)?c5$(J):J}var wi0="openrouter/free",o56;var Ui0=O(()=>{L6();u5$();o56=new Set(["openai-compatible","openrouter","deco","llmapi"])});function d5$($,Z){let G=$?.maxOutputTokens??32768,X=$?.contextWindow;if(!X)return G;let Y=X-Z*2;return Math.max(1024,Math.min(G,Y))}var u90=300000;import{z as Fi0}from"zod";function d90($){let{toolOutputMap:Z}=$;return x$({description:"Filter a tool output that was too large to display inline. Returns all lines matching the given regular expression pattern (grep-like). You may call this tool multiple times with different patterns to extract different pieces of information.",inputExamples:[{input:{tool_call_id:"id_1",pattern:"error|warning"}},{input:{tool_call_id:"id_2",pattern:'"status":\\s*"failed"'}}],inputSchema:F0(Fi0.object({tool_call_id:Fi0.string(),pattern:Fi0.string().min(1).describe("Regular expression pattern to filter tool output lines. Returns all matching lines.")})),execute:async({tool_call_id:G,pattern:X})=>{if(!Z.has(G))return{result:`Tool output not found for tool call id: ${G}. Available ids: ${[...Z.keys()].join(", ")||"(none)"}`,matchCount:0,totalLines:0};let Y=Z.get(G),Q;try{Q=new RegExp(X)}catch{return{result:`Invalid regex pattern: ${X}`,matchCount:0,totalLines:0}}let J=Y.split(`
|
|
1191
|
+
`)){if(!G)continue;let X=G.indexOf(":");if(X<0)continue;let Y=G.indexOf(":",X+1);if(Y<0)continue;let Q=G.slice(0,X),J=Number.parseInt(G.slice(X+1,Y),10);if(!Number.isFinite(J))continue;Z.push({file:Q,line:J,text:G.slice(Y+1)})}return Z}function Gi0($,Z){let{ensureHandle:G,invalidateHandle:X,canAutoRestart:Y}=Z,Q=(W)=>{let K=W instanceof Error?W.message:String(W);return Y?`Sandbox is unreachable and auto-restart did not recover it: ${K}`:"The sandbox is not running. Ask the user to start it by clicking the server button (left side of the header bar)."},J=async(W,K,w="POST",U)=>{let F=async(N)=>b56($,N,W,K,w,{signal:U,timeoutMs:Z.opTimeoutMs}),H=await G();try{return await F(H)}catch(N){if(!(N instanceof Mv)||!Y){if(N instanceof Mv)throw Error(Q(N.cause??N));throw N}console.warn(`[sandbox-fs-hooks] daemon ${W} unreachable \u2014 reaping sandbox and retrying once`,N.cause??N);try{await X()}catch(D){console.warn("[sandbox-fs-hooks] invalidateHandle failed",D)}let B;try{B=await G()}catch(D){throw Error(`Failed to restart sandbox: ${D instanceof Error?D.message:String(D)}`)}try{return await F(B)}catch(D){if(D instanceof Mv)throw Error(Q(D.cause??D));throw D}}};return{onProxy:(W,K,w,U)=>J(W,K,w,U),onRead:async(W)=>{return(await J("/_sandbox/read",{path:W})).content},onWrite:async(W,K)=>{await J("/_sandbox/write",{path:W,content:K})},onEdit:async(W,K)=>{for(let w of K)await J("/_sandbox/edit",{path:W,old_string:w.oldText,new_string:w.newText,replace_all:w.replaceAll===!0})},onBash:async(W,K)=>{return await J("/_sandbox/bash",{command:W,...K?.cwd!==void 0?{cwd:K.cwd}:{},...K?.timeoutMs!==void 0?{timeout:K.timeoutMs}:{}})},onGlob:async(W)=>{return(await J("/_sandbox/glob",{pattern:W})).files},onGrep:async(W,K)=>{let w=await J("/_sandbox/grep",{pattern:W,output_mode:"content",...K?.path!==void 0?{path:K.path}:{},...K?.glob!==void 0?{glob:K.glob}:{},...K?.caseInsensitive?{ignore_case:!0}:{}});return f56(w.results)}}}var Mv;var _5$=O(()=>{Mv=class Mv extends Error{code="DAEMON_UNREACHABLE";constructor($){super($ instanceof Error?$.message:"Daemon proxy failed");if($ instanceof Error)this.cause=$}}});function x56($){return $==="agent-sandbox"||$==="cluster"||$==="user-desktop"}function GU(){let $=process.env.STUDIO_SANDBOX_PROVIDER,Z=$&&$.length>0?$:"user-desktop";if(!x56(Z))throw Error(`Unknown STUDIO_SANDBOX_PROVIDER="${$}" \u2014 expected "agent-sandbox", "cluster", or "user-desktop".`);return ew(Z)}var kY=O(()=>{M90();M90();_90();_5$()});function b90($){return ew($.sandboxProviderKind)==="user-desktop"?{sandboxProviderKind:"user-desktop"}:{sandboxProviderKind:"agent-sandbox"}}var Xi0=O(()=>{kY()});function Yi0($){let Z=new AbortController,G=kv.get($);if(!G)G=new Set,kv.set($,G);return G.add(Z),Z}function Qi0($,Z){let G=kv.get($);if(!G)return;if(G.delete(Z),G.size===0)kv.delete($)}function f90($){let Z=kv.get($);if(!Z)return;for(let G of Z)G.abort();kv.delete($)}var kv;var x90=O(()=>{kv=new Map});function K7($){return`studio-storage://${$}`}function An($){if($.startsWith("studio-storage://"))return $.slice(17);if($.startsWith("mesh-storage://"))return $.slice(15);return null}function Ji0(){return/(?:studio|mesh)-storage:\/\/([^\s"'<>[\]]+)/g}var uE="https://chrome.browserless.io",dE=32000;import{z as lW}from"zod";function v90($){if($>b5$){let Z=($/1048576).toFixed(1),G=b5$/1048576;throw Error(`Reference image too large: ${Z} MB (max ${G} MB). Use a smaller image.`)}}function u56($,Z){let G;try{G=new URL($)}catch{throw Error("Invalid image URL")}if(G.protocol!=="https:"&&!(Z&&G.protocol==="http:"))throw Error("Image URL must use HTTPS");for(let X of c56)if(X.test(G.hostname))throw Error("Image URL must not point to a private network address")}async function f5$($,Z){if(!Z?.getBytes)throw Error("Object storage read is not available");if(Z.head){let{size:X}=await Z.head($);v90(X)}let G=await Z.getBytes($);return v90(G.byteLength),G}async function d56($,Z){let G=An($);if(G!==null)return f5$(G,Z.objectStorage);let X=$.match(v56);if(X)return f5$(X[1],Z.objectStorage);if($.startsWith("data:")){let J=$.match(/^data:[^;]+;base64,(.+)$/s);if(!J)throw Error("Invalid data: URI");let W=Buffer.from(J[1],"base64");return v90(W.byteLength),W}u56($,Z.allowHttpExternalUrls===!0);let Y=await fetch($,{signal:Z.abortSignal});if(!Y.ok)throw Error(`Failed to fetch image from ${$}: ${Y.status}`);let Q=new Uint8Array(await Y.arrayBuffer());return v90(Q.byteLength),Q}async function Wi0($,Z){let{provider:G,imageModelInfo:X,objectStorage:Y}=Z,Q=G.aiSdk.imageModel(X.id),J=$.referenceImages&&$.referenceImages.length>0,W=J?await Promise.all($.referenceImages.map((N)=>{let B=N.uri??N.url;if(!B)throw Error("Reference image missing uri");return d56(B,Z)})):[],K=J?{text:$.prompt,images:W}:$.prompt,w=await Q90({model:Q,prompt:K,n:$.n??1,...$.aspectRatio?{aspectRatio:$.aspectRatio}:{},...Z.abortSignal?{abortSignal:Z.abortSignal}:{}});if(!Y)throw Error("Object storage is unavailable; cannot persist the generated image.");let U=$.n??1,F=w.images.length>U?w.images.slice(-U):w.images;return{success:!0,images:await Promise.all(F.map(async(N)=>{let B=N.mediaType??"image/png",D=B.split("/")[1]??"png",E=`generated-images/${crypto.randomUUID()}.${D}`,L=Uint8Array.from(atob(N.base64),(z)=>z.charCodeAt(0));return await Y.put(E,L,{contentType:B}),{uri:K7(E),mediaType:B}})),prompt:$.prompt,model:X.id,usage:{inputTokens:w.usage.inputTokens??0,outputTokens:w.usage.outputTokens??0},usedReferenceImages:J?$.referenceImages.length:0}}function y90($,Z){return x$({description:"Generate an image from a text description, optionally using reference images. Use this when the user asks you to create, generate, draw, or design an image. If the user has attached images and wants to modify or use them as a reference, pass them as referenceImages. "+"The image is displayed automatically by the UI \u2014 do NOT include image URLs or markdown images in your response.",inputSchema:F0(lE),execute:async(G,X)=>{let Y=performance.now();try{return await Wi0(G,Z)}finally{$.write({type:"data-tool-metadata",id:X.toolCallId,data:{latencyMs:performance.now()-Y}})}}})}function g90($,Z){let{objectStorage:G,toolOutputMap:X,pendingImages:Y}=Z;return x$({description:"Take a screenshot of a web page. Use this when you need to visually see a website, check its layout, verify a deployment, or inspect a page's appearance. "+"The screenshot is displayed automatically by the UI \u2014 do NOT include image URLs or markdown images in your response.",inputSchema:F0(h56),execute:async(Q,J)=>{let W=performance.now();try{let K=Z.browserlessToken??process.env.BROWSERLESS_TOKEN;if(!K)return{success:!1,error:"BROWSERLESS_TOKEN is not configured."};let w=await fetch(`${uE}/screenshot?token=${encodeURIComponent(K)}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({url:Q.url,options:{fullPage:Q.fullPage??!1,type:"jpeg",quality:g56},viewport:y56})});if(!w.ok){let D=await w.text().catch(()=>"Unknown error");return{success:!1,error:`Browserless screenshot failed (${w.status}): ${D}`,url:Q.url}}let U=new Uint8Array(await w.arrayBuffer()),F="image/jpeg",H=`screenshots/${crypto.randomUUID()}.jpg`,N,B=null;if(G)try{await G.put(H,U,{contentType:F}),N=K7(H),B=await G.presignedGetUrl?.(H,600)??null}catch(D){console.error("[take-screenshot] Failed to upload, using data: URI fallback",D),N=`data:${F};base64,${Buffer.from(U).toString("base64")}`}else N=`data:${F};base64,${Buffer.from(U).toString("base64")}`;if(!B)B=N.startsWith("data:")?N:`data:${F};base64,${Buffer.from(U).toString("base64")}`;return Y.push({url:B,mediaType:F,pageUrl:Q.url}),X.set(J.toolCallId,`Screenshot of ${Q.url} stored at ${N}`),{success:!0,image:{uri:N,mediaType:F},url:Q.url}}finally{$.write({type:"data-tool-metadata",id:J.toolCallId,data:{latencyMs:performance.now()-W}})}},toModelOutput({output:Q}){if(!Q.success)return{type:"text",value:Q.error??"Screenshot failed"};return{type:"text",value:`Screenshot of ${Q.url} captured successfully. The image is attached below.`}}})}var v56,b5$=20971520,y56,g56=80,lE,h56,c56;var mE=O(()=>{L6();L6();v56=/\/api\/[^/]+\/files\/([^?#]+)/,y56={width:1280,height:800},lE=lW.object({prompt:lW.string().max(1e4).describe("Detailed description of the image to generate. Be specific about style, composition, colors, and subject matter."),referenceImages:lW.array(lW.object({uri:lW.string().describe("URI of the reference image (e.g. studio-storage://generated-images/uuid.png).")})).optional().describe("Reference images to use as input for image-to-image generation. Pass the URI of any image from the conversation (uploaded files, previously generated images, etc.) when the user wants to modify, transform, or use an existing image as a starting point."),aspectRatio:lW.enum(["1:1","16:9","9:16","4:3","3:4","3:2","2:3"]).optional().describe("Aspect ratio for the generated image. Defaults to 1:1."),n:lW.number().int().min(1).max(4).optional().describe("Number of images to generate. Defaults to 1.")}),h56=lW.object({url:lW.string().url().describe("The URL of the web page to screenshot."),fullPage:lW.boolean().optional().describe("When true, captures the full scrollable page instead of just the viewport. Defaults to false.")}),c56=[/^127\./,/^10\./,/^172\.(1[6-9]|2\d|3[01])\./,/^192\.168\./,/^169\.254\./,/^0\./,/^\[::1\]$/,/^\[fd/,/^\[fe80:/,/^\[::ffff:/i,/^localhost$/i]});function SY($){if($ instanceof Error)return $.message;if(typeof $==="object"&&$!==null)try{return JSON.stringify($)}catch{return"[unserializable object]"}return String($)}function x5$($){let G=$.split(/\.\s+/).filter((Y)=>!/https?:\/\//i.test(Y)&&!/openrouter/i.test(Y));if(G.length===0)return $;let X=G.join(". ").trim();return X.endsWith(".")?X:`${X}.`}function v5$($){if($ instanceof Error)return{message:$.message,statusCode:$.statusCode};if(typeof $==="object"&&$!==null){let Z=$,G=typeof Z.message==="string"?Z.message:SY($),X=typeof Z.statusCode==="number"?Z.statusCode:typeof Z.code==="number"?Z.code:void 0;return{message:G,statusCode:X}}return{message:String($)}}function h90($){let{message:Z,statusCode:G}=v5$($),X=Z.toLowerCase();return G===402||X.includes("credit")||X.includes("insufficient funds")||X.includes("insufficient balance")||X.includes("billing")||X.includes("quota exceeded")||X.includes("key limit")||X.includes("payment required")}function l56($){let Z=$.toLowerCase();if(Z.includes("circuit breaker is open"))return"A connected app is temporarily unreachable \u2014 it'll keep retrying. Try again in a moment.";if(!(Z.includes("error posting to endpoint")||Z.includes("streamable http error")))return null;if(/unauthorized|authentication required|forbidden|\b401\b|\b403\b/.test(Z))return"A connected app needs to be re-authenticated before it can be used. Reconnect it, then try again.";return"Couldn't reach a connected app. Try again in a moment."}function y5$($){let{message:Z}=v5$($),G=l56(Z);if(G)return G;if(h90($))return`[CREDITS] ${x5$(Z)}`;return x5$(Z)}function g5$($){let Z=$.indexOf(Ki0);if(Z===-1)return{baseId:$,signature:null};return{baseId:$.slice(0,Z),signature:$.slice(Z+Ki0.length)}}function m56($,Z){return`${$}${Ki0}${Z}`}function i56($,Z){return{...$,google:{...$?.google??{},thoughtSignature:Z}}}function n56($){let Z=$?.google?.thoughtSignature;return typeof Z==="string"?Z:null}function h5$($){let{baseId:Z,signature:G}=g5$($.toolCallId);if(G===null)return $;return{...$,toolCallId:Z,providerMetadata:i56($.providerMetadata,G)}}function p56($){switch($.type){case"tool-input-start":case"tool-input-delta":case"tool-input-end":{let{baseId:Z,signature:G}=g5$($.id);return G===null?$:{...$,id:Z}}case"tool-call":return h5$($);default:return $}}function t56($){let Z=new Map;for(let X of $.prompt){if(X.role!=="assistant")continue;for(let Y of X.content){if(Y.type!=="tool-call")continue;let Q=n56(Y.providerOptions);if(Q)Z.set(Y.toolCallId,Q)}}if(Z.size===0)return $;let G=$.prompt.map((X)=>{if(X.role!=="assistant"&&X.role!=="tool")return X;let Y=X.content.map((Q)=>{if(Q.type!=="tool-call"&&Q.type!=="tool-result")return Q;let J=Z.get(Q.toolCallId);return J?{...Q,toolCallId:m56(Q.toolCallId,J)}:Q});return{...X,content:Y}});return{...$,prompt:G}}function r56(){return{specificationVersion:"v3",transformParams:async({params:$})=>t56($),wrapStream:async({doStream:$})=>{let{stream:Z,...G}=await $();return{...G,stream:Z.pipeThrough(new TransformStream({transform(X,Y){Y.enqueue(p56(X))}}))}},wrapGenerate:async({doGenerate:$})=>{let Z=await $(),G=Z.content.map((X)=>X.type==="tool-call"?h5$(X):X);return{...Z,content:G}}}}function c5$($){return xE({model:$,middleware:r56()})}var Ki0="__thought__";var u5$=O(()=>{L6()});function a56($,Z){return xE({model:$,middleware:{specificationVersion:"v3",wrapStream:async({doStream:X,params:Y})=>{try{return await X()}catch(Q){if(!h90(Q))throw Q;return Z.doStream(Y)}},wrapGenerate:async({doGenerate:X,params:Y})=>{try{return await X()}catch(Q){if(!h90(Q))throw Q;return Z.doGenerate(Y)}}}})}function c90($,Z){let G={};if(Z.capabilities?.reasoning!==!1)G.reasoning={enabled:!0,effort:"medium"};let X=$.info?.id==="openrouter"&&Z.id!==wi0;if(X)G.models=[Z.id,wi0];let Y=(W,K)=>K&&Object.keys(K).length>0?$.aiSdk.languageModel(W,K):$.aiSdk.languageModel(W),Q=Y(Z.id,G),J=X?a56(Q,Y(wi0)):Q;return $.info?.id&&o56.has($.info.id)?c5$(J):J}var wi0="openrouter/free",o56;var Ui0=O(()=>{L6();u5$();o56=new Set(["openai-compatible","openrouter","deco","llmapi"])});function d5$($,Z){let G=$?.maxOutputTokens??32768,X=$?.contextWindow;if(!X)return G;let Y=X-Z*2;return Math.max(1024,Math.min(G,Y))}var u90=300000;import{z as Fi0}from"zod";function d90($){let{toolOutputMap:Z}=$;return x$({description:"Filter a tool output that was too large to display inline. Returns all lines matching the given regular expression pattern (grep-like). You may call this tool multiple times with different patterns to extract different pieces of information.",inputExamples:[{input:{tool_call_id:"id_1",pattern:"error|warning"}},{input:{tool_call_id:"id_2",pattern:'"status":\\s*"failed"'}}],inputSchema:F0(Fi0.object({tool_call_id:Fi0.string(),pattern:Fi0.string().min(1).describe("Regular expression pattern to filter tool output lines. Returns all matching lines.")})),execute:async({tool_call_id:G,pattern:X})=>{if(!Z.has(G))return{result:`Tool output not found for tool call id: ${G}. Available ids: ${[...Z.keys()].join(", ")||"(none)"}`,matchCount:0,totalLines:0};let Y=Z.get(G),Q;try{Q=new RegExp(X)}catch{return{result:`Invalid regex pattern: ${X}`,matchCount:0,totalLines:0}}let J=Y.split(`
|
|
1192
1192
|
`),W=J.filter((U)=>Q.test(U)),K=W.join(`
|
|
1193
1193
|
`),w=o7(K);if(w>qN){let U=bG(K);return{result:`Output is still too long (${w} tokens), use a more specific pattern to reduce output.
|
|
1194
1194
|
|
|
@@ -1365,7 +1365,7 @@ Clarifications: if the request is ambiguous, you may call \`user_ask\` AT MOST O
|
|
|
1365
1365
|
|
|
1366
1366
|
Plan quality bar: include concrete details, ordered steps, risks, trade-offs, and alternatives you considered. Write for a reader with no prior context.
|
|
1367
1367
|
</plan-mode>`}function fp0($,Z){let G=$==="plan",X=$==="web-search"?"web_search":$==="deep-research"?"deep_research":$==="gen-image"?"generate_image":null,Y=$==="plan"?zK6(Z.isCliAgent):null;return{isPlanMode:G,forcedFirstStepTool:X,planPrompt:Y,webSearchInstructionPrompt:$==="web-search"||$==="deep-research"?jK6:null}}var LK6,jK6;var xp0=O(()=>{LK6=["default","plan","web-search","deep-research","gen-image"];jK6=`<web-search>
|
|
1368
|
-
The web_search and deep_research tools stream their result directly to the user in `+"real time. After one completes, do NOT repeat, summarize, or restate the content \u2014 "+"the user can already see it. Simply confirm it succeeded and highlight key takeaways in one or two sentences. Only elaborate if the user explicitly asks.\n\nPick the right tool for the task: use `web_search` for quick, up-to-date lookups and fact-checking where a fast answer suffices; use `deep_research` for in-depth, multi-source reports where thoroughness matters more than latency.\n\n"+"For large results, the tool result contains a `uri` (
|
|
1368
|
+
The web_search and deep_research tools stream their result directly to the user in `+"real time. After one completes, do NOT repeat, summarize, or restate the content \u2014 "+"the user can already see it. Simply confirm it succeeded and highlight key takeaways in one or two sentences. Only elaborate if the user explicitly asks.\n\nPick the right tool for the task: use `web_search` for quick, up-to-date lookups and fact-checking where a fast answer suffices; use `deep_research` for in-depth, multi-source reports where thoroughness matters more than latency.\n\n"+"For large results, the tool result contains a `uri` (studio-storage:\u2026) instead of "+"inline content. To re-access the full research in a later turn, call `read_resource` with that URI.\n</web-search>"});async function d3$($){let Z=[],G=[],X=(Q,J)=>{if(!J?.trim())return;Z.push(J),G.push(Q)};if(X("base",Vi1()),$.kind==="agent"&&$.planMode){let{resolveModeConfig:Q}=await Promise.resolve().then(() => (xp0(),h3$)),J=Q("plan",{isCliAgent:!1});X("planMode",J.planPrompt)}let Y=$.codingWorkspace;if(Y&&$.user?.id&&Y.branch)Y={...Y,isDecoSite:await T3$($.ctx,{virtualMcpId:$.virtualMcp.id,branch:Y.branch,userId:$.user.id})};if(X("codingWorkspace",Sv(Y)),X("orgFs",_i1($.user?.id)),$.kind==="agent"){let J=$.user?.id,[W,K]=await Promise.all([u3$($.ctx,"organization","MEMORY.md","org/home",J),J?u3$($.ctx,"user",`users/${J}/MEMORY.md`,"org/home",J):Promise.resolve(null)]);X("orgMemory",W),X("userMemory",K)}if($.kind==="agent"){if($.isDecopilot)X("identity",Ci1())}else X("identity",PK6);if(X("prompts",await _3$($.ctx,$.organization,$.passthroughClient)),$.kind==="agent"&&($.userContext?.agents||$.connectionsData?.tools.length)){let Q=$.connectionsData?.tools.map((J)=>J.connectionId);X("agents",v3$($.userContext?.agents??[],$.virtualMcp.id,$.virtualMcp.delegationTargetIds,Q))}if(X("connections",await b3$($.ctx,$.organization,$.connectionsData)),X("todoWrite",Og0()),X("agentInstructions",$.agentInstructions),$.kind==="agent"&&$.user)X("userContext",g3$({user:$.user,currentThreadId:$.currentThreadId,userContext:$.userContext??{}}));return q3$(Z,$.date??new Date)}function AK6($){return $==="organization"?`# Organization memory
|
|
1369
1369
|
|
|
1370
1370
|
Durable facts shared with everyone in this organization. Keep this a concise, curated index \u2014 not a log.
|
|
1371
1371
|
`:`# User memory
|
|
@@ -1504,10 +1504,10 @@ Guidelines:
|
|
|
1504
1504
|
}
|
|
1505
1505
|
return { consoleLogs, errors, evaluateResult };
|
|
1506
1506
|
}
|
|
1507
|
-
`,B=await fetch(`${uE}/function?token=${encodeURIComponent(w)}`,{method:"POST",headers:{"Content-Type":"application/javascript"},body:N});if(!B.ok){let z=await B.text().catch(()=>"Unknown error");return{success:!1,error:`Browserless function call failed (${B.status}): ${z}`,url:U.url}}let D=await B.json().catch(async()=>{return{error:`Browserless returned non-JSON response: ${(await B.text().catch(()=>"")).slice(0,200)}`}}),E=JSON.stringify(D,null,2);G.set(W.toolCallId,E);let L=o7(E);if(!("error"in D)&&L>qN&&X){let z=`inspect-pages/${crypto.randomUUID()}.json`;return await X.put(z,new TextEncoder().encode(E),{contentType:"application/json"}),{success:!0,uri:K7(z),preview:bG(E),url:U.url,tokenCount:L,consoleLogCount:D.consoleLogs?.length??0,errorCount:D.errors?.length??0,hasEvaluateResult:D.evaluateResult!=null}}return{success:!("error"in D),...D,url:U.url,tokenCount:L}}finally{$.write({type:"data-tool-metadata",id:W.toolCallId,data:{latencyMs:performance.now()-K}})}}})}function ww6(){return x$({description:"Search the web and synthesize a comprehensive research report. This tool is only available in cluster Decopilot.",inputSchema:F0(Ww6),execute:async($)=>{throw Error("web_search is only available in cluster Decopilot.")}})}function Uw6(){return x$({description:"Record what the user is durably working toward (their goals/interests). This tool is only available in cluster Decopilot.",inputSchema:F0(Kw6),execute:async($)=>{throw Error("update_interests is only available in cluster Decopilot.")}})}function vJ$($){let{writer:Z,toolOutputMap:G,objectStorage:X,pendingImages:Y,imageTool:Q,imageBackgroundDispatcher:J,includeUnavailableClusterOnlyTools:W}=$,K={user_ask:fN0,todo_write:xN0,propose_plan:yN0,read_tool_output:d90({toolOutputMap:G})};if(W)K.web_search=ww6(),K.update_interests=Uw6();if(Q)K.generate_image=Yp("generate_image",lE,y90(Z,{...Q,objectStorage:X}),J);if(process.env.BROWSERLESS_TOKEN){if(K.scrape_url=xJ$(Z,{toolOutputMap:G,objectStorage:X,kind:"scrape"}),K.inspect_page=xJ$(Z,{toolOutputMap:G,objectStorage:X,kind:"inspect"}),Y)K.take_screenshot=g90(Z,{objectStorage:X,toolOutputMap:G,pendingImages:Y})}return K}var Ww6,Kw6;var yJ$=O(()=>{L6();dp0();lp0();mp0();XU();mE();ip0();Ww6=xY.object({query:xY.string().max(1e4).describe("The research query. Be specific about what information you need.")}),Kw6=xY.object({interests:xY.array(xY.object({title:xY.string().max(120).describe("Short noun phrase, e.g. 'Learning Rust'"),summary:xY.string().max(500).describe("One or two sentences of context, including any progress")})).max(10)})});function gJ$($){return{search_threads:x$({description:gE.description,inputSchema:F0(gE.inputSchema),execute:(Z)=>gE.execute(Z,$)}),get_thread:x$({description:hE.description,inputSchema:F0(hE.inputSchema),execute:(Z)=>hE.execute(Z,$)}),list_thread_messages:x$({description:cE.description,inputSchema:F0(cE.inputSchema),execute:(Z)=>cE.execute(Z,$)})}}var hJ$=O(()=>{L6();pm0();tm0();sm0()});async function Hw6($,Z,G){let{provider:X,imageProvider:Y,webSearchProvider:Q,deepResearchProvider:J,organization:W,models:K,toolApprovalLevel:w="auto",isPlanMode:U=!1,toolOutputMap:F,pendingImages:H,passthroughClient:N,vmContext:B,htmlArtifactBuffer:D,taskId:E,agentId:L,onChildUsage:z,backgroundDispatcher:j}=Z,P={isPlanMode:U},A=G.auth?.user?.id,M=vJ$({writer:$,toolOutputMap:F,passthroughClient:N,toolApprovalLevel:w,isPlanMode:U,objectStorage:G.objectStorage});if(A)M.update_interests=LJ$({write:async(V)=>{await G.storage.interests.setForAgent(V.orgId,V.agentId,V.userId,{interests:V.interests})},orgId:W.id,agentId:L,userId:A});Object.assign(M,gJ$(G));let S=SN0(w,!1,P)!==!1,R;if(B){let V=await Gp(G,{virtualMcpId:B.virtualMcpId,branch:B.branch,userId:B.userId,syncTools:B.syncTools});R=wJ$({fs:V,htmlArtifactBuffer:D,toolOutputMap:F,needsApproval:S,pendingImages:H,ctx:G,threadId:B.threadId,virtualMcpId:B.virtualMcpId}),Object.assign(M,R);let i=await BJ$({ctx:G,orgId:W.id,virtualMcpId:B.virtualMcpId,userId:B.userId,threadId:B.threadId,writer:$});if(i)M.load_repo=i}if(X)M.subtask=Yp("subtask",cp0,up0($,{provider:X,organization:W,models:K,self:{id:L},currentThreadId:E,needsApproval:SN0(w,!1,P)!==!1,onChildUsage:z,vmTools:R,parentBuiltInParams:Z},G),j);if(Y&&K.image&&G.objectStorage)M.generate_image=Yp("generate_image",lE,jJ$($,{provider:Y,imageModelInfo:K.image,objectStorage:G.objectStorage,allowHttpExternalUrls:O1().localMode}),j);if(Q&&K.webSearch){let V=pp0({provider:Q,modelInfo:K.webSearch,ctx:G,mode:"quick",toolName:"web_search"});M.web_search=np0($,{researchJob:V,toolOutputMap:F,taskId:E})}if(J&&K.deepResearch){let V=pp0({provider:J,modelInfo:K.deepResearch,ctx:G,mode:"deep",toolName:"deep_research"});M.deep_research=np0($,{researchJob:V,toolOutputMap:F,taskId:E,description:"Run in-depth, multi-source research and synthesize a comprehensive, cited report. Use this when the user needs thorough analysis, a literature/market review, or a question that warrants exploring many "+"sources \u2014 accuracy and depth matter more than latency. For quick "+"lookups or fact-checks, use `web_search` instead."})}if(process.env.BROWSERLESS_TOKEN){let V={baseUrl:uE,token:process.env.BROWSERLESS_TOKEN};if(M.take_screenshot=kJ$($,{objectStorage:G.objectStorage,toolOutputMap:F,pendingImages:H}),G.objectStorage)M.scrape_url=CJ$($,{browserless:V,objectStorage:G.objectStorage,toolOutputMap:F}),M.inspect_page=bJ$($,{browserless:V,objectStorage:G.objectStorage,toolOutputMap:F})}return M}function Nw6($,Z,G){let X=Z.organization.id,Y=G.auth?.user?.id,Q={};for(let[J,W]of Object.entries($)){let K=W,w=K.execute;if(typeof w!=="function"){Q[J]=W;continue}let U=Fw6[J],F=w.constructor?.name==="AsyncGeneratorFunction",H=(B,D)=>{if(!X||!Y)return;i1.capture({distinctId:Y,event:"tool_called",groups:{organization:X},properties:{organization_id:X,tool_source:"builtin",tool_name:J,tool_safe_name:J,read_only:U?.readOnly??null,destructive:U?.destructive??null,idempotent:null,open_world:null,latency_ms:Math.round(B),is_error:D}})},N=F?async function*(B,D){let E=performance.now(),L=!1;try{yield*w.call(K,B,D)}catch(z){throw L=!0,z}finally{H(performance.now()-E,L)}}:async(B,D)=>{let E=performance.now(),L=!1;try{return await w.call(K,B,D)}catch(z){throw L=!0,z}finally{H(performance.now()-E,L)}};Q[J]={...K,execute:N}}return Q}async function hN0($,Z,G){let X=await Hw6($,Z,G),Y=Nw6(X,Z,G);if(!Z.isPlanMode){let{propose_plan:Q,...J}=Y;return J}return Y}function cJ$($){let{ctx:Z,writer:G,toolOutputMap:X,subtaskParams:Y,planMode:Q}=$,J={user_ask:fN0,todo_write:xN0,read_tool_output:d90({toolOutputMap:X})};if(Q)J.propose_plan=yN0;if(Y.provider)J.subtask=up0(G,Y,Z);return J}var Fw6;var tp0=O(()=>{q4();CN0();XU();UJ$();kN0();OJ$();EJ$();dp0();lp0();zJ$();mp0();PJ$();ip0();mE();IJ$();MJ$();SJ$();_J$();fJ$();yJ$();hJ$();F8();Fw6={read_tool_output:{readOnly:!0,destructive:!1},read_resource:{readOnly:!0,destructive:!1},read_prompt:{readOnly:!0,destructive:!1},web_search:{readOnly:!0,destructive:!1},deep_research:{readOnly:!0,destructive:!1},generate_image:{readOnly:!1,destructive:!1},open_in_agent:{readOnly:!1,destructive:!1},subtask:{readOnly:!1,destructive:!1},user_ask:{readOnly:!0,destructive:!1},propose_plan:{readOnly:!0,destructive:!1},enable_tool:{readOnly:!0,destructive:!1},todo_write:{readOnly:!1,destructive:!1},update_interests:{readOnly:!1,destructive:!1},load_repo:{readOnly:!1,destructive:!0},search_threads:{readOnly:!0,destructive:!1},get_thread:{readOnly:!0,destructive:!1},list_thread_messages:{readOnly:!0,destructive:!1}}});async function uJ$($){let Z=new Map,{tools:G,nameMap:X}=await VN0($.mcpClient,Z,$.writer,$.toolApprovalLevel,{disableOutputTruncation:!1,isPlanMode:$.planMode,timeoutMs:u90,resolveArgs:$.resolveArgs,onToolCalled:$.onToolCalled,onPrOpened:$.onPrOpened}),Y=$.fullBuiltInParams?await hN0($.writer,{...$.fullBuiltInParams,toolOutputMap:Z},$.ctx):cJ$({ctx:$.ctx,writer:$.writer,toolOutputMap:Z,subtaskParams:$.subtaskParams,planMode:$.planMode}),Q=$.kind==="subagent"?Object.fromEntries(Object.entries(Y).filter(([W])=>!Bw6.includes(W))):Y;return{tools:{...G,...Q},toolOutputMap:Z,nameMap:X}}var Bw6;var dJ$=O(()=>{CN0();tp0();Bw6=["subtask","user_ask","propose_plan"]});var uN0={};X6(uN0,{waitForSeed:()=>Pw6,seedLocalMode:()=>Lw6,markSeedComplete:()=>jw6,isLocalMode:()=>yQ,getLocalAdminUser:()=>Qp,getLocalAdminPassword:()=>cN0});import{userInfo as Ow6}from"os";async function cN0(){return O1().betterAuthSecret||"local-mode-default"}function lJ$(){try{return Ow6().username||"local"}catch{return"local"}}function Dw6($){return $.charAt(0).toUpperCase()+$.slice(1)}async function Ew6(){let $=H6(),Z=await $.db.selectFrom("user").select($.db.fn.countAll().as("count")).executeTakeFirst();return Number(Z?.count??0)===0}async function Lw6(){if(!await Ew6())return!1;let Z=lJ$(),G=`${Z}@localhost.mesh`,X=Dw6(Z),Y=await cN0(),Q=await O8.api.signUpEmail({body:{email:G,password:Y,name:X}});if(!Q?.user?.id)throw Error("Failed to create local admin user");let J=Q.user.id,W=H6();await W.db.updateTable("user").set({role:"admin"}).where("id","=",J).execute();let K=`${Z}-local`.toLowerCase().replace(/[^a-z0-9-]/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,""),w=`${X} Local`;return await W.db.updateTable("organization").set({name:w,slug:K}).where("id","in",(U)=>U.selectFrom("member").select("organizationId").where("userId","=",J)).execute(),!0}async function Qp(){let $=H6(),Z=`${lJ$()}@localhost.mesh`;return $.db.selectFrom("user").where("email","=",Z).selectAll().executeTakeFirst()}function yQ(){return O1().localMode}function jw6(){mJ$()}function Pw6(){return zw6}var mJ$,zw6;var nN=O(()=>{HQ();F8();VQ();zw6=new Promise(($)=>{if(mJ$=$,!yQ())$()})});var iJ$=()=>{};function Tw6($){return $.type==="file"&&"mediaType"in $&&typeof $.mediaType==="string"&&Aw6.has($.mediaType)}function oJ$($){let Z=$.match(/^data:([^;]+);base64,(.+)$/s);if(!Z)return null;let[,G,X]=Z;try{let Y=atob(X),Q=new Uint8Array(Y.length);for(let J=0;J<Y.length;J++)Q[J]=Y.charCodeAt(J);return{mimeType:G,bytes:Q}}catch{return null}}function rp0($){return{"image/png":"png","image/jpeg":"jpg","image/gif":"gif","image/webp":"webp","image/svg+xml":"svg","application/pdf":"pdf","text/plain":"txt","text/html":"html","application/json":"json"}[$]??"bin"}async function Iw6($,Z,G,X){if(!X.objectStorage)return null;try{return await X.objectStorage.put(Z,$,{contentType:G}),Z}catch(Y){return console.error("[file-materializer] Failed to upload file:",Y),null}}async function Jp($,Z){if(!Z.objectStorage)return null;try{return await Z.objectStorage.presignedGetUrl($,Rw6)}catch(G){return console.error("[file-materializer] Failed to generate presigned URL:",G),null}}function aJ$($){try{return decodeURIComponent($)}catch{return $}}function pJ$($,Z){let G=typeof $.filename==="string"&&$.filename.trim()?$.filename:`attachment.${rp0(Z)}`,X=G.match(qw6);if(X?.[1])G=aJ$(X[1]);return[...G.split(/[\\/]/).pop()??G].filter((J)=>(J.codePointAt(0)??0)>=32).join("").trim()||`attachment.${rp0(Z)}`}function tJ$($,Z){if(!Z.has($))return Z.add($),$;let G=$.lastIndexOf("."),X=G>0?$.slice(0,G):$,Y=G>0?$.slice(G):"";for(let Q=2;;Q++){let J=`${X} (${Q})${Y}`;if(!Z.has(J))return Z.add(J),J}}async function rJ$($,Z,G,X,Y){if(!Y||!X.orgFs)return console.warn("[file-materializer] uploads-volume write skipped",{hasThreadId:Boolean(Y),hasOrgFs:Boolean(X.orgFs)}),null;try{let Q=`${Y}/${G}`;return await X.orgFs.write("uploads",Q,$,{actor:X.auth?.user?.id??"unknown",contentType:Z}),{key:tJ("uploads",Q),sandboxPath:`org/upload/${G}`}}catch(Q){return console.error("[file-materializer] uploads-volume write failed:",Q),null}}async function dN0($,Z,G){if(!Z.organization)return $;let X=Z.organization.slug;if(!X)return $;let Y=$.findLastIndex((P)=>P.role==="user");if(Y===-1)return $;let Q=$[Y],J=Q.parts.filter((P)=>P.type==="file"&&("url"in P)&&typeof P.url==="string"&&P.url.startsWith("data:")),K=Boolean(G?.threadId&&Z.orgFs)?Q.parts.flatMap((P)=>{if(P.type!=="text"||!("text"in P)||typeof P.text!=="string")return[];let A=P.text.match(Mw6);if(!A?.[1]||A[2]===void 0)return[];return[{name:aJ$(A[1]),content:A[2]}]}):[];if(J.length===0&&K.length===0)return $;let w=new Set,U=J.flatMap((P)=>{if(P.type!=="file"||!("url"in P)||typeof P.url!=="string")return[];let A=oJ$(P.url);if(!A)return[];let M=tJ$(pJ$(P,A.mimeType),w);return[{dataUrl:P.url,parsed:A,filename:M}]}),F=K.map(({name:P,content:A})=>({filename:tJ$(pJ$({filename:P},"text/plain"),w),content:A})),N=(await Promise.all([...U.map(async({dataUrl:P,parsed:A,filename:M})=>{let S=await rJ$(A.bytes,A.mimeType,M,Z,G?.threadId);if(!S)return null;return{dataUrl:P,meshStorageUrl:K7(S.key),redirectUrl:p_(Z.baseUrl,X,S.key),filename:M,sandboxPath:S.sandboxPath}}),...F.map(async({filename:P,content:A})=>{let M=await rJ$(new TextEncoder().encode(A),LZ(P),P,Z,G?.threadId);if(!M)return null;return{dataUrl:null,meshStorageUrl:K7(M.key),redirectUrl:p_(Z.baseUrl,X,M.key),filename:P,sandboxPath:M.sandboxPath}})])).filter((P)=>P!==null);if(N.length===0)return $;let B=N.map((P)=>P.sandboxPath?`- ${P.filename}: ${P.sandboxPath} (tool URL: ${P.meshStorageUrl})`:`- ${P.filename}: ${P.meshStorageUrl}`).join(`
|
|
1507
|
+
`,B=await fetch(`${uE}/function?token=${encodeURIComponent(w)}`,{method:"POST",headers:{"Content-Type":"application/javascript"},body:N});if(!B.ok){let z=await B.text().catch(()=>"Unknown error");return{success:!1,error:`Browserless function call failed (${B.status}): ${z}`,url:U.url}}let D=await B.json().catch(async()=>{return{error:`Browserless returned non-JSON response: ${(await B.text().catch(()=>"")).slice(0,200)}`}}),E=JSON.stringify(D,null,2);G.set(W.toolCallId,E);let L=o7(E);if(!("error"in D)&&L>qN&&X){let z=`inspect-pages/${crypto.randomUUID()}.json`;return await X.put(z,new TextEncoder().encode(E),{contentType:"application/json"}),{success:!0,uri:K7(z),preview:bG(E),url:U.url,tokenCount:L,consoleLogCount:D.consoleLogs?.length??0,errorCount:D.errors?.length??0,hasEvaluateResult:D.evaluateResult!=null}}return{success:!("error"in D),...D,url:U.url,tokenCount:L}}finally{$.write({type:"data-tool-metadata",id:W.toolCallId,data:{latencyMs:performance.now()-K}})}}})}function ww6(){return x$({description:"Search the web and synthesize a comprehensive research report. This tool is only available in cluster Decopilot.",inputSchema:F0(Ww6),execute:async($)=>{throw Error("web_search is only available in cluster Decopilot.")}})}function Uw6(){return x$({description:"Record what the user is durably working toward (their goals/interests). This tool is only available in cluster Decopilot.",inputSchema:F0(Kw6),execute:async($)=>{throw Error("update_interests is only available in cluster Decopilot.")}})}function vJ$($){let{writer:Z,toolOutputMap:G,objectStorage:X,pendingImages:Y,imageTool:Q,imageBackgroundDispatcher:J,includeUnavailableClusterOnlyTools:W}=$,K={user_ask:fN0,todo_write:xN0,propose_plan:yN0,read_tool_output:d90({toolOutputMap:G})};if(W)K.web_search=ww6(),K.update_interests=Uw6();if(Q)K.generate_image=Yp("generate_image",lE,y90(Z,{...Q,objectStorage:X}),J);if(process.env.BROWSERLESS_TOKEN){if(K.scrape_url=xJ$(Z,{toolOutputMap:G,objectStorage:X,kind:"scrape"}),K.inspect_page=xJ$(Z,{toolOutputMap:G,objectStorage:X,kind:"inspect"}),Y)K.take_screenshot=g90(Z,{objectStorage:X,toolOutputMap:G,pendingImages:Y})}return K}var Ww6,Kw6;var yJ$=O(()=>{L6();dp0();lp0();mp0();XU();mE();ip0();Ww6=xY.object({query:xY.string().max(1e4).describe("The research query. Be specific about what information you need.")}),Kw6=xY.object({interests:xY.array(xY.object({title:xY.string().max(120).describe("Short noun phrase, e.g. 'Learning Rust'"),summary:xY.string().max(500).describe("One or two sentences of context, including any progress")})).max(10)})});function gJ$($){return{search_threads:x$({description:gE.description,inputSchema:F0(gE.inputSchema),execute:(Z)=>gE.execute(Z,$)}),get_thread:x$({description:hE.description,inputSchema:F0(hE.inputSchema),execute:(Z)=>hE.execute(Z,$)}),list_thread_messages:x$({description:cE.description,inputSchema:F0(cE.inputSchema),execute:(Z)=>cE.execute(Z,$)})}}var hJ$=O(()=>{L6();pm0();tm0();sm0()});async function Hw6($,Z,G){let{provider:X,imageProvider:Y,webSearchProvider:Q,deepResearchProvider:J,organization:W,models:K,toolApprovalLevel:w="auto",isPlanMode:U=!1,toolOutputMap:F,pendingImages:H,passthroughClient:N,vmContext:B,htmlArtifactBuffer:D,taskId:E,agentId:L,onChildUsage:z,backgroundDispatcher:j}=Z,P={isPlanMode:U},A=G.auth?.user?.id,M=vJ$({writer:$,toolOutputMap:F,passthroughClient:N,toolApprovalLevel:w,isPlanMode:U,objectStorage:G.objectStorage});if(A)M.update_interests=LJ$({write:async(V)=>{await G.storage.interests.setForAgent(V.orgId,V.agentId,V.userId,{interests:V.interests})},orgId:W.id,agentId:L,userId:A});Object.assign(M,gJ$(G));let S=SN0(w,!1,P)!==!1,R;if(B){let V=await Gp(G,{virtualMcpId:B.virtualMcpId,branch:B.branch,userId:B.userId,syncTools:B.syncTools});R=wJ$({fs:V,htmlArtifactBuffer:D,toolOutputMap:F,needsApproval:S,pendingImages:H,ctx:G,threadId:B.threadId,virtualMcpId:B.virtualMcpId}),Object.assign(M,R);let i=await BJ$({ctx:G,orgId:W.id,virtualMcpId:B.virtualMcpId,userId:B.userId,threadId:B.threadId,writer:$});if(i)M.load_repo=i}if(X)M.subtask=Yp("subtask",cp0,up0($,{provider:X,organization:W,models:K,self:{id:L},currentThreadId:E,needsApproval:SN0(w,!1,P)!==!1,onChildUsage:z,vmTools:R,parentBuiltInParams:Z},G),j);if(Y&&K.image&&G.objectStorage)M.generate_image=Yp("generate_image",lE,jJ$($,{provider:Y,imageModelInfo:K.image,objectStorage:G.objectStorage,allowHttpExternalUrls:O1().localMode}),j);if(Q&&K.webSearch){let V=pp0({provider:Q,modelInfo:K.webSearch,ctx:G,mode:"quick",toolName:"web_search"});M.web_search=np0($,{researchJob:V,toolOutputMap:F,taskId:E})}if(J&&K.deepResearch){let V=pp0({provider:J,modelInfo:K.deepResearch,ctx:G,mode:"deep",toolName:"deep_research"});M.deep_research=np0($,{researchJob:V,toolOutputMap:F,taskId:E,description:"Run in-depth, multi-source research and synthesize a comprehensive, cited report. Use this when the user needs thorough analysis, a literature/market review, or a question that warrants exploring many "+"sources \u2014 accuracy and depth matter more than latency. For quick "+"lookups or fact-checks, use `web_search` instead."})}if(process.env.BROWSERLESS_TOKEN){let V={baseUrl:uE,token:process.env.BROWSERLESS_TOKEN};if(M.take_screenshot=kJ$($,{objectStorage:G.objectStorage,toolOutputMap:F,pendingImages:H}),G.objectStorage)M.scrape_url=CJ$($,{browserless:V,objectStorage:G.objectStorage,toolOutputMap:F}),M.inspect_page=bJ$($,{browserless:V,objectStorage:G.objectStorage,toolOutputMap:F})}return M}function Nw6($,Z,G){let X=Z.organization.id,Y=G.auth?.user?.id,Q={};for(let[J,W]of Object.entries($)){let K=W,w=K.execute;if(typeof w!=="function"){Q[J]=W;continue}let U=Fw6[J],F=w.constructor?.name==="AsyncGeneratorFunction",H=(B,D)=>{if(!X||!Y)return;i1.capture({distinctId:Y,event:"tool_called",groups:{organization:X},properties:{organization_id:X,tool_source:"builtin",tool_name:J,tool_safe_name:J,read_only:U?.readOnly??null,destructive:U?.destructive??null,idempotent:null,open_world:null,latency_ms:Math.round(B),is_error:D}})},N=F?async function*(B,D){let E=performance.now(),L=!1;try{yield*w.call(K,B,D)}catch(z){throw L=!0,z}finally{H(performance.now()-E,L)}}:async(B,D)=>{let E=performance.now(),L=!1;try{return await w.call(K,B,D)}catch(z){throw L=!0,z}finally{H(performance.now()-E,L)}};Q[J]={...K,execute:N}}return Q}async function hN0($,Z,G){let X=await Hw6($,Z,G),Y=Nw6(X,Z,G);if(!Z.isPlanMode){let{propose_plan:Q,...J}=Y;return J}return Y}function cJ$($){let{ctx:Z,writer:G,toolOutputMap:X,subtaskParams:Y,planMode:Q}=$,J={user_ask:fN0,todo_write:xN0,read_tool_output:d90({toolOutputMap:X})};if(Q)J.propose_plan=yN0;if(Y.provider)J.subtask=up0(G,Y,Z);return J}var Fw6;var tp0=O(()=>{q4();CN0();XU();UJ$();kN0();OJ$();EJ$();dp0();lp0();zJ$();mp0();PJ$();ip0();mE();IJ$();MJ$();SJ$();_J$();fJ$();yJ$();hJ$();F8();Fw6={read_tool_output:{readOnly:!0,destructive:!1},read_resource:{readOnly:!0,destructive:!1},read_prompt:{readOnly:!0,destructive:!1},web_search:{readOnly:!0,destructive:!1},deep_research:{readOnly:!0,destructive:!1},generate_image:{readOnly:!1,destructive:!1},open_in_agent:{readOnly:!1,destructive:!1},subtask:{readOnly:!1,destructive:!1},user_ask:{readOnly:!0,destructive:!1},propose_plan:{readOnly:!0,destructive:!1},enable_tool:{readOnly:!0,destructive:!1},todo_write:{readOnly:!1,destructive:!1},update_interests:{readOnly:!1,destructive:!1},load_repo:{readOnly:!1,destructive:!0},search_threads:{readOnly:!0,destructive:!1},get_thread:{readOnly:!0,destructive:!1},list_thread_messages:{readOnly:!0,destructive:!1}}});async function uJ$($){let Z=new Map,{tools:G,nameMap:X}=await VN0($.mcpClient,Z,$.writer,$.toolApprovalLevel,{disableOutputTruncation:!1,isPlanMode:$.planMode,timeoutMs:u90,resolveArgs:$.resolveArgs,onToolCalled:$.onToolCalled,onPrOpened:$.onPrOpened}),Y=$.fullBuiltInParams?await hN0($.writer,{...$.fullBuiltInParams,toolOutputMap:Z},$.ctx):cJ$({ctx:$.ctx,writer:$.writer,toolOutputMap:Z,subtaskParams:$.subtaskParams,planMode:$.planMode}),Q=$.kind==="subagent"?Object.fromEntries(Object.entries(Y).filter(([W])=>!Bw6.includes(W))):Y;return{tools:{...G,...Q},toolOutputMap:Z,nameMap:X}}var Bw6;var dJ$=O(()=>{CN0();tp0();Bw6=["subtask","user_ask","propose_plan"]});var uN0={};X6(uN0,{waitForSeed:()=>Pw6,seedLocalMode:()=>Lw6,markSeedComplete:()=>jw6,isLocalMode:()=>yQ,getLocalAdminUser:()=>Qp,getLocalAdminPassword:()=>cN0});import{userInfo as Ow6}from"os";async function cN0(){return O1().betterAuthSecret||"local-mode-default"}function lJ$(){try{return Ow6().username||"local"}catch{return"local"}}function Dw6($){return $.charAt(0).toUpperCase()+$.slice(1)}async function Ew6(){let $=H6(),Z=await $.db.selectFrom("user").select($.db.fn.countAll().as("count")).executeTakeFirst();return Number(Z?.count??0)===0}async function Lw6(){if(!await Ew6())return!1;let Z=lJ$(),G=`${Z}@localhost.mesh`,X=Dw6(Z),Y=await cN0(),Q=await O8.api.signUpEmail({body:{email:G,password:Y,name:X}});if(!Q?.user?.id)throw Error("Failed to create local admin user");let J=Q.user.id,W=H6();await W.db.updateTable("user").set({role:"admin"}).where("id","=",J).execute();let K=`${Z}-local`.toLowerCase().replace(/[^a-z0-9-]/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,""),w=`${X} Local`;return await W.db.updateTable("organization").set({name:w,slug:K}).where("id","in",(U)=>U.selectFrom("member").select("organizationId").where("userId","=",J)).execute(),!0}async function Qp(){let $=H6(),Z=`${lJ$()}@localhost.mesh`;return $.db.selectFrom("user").where("email","=",Z).selectAll().executeTakeFirst()}function yQ(){return O1().localMode}function jw6(){mJ$()}function Pw6(){return zw6}var mJ$,zw6;var nN=O(()=>{HQ();F8();VQ();zw6=new Promise(($)=>{if(mJ$=$,!yQ())$()})});var iJ$=()=>{};function Tw6($){return $.type==="file"&&"mediaType"in $&&typeof $.mediaType==="string"&&Aw6.has($.mediaType)}function oJ$($){let Z=$.match(/^data:([^;]+);base64,(.+)$/s);if(!Z)return null;let[,G,X]=Z;try{let Y=atob(X),Q=new Uint8Array(Y.length);for(let J=0;J<Y.length;J++)Q[J]=Y.charCodeAt(J);return{mimeType:G,bytes:Q}}catch{return null}}function rp0($){return{"image/png":"png","image/jpeg":"jpg","image/gif":"gif","image/webp":"webp","image/svg+xml":"svg","application/pdf":"pdf","text/plain":"txt","text/html":"html","application/json":"json"}[$]??"bin"}async function Iw6($,Z,G,X){if(!X.objectStorage)return null;try{return await X.objectStorage.put(Z,$,{contentType:G}),Z}catch(Y){return console.error("[file-materializer] Failed to upload file:",Y),null}}async function Jp($,Z){if(!Z.objectStorage)return null;try{return await Z.objectStorage.presignedGetUrl($,Rw6)}catch(G){return console.error("[file-materializer] Failed to generate presigned URL:",G),null}}function aJ$($){try{return decodeURIComponent($)}catch{return $}}function pJ$($,Z){let G=typeof $.filename==="string"&&$.filename.trim()?$.filename:`attachment.${rp0(Z)}`,X=G.match(qw6);if(X?.[1])G=aJ$(X[1]);return[...G.split(/[\\/]/).pop()??G].filter((J)=>(J.codePointAt(0)??0)>=32).join("").trim()||`attachment.${rp0(Z)}`}function tJ$($,Z){if(!Z.has($))return Z.add($),$;let G=$.lastIndexOf("."),X=G>0?$.slice(0,G):$,Y=G>0?$.slice(G):"";for(let Q=2;;Q++){let J=`${X} (${Q})${Y}`;if(!Z.has(J))return Z.add(J),J}}async function rJ$($,Z,G,X,Y){if(!Y||!X.orgFs)return console.warn("[file-materializer] uploads-volume write skipped",{hasThreadId:Boolean(Y),hasOrgFs:Boolean(X.orgFs)}),null;try{let Q=`${Y}/${G}`;return await X.orgFs.write("uploads",Q,$,{actor:X.auth?.user?.id??"unknown",contentType:Z}),{key:tJ("uploads",Q),sandboxPath:`org/upload/${G}`}}catch(Q){return console.error("[file-materializer] uploads-volume write failed:",Q),null}}async function dN0($,Z,G){if(!Z.organization)return $;let X=Z.organization.slug;if(!X)return $;let Y=$.findLastIndex((P)=>P.role==="user");if(Y===-1)return $;let Q=$[Y],J=Q.parts.filter((P)=>P.type==="file"&&("url"in P)&&typeof P.url==="string"&&P.url.startsWith("data:")),K=Boolean(G?.threadId&&Z.orgFs)?Q.parts.flatMap((P)=>{if(P.type!=="text"||!("text"in P)||typeof P.text!=="string")return[];let A=P.text.match(Mw6);if(!A?.[1]||A[2]===void 0)return[];return[{name:aJ$(A[1]),content:A[2]}]}):[];if(J.length===0&&K.length===0)return $;let w=new Set,U=J.flatMap((P)=>{if(P.type!=="file"||!("url"in P)||typeof P.url!=="string")return[];let A=oJ$(P.url);if(!A)return[];let M=tJ$(pJ$(P,A.mimeType),w);return[{dataUrl:P.url,parsed:A,filename:M}]}),F=K.map(({name:P,content:A})=>({filename:tJ$(pJ$({filename:P},"text/plain"),w),content:A})),N=(await Promise.all([...U.map(async({dataUrl:P,parsed:A,filename:M})=>{let S=await rJ$(A.bytes,A.mimeType,M,Z,G?.threadId);if(!S)return null;return{dataUrl:P,studioStorageUrl:K7(S.key),redirectUrl:p_(Z.baseUrl,X,S.key),filename:M,sandboxPath:S.sandboxPath}}),...F.map(async({filename:P,content:A})=>{let M=await rJ$(new TextEncoder().encode(A),LZ(P),P,Z,G?.threadId);if(!M)return null;return{dataUrl:null,studioStorageUrl:K7(M.key),redirectUrl:p_(Z.baseUrl,X,M.key),filename:P,sandboxPath:M.sandboxPath}})])).filter((P)=>P!==null);if(N.length===0)return $;let B=N.map((P)=>P.sandboxPath?`- ${P.filename}: ${P.sandboxPath} (tool URL: ${P.studioStorageUrl})`:`- ${P.filename}: ${P.studioStorageUrl}`).join(`
|
|
1508
1508
|
`),D=N.some((P)=>P.sandboxPath)?`[Attached files \u2014 already inside your sandbox; read them at the given path. The tool URL is only for tools that take a URL argument]
|
|
1509
1509
|
${B}`:`[Uploaded files \u2014 use these URLs when calling tools]
|
|
1510
|
-
${B}`,E=new Map(N.flatMap((P)=>P.dataUrl?[[P.dataUrl,P.
|
|
1510
|
+
${B}`,E=new Map(N.flatMap((P)=>P.dataUrl?[[P.dataUrl,P.studioStorageUrl]]:[])),L=Q.parts.map((P)=>{if(P.type!=="file"||!("url"in P)||typeof P.url!=="string")return P;let A=E.get(P.url);if(!A)return P;return{...P,url:A}}),z=L.findIndex((P)=>P.type==="text"),j;if(z!==-1)j=L.map((P,A)=>{if(A!==z||P.type!=="text")return P;return{...P,text:`${D}
|
|
1511
1511
|
|
|
1512
1512
|
${"text"in P?P.text:""}`.trim()}});else j=[{type:"text",text:D},...L];return[...$.slice(0,Y),{...Q,parts:j},...$.slice(Y+1)]}async function lN0($,Z){if(!Z.organization)return $;let G=$.map((W)=>{let K=W.parts.filter((w)=>!Tw6(w));return K.length===W.parts.length?W:{...W,parts:K}}),X=new Set;for(let W of G)for(let K of W.parts)if(K.type==="file"&&"url"in K&&typeof K.url==="string"){let w=An(K.url);if(w)X.add(w)}let Y=yQ(),Q=new Map;if(await Promise.all(Array.from(X).map(async(W)=>{let K=await Jp(W,Z);if(!K)return;if(Y&&!K.startsWith("https://"))try{let w=await Z.objectStorage.getBytes(W);if(w.byteLength<=nJ$){Q.set(W,{kind:"bytes",b64:Buffer.from(w).toString("base64")});return}console.warn(`[file-materializer] dev inline skipped (${w.byteLength}B > ${nJ$}B):`,W)}catch(w){console.error("[file-materializer] dev inline read failed; passing URL through:",w)}Q.set(W,{kind:"url",url:K})})),Q.size===0)return kw6(G,Z);return G.map((W)=>{let K=W.parts.map((U)=>{if(U.type==="file"&&"url"in U&&typeof U.url==="string"){let F=An(U.url);if(F){let H=Q.get(F);if(H?.kind==="url")return{...U,url:H.url};if(H?.kind==="bytes"){let N="mediaType"in U&&typeof U.mediaType==="string"?U.mediaType:"application/octet-stream";return{...U,url:`data:${N};base64,${H.b64}`}}}}return U});return K.some((U,F)=>U!==W.parts[F])?{...W,parts:K}:W})}async function sJ$($,Z){let G=new Set;if(op0($,G),G.size===0)return $;let X=new Map;if(await Promise.all(Array.from(G).map(async(Y)=>{let Q=await Jp(Y,Z);if(Q)X.set(Y,Q)})),X.size===0)return $;return ap0($,X)}function op0($,Z){if(typeof $==="string")for(let G of $.matchAll(Ji0()))Z.add(G[1]);else if(Array.isArray($))for(let G of $)op0(G,Z);else if($!==null&&typeof $==="object")for(let G of Object.values($))op0(G,Z)}function ap0($,Z){if(typeof $==="string")return $.replace(Ji0(),(G,X)=>Z.get(X)??K7(X));if(Array.isArray($))return $.map((G)=>ap0(G,Z));if($!==null&&typeof $==="object")return Object.fromEntries(Object.entries($).map(([G,X])=>[G,ap0(X,Z)]));return $}async function kw6($,Z){let G=$.findLastIndex((w)=>w.role==="user");if(G===-1)return $;let X=$[G],Y=X.parts.filter((w)=>w.type==="file"&&("url"in w)&&typeof w.url==="string"&&w.url.startsWith("data:"));if(Y.length===0)return $;let J=(await Promise.all(Y.map(async(w)=>{if(w.type!=="file"||!("url"in w)||typeof w.url!=="string")return null;let U=oJ$(w.url);if(!U)return null;let F=rp0(U.mimeType),H=`chat-uploads/${crypto.randomUUID()}.${F}`,N=await Iw6(U.bytes,H,U.mimeType,Z);if(!N)return null;let B=await Jp(N,Z);return B?{dataUrl:w.url,presigned:B}:null}))).filter((w)=>w!==null);if(J.length===0)return $;let W=new Map(J.map((w)=>[w.dataUrl,w.presigned])),K=X.parts.map((w)=>{if(w.type!=="file"||!("url"in w)||typeof w.url!=="string")return w;let U=W.get(w.url);return U?{...w,url:U}:w});return[...$.slice(0,G),{...X,parts:K},...$.slice(G+1)]}var Aw6,Rw6=604800,nJ$=20971520,qw6,Mw6;var ev=O(()=>{nN();yc();nJ();iJ$();Aw6=new Set(["application/vnd.openxmlformats-officedocument.presentationml.presentation","application/vnd.openxmlformats-officedocument.wordprocessingml.document","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"]);qw6=/^\[file::\/\/(.+?)\]$/,Mw6=/^\[file::\/\/(.+?)\]\n([\s\S]*)$/});function mN0($,Z){return{resolveArgs:(G)=>sJ$(G,$),onToolCalled:(G)=>{if(!G.isError&&$5$(G.toolName))Av($,"in_review",Z);let X=$.organization?.id,Y=$.auth?.user?.id;if(!X||!Y)return;i1.capture({distinctId:Y,event:"tool_called",groups:{organization:X},properties:{organization_id:X,tool_source:"mcp",tool_name:G.toolName,tool_safe_name:G.toolSafeName,read_only:G.annotations?.readOnlyHint??null,destructive:G.annotations?.destructiveHint??null,idempotent:G.annotations?.idempotentHint??null,open_world:G.annotations?.openWorldHint??null,latency_ms:Math.round(G.latencyMs),is_error:G.isError}})},onPrOpened:(G)=>{z90($,G.result,G.connectionId,Z)}}}var sp0=O(()=>{q4();ev();aw()});function eJ$($){if($ instanceof Error)return $.message;if(typeof $==="string")return $;if(typeof $==="object"&&$!==null){let Z=$.message;if(typeof Z==="string")return Z;try{return JSON.stringify($)}catch{return String($)}}return String($)}function $W$($){let Z,G,X=new Promise((W)=>{G=W}),Y=(W)=>{if(Z===void 0)Z=W;G(Z)},J=($.streamText??bQ)({model:$.model,system:$.systemMessages,messages:$.messages,tools:$.tools,providerOptions:R3$,prepareStep:$.prepareStep,temperature:$.temperature,maxOutputTokens:$.maxOutputTokens,stopWhen:$.stopWhen,abortSignal:$.abortSignal,onStepFinish:$.onStepFinish,onError:async(W)=>{let K=W.error??W,w=eJ$(K);$.onError?.(w,K),Y(w)},onAbort:async()=>{Y(Z??"Run aborted before completion.")}});return Promise.resolve(J.finishReason).then(()=>{if(Z===void 0)G(void 0)}).catch((W)=>{let K=eJ$(W);$.onError?.(K,W),Y(K)}),{result:J,error:X}}var ZW$=O(()=>{L6();bp0()});import{SpanStatusCode as ep0,trace as Sw6}from"@opentelemetry/api";async function av($){let Z=$.tracer??Sw6.getTracer("decopilot"),G=$.stepLimit??($.kind==="agent"?Si1:vH),X=$.planMode??!1,Y=$.toolApprovalLevel??"auto",Q=Z.startSpan("decopilot.agent_loop",{attributes:{"decopilot.agent.id":$.virtualMcp.id,"decopilot.agent.kind":$.kind,"decopilot.organization.id":$.organization.id,"decopilot.model.id":$.models.thinking.id}}),J=await d3$({ctx:$.ctx,organization:$.organization,virtualMcp:$.virtualMcp,kind:$.kind,planMode:X,isDecopilot:$.isDecopilot,agentInstructions:$.systemAgentInstructions,currentThreadId:$.currentThreadId,user:$.user,userContext:$.userContext,codingWorkspace:$.codingWorkspace,passthroughClient:$.passthroughClient,connectionsData:$.connectionsData}),W=$.additionalSystemMessages&&$.additionalSystemMessages.length>0?[...J,...$.additionalSystemMessages]:J,{resolveArgs:K,onToolCalled:w,onPrOpened:U}=mN0($.ctx,$.currentThreadId),{tools:F}=await uJ$({kind:$.kind,ctx:$.ctx,mcpClient:$.mcpClient,writer:$.writer,planMode:X,toolApprovalLevel:Y,subtaskParams:$.subtaskParams,resolveArgs:K,onToolCalled:w,onPrOpened:U,fullBuiltInParams:$.subagentBuiltInParams}),H=$.extraTools?{...F,...$.extraTools}:F,N=$.__streamText?void 0:c90($.provider,$.models.thinking),B=(E)=>{for(let L of E.toolCalls??[]){let z=L.input?.command;if(L.toolName==="bash"&&z&&Z5$(z)){Av($.ctx,"in_review",$.currentThreadId);let j=(E.toolResults??[]).find((P)=>P.toolCallId===L.toolCallId);z90($.ctx,j?.output,null,$.currentThreadId);break}}return $.onStepFinish?.(E)},D=$W$({model:N,systemMessages:W,messages:$.messages,tools:H,prepareStep:$.prepareStep,temperature:$.temperature,maxOutputTokens:d5$($.models.thinking.limits,o7(W)+o7($.messages)+o7(H)),stopWhen:ON(G),abortSignal:$.abortSignal,onStepFinish:B,streamText:$.__streamText,onError:(E,L)=>{if(console.error(`[runAgentLoop:${$.kind}:${$.virtualMcp.id}] Error`,E),Q.setStatus({code:ep0.ERROR,message:E}),L instanceof Error)Q.recordException(L)}});return Promise.resolve(D.result.finishReason).then(()=>{Q.setStatus({code:ep0.OK})}).catch((E)=>{let L=E instanceof Error?E.message:typeof E==="string"?E:`${E}`;Q.setStatus({code:ep0.ERROR,message:L})}).finally(()=>Q.end()),{result:D.result,error:D.error,span:Q,assembledSystemMessages:W}}var bN0=O(()=>{L6();Ui0();XU();hD();l3$();dJ$();sp0();aw();ZW$()});function iN0(){let $=[],Z=!1,G=null,X=()=>{let J=G;G=null,J?.()},Y=(J)=>{if(Z)return;$.push(J),X()},Q=async function*(){try{while(!Z||$.length>0){let J=$.shift();if(J){yield J;continue}await new Promise((W)=>{G=W})}}finally{Z=!0,X()}}();return{writer:{write:(J)=>Y(J),merge:async(J)=>{let W=J;if(typeof W[Symbol.asyncIterator]==="function"){for await(let w of W)Y(w);return}let K=J.getReader();try{while(!0){let{value:w,done:U}=await K.read();if(U)return;Y(w)}}finally{K.releaseLock()}},onError:()=>{}},stream:Q,close:()=>{Z=!0,X()}}}async function Cw6($){let Z=$.getReader();try{while(!0){let{done:G}=await Z.read();if(G)return}}finally{Z.releaseLock()}}async function nN0($,Z){let{runId:G,fenceToken:X}=$,Y=$.fenceOk??(()=>!0),Q=$.initialAckSeq??0,J=new Set,W;async function*K(){try{for await(let{seq:F,chunk:H}of $.chunks){if(!await Y())continue;if(F<=Q||J.has(F))continue;if(!await Z.streamBuffer.publishRawChunk(G,H,{fenceToken:X,seq:F}))throw Error("publishRawChunk failed");J.add(F);let N=Q;while(J.has(Q+1))J.delete(Q+1),Q+=1;if(Q>N)$.onPublished?.(Q);yield H}}catch(F){throw W=F,F}}let{uiStream:w,whenComplete:U}=W90({chunks:K(),originalMessages:$.originalMessages,title:{...Z.title,persistTitle:async()=>{}},persistence:Z.persistence??Vw6,hooks:Z.hooks,errorMessageId:$.errorMessageId});if(await Cw6(w),await U,W!==void 0){if(W instanceof Error)W.lastAckSeq=Q;throw W}if(Q>0)await Z.streamBuffer.publishDone(G,X,Q)}var Vw6;var $t0=O(()=>{Ym0();Vw6={emitStepParts:async()=>{},emitFinal:async()=>{},emitError:async()=>{}}});import{DBOS as AV,DBOSClient as _w6}from"@dbos-inc/dbos-sdk";function YW$($){Zt0=$}function tN0(){if(!Zt0)throw Error("[background-tool] DBOS runtime not initialized \u2014 setBackgroundToolRuntime() must run before workflows fire");return Zt0}function bw6(){return GW$??=_w6.create({systemDatabaseUrl:tN0().systemDatabaseUrl,systemDatabaseSchemaName:"dbos"}),GW$}function pN0($){let Z=$.modelMeta.capabilities;return{id:$.modelId,title:$.modelMeta.title??$.modelId,provider:$.modelMeta.providerId??null,capabilities:Z&&Z.length>0?{vision:Z.includes("vision")||Z.includes("image")||void 0,text:Z.includes("text")||void 0,reasoning:Z.includes("reasoning")||void 0}:void 0,limits:$.modelMeta.limits?{contextWindow:$.modelMeta.limits.contextWindow,maxOutputTokens:$.modelMeta.limits.maxOutputTokens??void 0}:void 0}}async function Gt0($){let[Z,G,X,Y]=await Promise.all([FJ($,"smart"),CQ($,"image"),CQ($,"web_search"),CQ($,"deep_research")]);return{credentialId:Z.credentialId,thinking:pN0(Z),...G?{image:{...pN0(G),credentialId:G.credentialId}}:{},...X?{webSearch:{...pN0(X),credentialId:X.credentialId}}:{},...Y?{deepResearch:{...pN0(Y),credentialId:Y.credentialId}}:{}}}async function rN0($){let Z=await tN0().studioContextFactory($.orgId,$.userId);if(!Z)throw Error(`[background-tool] studio context unavailable for org ${$.orgId} user ${$.userId}`);return Z}function QW$($){return{target:b90({sandboxProviderKind:$?.sandbox_provider_kind??"agent-sandbox"}),harnessId:$?.harness_id??"decopilot"}}function JW$($,Z){return{messages:[{id:`${$.jobId}:react-msg`,role:"user",metadata:{internal:!0},parts:[{type:"text",text:Z.nudge}]}],models:Z.models,agent:{id:$.agentId},temperature:$.temperature,toolApprovalLevel:$.toolApprovalLevel,mode:"default",organizationId:$.orgId,userId:$.userId,taskId:$.threadId,branch:$.branch??void 0,resumedFromBackground:!0,target:Z.target,harnessId:Z.harnessId??void 0}}function fw6($){return{ctx:$,studioContext:()=>rN0($),emitFinal:(Z)=>AV.runStep(()=>hw6($,Z),{name:"appendResult"})}}function vw6($){if(!$?.parts)return"";return $.parts.map((Z)=>Z&&typeof Z==="object"&&Z.type==="text"?Z.text??"":"").filter((Z)=>Z.trim().length>0).join("").trim()}async function yw6($){let Z=await rN0($),G=Z.organization;if(!G)throw Error(`[background-tool] organization context unavailable for subtask (org ${$.orgId})`);let X=$.input,Y=!X.agent_id||X.agent_id===$.agentId,Q=Y?$.agentId:X.agent_id,J=await Gt0(Z),W=await Z.aiProviders.activate(J.credentialId,$.orgId),K={thinking:{...J.thinking,credentialId:J.credentialId},...J.image?{image:J.image}:{},...J.webSearch?{webSearch:J.webSearch}:{},...J.deepResearch?{deepResearch:J.deepResearch}:{}},{mcpClient:w,targetKind:U,targetRef:F}=await _N0(Z,$.orgId,Q,{superUser:Y}),H=K.image,N=K.webSearch,B=K.deepResearch,D=H?.credentialId?await Z.aiProviders.activate(H.credentialId,$.orgId):null,E=N?.credentialId?await Z.aiProviders.activate(N.credentialId,$.orgId):null,L=B?.credentialId?await Z.aiProviders.activate(B.credentialId,$.orgId):null,z={provider:W,imageProvider:D,webSearchProvider:E,deepResearchProvider:L,organization:G,models:K,toolApprovalLevel:$.toolApprovalLevel,isPlanMode:!1,passthroughClient:w,pendingImages:[],vmContext:U==="virtual-mcp"?{virtualMcpId:F.id,branch:F.repo?$.branch??`thread:${$.threadId}`:"ephemeral",userId:$.userId,threadId:$.threadId}:null,taskId:$.threadId,agentId:F.id,backgroundDispatcher:null},j=iN0(),P=Yi0($.threadId),A="",M="stop";try{let S=await av({kind:"subagent",ctx:Z,organization:G,virtualMcp:F,mcpClient:w,provider:W,models:K,messages:[{role:"user",content:X.prompt}],systemAgentInstructions:F.instructions,abortSignal:P.signal,stepLimit:vH,toolApprovalLevel:"auto",planMode:!1,writer:j.writer,subtaskParams:{provider:W,organization:G,models:K,needsApproval:!1},passthroughClient:w,subagentBuiltInParams:z}),R=0,V=S.result.toUIMessageStream({generateMessageId:()=>`${$.jobId}:msg:${R++}`,messageMetadata:({part:Z0})=>Z0.type==="start"?{subtaskJobId:$.jobId}:void 0}),i=0;async function*f(){let Z0=V.getReader();try{while(!0){let{done:o,value:B0}=await Z0.read();if(o)break;yield{seq:++i,chunk:B0}}}finally{Z0.releaseLock()}}let v=new _G({storage:Z.storage.threads.messageParts(),orgId:$.orgId,threadId:$.threadId,runId:$.jobId});return await nN0({runId:$.jobId,fenceToken:$.jobId,chunks:f()},{streamBuffer:tN0().streamBuffer,persistence:v,title:{threadId:$.threadId,currentThreadTitle:void 0,persistTitle:async()=>{}},hooks:{onFinish:async(Z0,o)=>{let B0=vw6(Z0);if(B0)A=B0;if(o)M=o}}}),{report:A,finishReason:M,models:J}}finally{j.close(),Qi0($.threadId,P),await w.close().catch(()=>{})}}async function gw6($){let Z=await $.studioContext(),G=await Gt0(Z),X=G.image;if(!X?.credentialId)throw Error("[background-tool] no image model configured for org");let Y=await Z.aiProviders.activate(X.credentialId,$.ctx.orgId),Q=Yi0($.ctx.threadId);try{return{result:await Wi0($.ctx.input,{provider:Y,imageModelInfo:{id:X.id},objectStorage:Z.objectStorage,allowHttpExternalUrls:O1().localMode,abortSignal:Q.signal}),models:G}}finally{Qi0($.ctx.threadId,Q)}}async function hw6($,Z){let G=await rN0($);if(!await G.storage.threads.get($.threadId))throw Error(`[background-tool] thread ${$.threadId} not found`);await new _G({storage:G.storage.threads.messageParts(),orgId:$.orgId,threadId:$.threadId,runId:$.jobId}).emitFinal({id:`${$.jobId}:msg`,role:"assistant",parts:Z})}async function WW$($){let{snapshot:Z,jobId:G,report:X}=$,Y={...Z,jobId:G,toolName:"subtask",input:{},toolCallId:`${G}:deliver`},Q=await rN0(Y),J=X.trim().length>0;await new _G({storage:Q.storage.threads.messageParts(),orgId:Z.orgId,threadId:Z.threadId,runId:G}).emitFinal({id:`${G}:result`,role:"assistant",parts:[{type:"text",text:J?X:"_The subtask produced no output._"}],metadata:{subtaskJobId:G}});let K=await Gt0(Q),{target:w,harnessId:U}=QW$(await Q.storage.threads.get(Z.threadId)),F=J?`The background subtask you started has completed. Its result:
|
|
1513
1513
|
|
|
@@ -2722,7 +2722,7 @@ NKEYs are sensitive and should be treated as secrets.
|
|
|
2722
2722
|
-----BEGIN USER NKEY SEED-----
|
|
2723
2723
|
${G}
|
|
2724
2724
|
------END USER NKEY SEED------
|
|
2725
|
-
`;return new TextEncoder().encode(X)}var Z81,zC,U64,zC$,$81="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",H64,d$,u$,Z6,LC$=24,jC,_J;var qC$=O(()=>{(function($){$.Operator="operator",$.Account="account",$.User="user",$.Activation="activation",$.AuthorizationResponse="authorization_response"})(Z81||(Z81={}));(function($){var Z=function(h,l){this.hi=h|0,this.lo=l|0},G=function(h){var l,c=new Float64Array(16);if(h)for(l=0;l<h.length;l++)c[l]=h[l];return c},X=function(){throw Error("no PRNG")},Y=new Uint8Array(16),Q=new Uint8Array(32);Q[0]=9;var J=G(),W=G([1]),K=G([56129,1]),w=G([30883,4953,19914,30187,55467,16705,2637,112,59544,30585,16505,36039,65139,11119,27886,20995]),U=G([61785,9906,39828,60374,45398,33411,5274,224,53552,61171,33010,6542,64743,22239,55772,9222]),F=G([54554,36645,11616,51542,42930,38181,51040,26924,56412,64982,57905,49316,21502,52590,14035,8553]),H=G([26200,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214]),N=G([41136,18958,6951,50414,58488,44335,6150,12099,55207,15867,153,11085,57099,20417,9344,11139]);function B(h,l){return h<<l|h>>>32-l}function D(h,l){var c=h[l+3]&255;return c=c<<8|h[l+2]&255,c=c<<8|h[l+1]&255,c<<8|h[l+0]&255}function E(h,l){var c=h[l]<<24|h[l+1]<<16|h[l+2]<<8|h[l+3],r=h[l+4]<<24|h[l+5]<<16|h[l+6]<<8|h[l+7];return new Z(c,r)}function L(h,l,c){var r;for(r=0;r<4;r++)h[l+r]=c&255,c>>>=8}function z(h,l,c){h[l]=c.hi>>24&255,h[l+1]=c.hi>>16&255,h[l+2]=c.hi>>8&255,h[l+3]=c.hi&255,h[l+4]=c.lo>>24&255,h[l+5]=c.lo>>16&255,h[l+6]=c.lo>>8&255,h[l+7]=c.lo&255}function j(h,l,c,r,Y0){var W0,b0=0;for(W0=0;W0<Y0;W0++)b0|=h[l+W0]^c[r+W0];return(1&b0-1>>>8)-1}function P(h,l,c,r){return j(h,l,c,r,16)}function A(h,l,c,r){return j(h,l,c,r,32)}function M(h,l,c,r,Y0){var W0=new Uint32Array(16),b0=new Uint32Array(16),m0=new Uint32Array(16),P0=new Uint32Array(4),S0,j0,y0;for(S0=0;S0<4;S0++)b0[5*S0]=D(r,4*S0),b0[1+S0]=D(c,4*S0),b0[6+S0]=D(l,4*S0),b0[11+S0]=D(c,16+4*S0);for(S0=0;S0<16;S0++)m0[S0]=b0[S0];for(S0=0;S0<20;S0++){for(j0=0;j0<4;j0++){for(y0=0;y0<4;y0++)P0[y0]=b0[(5*j0+4*y0)%16];P0[1]^=B(P0[0]+P0[3]|0,7),P0[2]^=B(P0[1]+P0[0]|0,9),P0[3]^=B(P0[2]+P0[1]|0,13),P0[0]^=B(P0[3]+P0[2]|0,18);for(y0=0;y0<4;y0++)W0[4*j0+(j0+y0)%4]=P0[y0]}for(y0=0;y0<16;y0++)b0[y0]=W0[y0]}if(Y0){for(S0=0;S0<16;S0++)b0[S0]=b0[S0]+m0[S0]|0;for(S0=0;S0<4;S0++)b0[5*S0]=b0[5*S0]-D(r,4*S0)|0,b0[6+S0]=b0[6+S0]-D(l,4*S0)|0;for(S0=0;S0<4;S0++)L(h,4*S0,b0[5*S0]),L(h,16+4*S0,b0[6+S0])}else for(S0=0;S0<16;S0++)L(h,4*S0,b0[S0]+m0[S0]|0)}function S(h,l,c,r){return M(h,l,c,r,!1),0}function R(h,l,c,r){return M(h,l,c,r,!0),0}var V=new Uint8Array([101,120,112,97,110,100,32,51,50,45,98,121,116,101,32,107]);function i(h,l,c,r,Y0,W0,b0){var m0=new Uint8Array(16),P0=new Uint8Array(64),S0,j0;if(!Y0)return 0;for(j0=0;j0<16;j0++)m0[j0]=0;for(j0=0;j0<8;j0++)m0[j0]=W0[j0];while(Y0>=64){S(P0,m0,b0,V);for(j0=0;j0<64;j0++)h[l+j0]=(c?c[r+j0]:0)^P0[j0];S0=1;for(j0=8;j0<16;j0++)S0=S0+(m0[j0]&255)|0,m0[j0]=S0&255,S0>>>=8;if(Y0-=64,l+=64,c)r+=64}if(Y0>0){S(P0,m0,b0,V);for(j0=0;j0<Y0;j0++)h[l+j0]=(c?c[r+j0]:0)^P0[j0]}return 0}function f(h,l,c,r,Y0){return i(h,l,null,0,c,r,Y0)}function v(h,l,c,r,Y0){var W0=new Uint8Array(32);return R(W0,r,Y0,V),f(h,l,c,r.subarray(16),W0)}function Z0(h,l,c,r,Y0,W0,b0){var m0=new Uint8Array(32);return R(m0,W0,b0,V),i(h,l,c,r,Y0,W0.subarray(16),m0)}function o(h,l){var c,r=0;for(c=0;c<17;c++)r=r+(h[c]+l[c]|0)|0,h[c]=r&255,r>>>=8}var B0=new Uint32Array([5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252]);function D0(h,l,c,r,Y0,W0){var b0,m0,P0,S0,j0=new Uint32Array(17),y0=new Uint32Array(17),o0=new Uint32Array(17),Z1=new Uint32Array(17),w1=new Uint32Array(17);for(P0=0;P0<17;P0++)y0[P0]=o0[P0]=0;for(P0=0;P0<16;P0++)y0[P0]=W0[P0];y0[3]&=15,y0[4]&=252,y0[7]&=15,y0[8]&=252,y0[11]&=15,y0[12]&=252,y0[15]&=15;while(Y0>0){for(P0=0;P0<17;P0++)Z1[P0]=0;for(P0=0;P0<16&&P0<Y0;++P0)Z1[P0]=c[r+P0];Z1[P0]=1,r+=P0,Y0-=P0,o(o0,Z1);for(m0=0;m0<17;m0++){j0[m0]=0;for(P0=0;P0<17;P0++)j0[m0]=j0[m0]+o0[P0]*(P0<=m0?y0[m0-P0]:320*y0[m0+17-P0]|0)|0|0}for(m0=0;m0<17;m0++)o0[m0]=j0[m0];S0=0;for(P0=0;P0<16;P0++)S0=S0+o0[P0]|0,o0[P0]=S0&255,S0>>>=8;S0=S0+o0[16]|0,o0[16]=S0&3,S0=5*(S0>>>2)|0;for(P0=0;P0<16;P0++)S0=S0+o0[P0]|0,o0[P0]=S0&255,S0>>>=8;S0=S0+o0[16]|0,o0[16]=S0}for(P0=0;P0<17;P0++)w1[P0]=o0[P0];o(o0,B0),b0=-(o0[16]>>>7)|0;for(P0=0;P0<17;P0++)o0[P0]^=b0&(w1[P0]^o0[P0]);for(P0=0;P0<16;P0++)Z1[P0]=W0[P0+16];Z1[16]=0,o(o0,Z1);for(P0=0;P0<16;P0++)h[l+P0]=o0[P0];return 0}function J0(h,l,c,r,Y0,W0){var b0=new Uint8Array(16);return D0(b0,0,c,r,Y0,W0),P(h,l,b0,0)}function G0(h,l,c,r,Y0){var W0;if(c<32)return-1;Z0(h,0,l,0,c,r,Y0),D0(h,16,h,32,c-32,h);for(W0=0;W0<16;W0++)h[W0]=0;return 0}function a(h,l,c,r,Y0){var W0,b0=new Uint8Array(32);if(c<32)return-1;if(v(b0,0,32,r,Y0),J0(l,16,l,32,c-32,b0)!==0)return-1;Z0(h,0,l,0,c,r,Y0);for(W0=0;W0<32;W0++)h[W0]=0;return 0}function A0(h,l){var c;for(c=0;c<16;c++)h[c]=l[c]|0}function w0(h){var l,c;for(c=0;c<16;c++)h[c]+=65536,l=Math.floor(h[c]/65536),h[(c+1)*(c<15?1:0)]+=l-1+37*(l-1)*(c===15?1:0),h[c]-=l*65536}function v0(h,l,c){var r,Y0=~(c-1);for(var W0=0;W0<16;W0++)r=Y0&(h[W0]^l[W0]),h[W0]^=r,l[W0]^=r}function d0(h,l){var c,r,Y0,W0=G(),b0=G();for(c=0;c<16;c++)b0[c]=l[c];w0(b0),w0(b0),w0(b0);for(r=0;r<2;r++){W0[0]=b0[0]-65517;for(c=1;c<15;c++)W0[c]=b0[c]-65535-(W0[c-1]>>16&1),W0[c-1]&=65535;W0[15]=b0[15]-32767-(W0[14]>>16&1),Y0=W0[15]>>16&1,W0[14]&=65535,v0(b0,W0,1-Y0)}for(c=0;c<16;c++)h[2*c]=b0[c]&255,h[2*c+1]=b0[c]>>8}function i0(h,l){var c=new Uint8Array(32),r=new Uint8Array(32);return d0(c,h),d0(r,l),A(c,0,r,0)}function n0(h){var l=new Uint8Array(32);return d0(l,h),l[0]&1}function U0(h,l){var c;for(c=0;c<16;c++)h[c]=l[2*c]+(l[2*c+1]<<8);h[15]&=32767}function C0(h,l,c){var r;for(r=0;r<16;r++)h[r]=l[r]+c[r]|0}function T0(h,l,c){var r;for(r=0;r<16;r++)h[r]=l[r]-c[r]|0}function N0(h,l,c){var r,Y0,W0=new Float64Array(31);for(r=0;r<31;r++)W0[r]=0;for(r=0;r<16;r++)for(Y0=0;Y0<16;Y0++)W0[r+Y0]+=l[r]*c[Y0];for(r=0;r<15;r++)W0[r]+=38*W0[r+16];for(r=0;r<16;r++)h[r]=W0[r];w0(h),w0(h)}function Q0(h,l){N0(h,l,l)}function X0(h,l){var c=G(),r;for(r=0;r<16;r++)c[r]=l[r];for(r=253;r>=0;r--)if(Q0(c,c),r!==2&&r!==4)N0(c,c,l);for(r=0;r<16;r++)h[r]=c[r]}function V0(h,l){var c=G(),r;for(r=0;r<16;r++)c[r]=l[r];for(r=250;r>=0;r--)if(Q0(c,c),r!==1)N0(c,c,l);for(r=0;r<16;r++)h[r]=c[r]}function n(h,l,c){var r=new Uint8Array(32),Y0=new Float64Array(80),W0,b0,m0=G(),P0=G(),S0=G(),j0=G(),y0=G(),o0=G();for(b0=0;b0<31;b0++)r[b0]=l[b0];r[31]=l[31]&127|64,r[0]&=248,U0(Y0,c);for(b0=0;b0<16;b0++)P0[b0]=Y0[b0],j0[b0]=m0[b0]=S0[b0]=0;m0[0]=j0[0]=1;for(b0=254;b0>=0;--b0)W0=r[b0>>>3]>>>(b0&7)&1,v0(m0,P0,W0),v0(S0,j0,W0),C0(y0,m0,S0),T0(m0,m0,S0),C0(S0,P0,j0),T0(P0,P0,j0),Q0(j0,y0),Q0(o0,m0),N0(m0,S0,m0),N0(S0,P0,y0),C0(y0,m0,S0),T0(m0,m0,S0),Q0(P0,m0),T0(S0,j0,o0),N0(m0,S0,K),C0(m0,m0,j0),N0(S0,S0,m0),N0(m0,j0,o0),N0(j0,P0,Y0),Q0(P0,y0),v0(m0,P0,W0),v0(S0,j0,W0);for(b0=0;b0<16;b0++)Y0[b0+16]=m0[b0],Y0[b0+32]=S0[b0],Y0[b0+48]=P0[b0],Y0[b0+64]=j0[b0];var Z1=Y0.subarray(32),w1=Y0.subarray(16);return X0(Z1,Z1),N0(w1,w1,Z1),d0(h,w1),0}function e(h,l){return n(h,l,Q)}function t0(h,l){return X(l,32),e(h,l)}function R0(h,l,c){var r=new Uint8Array(32);return n(r,c,l),R(h,Y,r,V)}var q0=G0,g=a;function H0(h,l,c,r,Y0,W0){var b0=new Uint8Array(32);return R0(b0,Y0,W0),q0(h,l,c,r,b0)}function f0(h,l,c,r,Y0,W0){var b0=new Uint8Array(32);return R0(b0,Y0,W0),g(h,l,c,r,b0)}function e0(){var h=0,l=0,c=0,r=0,Y0=65535,W0,b0,m0;for(m0=0;m0<arguments.length;m0++)W0=arguments[m0].lo,b0=arguments[m0].hi,h+=W0&Y0,l+=W0>>>16,c+=b0&Y0,r+=b0>>>16;return l+=h>>>16,c+=l>>>16,r+=c>>>16,new Z(c&Y0|r<<16,h&Y0|l<<16)}function u0(h,l){return new Z(h.hi>>>l,h.lo>>>l|h.hi<<32-l)}function T1(){var h=0,l=0,c;for(c=0;c<arguments.length;c++)h^=arguments[c].lo,l^=arguments[c].hi;return new Z(l,h)}function e1(h,l){var c,r,Y0=32-l;if(l<32)c=h.hi>>>l|h.lo<<Y0,r=h.lo>>>l|h.hi<<Y0;else if(l<64)c=h.lo>>>l|h.hi<<Y0,r=h.hi>>>l|h.lo<<Y0;return new Z(c,r)}function z6(h,l,c){var r=h.hi&l.hi^~h.hi&c.hi,Y0=h.lo&l.lo^~h.lo&c.lo;return new Z(r,Y0)}function J4(h,l,c){var r=h.hi&l.hi^h.hi&c.hi^l.hi&c.hi,Y0=h.lo&l.lo^h.lo&c.lo^l.lo&c.lo;return new Z(r,Y0)}function d5(h){return T1(e1(h,28),e1(h,34),e1(h,39))}function s(h){return T1(e1(h,14),e1(h,18),e1(h,41))}function K1(h){return T1(e1(h,1),e1(h,8),u0(h,7))}function a$(h){return T1(e1(h,19),e1(h,61),u0(h,6))}var s$=[new Z(1116352408,3609767458),new Z(1899447441,602891725),new Z(3049323471,3964484399),new Z(3921009573,2173295548),new Z(961987163,4081628472),new Z(1508970993,3053834265),new Z(2453635748,2937671579),new Z(2870763221,3664609560),new Z(3624381080,2734883394),new Z(310598401,1164996542),new Z(607225278,1323610764),new Z(1426881987,3590304994),new Z(1925078388,4068182383),new Z(2162078206,991336113),new Z(2614888103,633803317),new Z(3248222580,3479774868),new Z(3835390401,2666613458),new Z(4022224774,944711139),new Z(264347078,2341262773),new Z(604807628,2007800933),new Z(770255983,1495990901),new Z(1249150122,1856431235),new Z(1555081692,3175218132),new Z(1996064986,2198950837),new Z(2554220882,3999719339),new Z(2821834349,766784016),new Z(2952996808,2566594879),new Z(3210313671,3203337956),new Z(3336571891,1034457026),new Z(3584528711,2466948901),new Z(113926993,3758326383),new Z(338241895,168717936),new Z(666307205,1188179964),new Z(773529912,1546045734),new Z(1294757372,1522805485),new Z(1396182291,2643833823),new Z(1695183700,2343527390),new Z(1986661051,1014477480),new Z(2177026350,1206759142),new Z(2456956037,344077627),new Z(2730485921,1290863460),new Z(2820302411,3158454273),new Z(3259730800,3505952657),new Z(3345764771,106217008),new Z(3516065817,3606008344),new Z(3600352804,1432725776),new Z(4094571909,1467031594),new Z(275423344,851169720),new Z(430227734,3100823752),new Z(506948616,1363258195),new Z(659060556,3750685593),new Z(883997877,3785050280),new Z(958139571,3318307427),new Z(1322822218,3812723403),new Z(1537002063,2003034995),new Z(1747873779,3602036899),new Z(1955562222,1575990012),new Z(2024104815,1125592928),new Z(2227730452,2716904306),new Z(2361852424,442776044),new Z(2428436474,593698344),new Z(2756734187,3733110249),new Z(3204031479,2999351573),new Z(3329325298,3815920427),new Z(3391569614,3928383900),new Z(3515267271,566280711),new Z(3940187606,3454069534),new Z(4118630271,4000239992),new Z(116418474,1914138554),new Z(174292421,2731055270),new Z(289380356,3203993006),new Z(460393269,320620315),new Z(685471733,587496836),new Z(852142971,1086792851),new Z(1017036298,365543100),new Z(1126000580,2618297676),new Z(1288033470,3409855158),new Z(1501505948,4234509866),new Z(1607167915,987167468),new Z(1816402316,1246189591)];function A9(h,l,c){var r=[],Y0=[],W0=[],b0=[],m0,P0,S0;for(P0=0;P0<8;P0++)r[P0]=W0[P0]=E(h,8*P0);var j0=0;while(c>=128){for(P0=0;P0<16;P0++)b0[P0]=E(l,8*P0+j0);for(P0=0;P0<80;P0++){for(S0=0;S0<8;S0++)Y0[S0]=W0[S0];m0=e0(W0[7],s(W0[4]),z6(W0[4],W0[5],W0[6]),s$[P0],b0[P0%16]),Y0[7]=e0(m0,d5(W0[0]),J4(W0[0],W0[1],W0[2])),Y0[3]=e0(Y0[3],m0);for(S0=0;S0<8;S0++)W0[(S0+1)%8]=Y0[S0];if(P0%16===15)for(S0=0;S0<16;S0++)b0[S0]=e0(b0[S0],b0[(S0+9)%16],K1(b0[(S0+1)%16]),a$(b0[(S0+14)%16]))}for(P0=0;P0<8;P0++)W0[P0]=e0(W0[P0],r[P0]),r[P0]=W0[P0];j0+=128,c-=128}for(P0=0;P0<8;P0++)z(h,8*P0,r[P0]);return c}var dG=new Uint8Array([106,9,230,103,243,188,201,8,187,103,174,133,132,202,167,59,60,110,243,114,254,148,248,43,165,79,245,58,95,29,54,241,81,14,82,127,173,230,130,209,155,5,104,140,43,62,108,31,31,131,217,171,251,65,189,107,91,224,205,25,19,126,33,121]);function k8(h,l,c){var r=new Uint8Array(64),Y0=new Uint8Array(256),W0,b0=c;for(W0=0;W0<64;W0++)r[W0]=dG[W0];A9(r,l,c),c%=128;for(W0=0;W0<256;W0++)Y0[W0]=0;for(W0=0;W0<c;W0++)Y0[W0]=l[b0-c+W0];Y0[c]=128,c=256-128*(c<112?1:0),Y0[c-9]=0,z(Y0,c-8,new Z(b0/536870912|0,b0<<3)),A9(r,Y0,c);for(W0=0;W0<64;W0++)h[W0]=r[W0];return 0}function _6(h,l){var c=G(),r=G(),Y0=G(),W0=G(),b0=G(),m0=G(),P0=G(),S0=G(),j0=G();T0(c,h[1],h[0]),T0(j0,l[1],l[0]),N0(c,c,j0),C0(r,h[0],h[1]),C0(j0,l[0],l[1]),N0(r,r,j0),N0(Y0,h[3],l[3]),N0(Y0,Y0,U),N0(W0,h[2],l[2]),C0(W0,W0,W0),T0(b0,r,c),T0(m0,W0,Y0),C0(P0,W0,Y0),C0(S0,r,c),N0(h[0],b0,m0),N0(h[1],S0,P0),N0(h[2],P0,m0),N0(h[3],b0,S0)}function Z5(h,l,c){var r;for(r=0;r<4;r++)v0(h[r],l[r],c)}function q5(h,l){var c=G(),r=G(),Y0=G();X0(Y0,l[2]),N0(c,l[0],Y0),N0(r,l[1],Y0),d0(h,r),h[31]^=n0(c)<<7}function J9(h,l,c){var r,Y0;A0(h[0],J),A0(h[1],W),A0(h[2],W),A0(h[3],J);for(Y0=255;Y0>=0;--Y0)r=c[Y0/8|0]>>(Y0&7)&1,Z5(h,l,r),_6(l,h),_6(h,h),Z5(h,l,r)}function T9(h,l){var c=[G(),G(),G(),G()];A0(c[0],F),A0(c[1],H),A0(c[2],W),N0(c[3],F,H),J9(h,c,l)}function x1(h,l,c){var r=new Uint8Array(64),Y0=[G(),G(),G(),G()],W0;if(!c)X(l,32);k8(r,l,32),r[0]&=248,r[31]&=127,r[31]|=64,T9(Y0,r),q5(h,Y0);for(W0=0;W0<32;W0++)l[W0+32]=h[W0];return 0}var S8=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);function V8(h,l){var c,r,Y0,W0;for(r=63;r>=32;--r){c=0;for(Y0=r-32,W0=r-12;Y0<W0;++Y0)l[Y0]+=c-16*l[r]*S8[Y0-(r-32)],c=Math.floor((l[Y0]+128)/256),l[Y0]-=c*256;l[Y0]+=c,l[r]=0}c=0;for(Y0=0;Y0<32;Y0++)l[Y0]+=c-(l[31]>>4)*S8[Y0],c=l[Y0]>>8,l[Y0]&=255;for(Y0=0;Y0<32;Y0++)l[Y0]-=c*S8[Y0];for(r=0;r<32;r++)l[r+1]+=l[r]>>8,h[r]=l[r]&255}function G6(h){var l=new Float64Array(64),c;for(c=0;c<64;c++)l[c]=h[c];for(c=0;c<64;c++)h[c]=0;V8(h,l)}function f$(h,l,c,r){var Y0=new Uint8Array(64),W0=new Uint8Array(64),b0=new Uint8Array(64),m0,P0,S0=new Float64Array(64),j0=[G(),G(),G(),G()];k8(Y0,r,32),Y0[0]&=248,Y0[31]&=127,Y0[31]|=64;var y0=c+64;for(m0=0;m0<c;m0++)h[64+m0]=l[m0];for(m0=0;m0<32;m0++)h[32+m0]=Y0[32+m0];k8(b0,h.subarray(32),c+32),G6(b0),T9(j0,b0),q5(h,j0);for(m0=32;m0<64;m0++)h[m0]=r[m0];k8(W0,h,c+64),G6(W0);for(m0=0;m0<64;m0++)S0[m0]=0;for(m0=0;m0<32;m0++)S0[m0]=b0[m0];for(m0=0;m0<32;m0++)for(P0=0;P0<32;P0++)S0[m0+P0]+=W0[m0]*Y0[P0];return V8(h.subarray(32),S0),y0}function U8(h,l){var c=G(),r=G(),Y0=G(),W0=G(),b0=G(),m0=G(),P0=G();if(A0(h[2],W),U0(h[1],l),Q0(Y0,h[1]),N0(W0,Y0,w),T0(Y0,Y0,h[2]),C0(W0,h[2],W0),Q0(b0,W0),Q0(m0,b0),N0(P0,m0,b0),N0(c,P0,Y0),N0(c,c,W0),V0(c,c),N0(c,c,Y0),N0(c,c,W0),N0(c,c,W0),N0(h[0],c,W0),Q0(r,h[0]),N0(r,r,W0),i0(r,Y0))N0(h[0],h[0],N);if(Q0(r,h[0]),N0(r,r,W0),i0(r,Y0))return-1;if(n0(h[0])===l[31]>>7)T0(h[0],J,h[0]);return N0(h[3],h[0],h[1]),0}function P7(h,l,c,r){var Y0,W0=new Uint8Array(32),b0=new Uint8Array(64),m0=[G(),G(),G(),G()],P0=[G(),G(),G(),G()];if(c<64)return-1;if(U8(P0,r))return-1;for(Y0=0;Y0<c;Y0++)h[Y0]=l[Y0];for(Y0=0;Y0<32;Y0++)h[Y0+32]=r[Y0];if(k8(b0,h,c),G6(b0),J9(m0,P0,b0),T9(P0,l.subarray(32)),_6(m0,P0),q5(W0,m0),c-=64,A(l,0,W0,0)){for(Y0=0;Y0<c;Y0++)h[Y0]=0;return-1}for(Y0=0;Y0<c;Y0++)h[Y0]=l[Y0+64];return c}var k$=32,n6=24,e6=32,r8=16,G5=32,C=32,d=32,u=32,I=32,t=n6,x0=e6,l0=r8,W1=64,F1=32,g1=64,b1=32,Y8=64;$.lowlevel={crypto_core_hsalsa20:R,crypto_stream_xor:Z0,crypto_stream:v,crypto_stream_salsa20_xor:i,crypto_stream_salsa20:f,crypto_onetimeauth:D0,crypto_onetimeauth_verify:J0,crypto_verify_16:P,crypto_verify_32:A,crypto_secretbox:G0,crypto_secretbox_open:a,crypto_scalarmult:n,crypto_scalarmult_base:e,crypto_box_beforenm:R0,crypto_box_afternm:q0,crypto_box:H0,crypto_box_open:f0,crypto_box_keypair:t0,crypto_hash:k8,crypto_sign:f$,crypto_sign_keypair:x1,crypto_sign_open:P7,crypto_secretbox_KEYBYTES:k$,crypto_secretbox_NONCEBYTES:n6,crypto_secretbox_ZEROBYTES:e6,crypto_secretbox_BOXZEROBYTES:r8,crypto_scalarmult_BYTES:G5,crypto_scalarmult_SCALARBYTES:C,crypto_box_PUBLICKEYBYTES:d,crypto_box_SECRETKEYBYTES:u,crypto_box_BEFORENMBYTES:I,crypto_box_NONCEBYTES:t,crypto_box_ZEROBYTES:x0,crypto_box_BOXZEROBYTES:l0,crypto_sign_BYTES:W1,crypto_sign_PUBLICKEYBYTES:F1,crypto_sign_SECRETKEYBYTES:g1,crypto_sign_SEEDBYTES:b1,crypto_hash_BYTES:Y8,gf:G,D:w,L:S8,pack25519:d0,unpack25519:U0,M:N0,A:C0,S:Q0,Z:T0,pow2523:V0,add:_6,set25519:A0,modL:V8,scalarmult:J9,scalarbase:T9};function u1(h,l){if(h.length!==k$)throw Error("bad key size");if(l.length!==n6)throw Error("bad nonce size")}function z$(h,l){if(h.length!==d)throw Error("bad public key size");if(l.length!==u)throw Error("bad secret key size")}function Y$(){for(var h=0;h<arguments.length;h++)if(!(arguments[h]instanceof Uint8Array))throw TypeError("unexpected type, use Uint8Array")}function y$(h){for(var l=0;l<h.length;l++)h[l]=0}$.randomBytes=function(h){var l=new Uint8Array(h);return X(l,h),l},$.secretbox=function(h,l,c){Y$(h,l,c),u1(c,l);var r=new Uint8Array(e6+h.length),Y0=new Uint8Array(r.length);for(var W0=0;W0<h.length;W0++)r[W0+e6]=h[W0];return G0(Y0,r,r.length,l,c),Y0.subarray(r8)},$.secretbox.open=function(h,l,c){Y$(h,l,c),u1(c,l);var r=new Uint8Array(r8+h.length),Y0=new Uint8Array(r.length);for(var W0=0;W0<h.length;W0++)r[W0+r8]=h[W0];if(r.length<32)return null;if(a(Y0,r,r.length,l,c)!==0)return null;return Y0.subarray(e6)},$.secretbox.keyLength=k$,$.secretbox.nonceLength=n6,$.secretbox.overheadLength=r8,$.scalarMult=function(h,l){if(Y$(h,l),h.length!==C)throw Error("bad n size");if(l.length!==G5)throw Error("bad p size");var c=new Uint8Array(G5);return n(c,h,l),c},$.scalarMult.base=function(h){if(Y$(h),h.length!==C)throw Error("bad n size");var l=new Uint8Array(G5);return e(l,h),l},$.scalarMult.scalarLength=C,$.scalarMult.groupElementLength=G5,$.box=function(h,l,c,r){var Y0=$.box.before(c,r);return $.secretbox(h,l,Y0)},$.box.before=function(h,l){Y$(h,l),z$(h,l);var c=new Uint8Array(I);return R0(c,h,l),c},$.box.after=$.secretbox,$.box.open=function(h,l,c,r){var Y0=$.box.before(c,r);return $.secretbox.open(h,l,Y0)},$.box.open.after=$.secretbox.open,$.box.keyPair=function(){var h=new Uint8Array(d),l=new Uint8Array(u);return t0(h,l),{publicKey:h,secretKey:l}},$.box.keyPair.fromSecretKey=function(h){if(Y$(h),h.length!==u)throw Error("bad secret key size");var l=new Uint8Array(d);return e(l,h),{publicKey:l,secretKey:new Uint8Array(h)}},$.box.publicKeyLength=d,$.box.secretKeyLength=u,$.box.sharedKeyLength=I,$.box.nonceLength=t,$.box.overheadLength=$.secretbox.overheadLength,$.sign=function(h,l){if(Y$(h,l),l.length!==g1)throw Error("bad secret key size");var c=new Uint8Array(W1+h.length);return f$(c,h,h.length,l),c},$.sign.open=function(h,l){if(Y$(h,l),l.length!==F1)throw Error("bad public key size");var c=new Uint8Array(h.length),r=P7(c,h,h.length,l);if(r<0)return null;var Y0=new Uint8Array(r);for(var W0=0;W0<Y0.length;W0++)Y0[W0]=c[W0];return Y0},$.sign.detached=function(h,l){var c=$.sign(h,l),r=new Uint8Array(W1);for(var Y0=0;Y0<r.length;Y0++)r[Y0]=c[Y0];return r},$.sign.detached.verify=function(h,l,c){if(Y$(h,l,c),l.length!==W1)throw Error("bad signature size");if(c.length!==F1)throw Error("bad public key size");var r=new Uint8Array(W1+h.length),Y0=new Uint8Array(W1+h.length),W0;for(W0=0;W0<W1;W0++)r[W0]=l[W0];for(W0=0;W0<h.length;W0++)r[W0+W1]=h[W0];return P7(Y0,r,r.length,c)>=0},$.sign.keyPair=function(){var h=new Uint8Array(F1),l=new Uint8Array(g1);return x1(h,l),{publicKey:h,secretKey:l}},$.sign.keyPair.fromSecretKey=function(h){if(Y$(h),h.length!==g1)throw Error("bad secret key size");var l=new Uint8Array(F1);for(var c=0;c<l.length;c++)l[c]=h[32+c];return{publicKey:l,secretKey:new Uint8Array(h)}},$.sign.keyPair.fromSeed=function(h){if(Y$(h),h.length!==b1)throw Error("bad seed size");var l=new Uint8Array(F1),c=new Uint8Array(g1);for(var r=0;r<32;r++)c[r]=h[r];return x1(l,c,!0),{publicKey:l,secretKey:c}},$.sign.publicKeyLength=F1,$.sign.secretKeyLength=g1,$.sign.seedLength=b1,$.sign.signatureLength=W1,$.hash=function(h){Y$(h);var l=new Uint8Array(Y8);return k8(l,h,h.length),l},$.hash.hashLength=Y8,$.verify=function(h,l){if(Y$(h,l),h.length===0||l.length===0)return!1;if(h.length!==l.length)return!1;return j(h,0,l,0,h.length)===0?!0:!1},$.setPRNG=function(h){X=h},function(){var h=typeof globalThis<"u"?globalThis.crypto||globalThis.msCrypto:null;if(h&&h.getRandomValues){var l=65536;$.setPRNG(function(c,r){var Y0,W0=new Uint8Array(r);for(Y0=0;Y0<r;Y0+=l)h.getRandomValues(W0.subarray(Y0,Y0+Math.min(r-Y0,l)));for(Y0=0;Y0<r;Y0++)c[Y0]=W0[Y0];y$(W0)})}else if(h=c0("crypto"),h&&h.randomBytes)$.setPRNG(function(c,r){var Y0,W0=h.randomBytes(r);for(Y0=0;Y0<r;Y0++)c[Y0]=W0[Y0];y$(W0)})}()})(typeof fg<"u"&&KZZ?KZZ:globalThis.nacl=globalThis.nacl||{});zC=typeof fg<"u"&&KZZ?KZZ:globalThis.nacl,U64={fromSeed:zC.sign.keyPair.fromSeed,sign:zC.sign.detached,verify:zC.sign.detached.verify,randomBytes:zC.randomBytes,scalarBaseMultiply:zC.scalarMult.base,seal:zC.box,open:zC.box.open};H64=new Uint16Array([0,4129,8258,12387,16516,20645,24774,28903,33032,37161,41290,45419,49548,53677,57806,61935,4657,528,12915,8786,21173,17044,29431,25302,37689,33560,45947,41818,54205,50076,62463,58334,9314,13379,1056,5121,25830,29895,17572,21637,42346,46411,34088,38153,58862,62927,50604,54669,13907,9842,5649,1584,30423,26358,22165,18100,46939,42874,38681,34616,63455,59390,55197,51132,18628,22757,26758,30887,2112,6241,10242,14371,51660,55789,59790,63919,35144,39273,43274,47403,23285,19156,31415,27286,6769,2640,14899,10770,56317,52188,64447,60318,39801,35672,47931,43802,27814,31879,19684,23749,11298,15363,3168,7233,60846,64911,52716,56781,44330,48395,36200,40265,32407,28342,24277,20212,15891,11826,7761,3696,65439,61374,57309,53244,48923,44858,40793,36728,37256,33193,45514,41451,53516,49453,61774,57711,4224,161,12482,8419,20484,16421,28742,24679,33721,37784,41979,46042,49981,54044,58239,62302,689,4752,8947,13010,16949,21012,25207,29270,46570,42443,38312,34185,62830,58703,54572,50445,13538,9411,5280,1153,29798,25671,21540,17413,42971,47098,34713,38840,59231,63358,50973,55100,9939,14066,1681,5808,26199,30326,17941,22068,55628,51565,63758,59695,39368,35305,47498,43435,22596,18533,30726,26663,6336,2273,14466,10403,52093,56156,60223,64286,35833,39896,43963,48026,19061,23124,27191,31254,2801,6864,10931,14994,64814,60687,56684,52557,48554,44427,40424,36297,31782,27655,23652,19525,15522,11395,7392,3265,61215,65342,53085,57212,44955,49082,36825,40952,28183,32310,20053,24180,11923,16050,3793,7920]);d$=class d$ extends Error{name;code;chainedError;constructor($,Z){super($);this.name="NKeysError",this.code=$,this.chainedError=Z}};(function($){$.InvalidPrefixByte="nkeys: invalid prefix byte",$.InvalidKey="nkeys: invalid key",$.InvalidPublicKey="nkeys: invalid public key",$.InvalidSeedLen="nkeys: invalid seed length",$.InvalidSeed="nkeys: invalid seed",$.InvalidCurveSeed="nkeys: invalid curve seed",$.InvalidCurveKey="nkeys: not a valid curve key",$.InvalidCurveOperation="nkeys: curve key is not valid for sign/verify",$.InvalidNKeyOperation="keys: only curve key can seal/open",$.InvalidEncoding="nkeys: invalid encoded key",$.InvalidRecipient="nkeys: not a valid recipient public curve key",$.InvalidEncrypted="nkeys: encrypted input is not valid",$.CannotSign="nkeys: cannot sign, no private key available",$.PublicKeyOnly="nkeys: no seed or private key available",$.InvalidChecksum="nkeys: invalid checksum",$.SerializationError="nkeys: serialization error",$.ApiError="nkeys: api error",$.ClearedPair="nkeys: pair is cleared"})(u$||(u$={}));(function($){$[$.Unknown=-1]="Unknown",$[$.Seed=144]="Seed",$[$.Private=120]="Private",$[$.Operator=112]="Operator",$[$.Server=104]="Server",$[$.Cluster=16]="Cluster",$[$.Account=0]="Account",$[$.User=160]="User",$[$.Curve=184]="Curve"})(Z6||(Z6={}));jC=[120,107,118,49];F64(U64);(function($){$.v1="ed25519",$.v2="ed25519-nkey"})(_J||(_J={}))});function J81($){try{$?.clear?.()}catch{}}async function MC$({accountJwt:$,accountSigningKey:Z,expiresAt:G,permissions:X,userId:Y,allowedConnectionTypes:Q=["WEBSOCKET"]}){let J=IC$($),W=Y81(J.sub),K=Q81(new TextEncoder().encode(Z)),w=jC$();try{let U=await TC$(Y,w,W,{pub:{allow:X.publish.allow},sub:{allow:X.subscribe.allow},allowed_connection_types:Q},{algorithm:_J.v2,exp:Math.floor(G.getTime()/1000),signer:K});return new TextDecoder().decode(RC$(U,w))}finally{J81(w),J81(K),J81(W)}}var kC$=O(()=>{qC$()});function T64($){return/^wss?:\/\//i.test($.trim())?["WEBSOCKET"]:["STANDARD","WEBSOCKET"]}function SC$(){let $=new V1;return $.post("/links/session",async(Z)=>{let X=Z.get("studioContext").auth?.user?.id;if(!X)return Z.json({error:"Unauthorized"},401);let Y=O1();if(!Y.natsTunnelPublicEnabled)return Z.json(W81(),503);if(!Y.natsPublicUrl)return Z.json(W81(),503);if(!Y.natsAccountJwt||!Y.natsAccountSigningKey){if(!Y.localMode)return Z.json(W81(),503)}let Q=CJ(X),J;if(Y.natsAccountJwt&&Y.natsAccountSigningKey){let W=new Date(Date.now()+Y.natsTunnelSessionTtlSeconds*1000);J=await MC$({accountJwt:Y.natsAccountJwt,accountSigningKey:Y.natsAccountSigningKey,expiresAt:W,permissions:OC$(Q),userId:X,allowedConnectionTypes:T64(Y.natsPublicUrl)})}return Z.json(DC$({publicUrl:Y.natsPublicUrl,userId:X,ttlSeconds:Y.natsTunnelSessionTtlSeconds,credentials:J}))}),$}var W81=()=>({error:"link session unavailable"});var VC$=O(()=>{Y6();F8();EC$();kC$()});async function q64($,Z){try{return!await $.alive(Z)}catch(G){return console.warn(`[vm-events] alive probe failed for ${Z}; assuming alive: ${G instanceof Error?G.message:String(G)}`),!1}}async function M64($){let{ctx:Z,runner:G,claimName:X,userId:Y,projectRef:Q,sandboxProviderKind:J}=$;try{await G.delete(X)}catch(W){console.warn(`[vm-events] runner.delete failed for ${X}: ${W instanceof Error?W.message:String(W)}`)}try{await new kN(Z.db).delete({userId:Y,projectRef:Q},J)}catch(W){console.warn(`[vm-events] sandbox_runner_state delete failed for ${Y}/${Q}/${J}: ${W instanceof Error?W.message:String(W)}`)}}async function k64($){let{stream:Z,claimName:G,runner:X,signal:Y}=$;return new Promise((Q)=>{let J=!1,W=!1,K=null,w=(H)=>{if(J)return;J=!0,clearTimeout(U),Y.removeEventListener("abort",F),K?.unsubscribe(),Q(H)},U=setTimeout(()=>{if(W||J)return;Z.writeSSE({event:"phase",data:JSON.stringify({kind:"failed",reason:"claim-never-created",message:"Sandbox claim was never created. The SANDBOX_START call may have failed earlier \u2014 check the start error."})}).catch(()=>{}),w(!1)},I64),F=()=>w(!1);Y.addEventListener("abort",F,{once:!0}),K=on(X,G,(H)=>{if(J)return;if(H.kind!=="claiming")W=!0;if(Z.writeSSE({event:"phase",data:JSON.stringify(H)}).catch(()=>{}),H.kind==="ready")w(!0);else if(H.kind==="failed")w(!1)})})}async function S64($){let{stream:Z,runner:G,claimName:X,signal:Y}=$,Q=Date.now(),J=null;while(!Y.aborted){let K=null;try{K=await G.proxyDaemonRequest(X,"/_sandbox/events",{method:"GET",headers:new Headers({accept:"text/event-stream"}),body:null,signal:Y})}catch(w){if(Y.aborted)return;if(Date.now()-Q<CC$){await D8(_C$,{signal:Y}).catch(()=>{});continue}let U=w instanceof Error?w.message:String(w);await Z.writeSSE({event:"phase",data:JSON.stringify({kind:"failed",reason:"unknown",message:`Upstream daemon SSE error: ${U}`})}).catch(()=>{});return}if(K.status===404){try{await K.body?.cancel()}catch{}if(Date.now()-Q<CC$){await D8(_C$,{signal:Y}).catch(()=>{});continue}await Z.writeSSE({event:"gone",data:""}).catch(()=>{});return}if(!K.ok||!K.body){try{await K.body?.cancel()}catch{}await Z.writeSSE({event:"phase",data:JSON.stringify({kind:"failed",reason:"unknown",message:`Upstream daemon SSE failed (${K.status}).`})}).catch(()=>{});return}J=K;break}if(!J||!J.body)return;let W=J.body.getReader();try{while(!Y.aborted){let{value:K,done:w}=await W.read();if(w)break;if(K)await Z.write(K)}}catch{}finally{try{W.releaseLock()}catch{}}}var I64=90000,R64=15000,bC$=()=>{let $=new V1;return $.get("/",async(Z)=>{let G=Z.var.studioContext;try{M0(G)}catch{return Z.json({error:"Unauthorized"},401)}let X=y1(G);if(!X)return Z.json({error:"Unauthorized"},401);let Y;try{Y=O0(G)}catch{return Z.json({error:"Organization scope required"},403)}let Q=Z.req.query("virtualMcpId"),J=Z.req.query("branch");if(!Q||!J)return Z.json({error:"virtualMcpId and branch are required"},400);let W=await G.storage.virtualMcps.findById(Q);if(!W||W.organization_id!==Y.id)return Z.json({error:"Virtual MCP not found"},404);let K=ZU({orgId:Y.id,virtualMcpId:Q,branch:J}),w=Gg({userId:X,projectRef:K},J),U=W.metadata??null,F,H=null,N=null;try{let E=await bY(G,{userId:X,branch:J,virtualMcpMetadata:U});F=E.provider,H=E.kind}catch(E){N=E instanceof Error?E:Error(String(E)),F=null}let B=H&&mW(F5(U),X,J,H),D=!!B&&B.sandboxHandle===w;if(!F)return tQ(Z,async(E)=>{await E.writeSSE({event:"phase",data:JSON.stringify({kind:"failed",reason:"unknown",message:N?.message??"No sandbox runner configured on this studio instance."})})});return Z.header("X-Accel-Buffering","no"),Z.header("Content-Encoding","identity"),tQ(Z,async(E)=>{let L=new AbortController,z=setInterval(()=>{E.writeSSE({event:"keepalive",data:""}).catch(()=>{clearInterval(z)})},R64);E.onAbort(()=>{L.abort(),clearInterval(z)});try{if(D&&H){if(await q64(F,w)){await M64({ctx:G,runner:F,claimName:w,userId:X,projectRef:K,sandboxProviderKind:H}),await E.writeSSE({event:"gone",data:""}).catch(()=>{});return}}if(!await k64({stream:E,claimName:w,runner:F,signal:L.signal})||L.signal.aborted)return;await S64({stream:E,runner:F,claimName:w,signal:L.signal})}finally{clearInterval(z)}})}),$},CC$=60000,_C$=500;var fC$=O(()=>{Y6();LC();kY();l5();_E0();an();PV();n90();qX()});function C64($){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 _64($,Z){let G=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(V64)});if(!G.ok){let X=await G.text().catch(()=>G.statusText);throw console.error(`[deco-apps] Supabase error (${G.status}): ${X.slice(0,200)}`),Error(`External service error (${G.status})`)}return await G.json()}var V64=1e4,b64=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},xC$=()=>{let $=new V1;return $.use("*",b64),$.get("/",async(Z)=>{let G=O1(),X=G.decoSupabaseUrl,Y=G.decoSupabaseServiceKey;if(!X||!Y)return Z.json({apps:[]});try{let Q=await _64(X,Y);return Z.json({apps:C64(Q)})}catch(Q){return console.error("[deco-apps] GET error:",Q),Z.json({error:"Failed to fetch apps"},502)}}),$};var vC$=O(()=>{Y6();F8()});import{z as h1}from"zod";function zK($,Z="invalid_request_error",G=null,X=null){return{error:{message:$,type:Z,param:G,code:X}}}function l64($){if(!$)return null;let Z=$.indexOf(":");if(Z===-1)return{credentialId:null,modelId:$};let G=$.substring(0,Z),X=$.substring(Z+1);if(!G||!X)return null;return{credentialId:G,modelId:X}}function m64($,Z,G){try{return JSON.parse($)}catch{throw new hC$(`Invalid JSON in tool call arguments for function '${G}' (tool_call_id: ${Z}): ${$}`)}}function i64($){let Z={};for(let G of $)if(G.role==="assistant"&&G.tool_calls)for(let X of G.tool_calls)Z[X.id]=X.function.name;return $.map((G)=>{switch(G.role){case"system":return{role:"system",content:G.content};case"user":if(typeof G.content==="string")return{role:"user",content:G.content};return{role:"user",content:G.content.map((Y)=>{if(Y.type==="text")return{type:"text",text:Y.text};return{type:"image",image:Y.image_url.url}})};case"assistant":if(G.tool_calls&&G.tool_calls.length>0)return{role:"assistant",content:G.tool_calls.map((Y)=>({type:"tool-call",toolCallId:Y.id,toolName:Y.function.name,input:m64(Y.function.arguments,Y.id,Y.function.name)}))};return{role:"assistant",content:G.content??""};case"tool":let X=Z[G.tool_call_id]??"unknown";return{role:"tool",content:[{type:"tool-result",toolCallId:G.tool_call_id,toolName:X,output:{type:"text",value:G.content}}]}}})}function n64($){let Z=$.map((G)=>{let X=G.function.parameters?DY(G.function.parameters):DY({type:"object",properties:{}});return[G.function.name,x$({description:G.function.description,inputSchema:X})]});return Object.fromEntries(Z)}function p64($){if(!$)return;return{openai:{response_format:$}}}function t64(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function yC$($,Z,G,X,Y,Q){let J={model:$,messages:Z,tools:G,temperature:X.temperature,maxTokens:X.max_tokens,topP:X.top_p,frequencyPenalty:X.frequency_penalty,presencePenalty:X.presence_penalty,stopSequences:X.stop?Array.isArray(X.stop)?X.stop:[X.stop]:void 0,abortSignal:Q};return Y?{...J,providerOptions:Y}:J}function gC$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var f64=256,x64,v64,y64,g64,h64,c64,u64,d64,hC$,cC$,uC$;var dC$=O(()=>{L6();Y6();LC();x64=h1.object({type:h1.literal("function"),function:h1.object({name:h1.string(),description:h1.string().optional(),parameters:h1.record(h1.string(),h1.unknown()).optional()})}),v64=h1.object({id:h1.string(),type:h1.literal("function"),function:h1.object({name:h1.string(),arguments:h1.string()})}),y64=h1.discriminatedUnion("role",[h1.object({role:h1.literal("system"),content:h1.string(),name:h1.string().optional()}),h1.object({role:h1.literal("user"),content:h1.union([h1.string(),h1.array(h1.union([h1.object({type:h1.literal("text"),text:h1.string()}),h1.object({type:h1.literal("image_url"),image_url:h1.object({url:h1.string(),detail:h1.string().optional()})})]))]),name:h1.string().optional()}),h1.object({role:h1.literal("assistant"),content:h1.string().nullable().optional(),name:h1.string().optional(),tool_calls:h1.array(v64).optional()}),h1.object({role:h1.literal("tool"),content:h1.string(),tool_call_id:h1.string()})]),g64=h1.object({type:h1.literal("text")}),h64=h1.object({type:h1.literal("json_object")}),c64=h1.object({type:h1.literal("json_schema"),json_schema:h1.object({name:h1.string(),description:h1.string().optional(),schema:h1.record(h1.string(),h1.unknown()),strict:h1.boolean().optional()})}),u64=h1.union([g64,h64,c64]),d64=h1.object({model:h1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:h1.array(y64),stream:h1.boolean().optional().default(!1),temperature:h1.number().min(0).max(2).optional(),max_tokens:h1.number().positive().optional(),top_p:h1.number().min(0).max(1).optional(),frequency_penalty:h1.number().min(-2).max(2).optional(),presence_penalty:h1.number().min(-2).max(2).optional(),stop:h1.union([h1.string(),h1.array(h1.string())]).optional(),tools:h1.array(x64).optional(),tool_choice:h1.union([h1.literal("auto"),h1.literal("none"),h1.literal("required"),h1.object({type:h1.literal("function"),function:h1.object({name:h1.string()})})]).optional(),response_format:u64.optional(),user:h1.string().optional()});hC$=class hC$ extends Error{constructor($){super($);this.name="MessageConversionError"}};cC$=new V1;cC$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),G=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(zK("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(zK("Organization context is required. Ensure your API key has organization metadata.","invalid_request_error","organization"),400);if((Z.organization.slug??Z.organization.id)!==G)return $.json(zK("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let X=await $.req.json(),Y=d64.safeParse(X);if(!Y.success){let E=Y.error.issues[0]??{message:"Invalid request",path:[]};return $.json(zK(`Invalid request: ${E.message}`,"invalid_request_error",E.path.length>0?E.path.join("."):null),400)}let Q=Y.data,J=l64(Q.model);if(!J)return $.json(zK("Invalid model format. Expected 'model_id' or 'credential_id:model_id' (e.g., 'claude-sonnet-4-6' or 'key_abc123:claude-sonnet-4-6')","invalid_request_error","model"),400);let{credentialId:W}=J,{modelId:K}=J;if(!W){let E=await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id});if(E.length===0)return $.json(zK("No AI provider credentials configured for this organization. Add a credential in settings or specify one explicitly via 'credential_id:model_id'.","invalid_request_error","model"),400);W=E[0].id}let w;try{w=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json(zK(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let U=w.aiSdk.languageModel(K),F=i64(Q.messages),H=Q.tools?n64(Q.tools):void 0,N=p64(Q.response_format),B=t64(),D=Math.floor(Date.now()/1000);if(Q.stream)return tQ($,async(E)=>{let L=yC$(U,F,H,Q,N,$.req.raw.signal);try{let z=bQ(L),j=!1,P=0,A="",M=async()=>{if(A.length===0)return;let S=A;A="",await E.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:D,model:Q.model,choices:[{index:0,delta:{content:S},finish_reason:null}]})})};for await(let S of z.fullStream){if(!j&&(S.type==="text-delta"||S.type==="tool-call"))await E.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:D,model:Q.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),j=!0;if(S.type==="text-delta"){if(A+=S.text,A.length>=f64)await M()}else if(S.type==="tool-call"){await M();let R=P++;await E.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:D,model:Q.model,choices:[{index:0,delta:{tool_calls:[{index:R,id:S.toolCallId,type:"function",function:{name:S.toolName,arguments:JSON.stringify(S.input)}}]},finish_reason:null}]})})}else if(S.type==="finish")await M(),await E.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:D,model:Q.model,choices:[{index:0,delta:{},finish_reason:gC$(S.finishReason)}],usage:S.totalUsage?{prompt_tokens:S.totalUsage.inputTokens??0,completion_tokens:S.totalUsage.outputTokens??0,total_tokens:S.totalUsage.totalTokens??0}:void 0})})}await M(),await E.writeSSE({data:"[DONE]"})}catch(z){let j=z;console.error("[openai-compat:stream] Error:",j.message),await E.writeSSE({data:JSON.stringify({error:{message:j.message,type:"server_error"}})})}});else{let E=yC$(U,F,H,Q,N,$.req.raw.signal),L=await DN(E),z={role:"assistant",content:L.text||null};if(L.toolCalls&&L.toolCalls.length>0)z.tool_calls=L.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:D,model:Q.model,choices:[{index:0,message:z,finish_reason:gC$(L.finishReason)}],usage:{prompt_tokens:L.usage?.inputTokens??0,completion_tokens:L.usage?.outputTokens??0,total_tokens:L.usage?.totalTokens??0}})}}catch(X){let Y=X;if(Y.name==="AbortError")return $.json(zK("Request aborted","invalid_request_error"),400);if(Y.name==="MessageConversionError")return $.json(zK(Y.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",Y.message,Y.stack),$.json(zK(Y.message,"server_error"),500)}});uC$=cC$});var mC$;var lC$=O(()=>{mC$={name:"decocms",version:"4.83.0",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/mesh"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:'bun run migrate && concurrently "bun run dev:client" "bun run dev:server"',"dev:servers":'concurrently "bun run dev:client" "bun run dev:server"',"dev:client":"vite dev","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts","build:client":"bun --bun vite build","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","db:migrate":"bun run ./dist/server/migrate.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts",test:"bun test","test:ct":"playwright test -c playwright-ct.config.ts","test:ct:ui":"playwright test -c playwright-ct.config.ts --ui","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts","smoke:link":"bun run scripts/smoke-link.ts",prepublishOnly:"bun run build:client && bun run build:server"},optionalDependencies:{"@anthropic-ai/claude-agent-sdk":"^0.3.181","@duckdb/node-api":"^1.5.0-r.1","@openai/codex":"0.144.3","@openai/codex-darwin-arm64":"npm:@openai/codex@0.144.3-darwin-arm64","@openai/codex-darwin-x64":"npm:@openai/codex@0.144.3-darwin-x64","@openai/codex-linux-arm64":"npm:@openai/codex@0.144.3-linux-arm64","@openai/codex-linux-x64":"npm:@openai/codex@0.144.3-linux-x64","@openai/codex-win32-arm64":"npm:@openai/codex@0.144.3-win32-arm64","@openai/codex-win32-x64":"npm:@openai/codex@0.144.3-win32-x64"},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","@dnd-kit/core":"^6.3.1","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@inkjs/ui":"^2.0.0","@modelcontextprotocol/ext-apps":"^1.7.1","@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","@tanstack/react-virtual":"3.13.24","@tiptap/extension-text-align":"3.20.2","@xterm/addon-fit":"^0.11.0","@xterm/xterm":"^6.0.0",echarts:"^5.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","node-pty":"^1.0.0","posthog-js":"^1.371.1","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6","use-stick-to-bottom":"^1.1.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@ai-sdk/react":"^3.0.210","@better-auth/sso":"1.4.1","@daveyplate/better-auth-ui":"^3.2.7","@deco/ui":"workspace:*","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/harness":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/mesh-sdk":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/std":"workspace:*","@decocms/tunnel":"workspace:*","@floating-ui/react":"^0.27.16","@happy-dom/global-registrator":"^20.9.0","@hookform/resolvers":"^5.2.2","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@monaco-editor/react":"^4.7.0","@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","@playwright/experimental-ct-react":"1.59.1","@playwright/test":"^1.58.2","@radix-ui/react-avatar":"^1.1.10","@radix-ui/react-checkbox":"^1.3.3","@radix-ui/react-dialog":"^1.1.15","@radix-ui/react-dropdown-menu":"^2.1.16","@radix-ui/react-label":"^2.1.7","@radix-ui/react-select":"^2.2.6","@radix-ui/react-separator":"^1.1.7","@radix-ui/react-slot":"^1.2.3","@radix-ui/react-tabs":"^1.1.13","@rjsf/shadcn":"^6.6.2","@rjsf/utils":"^6.6.2","@rjsf/validator-ajv8":"^6.6.2","@tailwindcss/vite":"^4.1.17","@tanstack/react-query":"5.100.10","@tanstack/react-router":"1.169.2","@testing-library/jest-dom":"^6.9.1","@testing-library/react":"^16.3.2","@tiptap/core":"3.20.2","@tiptap/extension-placeholder":"3.20.2","@tiptap/pm":"3.20.2","@tiptap/react":"3.20.2","@tiptap/starter-kit":"3.20.2","@tiptap/suggestion":"3.20.2","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@untitledui/icons":"^0.0.19","@vercel/nft":"^1.1.1","@vitejs/plugin-react":"^5.1.0",ai:"^6.0.208","babel-plugin-react-compiler":"^1.0.0","better-auth":"1.4.22","class-variance-authority":"^0.7.1",clsx:"^2.1.1",concurrently:"^9.2.1",croner:"^9.1.0","date-fns":"^4.1.0",degit:"^2.8.4",hono:"^4.10.7","input-otp":"^1.4.2",jose:"^6.0.11","lucide-react":"^0.468.0",marked:"^15.0.6",nanoid:"^5.1.6",pg:"^8.16.3",prettier:"^3.4.2","react-hook-form":"^7.66.0","react-markdown":"^10.1.0","react-resizable-panels":"^2.1.7","react-syntax-highlighter":"^15.6.1",recharts:"^3.6.0","rehype-raw":"^7.0.0","remark-gfm":"^4.0.0","sass-embedded":"^1.97.2",sonner:"^2.0.7","tailwind-merge":"^3.3.1",tailwindcss:"^4.1.17",typescript:"^5.9.3",vite:"^7.2.1","vite-tsconfig-paths":"^5.1.4",zod:"^4.0.0"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","mesh","tools"],license:"MIT",publishConfig:{access:"public"}}});function a64(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??o64}}var iC$,o64="https://ph.studio.decocms.com",nC$;var pC$=O(()=>{Y6();$f0();nN();BG();F8();F01();lC$();iC$=new V1;iC$.get("/",($)=>{let Z={version:mC$.version,theme:Pb1(),...oO().logo&&{logo:oO().logo},...yQ()&&{internalUrl:Z00()},...O1().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!O1().firecrawlApiKey,auth:FR$(),posthog:a64(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:!yQ()&&O1().sandboxProviderKind==="agent-sandbox"}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});nC$=iC$});function iL0($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function rC$($){return(iL0($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((G)=>G.charAt(0).toUpperCase()+G.slice(1)).join(" ")}function oC$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(iL0($))}&sz=${Z}`}function tC$($,Z){let G=$.trim();if(G.length<=Z)return G;let X=G.slice(0,Z-1),Y=X.lastIndexOf(" ");return`${(Y>Z*0.6?X.slice(0,Y):X).trimEnd()}\u2026`}function aC$($){let{brand:Z,domain:G,score:X,verdict:Y}=$,Q=typeof X==="number"?`${Z} commerce report \u2014 ${Math.round(X)}/100 \xB7 decocms`:`${Z} commerce report \xB7 decocms`,J=`See the full ${Z} scorecard \u2014 SEO, performance, conversion & AEO signals scored by decocms.`,W=Y?.trim()?tC$(`${Y.trim().replace(/\s+/g," ")} \u2014 ${J}`,200):tC$(`How does ${G} really perform? ${J}`,200);return{title:Q,description:W}}import{join as s64}from"path";function yU($){return $.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""")}function e64($){let Z=iL0($),G=rC$(Z),X=oC$(Z,128),Q=`${(O1().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(Z)}`,{title:J,description:W}=aC$({brand:G,domain:Z});return[`<title>${yU(J)}</title>`,`<meta name="description" content="${yU(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="${yU(J)}" />`,`<meta property="og:description" content="${yU(W)}" />`,`<meta property="og:url" content="${yU(Q)}" />`,'<meta name="twitter:card" content="summary" />',`<meta name="twitter:title" content="${yU(J)}" />`,`<meta name="twitter:description" content="${yU(W)}" />`,`<link rel="canonical" href="${yU(Q)}" />`,`<link rel="icon" href="${yU(X)}" sizes="any" />`].join(`
|
|
2725
|
+
`;return new TextEncoder().encode(X)}var Z81,zC,U64,zC$,$81="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",H64,d$,u$,Z6,LC$=24,jC,_J;var qC$=O(()=>{(function($){$.Operator="operator",$.Account="account",$.User="user",$.Activation="activation",$.AuthorizationResponse="authorization_response"})(Z81||(Z81={}));(function($){var Z=function(h,l){this.hi=h|0,this.lo=l|0},G=function(h){var l,c=new Float64Array(16);if(h)for(l=0;l<h.length;l++)c[l]=h[l];return c},X=function(){throw Error("no PRNG")},Y=new Uint8Array(16),Q=new Uint8Array(32);Q[0]=9;var J=G(),W=G([1]),K=G([56129,1]),w=G([30883,4953,19914,30187,55467,16705,2637,112,59544,30585,16505,36039,65139,11119,27886,20995]),U=G([61785,9906,39828,60374,45398,33411,5274,224,53552,61171,33010,6542,64743,22239,55772,9222]),F=G([54554,36645,11616,51542,42930,38181,51040,26924,56412,64982,57905,49316,21502,52590,14035,8553]),H=G([26200,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214,26214]),N=G([41136,18958,6951,50414,58488,44335,6150,12099,55207,15867,153,11085,57099,20417,9344,11139]);function B(h,l){return h<<l|h>>>32-l}function D(h,l){var c=h[l+3]&255;return c=c<<8|h[l+2]&255,c=c<<8|h[l+1]&255,c<<8|h[l+0]&255}function E(h,l){var c=h[l]<<24|h[l+1]<<16|h[l+2]<<8|h[l+3],r=h[l+4]<<24|h[l+5]<<16|h[l+6]<<8|h[l+7];return new Z(c,r)}function L(h,l,c){var r;for(r=0;r<4;r++)h[l+r]=c&255,c>>>=8}function z(h,l,c){h[l]=c.hi>>24&255,h[l+1]=c.hi>>16&255,h[l+2]=c.hi>>8&255,h[l+3]=c.hi&255,h[l+4]=c.lo>>24&255,h[l+5]=c.lo>>16&255,h[l+6]=c.lo>>8&255,h[l+7]=c.lo&255}function j(h,l,c,r,Y0){var W0,b0=0;for(W0=0;W0<Y0;W0++)b0|=h[l+W0]^c[r+W0];return(1&b0-1>>>8)-1}function P(h,l,c,r){return j(h,l,c,r,16)}function A(h,l,c,r){return j(h,l,c,r,32)}function M(h,l,c,r,Y0){var W0=new Uint32Array(16),b0=new Uint32Array(16),m0=new Uint32Array(16),P0=new Uint32Array(4),S0,j0,y0;for(S0=0;S0<4;S0++)b0[5*S0]=D(r,4*S0),b0[1+S0]=D(c,4*S0),b0[6+S0]=D(l,4*S0),b0[11+S0]=D(c,16+4*S0);for(S0=0;S0<16;S0++)m0[S0]=b0[S0];for(S0=0;S0<20;S0++){for(j0=0;j0<4;j0++){for(y0=0;y0<4;y0++)P0[y0]=b0[(5*j0+4*y0)%16];P0[1]^=B(P0[0]+P0[3]|0,7),P0[2]^=B(P0[1]+P0[0]|0,9),P0[3]^=B(P0[2]+P0[1]|0,13),P0[0]^=B(P0[3]+P0[2]|0,18);for(y0=0;y0<4;y0++)W0[4*j0+(j0+y0)%4]=P0[y0]}for(y0=0;y0<16;y0++)b0[y0]=W0[y0]}if(Y0){for(S0=0;S0<16;S0++)b0[S0]=b0[S0]+m0[S0]|0;for(S0=0;S0<4;S0++)b0[5*S0]=b0[5*S0]-D(r,4*S0)|0,b0[6+S0]=b0[6+S0]-D(l,4*S0)|0;for(S0=0;S0<4;S0++)L(h,4*S0,b0[5*S0]),L(h,16+4*S0,b0[6+S0])}else for(S0=0;S0<16;S0++)L(h,4*S0,b0[S0]+m0[S0]|0)}function S(h,l,c,r){return M(h,l,c,r,!1),0}function R(h,l,c,r){return M(h,l,c,r,!0),0}var V=new Uint8Array([101,120,112,97,110,100,32,51,50,45,98,121,116,101,32,107]);function i(h,l,c,r,Y0,W0,b0){var m0=new Uint8Array(16),P0=new Uint8Array(64),S0,j0;if(!Y0)return 0;for(j0=0;j0<16;j0++)m0[j0]=0;for(j0=0;j0<8;j0++)m0[j0]=W0[j0];while(Y0>=64){S(P0,m0,b0,V);for(j0=0;j0<64;j0++)h[l+j0]=(c?c[r+j0]:0)^P0[j0];S0=1;for(j0=8;j0<16;j0++)S0=S0+(m0[j0]&255)|0,m0[j0]=S0&255,S0>>>=8;if(Y0-=64,l+=64,c)r+=64}if(Y0>0){S(P0,m0,b0,V);for(j0=0;j0<Y0;j0++)h[l+j0]=(c?c[r+j0]:0)^P0[j0]}return 0}function f(h,l,c,r,Y0){return i(h,l,null,0,c,r,Y0)}function v(h,l,c,r,Y0){var W0=new Uint8Array(32);return R(W0,r,Y0,V),f(h,l,c,r.subarray(16),W0)}function Z0(h,l,c,r,Y0,W0,b0){var m0=new Uint8Array(32);return R(m0,W0,b0,V),i(h,l,c,r,Y0,W0.subarray(16),m0)}function o(h,l){var c,r=0;for(c=0;c<17;c++)r=r+(h[c]+l[c]|0)|0,h[c]=r&255,r>>>=8}var B0=new Uint32Array([5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252]);function D0(h,l,c,r,Y0,W0){var b0,m0,P0,S0,j0=new Uint32Array(17),y0=new Uint32Array(17),o0=new Uint32Array(17),Z1=new Uint32Array(17),w1=new Uint32Array(17);for(P0=0;P0<17;P0++)y0[P0]=o0[P0]=0;for(P0=0;P0<16;P0++)y0[P0]=W0[P0];y0[3]&=15,y0[4]&=252,y0[7]&=15,y0[8]&=252,y0[11]&=15,y0[12]&=252,y0[15]&=15;while(Y0>0){for(P0=0;P0<17;P0++)Z1[P0]=0;for(P0=0;P0<16&&P0<Y0;++P0)Z1[P0]=c[r+P0];Z1[P0]=1,r+=P0,Y0-=P0,o(o0,Z1);for(m0=0;m0<17;m0++){j0[m0]=0;for(P0=0;P0<17;P0++)j0[m0]=j0[m0]+o0[P0]*(P0<=m0?y0[m0-P0]:320*y0[m0+17-P0]|0)|0|0}for(m0=0;m0<17;m0++)o0[m0]=j0[m0];S0=0;for(P0=0;P0<16;P0++)S0=S0+o0[P0]|0,o0[P0]=S0&255,S0>>>=8;S0=S0+o0[16]|0,o0[16]=S0&3,S0=5*(S0>>>2)|0;for(P0=0;P0<16;P0++)S0=S0+o0[P0]|0,o0[P0]=S0&255,S0>>>=8;S0=S0+o0[16]|0,o0[16]=S0}for(P0=0;P0<17;P0++)w1[P0]=o0[P0];o(o0,B0),b0=-(o0[16]>>>7)|0;for(P0=0;P0<17;P0++)o0[P0]^=b0&(w1[P0]^o0[P0]);for(P0=0;P0<16;P0++)Z1[P0]=W0[P0+16];Z1[16]=0,o(o0,Z1);for(P0=0;P0<16;P0++)h[l+P0]=o0[P0];return 0}function J0(h,l,c,r,Y0,W0){var b0=new Uint8Array(16);return D0(b0,0,c,r,Y0,W0),P(h,l,b0,0)}function G0(h,l,c,r,Y0){var W0;if(c<32)return-1;Z0(h,0,l,0,c,r,Y0),D0(h,16,h,32,c-32,h);for(W0=0;W0<16;W0++)h[W0]=0;return 0}function a(h,l,c,r,Y0){var W0,b0=new Uint8Array(32);if(c<32)return-1;if(v(b0,0,32,r,Y0),J0(l,16,l,32,c-32,b0)!==0)return-1;Z0(h,0,l,0,c,r,Y0);for(W0=0;W0<32;W0++)h[W0]=0;return 0}function A0(h,l){var c;for(c=0;c<16;c++)h[c]=l[c]|0}function w0(h){var l,c;for(c=0;c<16;c++)h[c]+=65536,l=Math.floor(h[c]/65536),h[(c+1)*(c<15?1:0)]+=l-1+37*(l-1)*(c===15?1:0),h[c]-=l*65536}function v0(h,l,c){var r,Y0=~(c-1);for(var W0=0;W0<16;W0++)r=Y0&(h[W0]^l[W0]),h[W0]^=r,l[W0]^=r}function d0(h,l){var c,r,Y0,W0=G(),b0=G();for(c=0;c<16;c++)b0[c]=l[c];w0(b0),w0(b0),w0(b0);for(r=0;r<2;r++){W0[0]=b0[0]-65517;for(c=1;c<15;c++)W0[c]=b0[c]-65535-(W0[c-1]>>16&1),W0[c-1]&=65535;W0[15]=b0[15]-32767-(W0[14]>>16&1),Y0=W0[15]>>16&1,W0[14]&=65535,v0(b0,W0,1-Y0)}for(c=0;c<16;c++)h[2*c]=b0[c]&255,h[2*c+1]=b0[c]>>8}function i0(h,l){var c=new Uint8Array(32),r=new Uint8Array(32);return d0(c,h),d0(r,l),A(c,0,r,0)}function n0(h){var l=new Uint8Array(32);return d0(l,h),l[0]&1}function U0(h,l){var c;for(c=0;c<16;c++)h[c]=l[2*c]+(l[2*c+1]<<8);h[15]&=32767}function C0(h,l,c){var r;for(r=0;r<16;r++)h[r]=l[r]+c[r]|0}function T0(h,l,c){var r;for(r=0;r<16;r++)h[r]=l[r]-c[r]|0}function N0(h,l,c){var r,Y0,W0=new Float64Array(31);for(r=0;r<31;r++)W0[r]=0;for(r=0;r<16;r++)for(Y0=0;Y0<16;Y0++)W0[r+Y0]+=l[r]*c[Y0];for(r=0;r<15;r++)W0[r]+=38*W0[r+16];for(r=0;r<16;r++)h[r]=W0[r];w0(h),w0(h)}function Q0(h,l){N0(h,l,l)}function X0(h,l){var c=G(),r;for(r=0;r<16;r++)c[r]=l[r];for(r=253;r>=0;r--)if(Q0(c,c),r!==2&&r!==4)N0(c,c,l);for(r=0;r<16;r++)h[r]=c[r]}function V0(h,l){var c=G(),r;for(r=0;r<16;r++)c[r]=l[r];for(r=250;r>=0;r--)if(Q0(c,c),r!==1)N0(c,c,l);for(r=0;r<16;r++)h[r]=c[r]}function n(h,l,c){var r=new Uint8Array(32),Y0=new Float64Array(80),W0,b0,m0=G(),P0=G(),S0=G(),j0=G(),y0=G(),o0=G();for(b0=0;b0<31;b0++)r[b0]=l[b0];r[31]=l[31]&127|64,r[0]&=248,U0(Y0,c);for(b0=0;b0<16;b0++)P0[b0]=Y0[b0],j0[b0]=m0[b0]=S0[b0]=0;m0[0]=j0[0]=1;for(b0=254;b0>=0;--b0)W0=r[b0>>>3]>>>(b0&7)&1,v0(m0,P0,W0),v0(S0,j0,W0),C0(y0,m0,S0),T0(m0,m0,S0),C0(S0,P0,j0),T0(P0,P0,j0),Q0(j0,y0),Q0(o0,m0),N0(m0,S0,m0),N0(S0,P0,y0),C0(y0,m0,S0),T0(m0,m0,S0),Q0(P0,m0),T0(S0,j0,o0),N0(m0,S0,K),C0(m0,m0,j0),N0(S0,S0,m0),N0(m0,j0,o0),N0(j0,P0,Y0),Q0(P0,y0),v0(m0,P0,W0),v0(S0,j0,W0);for(b0=0;b0<16;b0++)Y0[b0+16]=m0[b0],Y0[b0+32]=S0[b0],Y0[b0+48]=P0[b0],Y0[b0+64]=j0[b0];var Z1=Y0.subarray(32),w1=Y0.subarray(16);return X0(Z1,Z1),N0(w1,w1,Z1),d0(h,w1),0}function e(h,l){return n(h,l,Q)}function t0(h,l){return X(l,32),e(h,l)}function R0(h,l,c){var r=new Uint8Array(32);return n(r,c,l),R(h,Y,r,V)}var q0=G0,g=a;function H0(h,l,c,r,Y0,W0){var b0=new Uint8Array(32);return R0(b0,Y0,W0),q0(h,l,c,r,b0)}function f0(h,l,c,r,Y0,W0){var b0=new Uint8Array(32);return R0(b0,Y0,W0),g(h,l,c,r,b0)}function e0(){var h=0,l=0,c=0,r=0,Y0=65535,W0,b0,m0;for(m0=0;m0<arguments.length;m0++)W0=arguments[m0].lo,b0=arguments[m0].hi,h+=W0&Y0,l+=W0>>>16,c+=b0&Y0,r+=b0>>>16;return l+=h>>>16,c+=l>>>16,r+=c>>>16,new Z(c&Y0|r<<16,h&Y0|l<<16)}function u0(h,l){return new Z(h.hi>>>l,h.lo>>>l|h.hi<<32-l)}function T1(){var h=0,l=0,c;for(c=0;c<arguments.length;c++)h^=arguments[c].lo,l^=arguments[c].hi;return new Z(l,h)}function e1(h,l){var c,r,Y0=32-l;if(l<32)c=h.hi>>>l|h.lo<<Y0,r=h.lo>>>l|h.hi<<Y0;else if(l<64)c=h.lo>>>l|h.hi<<Y0,r=h.hi>>>l|h.lo<<Y0;return new Z(c,r)}function z6(h,l,c){var r=h.hi&l.hi^~h.hi&c.hi,Y0=h.lo&l.lo^~h.lo&c.lo;return new Z(r,Y0)}function J4(h,l,c){var r=h.hi&l.hi^h.hi&c.hi^l.hi&c.hi,Y0=h.lo&l.lo^h.lo&c.lo^l.lo&c.lo;return new Z(r,Y0)}function d5(h){return T1(e1(h,28),e1(h,34),e1(h,39))}function s(h){return T1(e1(h,14),e1(h,18),e1(h,41))}function K1(h){return T1(e1(h,1),e1(h,8),u0(h,7))}function a$(h){return T1(e1(h,19),e1(h,61),u0(h,6))}var s$=[new Z(1116352408,3609767458),new Z(1899447441,602891725),new Z(3049323471,3964484399),new Z(3921009573,2173295548),new Z(961987163,4081628472),new Z(1508970993,3053834265),new Z(2453635748,2937671579),new Z(2870763221,3664609560),new Z(3624381080,2734883394),new Z(310598401,1164996542),new Z(607225278,1323610764),new Z(1426881987,3590304994),new Z(1925078388,4068182383),new Z(2162078206,991336113),new Z(2614888103,633803317),new Z(3248222580,3479774868),new Z(3835390401,2666613458),new Z(4022224774,944711139),new Z(264347078,2341262773),new Z(604807628,2007800933),new Z(770255983,1495990901),new Z(1249150122,1856431235),new Z(1555081692,3175218132),new Z(1996064986,2198950837),new Z(2554220882,3999719339),new Z(2821834349,766784016),new Z(2952996808,2566594879),new Z(3210313671,3203337956),new Z(3336571891,1034457026),new Z(3584528711,2466948901),new Z(113926993,3758326383),new Z(338241895,168717936),new Z(666307205,1188179964),new Z(773529912,1546045734),new Z(1294757372,1522805485),new Z(1396182291,2643833823),new Z(1695183700,2343527390),new Z(1986661051,1014477480),new Z(2177026350,1206759142),new Z(2456956037,344077627),new Z(2730485921,1290863460),new Z(2820302411,3158454273),new Z(3259730800,3505952657),new Z(3345764771,106217008),new Z(3516065817,3606008344),new Z(3600352804,1432725776),new Z(4094571909,1467031594),new Z(275423344,851169720),new Z(430227734,3100823752),new Z(506948616,1363258195),new Z(659060556,3750685593),new Z(883997877,3785050280),new Z(958139571,3318307427),new Z(1322822218,3812723403),new Z(1537002063,2003034995),new Z(1747873779,3602036899),new Z(1955562222,1575990012),new Z(2024104815,1125592928),new Z(2227730452,2716904306),new Z(2361852424,442776044),new Z(2428436474,593698344),new Z(2756734187,3733110249),new Z(3204031479,2999351573),new Z(3329325298,3815920427),new Z(3391569614,3928383900),new Z(3515267271,566280711),new Z(3940187606,3454069534),new Z(4118630271,4000239992),new Z(116418474,1914138554),new Z(174292421,2731055270),new Z(289380356,3203993006),new Z(460393269,320620315),new Z(685471733,587496836),new Z(852142971,1086792851),new Z(1017036298,365543100),new Z(1126000580,2618297676),new Z(1288033470,3409855158),new Z(1501505948,4234509866),new Z(1607167915,987167468),new Z(1816402316,1246189591)];function A9(h,l,c){var r=[],Y0=[],W0=[],b0=[],m0,P0,S0;for(P0=0;P0<8;P0++)r[P0]=W0[P0]=E(h,8*P0);var j0=0;while(c>=128){for(P0=0;P0<16;P0++)b0[P0]=E(l,8*P0+j0);for(P0=0;P0<80;P0++){for(S0=0;S0<8;S0++)Y0[S0]=W0[S0];m0=e0(W0[7],s(W0[4]),z6(W0[4],W0[5],W0[6]),s$[P0],b0[P0%16]),Y0[7]=e0(m0,d5(W0[0]),J4(W0[0],W0[1],W0[2])),Y0[3]=e0(Y0[3],m0);for(S0=0;S0<8;S0++)W0[(S0+1)%8]=Y0[S0];if(P0%16===15)for(S0=0;S0<16;S0++)b0[S0]=e0(b0[S0],b0[(S0+9)%16],K1(b0[(S0+1)%16]),a$(b0[(S0+14)%16]))}for(P0=0;P0<8;P0++)W0[P0]=e0(W0[P0],r[P0]),r[P0]=W0[P0];j0+=128,c-=128}for(P0=0;P0<8;P0++)z(h,8*P0,r[P0]);return c}var dG=new Uint8Array([106,9,230,103,243,188,201,8,187,103,174,133,132,202,167,59,60,110,243,114,254,148,248,43,165,79,245,58,95,29,54,241,81,14,82,127,173,230,130,209,155,5,104,140,43,62,108,31,31,131,217,171,251,65,189,107,91,224,205,25,19,126,33,121]);function k8(h,l,c){var r=new Uint8Array(64),Y0=new Uint8Array(256),W0,b0=c;for(W0=0;W0<64;W0++)r[W0]=dG[W0];A9(r,l,c),c%=128;for(W0=0;W0<256;W0++)Y0[W0]=0;for(W0=0;W0<c;W0++)Y0[W0]=l[b0-c+W0];Y0[c]=128,c=256-128*(c<112?1:0),Y0[c-9]=0,z(Y0,c-8,new Z(b0/536870912|0,b0<<3)),A9(r,Y0,c);for(W0=0;W0<64;W0++)h[W0]=r[W0];return 0}function _6(h,l){var c=G(),r=G(),Y0=G(),W0=G(),b0=G(),m0=G(),P0=G(),S0=G(),j0=G();T0(c,h[1],h[0]),T0(j0,l[1],l[0]),N0(c,c,j0),C0(r,h[0],h[1]),C0(j0,l[0],l[1]),N0(r,r,j0),N0(Y0,h[3],l[3]),N0(Y0,Y0,U),N0(W0,h[2],l[2]),C0(W0,W0,W0),T0(b0,r,c),T0(m0,W0,Y0),C0(P0,W0,Y0),C0(S0,r,c),N0(h[0],b0,m0),N0(h[1],S0,P0),N0(h[2],P0,m0),N0(h[3],b0,S0)}function Z5(h,l,c){var r;for(r=0;r<4;r++)v0(h[r],l[r],c)}function q5(h,l){var c=G(),r=G(),Y0=G();X0(Y0,l[2]),N0(c,l[0],Y0),N0(r,l[1],Y0),d0(h,r),h[31]^=n0(c)<<7}function J9(h,l,c){var r,Y0;A0(h[0],J),A0(h[1],W),A0(h[2],W),A0(h[3],J);for(Y0=255;Y0>=0;--Y0)r=c[Y0/8|0]>>(Y0&7)&1,Z5(h,l,r),_6(l,h),_6(h,h),Z5(h,l,r)}function T9(h,l){var c=[G(),G(),G(),G()];A0(c[0],F),A0(c[1],H),A0(c[2],W),N0(c[3],F,H),J9(h,c,l)}function x1(h,l,c){var r=new Uint8Array(64),Y0=[G(),G(),G(),G()],W0;if(!c)X(l,32);k8(r,l,32),r[0]&=248,r[31]&=127,r[31]|=64,T9(Y0,r),q5(h,Y0);for(W0=0;W0<32;W0++)l[W0+32]=h[W0];return 0}var S8=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);function V8(h,l){var c,r,Y0,W0;for(r=63;r>=32;--r){c=0;for(Y0=r-32,W0=r-12;Y0<W0;++Y0)l[Y0]+=c-16*l[r]*S8[Y0-(r-32)],c=Math.floor((l[Y0]+128)/256),l[Y0]-=c*256;l[Y0]+=c,l[r]=0}c=0;for(Y0=0;Y0<32;Y0++)l[Y0]+=c-(l[31]>>4)*S8[Y0],c=l[Y0]>>8,l[Y0]&=255;for(Y0=0;Y0<32;Y0++)l[Y0]-=c*S8[Y0];for(r=0;r<32;r++)l[r+1]+=l[r]>>8,h[r]=l[r]&255}function G6(h){var l=new Float64Array(64),c;for(c=0;c<64;c++)l[c]=h[c];for(c=0;c<64;c++)h[c]=0;V8(h,l)}function f$(h,l,c,r){var Y0=new Uint8Array(64),W0=new Uint8Array(64),b0=new Uint8Array(64),m0,P0,S0=new Float64Array(64),j0=[G(),G(),G(),G()];k8(Y0,r,32),Y0[0]&=248,Y0[31]&=127,Y0[31]|=64;var y0=c+64;for(m0=0;m0<c;m0++)h[64+m0]=l[m0];for(m0=0;m0<32;m0++)h[32+m0]=Y0[32+m0];k8(b0,h.subarray(32),c+32),G6(b0),T9(j0,b0),q5(h,j0);for(m0=32;m0<64;m0++)h[m0]=r[m0];k8(W0,h,c+64),G6(W0);for(m0=0;m0<64;m0++)S0[m0]=0;for(m0=0;m0<32;m0++)S0[m0]=b0[m0];for(m0=0;m0<32;m0++)for(P0=0;P0<32;P0++)S0[m0+P0]+=W0[m0]*Y0[P0];return V8(h.subarray(32),S0),y0}function U8(h,l){var c=G(),r=G(),Y0=G(),W0=G(),b0=G(),m0=G(),P0=G();if(A0(h[2],W),U0(h[1],l),Q0(Y0,h[1]),N0(W0,Y0,w),T0(Y0,Y0,h[2]),C0(W0,h[2],W0),Q0(b0,W0),Q0(m0,b0),N0(P0,m0,b0),N0(c,P0,Y0),N0(c,c,W0),V0(c,c),N0(c,c,Y0),N0(c,c,W0),N0(c,c,W0),N0(h[0],c,W0),Q0(r,h[0]),N0(r,r,W0),i0(r,Y0))N0(h[0],h[0],N);if(Q0(r,h[0]),N0(r,r,W0),i0(r,Y0))return-1;if(n0(h[0])===l[31]>>7)T0(h[0],J,h[0]);return N0(h[3],h[0],h[1]),0}function P7(h,l,c,r){var Y0,W0=new Uint8Array(32),b0=new Uint8Array(64),m0=[G(),G(),G(),G()],P0=[G(),G(),G(),G()];if(c<64)return-1;if(U8(P0,r))return-1;for(Y0=0;Y0<c;Y0++)h[Y0]=l[Y0];for(Y0=0;Y0<32;Y0++)h[Y0+32]=r[Y0];if(k8(b0,h,c),G6(b0),J9(m0,P0,b0),T9(P0,l.subarray(32)),_6(m0,P0),q5(W0,m0),c-=64,A(l,0,W0,0)){for(Y0=0;Y0<c;Y0++)h[Y0]=0;return-1}for(Y0=0;Y0<c;Y0++)h[Y0]=l[Y0+64];return c}var k$=32,n6=24,e6=32,r8=16,G5=32,C=32,d=32,u=32,I=32,t=n6,x0=e6,l0=r8,W1=64,F1=32,g1=64,b1=32,Y8=64;$.lowlevel={crypto_core_hsalsa20:R,crypto_stream_xor:Z0,crypto_stream:v,crypto_stream_salsa20_xor:i,crypto_stream_salsa20:f,crypto_onetimeauth:D0,crypto_onetimeauth_verify:J0,crypto_verify_16:P,crypto_verify_32:A,crypto_secretbox:G0,crypto_secretbox_open:a,crypto_scalarmult:n,crypto_scalarmult_base:e,crypto_box_beforenm:R0,crypto_box_afternm:q0,crypto_box:H0,crypto_box_open:f0,crypto_box_keypair:t0,crypto_hash:k8,crypto_sign:f$,crypto_sign_keypair:x1,crypto_sign_open:P7,crypto_secretbox_KEYBYTES:k$,crypto_secretbox_NONCEBYTES:n6,crypto_secretbox_ZEROBYTES:e6,crypto_secretbox_BOXZEROBYTES:r8,crypto_scalarmult_BYTES:G5,crypto_scalarmult_SCALARBYTES:C,crypto_box_PUBLICKEYBYTES:d,crypto_box_SECRETKEYBYTES:u,crypto_box_BEFORENMBYTES:I,crypto_box_NONCEBYTES:t,crypto_box_ZEROBYTES:x0,crypto_box_BOXZEROBYTES:l0,crypto_sign_BYTES:W1,crypto_sign_PUBLICKEYBYTES:F1,crypto_sign_SECRETKEYBYTES:g1,crypto_sign_SEEDBYTES:b1,crypto_hash_BYTES:Y8,gf:G,D:w,L:S8,pack25519:d0,unpack25519:U0,M:N0,A:C0,S:Q0,Z:T0,pow2523:V0,add:_6,set25519:A0,modL:V8,scalarmult:J9,scalarbase:T9};function u1(h,l){if(h.length!==k$)throw Error("bad key size");if(l.length!==n6)throw Error("bad nonce size")}function z$(h,l){if(h.length!==d)throw Error("bad public key size");if(l.length!==u)throw Error("bad secret key size")}function Y$(){for(var h=0;h<arguments.length;h++)if(!(arguments[h]instanceof Uint8Array))throw TypeError("unexpected type, use Uint8Array")}function y$(h){for(var l=0;l<h.length;l++)h[l]=0}$.randomBytes=function(h){var l=new Uint8Array(h);return X(l,h),l},$.secretbox=function(h,l,c){Y$(h,l,c),u1(c,l);var r=new Uint8Array(e6+h.length),Y0=new Uint8Array(r.length);for(var W0=0;W0<h.length;W0++)r[W0+e6]=h[W0];return G0(Y0,r,r.length,l,c),Y0.subarray(r8)},$.secretbox.open=function(h,l,c){Y$(h,l,c),u1(c,l);var r=new Uint8Array(r8+h.length),Y0=new Uint8Array(r.length);for(var W0=0;W0<h.length;W0++)r[W0+r8]=h[W0];if(r.length<32)return null;if(a(Y0,r,r.length,l,c)!==0)return null;return Y0.subarray(e6)},$.secretbox.keyLength=k$,$.secretbox.nonceLength=n6,$.secretbox.overheadLength=r8,$.scalarMult=function(h,l){if(Y$(h,l),h.length!==C)throw Error("bad n size");if(l.length!==G5)throw Error("bad p size");var c=new Uint8Array(G5);return n(c,h,l),c},$.scalarMult.base=function(h){if(Y$(h),h.length!==C)throw Error("bad n size");var l=new Uint8Array(G5);return e(l,h),l},$.scalarMult.scalarLength=C,$.scalarMult.groupElementLength=G5,$.box=function(h,l,c,r){var Y0=$.box.before(c,r);return $.secretbox(h,l,Y0)},$.box.before=function(h,l){Y$(h,l),z$(h,l);var c=new Uint8Array(I);return R0(c,h,l),c},$.box.after=$.secretbox,$.box.open=function(h,l,c,r){var Y0=$.box.before(c,r);return $.secretbox.open(h,l,Y0)},$.box.open.after=$.secretbox.open,$.box.keyPair=function(){var h=new Uint8Array(d),l=new Uint8Array(u);return t0(h,l),{publicKey:h,secretKey:l}},$.box.keyPair.fromSecretKey=function(h){if(Y$(h),h.length!==u)throw Error("bad secret key size");var l=new Uint8Array(d);return e(l,h),{publicKey:l,secretKey:new Uint8Array(h)}},$.box.publicKeyLength=d,$.box.secretKeyLength=u,$.box.sharedKeyLength=I,$.box.nonceLength=t,$.box.overheadLength=$.secretbox.overheadLength,$.sign=function(h,l){if(Y$(h,l),l.length!==g1)throw Error("bad secret key size");var c=new Uint8Array(W1+h.length);return f$(c,h,h.length,l),c},$.sign.open=function(h,l){if(Y$(h,l),l.length!==F1)throw Error("bad public key size");var c=new Uint8Array(h.length),r=P7(c,h,h.length,l);if(r<0)return null;var Y0=new Uint8Array(r);for(var W0=0;W0<Y0.length;W0++)Y0[W0]=c[W0];return Y0},$.sign.detached=function(h,l){var c=$.sign(h,l),r=new Uint8Array(W1);for(var Y0=0;Y0<r.length;Y0++)r[Y0]=c[Y0];return r},$.sign.detached.verify=function(h,l,c){if(Y$(h,l,c),l.length!==W1)throw Error("bad signature size");if(c.length!==F1)throw Error("bad public key size");var r=new Uint8Array(W1+h.length),Y0=new Uint8Array(W1+h.length),W0;for(W0=0;W0<W1;W0++)r[W0]=l[W0];for(W0=0;W0<h.length;W0++)r[W0+W1]=h[W0];return P7(Y0,r,r.length,c)>=0},$.sign.keyPair=function(){var h=new Uint8Array(F1),l=new Uint8Array(g1);return x1(h,l),{publicKey:h,secretKey:l}},$.sign.keyPair.fromSecretKey=function(h){if(Y$(h),h.length!==g1)throw Error("bad secret key size");var l=new Uint8Array(F1);for(var c=0;c<l.length;c++)l[c]=h[32+c];return{publicKey:l,secretKey:new Uint8Array(h)}},$.sign.keyPair.fromSeed=function(h){if(Y$(h),h.length!==b1)throw Error("bad seed size");var l=new Uint8Array(F1),c=new Uint8Array(g1);for(var r=0;r<32;r++)c[r]=h[r];return x1(l,c,!0),{publicKey:l,secretKey:c}},$.sign.publicKeyLength=F1,$.sign.secretKeyLength=g1,$.sign.seedLength=b1,$.sign.signatureLength=W1,$.hash=function(h){Y$(h);var l=new Uint8Array(Y8);return k8(l,h,h.length),l},$.hash.hashLength=Y8,$.verify=function(h,l){if(Y$(h,l),h.length===0||l.length===0)return!1;if(h.length!==l.length)return!1;return j(h,0,l,0,h.length)===0?!0:!1},$.setPRNG=function(h){X=h},function(){var h=typeof globalThis<"u"?globalThis.crypto||globalThis.msCrypto:null;if(h&&h.getRandomValues){var l=65536;$.setPRNG(function(c,r){var Y0,W0=new Uint8Array(r);for(Y0=0;Y0<r;Y0+=l)h.getRandomValues(W0.subarray(Y0,Y0+Math.min(r-Y0,l)));for(Y0=0;Y0<r;Y0++)c[Y0]=W0[Y0];y$(W0)})}else if(h=c0("crypto"),h&&h.randomBytes)$.setPRNG(function(c,r){var Y0,W0=h.randomBytes(r);for(Y0=0;Y0<r;Y0++)c[Y0]=W0[Y0];y$(W0)})}()})(typeof fg<"u"&&KZZ?KZZ:globalThis.nacl=globalThis.nacl||{});zC=typeof fg<"u"&&KZZ?KZZ:globalThis.nacl,U64={fromSeed:zC.sign.keyPair.fromSeed,sign:zC.sign.detached,verify:zC.sign.detached.verify,randomBytes:zC.randomBytes,scalarBaseMultiply:zC.scalarMult.base,seal:zC.box,open:zC.box.open};H64=new Uint16Array([0,4129,8258,12387,16516,20645,24774,28903,33032,37161,41290,45419,49548,53677,57806,61935,4657,528,12915,8786,21173,17044,29431,25302,37689,33560,45947,41818,54205,50076,62463,58334,9314,13379,1056,5121,25830,29895,17572,21637,42346,46411,34088,38153,58862,62927,50604,54669,13907,9842,5649,1584,30423,26358,22165,18100,46939,42874,38681,34616,63455,59390,55197,51132,18628,22757,26758,30887,2112,6241,10242,14371,51660,55789,59790,63919,35144,39273,43274,47403,23285,19156,31415,27286,6769,2640,14899,10770,56317,52188,64447,60318,39801,35672,47931,43802,27814,31879,19684,23749,11298,15363,3168,7233,60846,64911,52716,56781,44330,48395,36200,40265,32407,28342,24277,20212,15891,11826,7761,3696,65439,61374,57309,53244,48923,44858,40793,36728,37256,33193,45514,41451,53516,49453,61774,57711,4224,161,12482,8419,20484,16421,28742,24679,33721,37784,41979,46042,49981,54044,58239,62302,689,4752,8947,13010,16949,21012,25207,29270,46570,42443,38312,34185,62830,58703,54572,50445,13538,9411,5280,1153,29798,25671,21540,17413,42971,47098,34713,38840,59231,63358,50973,55100,9939,14066,1681,5808,26199,30326,17941,22068,55628,51565,63758,59695,39368,35305,47498,43435,22596,18533,30726,26663,6336,2273,14466,10403,52093,56156,60223,64286,35833,39896,43963,48026,19061,23124,27191,31254,2801,6864,10931,14994,64814,60687,56684,52557,48554,44427,40424,36297,31782,27655,23652,19525,15522,11395,7392,3265,61215,65342,53085,57212,44955,49082,36825,40952,28183,32310,20053,24180,11923,16050,3793,7920]);d$=class d$ extends Error{name;code;chainedError;constructor($,Z){super($);this.name="NKeysError",this.code=$,this.chainedError=Z}};(function($){$.InvalidPrefixByte="nkeys: invalid prefix byte",$.InvalidKey="nkeys: invalid key",$.InvalidPublicKey="nkeys: invalid public key",$.InvalidSeedLen="nkeys: invalid seed length",$.InvalidSeed="nkeys: invalid seed",$.InvalidCurveSeed="nkeys: invalid curve seed",$.InvalidCurveKey="nkeys: not a valid curve key",$.InvalidCurveOperation="nkeys: curve key is not valid for sign/verify",$.InvalidNKeyOperation="keys: only curve key can seal/open",$.InvalidEncoding="nkeys: invalid encoded key",$.InvalidRecipient="nkeys: not a valid recipient public curve key",$.InvalidEncrypted="nkeys: encrypted input is not valid",$.CannotSign="nkeys: cannot sign, no private key available",$.PublicKeyOnly="nkeys: no seed or private key available",$.InvalidChecksum="nkeys: invalid checksum",$.SerializationError="nkeys: serialization error",$.ApiError="nkeys: api error",$.ClearedPair="nkeys: pair is cleared"})(u$||(u$={}));(function($){$[$.Unknown=-1]="Unknown",$[$.Seed=144]="Seed",$[$.Private=120]="Private",$[$.Operator=112]="Operator",$[$.Server=104]="Server",$[$.Cluster=16]="Cluster",$[$.Account=0]="Account",$[$.User=160]="User",$[$.Curve=184]="Curve"})(Z6||(Z6={}));jC=[120,107,118,49];F64(U64);(function($){$.v1="ed25519",$.v2="ed25519-nkey"})(_J||(_J={}))});function J81($){try{$?.clear?.()}catch{}}async function MC$({accountJwt:$,accountSigningKey:Z,expiresAt:G,permissions:X,userId:Y,allowedConnectionTypes:Q=["WEBSOCKET"]}){let J=IC$($),W=Y81(J.sub),K=Q81(new TextEncoder().encode(Z)),w=jC$();try{let U=await TC$(Y,w,W,{pub:{allow:X.publish.allow},sub:{allow:X.subscribe.allow},allowed_connection_types:Q},{algorithm:_J.v2,exp:Math.floor(G.getTime()/1000),signer:K});return new TextDecoder().decode(RC$(U,w))}finally{J81(w),J81(K),J81(W)}}var kC$=O(()=>{qC$()});function T64($){return/^wss?:\/\//i.test($.trim())?["WEBSOCKET"]:["STANDARD","WEBSOCKET"]}function SC$(){let $=new V1;return $.post("/links/session",async(Z)=>{let X=Z.get("studioContext").auth?.user?.id;if(!X)return Z.json({error:"Unauthorized"},401);let Y=O1();if(!Y.natsTunnelPublicEnabled)return Z.json(W81(),503);if(!Y.natsPublicUrl)return Z.json(W81(),503);if(!Y.natsAccountJwt||!Y.natsAccountSigningKey){if(!Y.localMode)return Z.json(W81(),503)}let Q=CJ(X),J;if(Y.natsAccountJwt&&Y.natsAccountSigningKey){let W=new Date(Date.now()+Y.natsTunnelSessionTtlSeconds*1000);J=await MC$({accountJwt:Y.natsAccountJwt,accountSigningKey:Y.natsAccountSigningKey,expiresAt:W,permissions:OC$(Q),userId:X,allowedConnectionTypes:T64(Y.natsPublicUrl)})}return Z.json(DC$({publicUrl:Y.natsPublicUrl,userId:X,ttlSeconds:Y.natsTunnelSessionTtlSeconds,credentials:J}))}),$}var W81=()=>({error:"link session unavailable"});var VC$=O(()=>{Y6();F8();EC$();kC$()});async function q64($,Z){try{return!await $.alive(Z)}catch(G){return console.warn(`[vm-events] alive probe failed for ${Z}; assuming alive: ${G instanceof Error?G.message:String(G)}`),!1}}async function M64($){let{ctx:Z,runner:G,claimName:X,userId:Y,projectRef:Q,sandboxProviderKind:J}=$;try{await G.delete(X)}catch(W){console.warn(`[vm-events] runner.delete failed for ${X}: ${W instanceof Error?W.message:String(W)}`)}try{await new kN(Z.db).delete({userId:Y,projectRef:Q},J)}catch(W){console.warn(`[vm-events] sandbox_runner_state delete failed for ${Y}/${Q}/${J}: ${W instanceof Error?W.message:String(W)}`)}}async function k64($){let{stream:Z,claimName:G,runner:X,signal:Y}=$;return new Promise((Q)=>{let J=!1,W=!1,K=null,w=(H)=>{if(J)return;J=!0,clearTimeout(U),Y.removeEventListener("abort",F),K?.unsubscribe(),Q(H)},U=setTimeout(()=>{if(W||J)return;Z.writeSSE({event:"phase",data:JSON.stringify({kind:"failed",reason:"claim-never-created",message:"Sandbox claim was never created. The SANDBOX_START call may have failed earlier \u2014 check the start error."})}).catch(()=>{}),w(!1)},I64),F=()=>w(!1);Y.addEventListener("abort",F,{once:!0}),K=on(X,G,(H)=>{if(J)return;if(H.kind!=="claiming")W=!0;if(Z.writeSSE({event:"phase",data:JSON.stringify(H)}).catch(()=>{}),H.kind==="ready")w(!0);else if(H.kind==="failed")w(!1)})})}async function S64($){let{stream:Z,runner:G,claimName:X,signal:Y}=$,Q=Date.now(),J=null;while(!Y.aborted){let K=null;try{K=await G.proxyDaemonRequest(X,"/_sandbox/events",{method:"GET",headers:new Headers({accept:"text/event-stream"}),body:null,signal:Y})}catch(w){if(Y.aborted)return;if(Date.now()-Q<CC$){await D8(_C$,{signal:Y}).catch(()=>{});continue}let U=w instanceof Error?w.message:String(w);await Z.writeSSE({event:"phase",data:JSON.stringify({kind:"failed",reason:"unknown",message:`Upstream daemon SSE error: ${U}`})}).catch(()=>{});return}if(K.status===404){try{await K.body?.cancel()}catch{}if(Date.now()-Q<CC$){await D8(_C$,{signal:Y}).catch(()=>{});continue}await Z.writeSSE({event:"gone",data:""}).catch(()=>{});return}if(!K.ok||!K.body){try{await K.body?.cancel()}catch{}await Z.writeSSE({event:"phase",data:JSON.stringify({kind:"failed",reason:"unknown",message:`Upstream daemon SSE failed (${K.status}).`})}).catch(()=>{});return}J=K;break}if(!J||!J.body)return;let W=J.body.getReader();try{while(!Y.aborted){let{value:K,done:w}=await W.read();if(w)break;if(K)await Z.write(K)}}catch{}finally{try{W.releaseLock()}catch{}}}var I64=90000,R64=15000,bC$=()=>{let $=new V1;return $.get("/",async(Z)=>{let G=Z.var.studioContext;try{M0(G)}catch{return Z.json({error:"Unauthorized"},401)}let X=y1(G);if(!X)return Z.json({error:"Unauthorized"},401);let Y;try{Y=O0(G)}catch{return Z.json({error:"Organization scope required"},403)}let Q=Z.req.query("virtualMcpId"),J=Z.req.query("branch");if(!Q||!J)return Z.json({error:"virtualMcpId and branch are required"},400);let W=await G.storage.virtualMcps.findById(Q);if(!W||W.organization_id!==Y.id)return Z.json({error:"Virtual MCP not found"},404);let K=ZU({orgId:Y.id,virtualMcpId:Q,branch:J}),w=Gg({userId:X,projectRef:K},J),U=W.metadata??null,F,H=null,N=null;try{let E=await bY(G,{userId:X,branch:J,virtualMcpMetadata:U});F=E.provider,H=E.kind}catch(E){N=E instanceof Error?E:Error(String(E)),F=null}let B=H&&mW(F5(U),X,J,H),D=!!B&&B.sandboxHandle===w;if(!F)return tQ(Z,async(E)=>{await E.writeSSE({event:"phase",data:JSON.stringify({kind:"failed",reason:"unknown",message:N?.message??"No sandbox runner configured on this studio instance."})})});return Z.header("X-Accel-Buffering","no"),Z.header("Content-Encoding","identity"),tQ(Z,async(E)=>{let L=new AbortController,z=setInterval(()=>{E.writeSSE({event:"keepalive",data:""}).catch(()=>{clearInterval(z)})},R64);E.onAbort(()=>{L.abort(),clearInterval(z)});try{if(D&&H){if(await q64(F,w)){await M64({ctx:G,runner:F,claimName:w,userId:X,projectRef:K,sandboxProviderKind:H}),await E.writeSSE({event:"gone",data:""}).catch(()=>{});return}}if(!await k64({stream:E,claimName:w,runner:F,signal:L.signal})||L.signal.aborted)return;await S64({stream:E,runner:F,claimName:w,signal:L.signal})}finally{clearInterval(z)}})}),$},CC$=60000,_C$=500;var fC$=O(()=>{Y6();LC();kY();l5();_E0();an();PV();n90();qX()});function C64($){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 _64($,Z){let G=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(V64)});if(!G.ok){let X=await G.text().catch(()=>G.statusText);throw console.error(`[deco-apps] Supabase error (${G.status}): ${X.slice(0,200)}`),Error(`External service error (${G.status})`)}return await G.json()}var V64=1e4,b64=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},xC$=()=>{let $=new V1;return $.use("*",b64),$.get("/",async(Z)=>{let G=O1(),X=G.decoSupabaseUrl,Y=G.decoSupabaseServiceKey;if(!X||!Y)return Z.json({apps:[]});try{let Q=await _64(X,Y);return Z.json({apps:C64(Q)})}catch(Q){return console.error("[deco-apps] GET error:",Q),Z.json({error:"Failed to fetch apps"},502)}}),$};var vC$=O(()=>{Y6();F8()});import{z as h1}from"zod";function zK($,Z="invalid_request_error",G=null,X=null){return{error:{message:$,type:Z,param:G,code:X}}}function l64($){if(!$)return null;let Z=$.indexOf(":");if(Z===-1)return{credentialId:null,modelId:$};let G=$.substring(0,Z),X=$.substring(Z+1);if(!G||!X)return null;return{credentialId:G,modelId:X}}function m64($,Z,G){try{return JSON.parse($)}catch{throw new hC$(`Invalid JSON in tool call arguments for function '${G}' (tool_call_id: ${Z}): ${$}`)}}function i64($){let Z={};for(let G of $)if(G.role==="assistant"&&G.tool_calls)for(let X of G.tool_calls)Z[X.id]=X.function.name;return $.map((G)=>{switch(G.role){case"system":return{role:"system",content:G.content};case"user":if(typeof G.content==="string")return{role:"user",content:G.content};return{role:"user",content:G.content.map((Y)=>{if(Y.type==="text")return{type:"text",text:Y.text};return{type:"image",image:Y.image_url.url}})};case"assistant":if(G.tool_calls&&G.tool_calls.length>0)return{role:"assistant",content:G.tool_calls.map((Y)=>({type:"tool-call",toolCallId:Y.id,toolName:Y.function.name,input:m64(Y.function.arguments,Y.id,Y.function.name)}))};return{role:"assistant",content:G.content??""};case"tool":let X=Z[G.tool_call_id]??"unknown";return{role:"tool",content:[{type:"tool-result",toolCallId:G.tool_call_id,toolName:X,output:{type:"text",value:G.content}}]}}})}function n64($){let Z=$.map((G)=>{let X=G.function.parameters?DY(G.function.parameters):DY({type:"object",properties:{}});return[G.function.name,x$({description:G.function.description,inputSchema:X})]});return Object.fromEntries(Z)}function p64($){if(!$)return;return{openai:{response_format:$}}}function t64(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function yC$($,Z,G,X,Y,Q){let J={model:$,messages:Z,tools:G,temperature:X.temperature,maxTokens:X.max_tokens,topP:X.top_p,frequencyPenalty:X.frequency_penalty,presencePenalty:X.presence_penalty,stopSequences:X.stop?Array.isArray(X.stop)?X.stop:[X.stop]:void 0,abortSignal:Q};return Y?{...J,providerOptions:Y}:J}function gC$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var f64=256,x64,v64,y64,g64,h64,c64,u64,d64,hC$,cC$,uC$;var dC$=O(()=>{L6();Y6();LC();x64=h1.object({type:h1.literal("function"),function:h1.object({name:h1.string(),description:h1.string().optional(),parameters:h1.record(h1.string(),h1.unknown()).optional()})}),v64=h1.object({id:h1.string(),type:h1.literal("function"),function:h1.object({name:h1.string(),arguments:h1.string()})}),y64=h1.discriminatedUnion("role",[h1.object({role:h1.literal("system"),content:h1.string(),name:h1.string().optional()}),h1.object({role:h1.literal("user"),content:h1.union([h1.string(),h1.array(h1.union([h1.object({type:h1.literal("text"),text:h1.string()}),h1.object({type:h1.literal("image_url"),image_url:h1.object({url:h1.string(),detail:h1.string().optional()})})]))]),name:h1.string().optional()}),h1.object({role:h1.literal("assistant"),content:h1.string().nullable().optional(),name:h1.string().optional(),tool_calls:h1.array(v64).optional()}),h1.object({role:h1.literal("tool"),content:h1.string(),tool_call_id:h1.string()})]),g64=h1.object({type:h1.literal("text")}),h64=h1.object({type:h1.literal("json_object")}),c64=h1.object({type:h1.literal("json_schema"),json_schema:h1.object({name:h1.string(),description:h1.string().optional(),schema:h1.record(h1.string(),h1.unknown()),strict:h1.boolean().optional()})}),u64=h1.union([g64,h64,c64]),d64=h1.object({model:h1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:h1.array(y64),stream:h1.boolean().optional().default(!1),temperature:h1.number().min(0).max(2).optional(),max_tokens:h1.number().positive().optional(),top_p:h1.number().min(0).max(1).optional(),frequency_penalty:h1.number().min(-2).max(2).optional(),presence_penalty:h1.number().min(-2).max(2).optional(),stop:h1.union([h1.string(),h1.array(h1.string())]).optional(),tools:h1.array(x64).optional(),tool_choice:h1.union([h1.literal("auto"),h1.literal("none"),h1.literal("required"),h1.object({type:h1.literal("function"),function:h1.object({name:h1.string()})})]).optional(),response_format:u64.optional(),user:h1.string().optional()});hC$=class hC$ extends Error{constructor($){super($);this.name="MessageConversionError"}};cC$=new V1;cC$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),G=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(zK("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(zK("Organization context is required. Ensure your API key has organization metadata.","invalid_request_error","organization"),400);if((Z.organization.slug??Z.organization.id)!==G)return $.json(zK("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let X=await $.req.json(),Y=d64.safeParse(X);if(!Y.success){let E=Y.error.issues[0]??{message:"Invalid request",path:[]};return $.json(zK(`Invalid request: ${E.message}`,"invalid_request_error",E.path.length>0?E.path.join("."):null),400)}let Q=Y.data,J=l64(Q.model);if(!J)return $.json(zK("Invalid model format. Expected 'model_id' or 'credential_id:model_id' (e.g., 'claude-sonnet-4-6' or 'key_abc123:claude-sonnet-4-6')","invalid_request_error","model"),400);let{credentialId:W}=J,{modelId:K}=J;if(!W){let E=await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id});if(E.length===0)return $.json(zK("No AI provider credentials configured for this organization. Add a credential in settings or specify one explicitly via 'credential_id:model_id'.","invalid_request_error","model"),400);W=E[0].id}let w;try{w=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json(zK(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let U=w.aiSdk.languageModel(K),F=i64(Q.messages),H=Q.tools?n64(Q.tools):void 0,N=p64(Q.response_format),B=t64(),D=Math.floor(Date.now()/1000);if(Q.stream)return tQ($,async(E)=>{let L=yC$(U,F,H,Q,N,$.req.raw.signal);try{let z=bQ(L),j=!1,P=0,A="",M=async()=>{if(A.length===0)return;let S=A;A="",await E.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:D,model:Q.model,choices:[{index:0,delta:{content:S},finish_reason:null}]})})};for await(let S of z.fullStream){if(!j&&(S.type==="text-delta"||S.type==="tool-call"))await E.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:D,model:Q.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),j=!0;if(S.type==="text-delta"){if(A+=S.text,A.length>=f64)await M()}else if(S.type==="tool-call"){await M();let R=P++;await E.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:D,model:Q.model,choices:[{index:0,delta:{tool_calls:[{index:R,id:S.toolCallId,type:"function",function:{name:S.toolName,arguments:JSON.stringify(S.input)}}]},finish_reason:null}]})})}else if(S.type==="finish")await M(),await E.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:D,model:Q.model,choices:[{index:0,delta:{},finish_reason:gC$(S.finishReason)}],usage:S.totalUsage?{prompt_tokens:S.totalUsage.inputTokens??0,completion_tokens:S.totalUsage.outputTokens??0,total_tokens:S.totalUsage.totalTokens??0}:void 0})})}await M(),await E.writeSSE({data:"[DONE]"})}catch(z){let j=z;console.error("[openai-compat:stream] Error:",j.message),await E.writeSSE({data:JSON.stringify({error:{message:j.message,type:"server_error"}})})}});else{let E=yC$(U,F,H,Q,N,$.req.raw.signal),L=await DN(E),z={role:"assistant",content:L.text||null};if(L.toolCalls&&L.toolCalls.length>0)z.tool_calls=L.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:D,model:Q.model,choices:[{index:0,message:z,finish_reason:gC$(L.finishReason)}],usage:{prompt_tokens:L.usage?.inputTokens??0,completion_tokens:L.usage?.outputTokens??0,total_tokens:L.usage?.totalTokens??0}})}}catch(X){let Y=X;if(Y.name==="AbortError")return $.json(zK("Request aborted","invalid_request_error"),400);if(Y.name==="MessageConversionError")return $.json(zK(Y.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",Y.message,Y.stack),$.json(zK(Y.message,"server_error"),500)}});uC$=cC$});var mC$;var lC$=O(()=>{mC$={name:"decocms",version:"4.83.2",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/mesh"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:'bun run migrate && concurrently "bun run dev:client" "bun run dev:server"',"dev:servers":'concurrently "bun run dev:client" "bun run dev:server"',"dev:client":"vite dev","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts","build:client":"bun --bun vite build","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","db:migrate":"bun run ./dist/server/migrate.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts",test:"bun test","test:ct":"playwright test -c playwright-ct.config.ts","test:ct:ui":"playwright test -c playwright-ct.config.ts --ui","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts","smoke:link":"bun run scripts/smoke-link.ts",prepublishOnly:"bun run build:client && bun run build:server"},optionalDependencies:{"@anthropic-ai/claude-agent-sdk":"^0.3.181","@duckdb/node-api":"^1.5.0-r.1","@openai/codex":"0.144.3","@openai/codex-darwin-arm64":"npm:@openai/codex@0.144.3-darwin-arm64","@openai/codex-darwin-x64":"npm:@openai/codex@0.144.3-darwin-x64","@openai/codex-linux-arm64":"npm:@openai/codex@0.144.3-linux-arm64","@openai/codex-linux-x64":"npm:@openai/codex@0.144.3-linux-x64","@openai/codex-win32-arm64":"npm:@openai/codex@0.144.3-win32-arm64","@openai/codex-win32-x64":"npm:@openai/codex@0.144.3-win32-x64"},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","@dnd-kit/core":"^6.3.1","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@inkjs/ui":"^2.0.0","@modelcontextprotocol/ext-apps":"^1.7.1","@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","@tanstack/react-virtual":"3.13.24","@tiptap/extension-text-align":"3.20.2","@xterm/addon-fit":"^0.11.0","@xterm/xterm":"^6.0.0",echarts:"^5.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","node-pty":"^1.0.0","posthog-js":"^1.371.1","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6","use-stick-to-bottom":"^1.1.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@ai-sdk/react":"^3.0.210","@better-auth/sso":"1.4.1","@daveyplate/better-auth-ui":"^3.2.7","@deco/ui":"workspace:*","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/harness":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/mesh-sdk":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/std":"workspace:*","@decocms/tunnel":"workspace:*","@floating-ui/react":"^0.27.16","@happy-dom/global-registrator":"^20.9.0","@hookform/resolvers":"^5.2.2","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@monaco-editor/react":"^4.7.0","@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","@playwright/experimental-ct-react":"1.59.1","@playwright/test":"^1.58.2","@radix-ui/react-avatar":"^1.1.10","@radix-ui/react-checkbox":"^1.3.3","@radix-ui/react-dialog":"^1.1.15","@radix-ui/react-dropdown-menu":"^2.1.16","@radix-ui/react-label":"^2.1.7","@radix-ui/react-select":"^2.2.6","@radix-ui/react-separator":"^1.1.7","@radix-ui/react-slot":"^1.2.3","@radix-ui/react-tabs":"^1.1.13","@rjsf/shadcn":"^6.6.2","@rjsf/utils":"^6.6.2","@rjsf/validator-ajv8":"^6.6.2","@tailwindcss/vite":"^4.1.17","@tanstack/react-query":"5.100.10","@tanstack/react-router":"1.169.2","@testing-library/jest-dom":"^6.9.1","@testing-library/react":"^16.3.2","@tiptap/core":"3.20.2","@tiptap/extension-placeholder":"3.20.2","@tiptap/pm":"3.20.2","@tiptap/react":"3.20.2","@tiptap/starter-kit":"3.20.2","@tiptap/suggestion":"3.20.2","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@untitledui/icons":"^0.0.19","@vercel/nft":"^1.1.1","@vitejs/plugin-react":"^5.1.0",ai:"^6.0.208","babel-plugin-react-compiler":"^1.0.0","better-auth":"1.4.22","class-variance-authority":"^0.7.1",clsx:"^2.1.1",concurrently:"^9.2.1",croner:"^9.1.0","date-fns":"^4.1.0",degit:"^2.8.4",hono:"^4.10.7","input-otp":"^1.4.2",jose:"^6.0.11","lucide-react":"^0.468.0",marked:"^15.0.6",nanoid:"^5.1.6",pg:"^8.16.3",prettier:"^3.4.2","react-hook-form":"^7.66.0","react-markdown":"^10.1.0","react-resizable-panels":"^2.1.7","react-syntax-highlighter":"^15.6.1",recharts:"^3.6.0","rehype-raw":"^7.0.0","remark-gfm":"^4.0.0","sass-embedded":"^1.97.2",sonner:"^2.0.7","tailwind-merge":"^3.3.1",tailwindcss:"^4.1.17",typescript:"^5.9.3",vite:"^7.2.1","vite-tsconfig-paths":"^5.1.4",zod:"^4.0.0"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","mesh","tools"],license:"MIT",publishConfig:{access:"public"}}});function a64(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??o64}}var iC$,o64="https://ph.studio.decocms.com",nC$;var pC$=O(()=>{Y6();$f0();nN();BG();F8();F01();lC$();iC$=new V1;iC$.get("/",($)=>{let Z={version:mC$.version,theme:Pb1(),...oO().logo&&{logo:oO().logo},...yQ()&&{internalUrl:Z00()},...O1().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!O1().firecrawlApiKey,auth:FR$(),posthog:a64(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:!yQ()&&O1().sandboxProviderKind==="agent-sandbox"}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});nC$=iC$});function iL0($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function rC$($){return(iL0($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((G)=>G.charAt(0).toUpperCase()+G.slice(1)).join(" ")}function oC$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(iL0($))}&sz=${Z}`}function tC$($,Z){let G=$.trim();if(G.length<=Z)return G;let X=G.slice(0,Z-1),Y=X.lastIndexOf(" ");return`${(Y>Z*0.6?X.slice(0,Y):X).trimEnd()}\u2026`}function aC$($){let{brand:Z,domain:G,score:X,verdict:Y}=$,Q=typeof X==="number"?`${Z} commerce report \u2014 ${Math.round(X)}/100 \xB7 decocms`:`${Z} commerce report \xB7 decocms`,J=`See the full ${Z} scorecard \u2014 SEO, performance, conversion & AEO signals scored by decocms.`,W=Y?.trim()?tC$(`${Y.trim().replace(/\s+/g," ")} \u2014 ${J}`,200):tC$(`How does ${G} really perform? ${J}`,200);return{title:Q,description:W}}import{join as s64}from"path";function yU($){return $.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""")}function e64($){let Z=iL0($),G=rC$(Z),X=oC$(Z,128),Q=`${(O1().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(Z)}`,{title:J,description:W}=aC$({brand:G,domain:Z});return[`<title>${yU(J)}</title>`,`<meta name="description" content="${yU(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="${yU(J)}" />`,`<meta property="og:description" content="${yU(W)}" />`,`<meta property="og:url" content="${yU(Q)}" />`,'<meta name="twitter:card" content="summary" />',`<meta name="twitter:title" content="${yU(J)}" />`,`<meta name="twitter:description" content="${yU(W)}" />`,`<link rel="canonical" href="${yU(Q)}" />`,`<link rel="icon" href="${yU(X)}" sizes="any" />`].join(`
|
|
2726
2726
|
`)}function $44($,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}
|
|
2727
2727
|
</head>`)}function sC$($){let Z=new V1;return Z.get("/:domain",async(G)=>{let X=G.req.param("domain"),Y=$?s64($,"index.html"):null,Q=Y?Bun.file(Y):null;if(!Q||!await Q.exists())return G.notFound();let J=await Q.text();try{let W=e64(X);return G.html($44(J,W),200,{"Cache-Control":"public, max-age=0, s-maxage=300"})}catch{return G.html(J)}}),Z}var eC$=O(()=>{Y6();F8()});import{z as Q1}from"zod";var AC,Z44,G44,X44,Y44,$_$;var Z_$=O(()=>{AC=Q1.enum(["good","bad","neutral"]),Z44=Q1.preprocess(($)=>{if(Array.isArray($))return{kind:"text",value:$.find((G)=>G!==null&&typeof G!=="object")??""};return $!==null&&typeof $==="object"?$:{kind:"text",value:$}},Q1.object({kind:Q1.enum(["text","number","sparkline","badge","score"]).catch("text"),value:Q1.coerce.string().optional(),tone:AC.optional(),muted:Q1.boolean().optional(),delta:Q1.coerce.string().optional(),deltaDir:Q1.enum(["up","down","neutral"]).optional(),points:Q1.array(Q1.coerce.number()).optional(),label:Q1.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 $})),G44=Q1.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},Q1.array(Z44)),X44={key:Q1.coerce.string(),title:Q1.coerce.string(),eyebrow:Q1.coerce.string().optional(),headline:Q1.coerce.string(),annotation:Q1.coerce.string().optional(),methodology:Q1.coerce.string().optional(),sources:Q1.array(Q1.object({name:Q1.coerce.string(),logoUrl:Q1.coerce.string()})).optional()},Y44=Q1.discriminatedUnion("template",[Q1.object({template:Q1.literal("cover"),score:Q1.object({value:Q1.coerce.number(),max:Q1.coerce.number().optional(),grade:Q1.coerce.string().optional(),label:Q1.coerce.string().optional()}).optional(),brandImage:Q1.coerce.string().optional(),screenshot:Q1.coerce.string().optional(),mobileScreenshot:Q1.coerce.string().optional()}),Q1.object({template:Q1.literal("cta"),ctaUrl:Q1.coerce.string().optional(),ctaLabel:Q1.coerce.string().optional(),bullets:Q1.array(Q1.coerce.string()).optional()}),Q1.object({template:Q1.literal("series"),points:Q1.array(Q1.coerce.number()).min(2),xLabels:Q1.array(Q1.coerce.string()).min(1),unit:Q1.coerce.string().optional(),callout:Q1.object({index:Q1.coerce.number(),value:Q1.coerce.string(),tone:AC.optional()})}),Q1.object({template:Q1.literal("threshold"),value:Q1.coerce.string().default(""),metricLabel:Q1.coerce.string().optional(),ratio:Q1.coerce.number(),thresholdRatio:Q1.coerce.number().optional(),thresholdLabel:Q1.coerce.string().default(""),tone:AC.optional()}),Q1.object({template:Q1.literal("stats"),stats:Q1.array(Q1.object({value:Q1.coerce.string(),label:Q1.coerce.string(),tone:AC.optional()})).min(1)}),Q1.object({template:Q1.literal("bars"),items:Q1.array(Q1.object({value:Q1.coerce.string(),label:Q1.coerce.string(),ratio:Q1.coerce.number(),tone:AC.optional()})).min(1)}),Q1.object({template:Q1.literal("gauges"),gauges:Q1.array(Q1.object({label:Q1.coerce.string(),value:Q1.coerce.string(),status:Q1.enum(["good","warn","bad"]).catch("warn"),caption:Q1.coerce.string().optional(),ratio:Q1.coerce.number().optional()})).min(1)}),Q1.object({template:Q1.literal("checklist"),checks:Q1.array(Q1.object({label:Q1.coerce.string(),status:Q1.enum(["pass","fail","warn"]).catch("fail"),value:Q1.coerce.string().optional()})).min(1)}),Q1.object({template:Q1.literal("table"),columns:Q1.array(Q1.object({label:Q1.coerce.string(),align:Q1.enum(["left","right"]).optional()})).min(1),rows:Q1.array(G44).min(1),highlightRow:Q1.coerce.number().optional()}),Q1.object({template:Q1.literal("products"),products:Q1.array(Q1.object({name:Q1.coerce.string(),price:Q1.coerce.string().optional(),image:Q1.coerce.string().optional(),url:Q1.coerce.string().optional()})).min(1)}),Q1.object({template:Q1.literal("list"),entries:Q1.array(Q1.object({label:Q1.coerce.string(),severity:Q1.enum(["error","warning","notice"]).catch("notice")})).min(1),moreCount:Q1.coerce.number().optional()}),Q1.object({template:Q1.literal("keywords"),volumeLabel:Q1.coerce.string().optional(),keywords:Q1.array(Q1.object({term:Q1.coerce.string(),volume:Q1.coerce.string(),position:Q1.coerce.number().catch(0)})).min(1)}),Q1.object({template:Q1.literal("competitor"),metricLabel:Q1.coerce.string().optional(),competitors:Q1.array(Q1.object({name:Q1.coerce.string(),value:Q1.coerce.string(),tone:AC.optional(),isYou:Q1.boolean().optional()})).min(1)}),Q1.object({template:Q1.literal("scorecard"),rivalLabel:Q1.coerce.string().optional(),dimensions:Q1.array(Q1.object({label:Q1.coerce.string(),you:Q1.coerce.string(),rival:Q1.coerce.string().optional(),rivalName:Q1.coerce.string().optional(),tone:AC.optional()})).min(1)})]),$_$=Q1.object({...X44,template:Y44})});function G_$($){let Z=[],G=[...$.sections].sort((X,Y)=>X.position-Y.position).map((X)=>{let Y=$_$.safeParse(X.props);if(Y.success)return Y.data;let Q=Y.error.issues[0];return Z.push({section_type:X.section_type,position:X.position,reason:Q?`${Q.path.join(".")||"(root)"}: ${Q.message}`:"contract violation"}),null}).filter((X)=>X!==null);return{deck:{meta:{...$.meta,scores:$.summary?.scores},slides:G},drops:Z}}var X_$=O(()=>{Z_$()});function Fr($,Z){return fetch(`${UD({})}${$}`,Z)}async function Q44($,Z){let G=await Fr(`/api/v2/public/diagnostics/${encodeURIComponent($)}`+(Z?`?pw=${encodeURIComponent(Z)}`:""),{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 X=await G.json(),{deck:Y,drops:Q}=G_$(X);return{status:Y.slides.length?"ready":"empty",deck:Y,scanned_at:X.scanned_at,drops:Q}}var J44,TC,Y_$;var Q_$=O(()=>{Y6();VQ();Wf();X_$();J44=new Set(["complete","errored","terminated","unknown"]),TC=new V1;TC.use("*",async($,Z)=>{let G=await O8.api.getSession({headers:$.req.raw.headers});if(!G?.user?.id)return $.json({error:"Authentication required"},401,{"Cache-Control":"private, no-store",Vary:"Cookie"});$.set("reportUser",{email:G.user.email}),await Z(),$.header("Cache-Control","private, no-store"),$.header("Vary","Cookie");return});TC.get("/site/:domain",async($)=>{let Z=$.req.param("domain").trim();if(!Z)return $.json({error:"domain is required"},400);let G=$.req.query("key")?.trim()||void 0;try{let X=await Q44(Z,G);return $.header("Cache-Control","private, no-store"),$.json(X)}catch{return $.json({error:"report read failed"},502)}});TC.post("/run",async($)=>{let Z;try{Z=await $.req.json()}catch{return $.json({error:"invalid JSON"},400)}let G=typeof Z.domain==="string"?Z.domain.trim():"";if(!G)return $.json({error:"domain is required"},400);let X=$.get("reportUser").email,Y=typeof Z.distinctId==="string"&&Z.distinctId.trim()&&Z.distinctId.length<=200?Z.distinctId.trim():void 0;try{let Q=await Fr("/api/v2/diagnostics/run",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${FD({})}`},body:JSON.stringify({url:G,email:X,distinct_id:Y})});if(!Q.ok)return $.json({error:`run HTTP ${Q.status}`},502);let J=await Q.json(),W=J.blocked?{state:"blocked"}:J.status==="fresh"?{state:"fresh"}:J.mode==="sync"?{state:"sync"}:{state:"running",id:J.id??null};return $.json(W)}catch{return $.json({error:"run failed"},502)}});TC.get("/status",async($)=>{let Z=$.req.query("id");if(!Z)return $.json({error:"id is required"},400);try{let G=await Fr(`/api/v2/diagnostics/status?id=${encodeURIComponent(Z)}`,{headers:{Authorization:`Bearer ${FD({})}`}});if(!G.ok)return $.json({error:`status HTTP ${G.status}`},502);let Y=(await G.json()).status??"unknown",Q={done:J44.has(Y),status:Y};return $.json(Q)}catch{return $.json({error:"status failed"},502)}});TC.get("/link-token/:id",async($)=>{let Z=$.req.param("id");try{let G=await Fr(`/api/v2/public/link-tokens/${encodeURIComponent(Z)}`,{headers:{Accept:"application/json"}});if(G.status===404)return $.json(null);if(!G.ok)return $.json({error:`link token HTTP ${G.status}`},502);return $.json(await G.json())}catch{return $.json({error:"link token resolve failed"},502)}});TC.get("/suggest",async($)=>{let Z=($.req.query("q")??"").trim().slice(0,64);if(Z.length<2)return $.json({suggestions:[]});try{let G=await Fr(`/api/v2/public/suggest?q=${encodeURIComponent(Z)}`,{headers:{Accept:"application/json"}});if(!G.ok)return $.json({suggestions:[]});let X=await G.json();return $.json({suggestions:Array.isArray(X.suggestions)?X.suggestions:[]})}catch{return $.json({suggestions:[]})}});Y_$=TC});function J_$($,Z){if(Z.startsWith("text/html")||Z.startsWith("image/svg"))$.set("Content-Security-Policy","sandbox allow-scripts allow-modals allow-same-origin")}var W_$,W44,K44,K_$;var w_$=O(()=>{Y6();f3();ev();fb();W_$=new V1,W44=["range","if-none-match","if-modified-since"],K44=["content-type","content-length","content-range","accept-ranges","etag","last-modified"];W_$.get("/:org/files/*",async($)=>{let Z=$.get("studioContext"),G=Z.organization?.id;if(!Z.auth?.user?.id){if(Ng($))return $.redirect(`/login?next=${encodeURIComponent($.req.path)}`,302);throw new P$(401,{message:"Authentication required"})}if(!G)throw new P$(401,{message:"Organization context required"});let X=$.req.path.replace(/^.*\/files\//,"");if(!X)throw new P$(400,{message:"Missing file key"});let Y=await Jp(X,Z);if(!Y)throw new P$(503,{message:"Object storage not configured"});if(Y.startsWith("data:")&&b3()){let K=Y.match(/^data:([^;]+);base64,(.+)$/s);if(!K)throw new P$(500,{message:"Invalid data URL from storage"});let[,w,U]=K,F=Buffer.from(U,"base64"),H=new Headers({"Content-Type":w,"Cache-Control":"private, max-age=86400"});return J_$(H,w),new Response(F,{status:200,headers:H})}let Q=new Headers;for(let K of W44){let w=$.req.header(K);if(w)Q.set(K,w)}let J=await fetch(Y,{headers:Q});if(J.status===403||J.status===404)throw new P$(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:`,X),new P$(502,{message:"Upstream storage error"});let W=new Headers;for(let K of K44){let w=J.headers.get(K);if(w)W.set(K,w)}return W.set("Cache-Control","private, max-age=86400"),J_$(W,W.get("content-type")??""),new Response(J.body,{status:J.status,headers:W})});K_$=W_$});var Hr=_((IC)=>{var w44=IC&&IC.__createBinding||(Object.create?function($,Z,G,X){if(X===void 0)X=G;var Y=Object.getOwnPropertyDescriptor(Z,G);if(!Y||("get"in Y?!Z.__esModule:Y.writable||Y.configurable))Y={enumerable:!0,get:function(){return Z[G]}};Object.defineProperty($,X,Y)}:function($,Z,G,X){if(X===void 0)X=G;$[X]=Z[G]}),U44=IC&&IC.__exportStar||function($,Z){for(var G in $)if(G!=="default"&&!Object.prototype.hasOwnProperty.call(Z,G))w44(Z,$,G)};Object.defineProperty(IC,"__esModule",{value:!0});U44(rX(),IC)});var H_$=_((U_$)=>{Object.defineProperty(U_$,"__esModule",{value:!0});U_$.version=void 0;U_$.version="3.4.0"});var O_$=_((jK)=>{var F44=jK&&jK.__importDefault||function($){return $&&$.__esModule?$:{default:$}};Object.defineProperty(jK,"__esModule",{value:!0});jK.NodeTransport=jK.VERSION=void 0;jK.nodeResolveHost=E44;var n4=Hr(),H44=c0("net"),K81=c0("tls"),N44=c0("path"),N_$=c0("fs"),B44=F44(c0("dns")),O44=H_$();jK.VERSION=O44.version;var D44="nats.js";class B_${socket;version;lang;yields=[];signal=(0,n4.deferred)();closedNotification=(0,n4.deferred)();options;connected=!1;tlsName="";done=!1;closeError;constructor(){this.lang=D44,this.version=jK.VERSION}async connect($,Z){this.tlsName=$.tlsName,this.options=Z;let{tls:G}=this.options,{handshakeFirst:X}=G||{};try{if(X===!0)this.socket=await this.tlsFirst($);else this.socket=await this.dial($);if(this.done)this.socket?.destroy();let Y=await this.peekInfo();(0,n4.checkOptions)(Y,Z);let{tls_required:Q,tls_available:J}=Y,W=J===!0&&Z.tls!==null;if(!X&&(Q||W))this.socket=await this.startTLS();if(this.done)this.socket?.destroy();if(Q&&this.socket.encrypted!==!0)throw n4.errors.InvalidArgumentError.format("tls","is not available on this server");return this.connected=!0,this.setupHandlers(),this.signal.resolve(),Promise.resolve()}catch(Y){let Q=Y;if(!Q)Q=new n4.errors.ConnectionError("error connecting - node provided an undefined error");let{code:J}=Q,W=J==="ECONNREFUSED"?new n4.errors.ConnectionError("connection refused",{cause:Q}):Q;throw this.socket?.destroy(),W}}dial($){let Z=(0,n4.deferred)(),G,X=(0,H44.createConnection)($.port,$.hostname,()=>{Z.resolve(X),X.removeAllListeners()});return X.on("error",(Y)=>{G=Y}),X.on("close",()=>{X.removeAllListeners(),Z.reject(G)}),X.setNoDelay(!0),Z}get isClosed(){return this.done}close($){return this._closed($,!1)}peekInfo(){let $=(0,n4.deferred)(),Z;return this.socket.on("data",(G)=>{this.yields.push(G);let X=n4.DataBuffer.concat(...this.yields),Y=(0,n4.extractProtocolMessage)(X);if(Y!=="")try{let Q=n4.INFO.exec(Y);if(!Q)throw Error("unexpected response from server");let J=JSON.parse(Q[1]);$.resolve(J)}catch(Q){$.reject(Q)}finally{this.socket.removeAllListeners()}}),this.socket.on("error",(G)=>{Z=G}),this.socket.on("close",()=>{this.socket.removeAllListeners(),$.reject(Z)}),$}loadFile($){if(!$)return Promise.resolve();let Z=(0,n4.deferred)();try{if($=(0,N44.resolve)($),!(0,N_$.existsSync)($))Z.reject(Error(`${$} doesn't exist`));(0,N_$.readFile)($,(G,X)=>{if(G)return Z.reject(G);Z.resolve(X)})}catch(G){Z.reject(G)}return Z}async loadClientCerts(){let $={},{certFile:Z,cert:G,caFile:X,ca:Y,keyFile:Q,key:J}=this.options.tls;try{if(Z){let W=await this.loadFile(Z);if(W)$.cert=W}else if(G)$.cert=G;if(Q){let W=await this.loadFile(Q);if(W)$.key=W}else if(J)$.key=J;if(X){let W=await this.loadFile(X);if(W)$.ca=[W]}else if(Y)$.ca=Y;return Promise.resolve($)}catch(W){return Promise.reject(W)}}async tlsFirst($){let Z,G={servername:this.tlsName,rejectUnauthorized:!0};if(this.socket)G.socket=this.socket;if(typeof this.options.tls==="object")try{let Y=await this.loadClientCerts()||{};G=(0,n4.extend)(G,this.options.tls,Y)}catch(Y){return Promise.reject(new n4.errors.ConnectionError(Y.message,{cause:Y}))}let X=(0,n4.deferred)();try{let Y=(0,K81.connect)($.port,$.hostname,G,()=>{Y.removeAllListeners(),X.resolve(Y)});Y.on("error",(Q)=>{Z=Q}),Y.on("secureConnect",()=>{if(G.rejectUnauthorized===!1)return;if(!Y.authorized)throw Y.authorizationError}),Y.on("close",()=>{X.reject(Z),Y.removeAllListeners()}),Y.setNoDelay(!0)}catch(Y){X.reject(new n4.errors.ConnectionError(Y.message,{cause:Y}))}return X}async startTLS(){let $,Z={socket:this.socket,servername:this.tlsName,rejectUnauthorized:!0};if(typeof this.options.tls==="object")try{let X=await this.loadClientCerts()||{};Z=(0,n4.extend)(Z,this.options.tls,X)}catch(X){return Promise.reject(new n4.errors.ConnectionError(X.message,{cause:X}))}let G=(0,n4.deferred)();try{let X=(0,K81.connect)(Z,()=>{X.removeAllListeners(),G.resolve(X)});X.on("error",(Y)=>{$=Y}),X.on("secureConnect",()=>{if(Z.rejectUnauthorized===!1)return;if(!X.authorized)throw X.authorizationError}),X.on("close",()=>{G.reject($),X.removeAllListeners()})}catch(X){G.reject(new n4.errors.ConnectionError(X.message,{cause:X}))}return G}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,n4.render)($[Z])}`);yield $[Z]}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,n4.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 K81.TLSSocket}_send($){if(this.isClosed||this.socket===void 0)return Promise.resolve();if(this.options.debug)console.info(`< ${(0,n4.render)($)}`);let Z=(0,n4.deferred)();try{this.socket.write($,(G)=>{if(G){if(this.options.debug)console.error(`!!! ${(0,n4.render)($)}: ${G}`);return Z.reject(G)}return Z.resolve()})}catch(G){if(this.options.debug)console.error(`!!! ${(0,n4.render)($)}: ${G}`);Z.reject(G)}return Z}send($){this._send($).catch((G)=>{})}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(G){if(this.options.debug)console.log("transport close terminated with an error",G)}try{if(this.socket)this.socket.removeAllListeners(),this.socket?.destroy(),this.socket=void 0}catch(G){console.log(G)}this.done=!0,this.closedNotification.resolve(this.closeError)}closed(){return this.closedNotification}}jK.NodeTransport=B_$;function E44($){let Z=(0,n4.deferred)();return B44.default.lookup($,{all:!0},(G,X)=>{if(G){Z.reject(G);return}let Y=[];for(let Q of X)Y.push(Q.address);if(Y.length===0)Y.push($);Z.resolve(Y)}),Z}});var j_$=_((z_$)=>{Object.defineProperty(z_$,"__esModule",{value:!0});z_$.connect=L44;var D_$=O_$(),E_$=Hr(),L_$=Hr();function L44($={}){if((0,L_$.hasWsProtocol)($))return Promise.reject(L_$.errors.InvalidArgumentError.format("servers","node client doesn't support websockets, use the 'wsconnect' function instead"));return(0,E_$.setTransportFactory)({factory:()=>{return new D_$.NodeTransport},dnsResolveFn:D_$.nodeResolveHost}),E_$.NatsConnectionImpl.connect($)}});var P_$=_((gU)=>{var j44=gU&&gU.__createBinding||(Object.create?function($,Z,G,X){if(X===void 0)X=G;var Y=Object.getOwnPropertyDescriptor(Z,G);if(!Y||("get"in Y?!Z.__esModule:Y.writable||Y.configurable))Y={enumerable:!0,get:function(){return Z[G]}};Object.defineProperty($,X,Y)}:function($,Z,G,X){if(X===void 0)X=G;$[X]=Z[G]}),P44=gU&&gU.__exportStar||function($,Z){for(var G in $)if(G!=="default"&&!Object.prototype.hasOwnProperty.call(Z,G))j44(Z,$,G)};Object.defineProperty(gU,"__esModule",{value:!0});gU.connect=void 0;var A44=j_$();Object.defineProperty(gU,"connect",{enumerable:!0,get:function(){return A44.connect}});P44(Hr(),gU)});function R_$($){let Z=$?.connectFn??q44,G=null,X=null,Y=!1,Q=!1,J=!1,W=[];function K(){return G!==null&&!G.isClosed()&&!G.isDraining()&&!J}function w(){console.log(`[NatsProvider] fireReady: ${W.length} callbacks`);for(let H of W)try{H()}catch{}}function U(H){(async()=>{for await(let N of H.status())if(N.type==="disconnect")console.log("[NatsProvider] Disconnected"),J=!0;else if(N.type==="reconnect")console.log("[NatsProvider] Reconnected, re-firing ready callbacks"),J=!1,X=null,w()})().catch(()=>{})}async function F(H,N){let B=0;while(!Q)try{G=await Z({servers:H,timeout:R44,reconnect:!0,maxReconnectAttempts:-1,...N?{authenticator:N}:{}}),console.log(`[NatsProvider] Connected to ${G.getServer()} after ${B} attempt(s)`),X=null,J=!1,U(G),w();return}catch{B++;let D=mX(I44,T44,B-1,2,0.5);await D8(D)}}return{init(H,N){if(Y)return;Y=!0,Q=!1;let B=N?.creds?A_$.credsAuthenticator(new TextEncoder().encode(N.creds)):void 0;F(H,B).catch(()=>{})},isConnected(){return K()},getConnection(){return K()?G:null},getJetStream(){if(!K())return null;if(!X)X=I_$.jetstream(G);return X},onReady(H){if(W.push(H),K())try{H()}catch{}},async drain(){if(Q=!0,Y=!1,X=null,J=!1,G){let H=G;G=null,await H.drain().catch(()=>{})}}}}function q44($){return T_$.connect($)}var A_$,T_$,I_$,T44=100,I44=3000,R44=3000;var q_$=O(()=>{l5();A_$=k(Jh(),1),T_$=k(P_$(),1),I_$=k(uB(),1)});function w81($,Z){return`${$}.${Z}`}class U81{cache;constructor($){this.cache=sy({ttlMs:$?.ttlMs??M44,maxSize:$?.maxSize??k44})}async get($,Z){return this.cache.get(w81($,Z))??null}async set($,Z,G){this.cache.set(w81($,Z),G)}async invalidate($,Z){this.cache.delete(w81($,Z))}teardown(){this.cache.clear()}}var M44=600000,k44=5000;var M_$=()=>{};function nL0($,Z){return`${$}:${Z}`}function F81($){let Z=sy({ttlMs:$?.ttlMs??S44,maxSize:$?.maxSize??V44}),G=$?.getConnection,X=crypto.randomUUID(),Y=new TextEncoder,Q=new TextDecoder,J=null;function W(K,w){let U=G?.();if(!U)return;try{U.publish(k_$,Y.encode(JSON.stringify({organizationId:K,keyId:w,originId:X})))}catch(F){console.warn("[ProviderKeyCache] Publish failed (non-critical):",F)}}return{get(K,w){return Z.get(nL0(K,w))},set(K,w,U){Z.set(nL0(K,w),U)},invalidate(K,w){Z.delete(nL0(K,w)),W(K,w)},start(){if(J)return;let K=G?.();if(!K)return;J=K.subscribe(k_$),(async()=>{for await(let w of J)try{let U=JSON.parse(Q.decode(w.data));if(U.originId===X)continue;Z.delete(nL0(U.organizationId,U.keyId))}catch{}})().catch(console.error)},teardown(){J?.unsubscribe(),J=null,Z.clear()}}}var k_$="studio.ai-provider-keys.invalidate",S44=30000,V44=5000;var S_$=()=>{};class H81{options;sub=null;onCancel=null;encoder=new TextEncoder;originId=crypto.randomUUID();constructor($){this.options=$}async start($){if($)this.onCancel=$;if(this.sub)return;if(!this.onCancel)return;let Z=this.options.getConnection();if(!Z)return;this.sub=Z.subscribe("mesh.decopilot.cancel");let G=new TextDecoder;(async()=>{for await(let X of this.sub)try{let Y=JSON.parse(G.decode(X.data));if(Y.originId===this.originId)continue;this.onCancel?.(Y.taskId)}catch{}})().catch(console.error)}broadcast($){if(/[.*>\s]/.test($)){console.warn("[NatsCancelBroadcast] Invalid threadId, skipping broadcast");return}this.onCancel?.($);try{let Z=this.options.getConnection();if(!Z)return;Z.publish("mesh.decopilot.cancel",this.encoder.encode(JSON.stringify({taskId:$,originId:this.originId})))}catch(Z){console.warn("[NatsCancelBroadcast] Publish failed (non-critical):",Z)}}publishControlFrame($,Z){}async stop(){this.sub?.unsubscribe(),this.sub=null,this.onCancel=null}}var V_$=($)=>{let Z;return()=>Z??=$()},N81,B81;var C_$=O(()=>{B5();N81=V_$(()=>E8.createHistogram("decopilot.stream.encode_ms",{description:"Per-chunk JSON.stringify+encode time for decopilot stream",unit:"ms"})),B81=V_$(()=>E8.createCounter("decopilot.stream.published_chunks",{description:"Logical decopilot stream chunks published to JetStream",unit:"{chunks}"}))});function y44(){return{name:ow,subjects:[`${Qm0}.>`],storage:bJ.StorageType.File,max_age:b44,max_bytes:x44,max_msgs_per_subject:v44,discard:bJ.DiscardPolicy.Old,retention:bJ.RetentionPolicy.Limits,duplicate_window:f44,num_replicas:1}}class f_${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 __$($){let Z=b_$.headers();for(let[G,X]of Object.entries($))Z.set(G,X);return Z}function u44($,Z){let G=0;return{publish(X,Y,Q,J){X.publish(Y,Q,J?{headers:J}:void 0).catch((W)=>{if(G++,_44().add(1,{"org.id":Z??"unknown"}),G===1||G%100===0)console.warn(`[Decopilot] JetStream publish failed for thread ${$} (${G} total):`,W)})},get errorCount(){return G}}}class O81{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=this.options.getJetStreamManager?await this.options.getJetStreamManager():await bJ.jetstreamManager($),G=y44();try{await Z.streams.info(ow),await Z.streams.update(ow,G)}catch(X){if(X instanceof Error&&X.message.includes("stream not found"))await Z.streams.add(G);else if(X instanceof Error&&/can ?not change.*storage|storage type/i.test(X.message))await Z.streams.delete(ow),await Z.streams.add(G);else throw X}this.js=this.options.getJetStream(),this.jsm=Z,console.log(`[Decopilot] StreamBuffer.init ${this.js?"ready":"degraded (js=null)"}`)}pump($,Z,G,X){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 Q=u44(Z,X),J=!1,W=()=>{if(J)return;J=!0;let w=N4$(Z);Y.publish(w.subject,w.data).catch(()=>{})};G.addEventListener("abort",W,{once:!0});let K=(w)=>{let U=performance.now(),F=Wm0(w,{runId:Z}),H=performance.now()-U;if(N81().record(H),B81().add(1,{"org.id":X??"unknown"}),c44?.record(H,F.reduce((N,B)=>N+B.data.length,0)),F.length===0){console.warn(`[Decopilot] dropping oversized stream chunk for thread ${Z}`);return}for(let N of F)Q.publish(Y,N.subject,N.data,N.headers?__$(N.headers):void 0)};return(async()=>{let w=$.getReader(),U=0,F=0,H;try{while(!0){let{done:N,value:B}=await w.read();if(N)break;if(K(B),F++,++U>=64)U=0,await new Promise((D)=>setImmediate(D))}}catch(N){H=N,console.warn(`[Decopilot] stream pump error for thread ${Z}:`,N?.message??N)}finally{if(w.releaseLock(),W(),h44)console.warn(JSON.stringify({msg:"decopilot-stream-diag",event:"pump-done",taskId:Z,publishedChunks:F,publishErrors:Q.errorCount}))}if(H!==void 0)throw H})()}async publishRawChunk($,Z,G){let X=this.js;if(!X)return!1;let Y=performance.now(),Q=Wm0(Z,{runId:$,dedup:G});if(N81().record(performance.now()-Y),B81().add(1),Q.length===0)return console.warn(`[Decopilot] dropping oversized raw chunk for thread ${$} (> MAX_CHUNKED_BYTES)`),!0;for(let J of Q)await X.publish(J.subject,J.data,{...J.headers?{headers:__$(J.headers)}:{},...J.msgId?{msgID:J.msgId}:{}});return!0}async publishDone($,Z,G){let X=this.js;if(!X)return!1;let Y=H4$({runId:$,fenceToken:Z,finalSeq:G});return await X.publish(Y.subject,Y.data,{msgID:Y.msgId}),!0}async createTailStream($,Z,G){let X=this.js;if(!X)return console.warn(`[Decopilot] createTailStream: JetStream client unavailable for thread ${$}; no live tail`),null;let Y=G?.deliverPolicy==="new"?bJ.DeliverPolicy.New:bJ.DeliverPolicy.All,Q=G?.closeOnDone??!1,J=LN($),W;try{W=await(await X.consumers.get(ow,{filter_subjects:J,deliver_policy:Y})).consume()}catch(D){return console.warn("[Decopilot] JetStream tail unavailable (non-critical):",D?.message??D),null}let U=F90({messages:async function*(){try{for await(let D of W)yield{subject:D.subject,data:D.data,headers:D.headers}}finally{W.stop()}}(),onCancel:()=>W.stop()}).pipeThrough(K90()).pipeThrough(w90()).getReader(),F=!1,H=()=>{if(F)return;F=!0;try{U.releaseLock()}catch{}},N=!1,B=()=>{if(N)return;N=!0,W.stop(),U.cancel().catch(()=>{}),H()};return Z?.addEventListener("abort",B,{once:!0}),new ReadableStream({async pull(D){for(;;){let{done:E,value:L}=await U.read();if(E){B(),D.close();return}let z=L;if(z.kind==="done"){if(Q){B(),D.close();return}continue}D.enqueue(z.chunk);return}},cancel(){B()}})}purge($){if(!this.jsm)return;this.jsm.streams.purge(ow,{filter:LN($)}).catch(()=>{})}teardown(){this.js=null,this.jsm=null}}var bJ,b_$,C44=($)=>{let Z;return()=>Z??=$()},_44,b44=86400000000000,f44=120000000000,x44=4294967296,v44=500000,g44,h44,c44;var x_$=O(()=>{wm0();H90();Km0();B5();C_$();bJ=k(uB(),1),b_$=k(Jh(),1),_44=C44(()=>E8.createCounter("decopilot.stream.publish_errors",{description:"Number of JetStream publish failures for decopilot stream chunks",unit:"{errors}"}));g44=process.env.STREAM_ENCODE_TRACE==="1",h44=process.env.DECOPILOT_STREAM_TRACE==="1";c44=g44?new f_$:null});import{z as X8}from"zod";var v_$,y_$,PK,D81,g_$,h_$,c_$,u_$,d44,d_$,l_$,m_$,i_$,n_$,l44,p_$,b7Z,m44,i44=($)=>{return $.issues.map((Z)=>{return`${Z.path.length>0?Z.path.join("."):"frame"}: ${Z.message}`}).join("; ")},t_$=($)=>{return new TextEncoder().encode(JSON.stringify($))},r_$=($)=>{let Z;try{Z=JSON.parse(new TextDecoder().decode($))}catch(Q){throw TypeError("malformed JSON in tunnel frame",{cause:Q})}if(Z===null||typeof Z!=="object"||Array.isArray(Z))throw TypeError("frame must be an object");if(!("type"in Z))throw TypeError("frame type missing");let G=Z.type,X=typeof G==="string"?m44[G]:void 0;if(!X)throw TypeError(`unknown frame type: ${String(G)}`);let Y=X.safeParse(Z);if(!Y.success)throw TypeError(`invalid tunnel frame: ${i44(Y.error)}`);return Y.data};var o_$=O(()=>{v_$=X8.string().regex(/^[A-Za-z0-9_-]*$/u),y_$=X8.array(X8.tuple([X8.string(),X8.string()])),PK=X8.string().regex(/^[A-Za-z0-9_-]+$/u),D81=X8.string().min(1),g_$=X8.object({type:X8.literal("request.start"),protocol:X8.literal("tunnel.v1"),requestId:PK,method:X8.string().min(1),url:X8.string().min(1),headers:y_$,replySubject:D81,bodySubject:D81.optional(),abortSubject:D81,deadlineUnixMs:X8.number().int().nonnegative().optional()}),h_$=X8.object({type:X8.literal("request.chunk"),requestId:PK,seq:X8.number().int().nonnegative(),data:v_$}),c_$=X8.object({type:X8.literal("request.end"),requestId:PK,seq:X8.number().int().nonnegative()}),u_$=X8.object({type:X8.literal("request.error"),requestId:PK,code:X8.string().min(1),message:X8.string()}),d44=X8.union([h_$,c_$,u_$]),d_$=X8.object({type:X8.literal("response.ack"),requestId:PK}),l_$=X8.object({type:X8.literal("response.start"),requestId:PK,status:X8.number().int().min(100).max(599),statusText:X8.string().optional(),headers:y_$}),m_$=X8.object({type:X8.literal("response.chunk"),requestId:PK,seq:X8.number().int().nonnegative(),data:v_$}),i_$=X8.object({type:X8.literal("response.end"),requestId:PK,seq:X8.number().int().nonnegative()}),n_$=X8.object({type:X8.literal("response.error"),requestId:PK,code:X8.string().min(1),message:X8.string()}),l44=X8.union([d_$,l_$,m_$,i_$,n_$]),p_$=X8.object({type:X8.literal("abort"),requestId:PK,reason:X8.string().optional()}),b7Z=X8.union([g_$,d44,l44,p_$]),m44={"request.start":g_$,"request.chunk":h_$,"request.end":c_$,"request.error":u_$,"response.ack":d_$,"response.start":l_$,"response.chunk":m_$,"response.end":i_$,"response.error":n_$,abort:p_$}});var n44=($)=>{return $.replaceAll("+","-").replaceAll("/","_").replaceAll("=","")},p44=($)=>{let Z=$.replaceAll("-","+").replaceAll("_","/"),G=(4-Z.length%4)%4;return Z+"=".repeat(G)},t44=($)=>{let Z=[];for(let G=0;G<$.length;G+=32768)Z.push(String.fromCharCode(...$.subarray(G,G+32768)));return Z.join("")},r44=($)=>{let Z=new Uint8Array($.length);for(let G=0;G<$.length;G+=32768){let X=$.slice(G,G+32768);Z.set(Uint8Array.from(X,(Y)=>Y.charCodeAt(0)),G)}return Z},a_$=($)=>{return n44(btoa(t44($)))},s_$=($)=>{return r44(atob(p44($)))},o44;var e_$=O(()=>{o44=class o44{#$=[];#Z;#G=!1;#Q=new Set;push($){if(this.#G)return;let Z=this.#Y();if(Z){Z.resolve({value:$,done:!1});return}this.#$.push($)}close(){if(this.#G)return;this.#G=!0,this.#X()}fail($){if(this.#G)return;this.#Z=$,this.#G=!0,this.#J($)}[Symbol.asyncIterator](){let $=!1,Z=new Set;return{next:()=>{if($)return Promise.resolve({value:void 0,done:!0});if(this.#$.length>0)return Promise.resolve({value:this.#$.shift(),done:!1});if(this.#Z)return Promise.reject(this.#Z);if(this.#G)return Promise.resolve({value:void 0,done:!0});return new Promise((G,X)=>{let Y;Y={resolve:(Q)=>{Z.delete(Y),G(Q)},reject:(Q)=>{Z.delete(Y),X(Q)}},Z.add(Y),this.#Q.add(Y)})},return:()=>{$=!0;for(let G of Z)this.#Q.delete(G),G.resolve({value:void 0,done:!0});return Z.clear(),Promise.resolve({value:void 0,done:!0})}}}#Y(){for(let $ of this.#Q)return this.#Q.delete($),$;return}#X(){for(let $ of this.#Q)$.resolve({value:void 0,done:!0});this.#Q.clear()}#J($){for(let Z of this.#Q)Z.reject($);this.#Q.clear()}}});function*J54($,Z){for(let G=0;G<$.length;G+=Z)yield $.subarray(G,G+Z)}class B54{maxSize;ttlMs;now;#$=new Map;constructor($,Z,G=Date.now){this.maxSize=$;this.ttlMs=Z;this.now=G}get($){let Z=this.#$.get($);if(!Z)return;if(Z.expiresAt<=this.now()){this.#$.delete($);return}return Z.value}has($){return this.get($)!==void 0}set($,Z){let G=this.now();this.prune(G),this.#$.delete($),this.#$.set($,{value:Z,expiresAt:G+this.ttlMs});while(this.#$.size>this.maxSize){let X=this.#$.keys().next().value;if(X===void 0)return;this.#$.delete(X)}}take($){let Z=this.get($);return this.#$.delete($),Z}clear(){this.#$.clear()}prune($){for(let[Z,G]of this.#$)if(G.expiresAt<=$)this.#$.delete(Z)}}var a44=30000,s44=1000,e44=65536,oQ,$54=($)=>{return"connection"in $},Z54=($)=>{let Z=$54($)?$:{connection:$};return{connection:Z.connection,timeoutMs:Z.timeoutMs??0,firstFrameTimeoutMs:Z.firstFrameTimeoutMs??a44,idleTimeoutMs:Z.idleTimeoutMs??0,republishIntervalMs:Z.republishIntervalMs??s44,maxChunkBytes:Z.maxChunkBytes??e44,diagnostics:Z.diagnostics}},$b$=($)=>{return Array.from($.entries())},G54=($)=>{return $!==void 0&&!($ instanceof Headers)&&typeof $!=="function"&&typeof $[Symbol.iterator]==="function"},X54=($,Z,G)=>{if(G54(Z?.headers))return Array.from(Z?.headers,([X,Y])=>[String(X),String(Y)]);if($ instanceof Request)return $b$(G.headers);return $b$(G.headers)},Zb$=($)=>{let Z=new Headers;for(let[G,X]of $)Z.append(G,X);return Z},Y54=()=>{return crypto.randomUUID().replaceAll("-","")},Q54=($)=>{try{$?.unsubscribe()}catch{}},W54=($)=>{if(!Number.isSafeInteger($)||$<1)throw TypeError("maxChunkBytes must be a positive safe integer")},K54=($,Z)=>{return $==="HEAD"||Z===204||Z===205||Z===304},IB=($,Z,G)=>{$.publish(Z,t_$(G))},w54=($)=>{return $.type.startsWith("response.")},E81=($)=>{let Z=$.reason;if(Z instanceof Error)return Z.message;if(typeof Z==="string")return Z;return"aborted"},U54=($)=>{if($==="idle")return new oQ("tunnel_idle_timeout","no response frame within idleTimeoutMs");return new oQ("tunnel_no_first_frame","no response frame arrived before firstFrameTimeoutMs")},Gb$=async($,Z,G,X,Y="first_frame")=>{while(!0){let Q,J;try{let W=await Promise.race([$.next(),new Promise((w,U)=>{if(X.aborted){U(X.reason);return}let F=()=>U(X.reason);J=()=>{X.removeEventListener("abort",F)},X.addEventListener("abort",F,{once:!0})}),...G>0?[new Promise((w,U)=>{Q=setTimeout(()=>{U(U54(Y))},G)})]:[]]);if(W.done)return{value:void 0,done:!0};let K=r_$(W.value.data);if(!w54(K)||K.requestId!==Z)continue;return{value:K,done:!1}}finally{if(J?.(),Q)clearTimeout(Q)}}},F54=async($)=>{let Z=!1;while(!0){let G=await Gb$($.iterator,$.requestId,Z?0:$.firstFrameTimeoutMs,$.signal);if(G.done)throw new oQ("tunnel_response_closed","response subscription closed before response.start");if(!Z)Z=!0,$.onFirstResponseFrame();if(G.value.type==="response.ack")continue;if(G.value.type==="response.start")return G.value;if(G.value.type==="response.error")throw new oQ(G.value.code,G.value.message);throw new oQ("tunnel_unexpected_response_frame",`expected response.start, got ${G.value.type}`)}},H54=async($)=>{let Z=$.body.getReader(),G=0,X=!1,Y=()=>{X=!0,Z.cancel($.signal.reason).catch(()=>{})};try{if($.signal.aborted){Y();return}$.signal.addEventListener("abort",Y,{once:!0});while(!0){let{done:Q,value:J}=await Z.read();if(X)return;if(Q){IB($.connection,$.subject,{type:"request.end",requestId:$.requestId,seq:G});return}for(let W of J54(J,$.maxChunkBytes)){if(X)return;IB($.connection,$.subject,{type:"request.chunk",requestId:$.requestId,seq:G,data:a_$(W)}),G++}}}catch(Q){if(X)return;IB($.connection,$.subject,{type:"request.error",requestId:$.requestId,code:"tunnel_request_body_error",message:Q instanceof Error?Q.message:String(Q)})}finally{$.signal.removeEventListener("abort",Y),Z.releaseLock()}},N54=($)=>{return new ReadableStream({async pull(Z){while(!0)try{let G=await Gb$($.iterator,$.requestId,$.idleTimeoutMs,$.signal,"idle");if(G.done){Z.error(new oQ("tunnel_response_closed","response subscription closed before response.end")),$.cleanup();return}let X=G.value;if(X.type==="response.ack"||X.type==="response.start")continue;if(X.type==="response.chunk"){Z.enqueue(s_$(X.data));return}if(X.type==="response.end"){Z.close(),$.cleanup();return}Z.error(new oQ(X.code,X.message)),$.cleanup();return}catch(G){Z.error(G),$.cleanup();return}},cancel(){IB($.connection,$.abortSubject,{type:"abort",requestId:$.requestId,reason:"response_body_cancelled"}),$.cleanup()}},{highWaterMark:0})},RB=($)=>{let Z=Z54($);return W54(Z.maxChunkBytes),async(G,X)=>{let Y=NC$(G),Q=new Request(G,X),J=Y54(),W=BC$(Y.hostname,J),K=new AbortController,w=new AbortController,U=!1,F,H,N,B,D=!1,E=(P=new oQ("tunnel_closed","tunnel request closed"))=>{if(U)return;if(U=!0,Q54(F),Q.body&&!D)Q.body.cancel(P).catch(()=>{});if(w.abort(P),K.abort(P),N)clearInterval(N);if(B)clearTimeout(B);Q.signal.removeEventListener("abort",L)},L=()=>{let P=new oQ("tunnel_aborted",E81(Q.signal));IB(Z.connection,W.abort,{type:"abort",requestId:J,reason:E81(Q.signal)}),K.abort(P),E(P)};if(Q.signal.aborted)throw new oQ("tunnel_aborted",E81(Q.signal));if(F=Z.connection.subscribe(W.reply),H=F[Symbol.asyncIterator](),Q.signal.addEventListener("abort",L,{once:!0}),Z.timeoutMs>0)B=setTimeout(()=>{let P=new oQ("tunnel_timeout",`tunnel request timed out after ${Z.timeoutMs}ms`);IB(Z.connection,W.abort,{type:"abort",requestId:J,reason:"tunnel_timeout"}),K.abort(P),E(P)},Z.timeoutMs);let z={type:"request.start",protocol:"tunnel.v1",requestId:J,method:Q.method,url:Y.pathWithSearch,headers:X54(G,X,Q),replySubject:W.reply,abortSubject:W.abort,...Q.body?{bodySubject:W.body}:{},...Z.timeoutMs>0?{deadlineUnixMs:Date.now()+Z.timeoutMs}:{}};IB(Z.connection,W.request,z),N=Z.republishIntervalMs>0?setInterval(()=>{if(!D)IB(Z.connection,W.request,z)},Z.republishIntervalMs):void 0;let j=()=>{if(D)return;D=!0,(Q.body?H54({connection:Z.connection,subject:W.body,requestId:J,body:Q.body,maxChunkBytes:Z.maxChunkBytes,signal:w.signal}):void 0)?.catch((A)=>{Z.diagnostics?.({event:"request_body_error",requestId:J,subject:W.body,error:A instanceof Error?A.message:String(A)})})};try{let P=await F54({iterator:H,requestId:J,firstFrameTimeoutMs:Z.firstFrameTimeoutMs,signal:K.signal,onFirstResponseFrame:()=>{if(N)clearInterval(N);j()}});if(K54(Q.method,P.status))return E(),new Response(null,{status:P.status,statusText:P.statusText,headers:Zb$(P.headers)});return new Response(N54({connection:Z.connection,abortSubject:W.abort,iterator:H,requestId:J,idleTimeoutMs:Z.idleTimeoutMs,signal:K.signal,cleanup:E}),{status:P.status,statusText:P.statusText,headers:Zb$(P.headers)})}catch(P){throw E(P instanceof Error?P:Error(String(P))),P}}};var Xb$=O(()=>{o_$();e_$();uL0();oQ=class oQ extends Error{code;constructor($,Z,G){super(`${$}: ${Z}`,G);this.code=$;this.name="TunnelTransportError"}}});var pL0=O(()=>{Xb$()});function Yb$($){let Z=$.createFetch??O54,G=$.timeoutMs??2000;return async(X)=>{try{let Y=$.getConnection();if(!Y)return L81;let Q=CJ(X),W=await Z(Y,G)(`tunnel://${Q}/api/links/status`,{method:"GET"});if(!W.ok)return L81;let K=await W.json();return{online:!0,hostname:K.hostname,capabilities:K.capabilities??[],cliVersion:K.cliVersion}}catch{return L81}}}var L81,O54=($,Z)=>RB({connection:$,firstFrameTimeoutMs:Z});var Qb$=O(()=>{pL0();wr();L81={online:!1,capabilities:[]}});async function*D54($){if(!$.body){yield{headers:{status:$.status,headers:Object.fromEntries($.headers.entries())}};return}let Z=$.body.getReader(),G=!1;try{yield{headers:{status:$.status,headers:Object.fromEntries($.headers.entries())}};while(!0){let{done:X,value:Y}=await Z.read();if(X){G=!0;return}yield{data:Buffer.from(Y).toString("base64")}}}finally{try{if(!G)await Z.cancel()}catch{}finally{Z.releaseLock()}}}function Jb$($){let Z=$.createFetch??((G)=>RB({connection:G,idleTimeoutMs:E54}));return async function*(X,Y,Q){let J=$.getConnection();if(!J)throw Error("link_unavailable: NATS unavailable");let W=CJ(X),K=Z(J),w={method:Y.method,headers:Y.headers,signal:Q?.signal};if(Y.body!=null)w.body=Y.body;let U=await K(`tunnel://${W}${Y.path}`,w);yield*D54(U)}}var E54=45000;var Wb$=O(()=>{pL0();wr()});import{z as fJ}from"zod";function Kb$($){return JSON.stringify($)}var KGZ;var wb$=O(()=>{KGZ=fJ.discriminatedUnion("type",[fJ.object({type:fJ.literal("cancel"),runId:fJ.string()}),fJ.object({type:fJ.literal("cancel_req"),reqId:fJ.string()}),fJ.object({type:fJ.literal("keep_alive")}),fJ.object({type:fJ.literal("shutdown")})])});function Ub$($){let Z=$.createFetch??((G)=>RB({connection:G,idleTimeoutMs:L54}));return{async publish(G,X,Y){let Q=$.getConnection();if(!Q)throw Error("link_unavailable: NATS unavailable");let J=CJ(G),K=await Z(Q)(`tunnel://${J}/api/links/work`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(X),signal:Y?.signal});if(!K.ok){let w=await K.text().catch(()=>"");throw Error(`tunnel work publish failed (${K.status})${w?`: ${w}`:""}`)}await K.body?.cancel().catch(()=>{})}}}function Fb$($){let Z=$.createFetch??RB;return{async publishControlFrame(G,X,Y){let Q=$.getConnection();if(!Q)throw Error("link_unavailable: NATS unavailable");let J=CJ(G),K=await Z(Q)(`tunnel://${J}/api/links/control`,{method:"POST",headers:{"content-type":"application/json"},body:Kb$(X),signal:Y?.signal});if(!K.ok){let w=await K.text().catch(()=>"");throw Error(`tunnel control publish failed (${K.status})${w?`: ${w}`:""}`)}await K.body?.cancel().catch(()=>{})}}}var L54=45000;var Hb$=O(()=>{pL0();wb$();wr()});function tL0($,Z,G,X){if(!X)return!1;return $.emit(Z,_3(G,X.status,{title:X.title??void 0,virtualMcpId:X.virtual_mcp_id??void 0,createdBy:X.created_by??void 0,triggerId:X.trigger_id??null,branch:X.branch??null,createdAt:X.created_at,updatedAt:X.updated_at})),!0}var Nb$=O(()=>{R8()});class z81{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 z54,rm as rL0}from"fs/promises";import{join as oL0}from"path";async function aL0($){let Z=new Date;Z.setUTCDate(Z.getUTCDate()-j54),Z.setUTCHours(0,0,0,0);let G=0;try{let X=await RC($);for(let Y of X)if(/^\d{4}$/.test(Y))G+=await Bb$($,Y,Z);else if(!Y.startsWith(".")){let Q=oL0($,Y),J=await RC(Q);for(let K of J){if(!/^\d{4}$/.test(K))continue;G+=await Bb$(Q,K,Z)}if((await RC(Q)).length===0)await rL0(Q,{recursive:!0,force:!0})}}catch(X){console.warn("monitoring retention cleanup failed:",X)}return G}async function Bb$($,Z,G){let X=0,Y=oL0($,Z),Q=await RC(Y);for(let W of Q){if(!/^\d{2}$/.test(W))continue;let K=oL0(Y,W),w=await RC(K);for(let F of w){if(!/^\d{2}$/.test(F))continue;let H=new Date(`${Z}-${W}-${F}T00:00:00Z`);if(isNaN(H.getTime()))continue;if(H<G){let N=oL0(K,F);await rL0(N,{recursive:!0,force:!0}),X++}}if((await RC(K)).length===0)await rL0(K,{recursive:!0,force:!0})}if((await RC(Y)).length===0)await rL0(Y,{recursive:!0,force:!0});return X}async function RC($){try{return(await z54($)).filter((G)=>!G.startsWith("."))}catch{return[]}}var j54=30;var j81=()=>{};import{DBOS as P81,SchedulerMode as P54}from"@dbos-inc/dbos-sdk";async function T54(){let $=[eQ(),MC(),IK()],Z=0;for(let G of $)try{Z+=await aL0(G)}catch(X){console.error("[monitoring-retention] cleanup failed:",X)}return console.log(`[monitoring-retention] deleted ${Z} day-dir(s) across ${$.length} signal dir(s)`),{deleted:Z,dirs:$.length}}async function I54($,Z){await P81.runStep(()=>T54(),{name:"monitoringRetention"})}function Db$(){if(Ob$)return;Ob$=!0;let $=P81.registerWorkflow(I54,{name:"monitoringRetentionWorkflow"});P81.registerScheduled($,{name:"monitoringRetentionWorkflow",crontab:A54,mode:P54.ExactlyOncePerIntervalWhenActive})}var A54="23 4 * * *",Ob$=!1;var Eb$=O(()=>{iX();j81()});function Lb$($){return async(Z,G)=>{let X=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","=",G).where("member.organizationId","=",Z).executeTakeFirst();if(!X)return console.warn(`[automationContextFactory] User ${G} not found in org ${Z} \u2014 returning null`),null;let Y=await GN.create();Y.auth.user={id:G,role:X.role},Y.organization={id:X.orgId,slug:X.orgSlug,name:X.orgName};let Q=await qu0($.db,Z,X.role);return Y.boundAuth=Ru0({auth:Y.authInstance,headers:new Headers,role:X.role,permissions:Q,userId:G}),Y.access=new yD(G,void 0,Y.boundAuth,X.role,"self"),n40(Y,{id:X.orgId,slug:X.orgSlug}),Y}}var zb$=O(()=>{gD();Si()});function R54(){return{services:[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}],migrationsStatus:"pending",serverUrl:null,logs:[]}}function M54(){for(let $ of q54)$()}function jb$($){let Z=[...A81.logs,$];A81={...A81,logs:Z.length>500?Z.slice(-500):Z},M54()}function T81(){return k54}var A81,q54,k54=!1;var I81=O(()=>{A81=R54(),q54=new Set});import{EventEmitter as S54}from"events";var R81;var Pb$=O(()=>{I81();R81=new S54;R81.on("request",($)=>{jb$($)})});function Ab$(){return async($,Z)=>{let G=Date.now(),X=$.req.method,Y=$.req.path;if(Y==="/api/auth/get-session"||Y.includes("favicon")){await Z();return}let Q="",J=!1;if(Y.startsWith("/mcp")&&X==="POST"){J=!0;try{if($.req.header("Content-Type")?.includes("application/json")){let H=await $.req.raw.clone().json();if(H.method==="tools/call"&&H.params?.name){let N=xg(H.params.name),B=H.params.arguments||{},D=Object.keys(B).map((L)=>xg(L)),E=D.length>0?D.slice(0,3).join(",")+(D.length>3?"\u2026":""):"";Q=`${$5.tool}${N}${$5.dim}(${E})${$5.reset}`}else if(H.method)Q=`${$5.dim}${xg(H.method)}${$5.reset}`}}catch{}}let W=xg(Y);if(Y.startsWith("/mcp/conn_")){let U=Y.split("/")[2]??"";W=`/mcp/${$5.mcp}${xg(U.slice(0,12))}\u2026${$5.reset}`}else if(Y==="/mcp")W=`${$5.mcp}/mcp${$5.reset}`;else if(Y==="/mcp/registry")W=`${$5.mcp}/mcp/registry${$5.reset}`;let K=C54(X),w=J?"\u25C0":"\u2190";if(!T81())console.log(`${$5.dim}${w}${$5.reset} ${K}${X}${$5.reset} ${W}${Q?` ${Q}`:""}`);try{await Z()}finally{let U=Date.now()-G,F=$.res.status,H=V54(F),N=U<1000?`${U}ms`:`${(U/1000).toFixed(1)}s`,B=J?"\u25B6":"\u2192";if(!T81())console.log(`${$5.dim}${B}${$5.reset} ${K}${X}${$5.reset} ${W}${Q?` ${Q}`:""} ${H}${F}${$5.reset} ${$5.duration}${N}${$5.reset}`);R81.emit("request",{method:X,path:xg(Y),status:F,duration:U,timestamp:new Date})}}}var $5,V54=($)=>{if($>=500)return $5.serverError;if($>=400)return $5.clientError;if($>=300)return $5.redirect;return $5.ok},C54=($)=>{return $5[$]||$5.reset},xg=($)=>{return $.replace(/\r/g,"").replace(/\n/g,"").replace(/\x1b\[[0-9;]*m/g,"").replace(/[\x00-\x1f\x7f-\x9f]/g,"")};var Tb$=O(()=>{I81();Pb$();$5={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 Mb$}from"crypto";import{mkdir as _54,readdir as b54,rm as Ib$,stat as kb$}from"fs/promises";import{join as M81,relative as f54}from"path";import{z as T$}from"zod";function Vb$($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return M81(x54,Z)}function Cb$($){return $.replace(/^\/+/,"").replace(/\.\./g,"")}function q81($,Z){let G=Vb$($),X=Cb$(Z);return M81(G,X)}function v54($,Z,G,X){let Y=O1().encryptionKey||"dev-secret",Q=`${$}:${Z}:${G}:${X}`;return Mb$("sha256",Y).update(Q).digest("hex")}function qb$($,Z,G,X,Y){let Q=Math.floor(Date.now()/1000)+X,J=v54(Z,G,Q,Y),W=new URL(`/api/dev-assets/${Z}/${Cb$(G)}`,$);return W.searchParams.set("expires",Q.toString()),W.searchParams.set("signature",J),W.searchParams.set("method",Y),W.toString()}function _b$($,Z,G){let X=`${$}:${Z.getTime()}:${G}`;return`"${Mb$("md5","etag").update(X).digest("hex")}"`}async function bb$($,Z,G,X,Y){try{let Q=await b54($,{withFileTypes:!0});for(let J of Q){let W=M81($,J.name),w=f54(Z,W).replace(/\\/g,"/");if(G&&!w.startsWith(G))continue;if(J.isDirectory())if(X){let U=w+"/";if(!G||U.startsWith(G)){if(!(G?w.slice(G.length):w).includes("/"))Y.commonPrefixes.add(U)}}else await bb$(W,Z,G,X,Y);else if(J.isFile()){if(X&&G){let U=w.slice(G.length);if(U.includes(X)){let F=U.indexOf(X),H=G+U.slice(0,F+1);Y.commonPrefixes.add(H);continue}}try{let U=await kb$(W);Y.objects.push({key:w,size:U.size,lastModified:U.mtime.toISOString(),etag:_b$(W,U.mtime,U.size)})}catch{}}}}catch{}}function fb$($,Z){let X=O0($).id;return[{name:"LIST_OBJECTS",description:"List objects in the local assets directory with pagination support",inputSchema:T$.object({prefix:T$.string().optional(),maxKeys:T$.number().optional().default(1000),continuationToken:T$.string().optional(),delimiter:T$.string().optional()}),outputSchema:T$.object({objects:T$.array(T$.object({key:T$.string(),size:T$.number(),lastModified:T$.string(),etag:T$.string()})),nextContinuationToken:T$.string().optional(),isTruncated:T$.boolean(),commonPrefixes:T$.array(T$.string()).optional()}),handler:async(Y)=>{let Q=Y,J=Q.prefix||"",W=Q.maxKeys??1000,K=Q.delimiter,w=Q.continuationToken,U=Vb$(X);await _54(U,{recursive:!0});let F={objects:[],commonPrefixes:new Set};await bb$(U,U,J,K,F),F.objects.sort((E,L)=>E.key.localeCompare(L.key));let H=0;if(w){if(H=F.objects.findIndex((E)=>E.key>w),H===-1)H=F.objects.length}let N=F.objects.slice(H,H+W),B=H+W<F.objects.length,D=B?N[N.length-1]?.key:void 0;return{objects:N,isTruncated:B,nextContinuationToken:D,commonPrefixes:Array.from(F.commonPrefixes).sort()}}},{name:"GET_OBJECT_METADATA",description:"Get metadata for a file in the local assets directory",inputSchema:T$.object({key:T$.string()}),outputSchema:T$.object({contentType:T$.string().optional(),contentLength:T$.number(),lastModified:T$.string(),etag:T$.string(),metadata:T$.record(T$.string(),T$.string()).optional()}),handler:async(Y)=>{let Q=Y,J=q81(X,Q.key),W=await kb$(J);return{contentType:j11(Q.key),contentLength:W.size,lastModified:W.mtime.toISOString(),etag:_b$(J,W.mtime,W.size)}}},{name:"GET_PRESIGNED_URL",description:"Generate a presigned URL for downloading a file from local storage",inputSchema:T$.object({key:T$.string(),expiresIn:T$.number().optional()}),outputSchema:T$.object({url:T$.string(),expiresIn:T$.number()}),handler:async(Y)=>{let Q=Y,J=Q.expiresIn??Rb$;return{url:qb$(Z,X,Q.key,J,"GET"),expiresIn:J}}},{name:"PUT_PRESIGNED_URL",description:"Generate a presigned URL for uploading a file to local storage",inputSchema:T$.object({key:T$.string(),expiresIn:T$.number().optional(),contentType:T$.string().optional()}),outputSchema:T$.object({url:T$.string(),expiresIn:T$.number()}),handler:async(Y)=>{let Q=Y,J=Q.expiresIn??Rb$;return{url:qb$(Z,X,Q.key,J,"PUT"),expiresIn:J}}},{name:"DELETE_OBJECT",description:"Delete a single file from local storage",inputSchema:T$.object({key:T$.string()}),outputSchema:T$.object({success:T$.boolean(),key:T$.string()}),handler:async(Y)=>{let Q=Y,J=q81(X,Q.key);try{return await Ib$(J),{success:!0,key:Q.key}}catch{return{success:!1,key:Q.key}}}},{name:"DELETE_OBJECTS",description:"Delete multiple files from local storage",inputSchema:T$.object({keys:T$.array(T$.string()).max(1000)}),outputSchema:T$.object({deleted:T$.array(T$.string()),errors:T$.array(T$.object({key:T$.string(),message:T$.string()}))}),handler:async(Y)=>{let Q=Y,J=[],W=[];return await Promise.all(Q.keys.map(async(K)=>{let w=q81(X,K);try{await Ib$(w),J.push(K)}catch(U){W.push({key:K,message:U instanceof Error?U.message:"Unknown error"})}})),{deleted:J,errors:W}}}]}async function k81($,Z,G){let X=fb$(Z,G),Y=new Nw({name:"dev-assets-mcp",version:"1.0.0"},{capabilities:{tools:{}},jsonSchemaValidator:z5});for(let J of X){let W="shape"in J.inputSchema?J.inputSchema.shape:T$.object({}).shape,K=J.outputSchema&&"shape"in J.outputSchema?J.outputSchema.shape:T$.object({}).shape;Y.registerTool(J.name,{description:J.description??"",inputSchema:W,outputSchema:K,annotations:J.annotations,_meta:J._meta},async(w)=>{try{let U=await J.handler(w);return{content:[{type:"text",text:JSON.stringify(U)}],structuredContent:U}}catch(U){return{content:[{type:"text",text:`Error: ${U.message}`}],isError:!0}}})}let Q=new yY({enableJsonResponse:$.headers.get("Accept")?.includes("application/json")??!1});return await Y.connect(Q),aW(Y,Q,$,"mcp:dev-assets")}async function xb$($,Z,G,X){let Q=fb$(G,X).find((J)=>J.name===$);if(!Q)return{content:[{type:"text",text:`Tool not found: ${$}`}],isError:!0};try{let J=await Q.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 x54="./data/assets",Rb$=3600,Sb$,vb$;var yb$=O(()=>{F8();Up();Y6();yu();Xy();zG();WL0();Sb$=new V1;Sb$.all("/",async($)=>{let Z=$.get("studioContext"),G=new URL($.req.url),X=`${G.protocol}//${G.host}`;return k81($.req.raw,Z,X)});vb$=Sb$});var gb$={};X6(gb$,{mountDevRoutes:()=>y54});function y54($,Z){$.all("/mcp/:connectionId{.*_dev-assets$}",Z,async(X)=>{let Y=X.get("studioContext"),Q=new URL(X.req.url),J=`${Q.protocol}//${Q.host}`;return k81(X.req.raw,Y,J)}),$.all("/mcp/:connectionId{.*_dev-assets$}/call-tool/:toolName",Z,async(X)=>{let Y=X.get("studioContext"),Q=new URL(X.req.url),J=`${Q.protocol}//${Q.host}`,W=X.req.param("toolName");if(!W)return X.json({error:"Missing tool name"},400);let K=await X.req.json(),w=await xb$(W,K,Y,J);if(w.isError)return X.json(w.content,500);return X.json(w.content)}),$.use("/mcp/dev-assets",Z),$.route("/mcp/dev-assets",vb$);let G=new V1;G.use("*",pQ({mountPath:"/api/dev-assets"})),G.route("/",JL0({orgFromPath:!1})),$.route("/api/dev-assets",G)}var hb$=O(()=>{Y6();N11();WL0();yb$()});import{sql as g54}from"kysely";import{randomUUID as cb$}from"crypto";import{z as h54}from"zod";async function u54($){let Z=new Date().toISOString(),G=cb$(),X=G4.SELF($.organizationId),Y="registry.publish_request.created",Q={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:G,organization_id:$.organizationId,type:"registry.publish_request.created",source:X,specversion:"1.0",subject:$.request.id,time:Z,datacontenttype:"application/json",dataschema:null,data:JSON.stringify(Q),cron:null,status:"pending",attempts:0,last_error:null,next_retry_at:null,created_at:Z,updated_at:Z}).execute();let J=await $.db.selectFrom("event_subscriptions").select(["id"]).where("organization_id","=",$.organizationId).where("enabled","=",1).where("event_type","=","registry.publish_request.created").where((W)=>W.or([W("publisher","is",null),W("publisher","=",X)])).execute();if(J.length>0)await $.db.insertInto("event_deliveries").values(J.map((W)=>({id:cb$(),event_id:G,subscription_id:W.id,status:"pending",attempts:0,last_error:null,delivered_at:null,next_retry_at:null,created_at:Z}))).execute();try{await g54`SELECT pg_notify('mesh_events', ${G})`.execute($.db)}catch{}}async function d54($,Z){let X=(await $.selectFrom("organization").select(["id"]).where("id","=",Z).execute())[0];if(X?.id)return X.id;return(await $.selectFrom("organization").select(["id"]).where("slug","=",Z).execute())[0]?.id??null}async function l54($,Z){let G=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","=",YC).execute();for(let X of G){let Y=X.settings,Q=typeof Y==="string"?(()=>{try{return JSON.parse(Y)}catch{return{}}})():Y??{};if(Q.acceptPublishRequests===!0){let J=Q.rateLimitWindow==="minute"?"minute":"hour",W=Q.rateLimitMax,K=typeof W==="number"&&Number.isFinite(W)&&W>=1?Math.floor(W):db$;return{acceptPublishRequests:!0,requireApiToken:Q.requireApiToken===!0,rateLimitEnabled:Q.rateLimitEnabled===void 0?ub$:Q.rateLimitEnabled===!0,rateLimitWindow:J,rateLimitMax:K}}}return{acceptPublishRequests:!1,requireApiToken:!1,rateLimitEnabled:ub$,rateLimitWindow:c54,rateLimitMax:db$}}async function m54($,Z,G){let X=G==="minute"?60000:3600000,Y=new Date(Date.now()-X).toISOString(),Q=await $.selectFrom("private_registry_publish_request").select((J)=>J.fn.countAll().as("count")).where("organization_id","=",Z).where("created_at",">=",Y).executeTakeFirst();return Number(Q?.count??0)}async function i54($,Z,G,X){let Y=await $.selectFrom("private_registry_item").select(["id","title"]).where("organization_id","=",Z).where((Q)=>Q.or([Q("id","=",G),Q("title","=",X)])).executeTakeFirst();return Y?{id:String(Y.id),title:String(Y.title)}:null}function lb$($){let{db:Z,db:G}=$,X=new Kx(G),Y=new wx(G);return async(Q)=>{let J=Q.req.param("orgRef")??Q.req.param("org");if(!J)return Q.json({error:"Organization not found"},404);let W=await d54(Z,J);if(!W)return Q.json({error:"Organization not found"},404);let K=await l54(Z,W);if(!K.acceptPublishRequests)return Q.json({error:"Publish requests are not enabled for this registry."},403);if(K.requireApiToken){let N=Q.req.header("Authorization"),B=N?.startsWith("Bearer ")?N.slice(7).trim():null;if(!B)return Q.json({error:"API key required. Use Authorization: Bearer <key>"},401);if(!await Y.validate(W,B))return Q.json({error:"Invalid API key"},401)}if(K.rateLimitEnabled){if(await m54(G,W,K.rateLimitWindow)>=K.rateLimitMax)return Q.json({error:"Too many publish requests. Please try again later.",retryAfterSeconds:K.rateLimitWindow==="minute"?60:3600},429)}let w;try{w=await Q.req.json()}catch{return Q.json({error:"Invalid JSON body"},400)}let U=BA$.safeParse(w);if(!U.success)return Q.json({error:"Invalid publish request payload",details:h54.treeifyError(U.error)},400);let F=await i54(G,W,U.data.data.id,U.data.data.title);if(F)return Q.json({error:"A registry item with the same id or title already exists. Please use a different name/id.",conflict:F},409);let H=await X.createOrUpdate({organization_id:W,requested_id:U.data.data.id,title:U.data.data.title,description:U.data.data.description??null,_meta:U.data.data._meta,server:U.data.data.server,requester_name:U.data.requester?.name??null,requester_email:U.data.requester?.email??null});try{await u54({db:Z,organizationId:W,request:H})}catch(N){console.warn("[private-registry] failed to emit publish-request event:",N)}return i1.capture({distinctId:U.data.requester?.email??`org:${W}`,event:"registry_publish_request_submitted",groups:{organization:W},properties:{organization_id:W,request_id:H.id,requested_id:H.requested_id,title:U.data.data.title,requester_email:U.data.requester?.email??null}}),Q.json({id:H.id,requested_id:H.requested_id,status:H.status},201)}}var ub$=!0,c54="hour",db$=100;var mb$=O(()=>{q4();R8();$g();ey0();$g0();Q9()});var ib$={};X6(ib$,{createPublishRequestHandler:()=>lb$,createPublicMCPHandler:()=>jA$});var nb$=O(()=>{ey();mb$()});var Mp0={};X6(Mp0,{watchHandler:()=>ab$,getProxyDispatch:()=>r54,createApp:()=>Y94});import{readFileSync as n54}from"fs";import{PrometheusSerializer as p54}from"@opentelemetry/exporter-prometheus";import{DBOS as vg}from"@dbos-inc/dbos-sdk";import{oAuthDiscoveryMetadata as e54,oAuthProtectedResourceMetadata as $94}from"better-auth/plugins";async function t54($){let Z=$.connect(),G;try{G=await Promise.race([Z,tb$(pb$)])}catch{return Z.then((X)=>X.release(!0)).catch(()=>{}),!1}try{return await Promise.race([G.query("SELECT 1"),tb$(pb$)]),G.release(),!0}catch{return G.release(!0),!1}}function tb$($){return new Promise((Z,G)=>setTimeout(()=>G(Error("pg health-check timeout")),$))}function r54(){if(!S81)throw Error("getProxyDispatch() called before createApp() or without NATS \u2014 proxy dispatch unavailable");return S81}async function o54($,Z){let{items:G}=await $.storage.connections.list(Z,{where:{field:["connection_url"],operator:"like",value:`${q_1}%`},limit:1}),X=G[0];if(!X?.configuration_state)return null;return X.configuration_state.project_locator}function a54($){let Z=new URLSearchParams;if($){let[G,X]=$.split("/");if(G)Z.set("workspace_hint",G);if(X)Z.set("project_hint",X)}else Z.set("auto_personal","true");return Z.set("force_new","true"),Z}async function Y94($={}){let Z=$.database??H6(),G=!1;Z9.stop().catch((g)=>{console.error("[SSEHub] Error stopping previous broadcast (HMR cleanup):",g)});let X,Y,Q=new U81,J,W,K,w,U,F=null;if($.disableNats)J=F81(),X={get:async()=>null,set:async()=>{},invalidate:async()=>{},teardown:()=>{}},Y=new Fp,W={start:async()=>{},broadcast:()=>{},publishControlFrame:()=>{},stop:async()=>{}},U=void 0,K={init:async()=>{},pump:(g)=>{return(async()=>{let H0=g.getReader();try{while(!0){let{done:f0}=await H0.read();if(f0)break}}catch{}finally{H0.releaseLock()}})()},publishRawChunk:async()=>!1,publishDone:async()=>!1,createTailStream:async()=>null,purge:()=>{},teardown:()=>{}};else{F=R_$();let g=O1().natsCredsPath,H0;if(g)try{H0=n54(g,"utf8")}catch(e1){console.error(`[app] failed to read NATS_CREDS at ${g}; connecting anonymously`,e1)}F.init(O1().natsUrls,H0?{creds:H0}:void 0);let f0=Jg0()?new ax0({getJetStream:()=>F.getJetStream()}):null;f0?.init().catch(()=>{}),X=f0;let e0=new Tt0({getJetStream:()=>F.getJetStream()});e0.init().catch(()=>{}),Y=e0,J=F81({getConnection:()=>F.getConnection()}),W=new H81({getConnection:()=>F.getConnection()}),K=new O81({getConnection:()=>F.getConnection(),getJetStream:()=>F.getJetStream()}),w=Yb$({getConnection:()=>F.getConnection()}),U=Ub$({getConnection:()=>F.getConnection()});let u0=Fb$({getConnection:()=>F.getConnection()}),T1=W;W={start:(e1)=>T1.start(e1),broadcast:(e1)=>T1.broadcast(e1),publishControlFrame:(e1,z6)=>{u0.publishControlFrame(e1,z6).catch((J4)=>{console.warn("[TunnelControl] publishControlFrame failed (non-critical):",J4)})},stop:()=>T1.stop()},iI$(F),F.onReady(()=>{f0?.init().catch((e1)=>{console.error("[McpListCache] Deferred init failed:",e1)}),e0.init().catch((e1)=>{console.error("[ConnectionCircuitStore] Deferred init failed:",e1)}),J.start(),ji1(()=>F.getConnection()),K.init().catch((e1)=>{console.warn("[Decopilot] StreamBuffer init failed (late-join disabled):",e1)})})}if(yg)await yg();sx0(X),It0(Y);let N={storage:new Ox(Z.db),sseHub:Z9},B=new zm0(N),D=new Zm(Z.db),E=new z81(D);E.start(),W.start((g)=>{f90(g),B.execute({type:"CANCEL",taskId:g}).catch((H0)=>{console.error("[Decopilot] CancelBroadcast execute failed:",H0)})}).catch((g)=>{console.error("[Decopilot] CancelBroadcast start failed:",g)}),F?.onReady(()=>{W.start().catch((g)=>{console.error("[CancelBroadcast] Deferred start failed:",g)})}),K.init().catch((g)=>{console.warn("[Decopilot] StreamBuffer init failed, attach/late-join disabled:",g)}),yg=async()=>{await B.stopAll(),B.dispose(),E.dispose(),W.stop().catch(()=>{}),K.teardown(),X?.teardown(),Q.teardown(),J.teardown(),Pi1(),Y.teardown(),sx0(null),It0(null)};let L=new V1;if(L.use("*",tb0({enabled:(g)=>yb(g,"debug")==="1"})),L.use("*",Dz0),L.use("/*",Fb1({origin:(g)=>{if(g.includes("localhost")||g.includes("127.0.0.1"))return g;return g},credentials:!0,allowMethods:["GET","POST","PUT","DELETE","OPTIONS"],allowHeaders:["Content-Type","Authorization","mcp-protocol-version"],exposeHeaders:["WWW-Authenticate"]})),L.use("*",async(g,H0)=>{if(await H0(),g.req.path.includes("/files/"))return;if(g.req.path.includes("/fs/")&&g.req.path.endsWith("/read"))return;g.header("X-Frame-Options","DENY"),g.header("Content-Security-Policy","frame-ancestors 'none'")}),!O1().noTui)L.use("*",Ab$());L.use("*",async(g,H0)=>{if(await H0(),ug(g.req.path))return;if(g.res.status>=500){let e0=await g.res.clone().text();console.error(`[5xx Response] ${g.req.method} ${g.req.path} - ${g.res.status}:`,e0)}}),L.get(xZ.HEALTH,(g)=>{if(G)return g.json({status:"shutting_down"},503);return g.json({status:"ok"})}),L.get(xZ.HEALTH_LIVE,(g)=>{return g.json({status:"ok"})}),L.get(xZ.HEALTH_READY,async(g)=>{if(G)return g.json({status:"shutting_down"},503);let H0={};if(H0.postgres={status:await t54(Z.pool)?"up":"down"},F)H0.nats=F.isConnected()?{status:"up"}:{status:"down"};else H0.nats={status:"down"};let f0=H0.postgres.status==="up",e0=f0?200:503;return g.json({status:f0?"ready":"not_ready",services:H0},e0)}),L.get(xZ.METRICS,async(g)=>{try{let H0=await jz0.collect(),f0=s54.serialize(H0.resourceMetrics);return g.text(f0,200,{"Content-Type":"text/plain; version=0.0.4; charset=utf-8"})}catch(H0){return console.error("Failed to collect metrics:",H0),g.text("# Error collecting metrics",500)}}),L.get(`${xZ.DBOS_QUEUE_DEPTH_PREFIX}:queueName`,async(g)=>{let H0=g.req.param("queueName");if(!Z94.has(H0))return g.json({error:`Unknown queue: ${H0}`},404);let f0=await vg.listQueuedWorkflows({queueName:H0,status:"ENQUEUED"});return g.json({queue_length:f0.length})}),L.get(xZ.HOSTED_RUN_PENDING,(g)=>{let{active:H0,pending:f0,max:e0}=u4$();return g.json({pending:f0,active:H0,max:e0})}),L.route("/api/config",nC$),L.route("/api/_reports",Y_$),L.route("/report",sC$($.clientDir)),L.route("/api/auth/custom",HR$),L.route("/api/auth/desktop",BR$),L.all("/api/auth/admin/*",LR$),L.all("/api/auth/*",async(g)=>{return await O8.handler(g.req.raw)});let z=$s1();z.use("/.well-known/oauth-protected-resource/mcp/:connectionId",KC),z.use("/mcp/:connectionId/.well-known/oauth-protected-resource",KC),L.route("/",z),L.get("/.well-known/oauth-protected-resource/api/:org/mcp/:connectionId",Vi),L.route("/",Ys1()),L.use("/oauth-proxy/:connectionId/*",KC),L.all("/oauth-proxy/:connectionId/*",rb$);let j=async(g)=>{let f0=await G94()(g.req.raw),e0=await f0.json();return Response.json(e0,f0)};L.use("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",KC),L.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",j);let P=async(g)=>{let f0=await X94()(g.req.raw),e0=await f0.json();return Response.json(e0,f0)};L.get("/.well-known/oauth-authorization-server/*/:gateway?/:connectionId?",P);let A=mI$({ttlMs:120000}),M=await ca1({db:Z.db,auth:O8,encryption:{key:O1().encryptionKey},observability:{tracer:cU,meter:E8},modelListCache:Q,providerKeyCache:J,memberRoleCache:A,linkStatusProbe:w,publishLinkControlFrame:(g,H0)=>W.publishControlFrame(g,H0)});GN.set(M);let S=new jw(O1().encryptionKey);L21({db:Z.db,baseUrl:j3()});let R=Q60(Z.db),V=new pl(Z.db),i=Lb$({db:Z.db});Lt0({storage:R,studioContextFactory:i}),bm0({studioContextFactory:i,deps:{runRegistry:B,cancelBroadcast:W,streamBuffer:K,sseHub:Z9},prepareLinkWorkFn:UM$,workPublisher:U}),km0({dispatchRunFn:KM$,studioContextFactory:i,deps:{runRegistry:B,cancelBroadcast:W,streamBuffer:K,sseHub:Z9}});let f=new Ox(Z.db),v=new Gm(Z.db);I4$({getJetStream:()=>F?.getJetStream()??null,getJetStreamManager:async()=>{let g=F?.getConnection();return g?await ob$.jetstreamManager(g):null},messageParts:f.messageParts(),resolveRun:async(g)=>{let H0=await Z.db.selectFrom("threads").select(["organization_id","created_by","message_storage_version","status","run_fence_token","title"]).where("id","=",g).executeTakeFirst();return H0?{orgId:H0.organization_id,createdBy:H0.created_by,version:H0.message_storage_version??1,status:H0.status,runFenceToken:H0.run_fence_token,title:H0.title??null}:null},completeRunIfNotCompleted:async(g,H0)=>{let f0=await f.completeRunIfNotCompleted(g,H0);if(tL0(Z9,H0,g,f0),f0)await Rm0(v,g,H0);return f0},markRunRequiresAction:async(g,H0)=>{let f0=await f.requiresActionIfInProgress(g,H0);return tL0(Z9,H0,g,f0),f0},markRunFailed:async(g,H0,f0,e0)=>{let u0=await f.markRunFailed(g,H0,f0,e0);if(tL0(Z9,H0,g,u0),u0)await Rm0(v,g,H0);return u0},clearSynthesizedError:async(g,H0)=>{await f.messageParts().replaceMessageParts(g,zN(g,H0),[])},persistTitle:(g,H0,f0)=>f.update(g,H0,{title:f0}),onTitleUpdated:async({runId:g,orgId:H0,title:f0})=>{let e0=await f.get(g,H0).catch(()=>null);Z9.emit(H0,_3(g,e0?.status??"in_progress",{title:f0,virtualMcpId:e0?.virtual_mcp_id??void 0,createdBy:e0?.created_by,triggerId:e0?.trigger_id,branch:e0?.branch??null,createdAt:e0?.created_at,updatedAt:e0?.updated_at}))},bumpProgress:async({runId:g,orgId:H0})=>{await f.bumpProgress(g,H0)},recordCompleted:async({runId:g,orgId:H0,distinctId:f0,usage:e0})=>{i1.capture({distinctId:f0,event:"chat_message_completed",groups:{organization:H0},properties:{organization_id:H0,thread_id:g,transport:"projector",input_tokens:e0.inputTokens,output_tokens:e0.outputTokens,total_tokens:e0.totalTokens}})},recordFailed:async({runId:g,orgId:H0,distinctId:f0,reason:e0,kind:u0})=>{i1.capture({distinctId:f0,event:"chat_message_failed",groups:{organization:H0},properties:{organization_id:H0,thread_id:g,transport:"projector",error_category:u0,error_message:e0}})},purgeRun:async(g)=>{K.purge(g)}}),YW$({studioContextFactory:i,systemDatabaseUrl:xx1(O1().databaseUrl,O1().databasePgSsl),streamBuffer:K}),Db$(),z21();let Z0=async(g,H0,f0)=>{let e0=await R.findById(g,H0);if(!e0)throw Error("Automation not found");return Pt0({automationId:e0.id,organizationId:e0.organization_id,triggerId:null})},o=new Og(R,({automation:g,trigger:H0,contextMessages:f0,idempotencyKey:e0})=>wp({automationId:g.id,organizationId:g.organization_id,triggerId:H0.id,contextMessages:f0},{idempotencyKey:e0})),B0=[eQ(),MC(),IK()];for(let g of B0)aL0(g).then(()=>{}).catch((H0)=>console.error("[monitoring] Retention cleanup failed:",H0));let D0=()=>Z.db.deleteFrom("apikey").where("expiresAt","<",new Date).execute().then(()=>{}).catch((g)=>console.error("[auth] Expired API key cleanup failed:",g));D0(),setInterval(D0,86400000).unref(),L.use("*",async(g,H0)=>{if(Bz0(g.req.path))return H0();let f0={measure:async(u0,T1)=>{wQ(g,u0);try{return await T1()}finally{WY(g,u0)}}},e0=await GN.create(g.req.raw,{timings:f0});e0.automationRunner=Z0,g.set("studioContext",e0);try{await H0()}finally{let u0=e0.pendingRevalidations;if(u0.length>0)Promise.race([Promise.allSettled(u0),D8(30000)]).catch((e1)=>console.error("[studio] revalidation cleanup error:",e1))}}),L.use("/api/:org/decopilot/*",wC),L.use("/api/:org/v1/*",wC),L.use("/api/:org/files/*",wC),L.use("*",async(g,H0)=>{let f0=g.req.path;if(f0.startsWith("/api/org-sso/")||f0.startsWith("/api/auth/")||f0.startsWith("/api/tools/management")||f0.startsWith("/oauth-proxy/")||f0.startsWith(`${H01}/`))return H0();let e0=g.get("studioContext");if(!e0?.organization?.id||!e0?.auth?.user?.id)return H0();if(!(await e0.storage.orgSsoConfig.getByOrgId(e0.organization.id))?.enforced)return H0();if(!await e0.storage.orgSsoSessions.isValid(e0.auth.user.id,e0.organization.id))return g.json({error:"SSO authentication required for this organization"},403);return H0()});let J0=new V1;J0.use("*",pQ({mountPath:"/api/org-sso"})),J0.route("/",ME0()),L.route("/api/org-sso",J0),L.get("/api/tools/management",(g)=>{return g.json({tools:ob0,grouped:rO()})}),L.use("/mcp/*",async(g,H0)=>{wQ(g,"mcp");try{return await H0()}finally{WY(g,"mcp")}});let G0=async(g,H0)=>{let f0=g.var.studioContext;if(!f0.auth.user?.id&&!f0.auth.apiKey?.id){let e0=new URL(g.req.url);return g.res=new Response(null,{status:401,headers:{"WWW-Authenticate":`Bearer realm="mcp",resource_metadata="${e0.origin}${e0.pathname}/.well-known/oauth-protected-resource"`}})}return await H0()};if(L.use("/mcp/:connectionId?",G0),L.use("/mcp/gateway/:virtualMcpId?",G0),L.use("/mcp/virtual-mcp/:virtualMcpId?",G0),L.use("/mcp/self",G0),b3()){let{mountDevRoutes:g}=(hb$(),Xz0(gb$));g(L,G0)}let a=new V1;a.use("*",pQ({mountPath:"/mcp"})),a.route("/",WB0()),L.route("/mcp",a);let A0=new V1;A0.use("*",pQ({mountPath:"/mcp/self"})),A0.route("/",vL0()),L.route("/mcp/self",A0);let w0=new V1;w0.use("*",pQ({mountPath:"/mcp"})),w0.route("/",UB0()),L.route("/mcp",w0),L.use("/api/:org/models/*",async(g,H0)=>{wQ(g,"llm_models");try{return await H0()}finally{WY(g,"llm_models")}});let v0=F11({cancelBroadcast:W,streamBuffer:K,runRegistry:B,linkStatusProbe:w});if(L.route("/api",v0),F!=null)S81=Jb$({getConnection:()=>F?.getConnection()??null});L.route("/api",SC$()),L.get("/api/links/me",async(g)=>{try{let H0=g.req.header("authorization")??"",f0=/^Bearer\s+(.+)$/i.exec(H0),e0=null;if(f0){let T1=(f0[1]??"").trim();e0=await IE0(T1,O8.api)}else e0=g.get("studioContext")?.auth?.user?.id??null;if(!e0)return g.json({error:"unauthorized"},401);let u0=w?await w(e0):{online:!1,capabilities:[]};if(!u0.online)return g.json(null);return g.json({hostname:u0.hostname,cliVersion:u0.cliVersion})}catch(H0){return console.error("[links/me] presence probe failed; reporting offline:",H0 instanceof Error?H0.message:String(H0)),g.json(null)}}),L.use("/api/:org/files/*",wC),L.route("/api",K_$);let d0=new V1;d0.use("*",pQ({mountPath:"/api"})),d0.route("/",yL0()),L.route("/api",d0),L.route("/api",uC$);let i0=new V1;i0.use("*",pQ({mountPath:"/api"})),i0.route("/",gL0({tokenStorage:V,automationEventDispatcher:o})),L.route("/api",i0);let n0=new rl(Z.db),U0=new V1;U0.use("*",pQ({mountPath:"/api"})),U0.route("/",XL0()),L.route("/api",U0),L.route("/api/deco-sites",_M$()),L.route("/api/deco-apps",xC$());let C0=new V1;C0.use("*",pQ({mountPath:"/api/deco-sites"})),C0.route("/",QL0()),L.route("/api/deco-sites",C0);let T0=new V1;T0.use("*",pQ({mountPath:"/api/vm-events"})),T0.route("/",bC$()),L.route("/api/vm-events",T0);let{createPublishRequestHandler:N0,createPublicMCPHandler:Q0}=await Promise.resolve().then(() => (nb$(),ib$)),X0={db:Z.db,vault:{encrypt:(g)=>S.encrypt(g),decrypt:(g)=>S.decrypt(g)}},V0=N0(X0),n=Q0(X0);L.use("/org/:orgRef/registry/publish-request",KC),L.post("/org/:orgRef/registry/publish-request",V0),L.use("/org/:orgSlug/registry/*",KC),L.all("/org/:orgSlug/registry/*",n),L.post("/api/:org/registry/publish-request",V0),L.all("/api/:org/registry/*",n),L.route(H01,zR$());let e=FC$({kvStorage:n0,runRegistry:B,streamBuffer:K,sseHub:Z9,cancelBroadcast:W,tokenStorage:V,automationEventDispatcher:o,mountDevAssets:b3(),mcpAuth:G0,oauthProxyHandler:rb$,watchHandler:ab$,betterAuthProtectedResourceHandler:j,getNatsConnection:()=>F?.getConnection()??null});return L.route("/api/:org",e),L.notFound((g)=>{return g.json({error:"Not Found",path:g.req.path},404)}),L.onError(zM$),Object.assign(L,{markShuttingDown:()=>{G=!0},shutdown:async()=>{if(console.log("[shutdown] Stopping workers..."),await Promise.allSettled([Z9.stop(),yg?Promise.resolve(yg()).finally(()=>{yg=null}):Promise.resolve()]),F)await F.drain().catch((g)=>console.error("[shutdown] NATS drain error:",g));console.log("[shutdown] Flushing telemetry..."),await mY().catch((g)=>console.error("[shutdown] Telemetry flush error:",g)),console.log("[shutdown] Closing database..."),await yx1(Z).catch((g)=>console.error("[shutdown] Database close error:",g)),console.log("[shutdown] Cleanup complete.")},initDbos:async()=>{await vg.registerQueue(lY,{partitionQueue:!0,concurrency:Ot0,minPollingIntervalMs:Dt0}),await vg.registerQueue(sQ,{partitionQueue:!0,concurrency:_m0}),await vg.registerQueue(TK,{partitionQueue:!0,concurrency:Mm0}),await vg.registerQueue(hU,{partitionQueue:!0,concurrency:XW$}),await O11(R),await Promise.allSettled(["automations-gate","automations-global"].map((g)=>vg.deleteQueue(g))),await Et0(Z.pool),wh1().catch((g)=>{console.error("[studio-pack-backfill] failed:",g)}),j21().catch((g)=>{console.error("[org-fs] public-sets boot sync kick failed:",g)})}})}var ob$,pb$=5000,S81=null,yg=null,rb$=async($)=>{let Z=$.req.param("connectionId");if(!Z)return $.json({error:"Missing connectionId"},400);let G=$.req.path.split("/").filter(Boolean),X=G[G.length-1],Y=$.get("studioContext");if(!Y)Y=await GN.create($.req.raw),$.set("studioContext",Y);let Q=$.req.param("org")?Y.organization?.id:void 0,J=await Y.storage.connections.findById(Z,Q);if(!J?.connection_url)return $.json({error:"Connection not found"},404);let W=await sx(J.connection_url),K,w=new URL(J.connection_url);if(W.ok)K=(await W.json()).authorization_servers?.[0];if(!K)K=w.origin;let U=await Ci(K);if(!U.ok)return $.json({error:"Failed to get auth server metadata"},502);let F=await U.json(),H;if(X==="authorize")H=F.authorization_endpoint;else if(X==="token")H=F.token_endpoint;else if(X==="register")H=F.registration_endpoint;if(!H)return $.json({error:`Unknown OAuth endpoint: ${X}`},404);let N=new URL(H),B=new URL($.req.url);if(N.search=B.search,X==="authorize"){let R=N.searchParams.get("redirect_uri");if(R){let V=O1().baseUrl??B.origin;try{let i=new URL(R),f=new URL(V);if(!(i.origin===f.origin||i.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)}N.searchParams.set("redirect_uri",R)}if(N.searchParams.has("resource"))N.searchParams.set("resource",J.connection_url);if(M_1(J.connection_url))try{let V=await o54(Y,J.organization_id),i=a54(V);for(let[f,v]of i)N.searchParams.set(f,v)}catch(V){console.warn("[oauth-proxy] Failed to get smart OAuth params, proceeding without:",V)}return $.redirect(N.toString(),302)}let D={Accept:$.req.header("Accept")||"application/json"},E=$.req.header("Content-Type");if(E)D["Content-Type"]=E;let L=$.req.header("Authorization");if(L)D.Authorization=L;let z,j=null,P=null;if($.req.method!=="GET"&&$.req.method!=="HEAD")if(X==="token"&&E?.includes("application/x-www-form-urlencoded")){if(L?.toLowerCase().startsWith("basic "))try{let v=atob(L.slice(6).trim()),Z0=v.indexOf(":");if(Z0!==-1){let o=decodeURIComponent(v.slice(0,Z0)),B0=decodeURIComponent(v.slice(Z0+1));j=o||null,P=B0||null}}catch{}let R=await $.req.formData();if(R.has("resource"))R.set("resource",J.connection_url);let V=R.get("client_id"),i=R.get("client_secret");if(typeof V==="string"&&V)j=V;if(typeof i==="string"&&i)P=i;let f=new URLSearchParams;for(let[v,Z0]of R.entries())f.append(v,Z0.toString());z=f.toString()}else if(X==="register"&&E?.toLowerCase().includes("application/json")){let R=await Y.db.selectFrom("organization").select(["id","slug","name"]).where("id","=",J.organization_id).executeTakeFirst(),V=await $.req.text(),i={};try{i=V?JSON.parse(V):{}}catch{z=V}let f=typeof i==="object"&&i!==null&&!Array.isArray(i);if(z===void 0&&!f)z=V;if(z===void 0){let v=i,Z0=v.metadata&&typeof v.metadata==="object"?v.metadata:{};v.metadata={...Z0,organization_id:J.organization_id,...R?.slug?{organization_slug:R.slug}:{},...R?.name?{organization_name:R.name}:{}},z=JSON.stringify(v),D["Content-Type"]="application/json"}}else z=$.req.raw.body??void 0;let A=await fetch(N.toString(),{method:$.req.method,headers:D,body:z,duplex:"half",redirect:"manual"}),M=new Headers,S=["connection","keep-alive","transfer-encoding","content-encoding","content-length"];for(let[R,V]of A.headers.entries())if(!S.includes(R.toLowerCase()))M.set(R,V);if(X==="token"&&A.ok){let R=await A.text();try{let V=JSON.parse(R);if(typeof V.access_token==="string"&&V.access_token){let i=typeof V.expires_in==="number"?new Date(Date.now()+V.expires_in*1000):null,f=null;try{f=await ex(J.connection_url)??H}catch{f=H}let v={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:i,clientId:j,clientSecret:P,tokenEndpoint:f};await new b5(Y.db,Y.vault).upsert(v)}}catch(V){console.error("[oauth-proxy] failed to persist downstream token:",V)}return new Response(R,{status:A.status,statusText:A.statusText,headers:M})}return new Response(A.body,{status:A.status,statusText:A.statusText,headers:M})},ab$=async($)=>{let Z=$.var.studioContext;if(!(Z.auth.user?.id??Z.auth.apiKey?.userId))return $.json({error:"Unauthorized"},401);let X=Z.organization?.id;if(!X)return $.json({error:"organization id missing"},400);let Y=$.req.query("types"),Q=Y?Y.split(",").map((W)=>W.trim()).filter(Boolean):null,J=crypto.randomUUID();return tQ($,async(W)=>{if(await W.writeSSE({event:"connected",data:JSON.stringify({listenerId:J,organizationId:X,typePatterns:Q,connectedAt:new Date().toISOString()})}),!Z9.add({id:J,organizationId:X,typePatterns:Q?.length?Q:null,push:(U)=>{W.writeSSE({id:U.id,event:U.type,data:JSON.stringify(U)}).catch(()=>{Z9.remove(X,J)})}})){await W.writeSSE({event:"error",data:JSON.stringify({error:"Too many connections",message:"SSE connection limit reached. Try again later."})});return}let w=setInterval(()=>{W.writeSSE({event:"keepalive",data:""}).catch(()=>{clearInterval(w)})},30000);await new Promise((U)=>{W.onAbort(()=>{clearInterval(w),Z9.remove(X,J),U()})})})},s54,Z94,G94=()=>$94(O8),X94=()=>e54(O8);var kp0=O(()=>{l5();F8();P21();BG();fb();R8();Y6();G$0();Hb1();rb0();VQ();Si();Y01();HQ();B5();q4();F01();OR$();jR$();D01();EM$();H11();QJ();p40();N11();jM$();B11();HC$();VC$();fC$();z11();vC$();KB0();_i();dC$();FB0();m$1();pC$();eC$();Q_$();w_$();l$1();d$1();Tr();Od();q_$();UY();T60();al();qt0();M_$();S_$();x_$();Qb$();Wb$();Hb$();jm0();Nb$();zg0();_g0();aw();Ig0();Eb$();a$0();j81();iX();D11();Iv();Im0();Em0();a$0();W11();ly0();my0();zb$();gb();Tb$();LC();Y01();$y();x90();ob$=k(uB(),1);s54=new p54,Z94=new Set([lY,sQ,TK,hU])});var Zf$={};X6(Zf$,{resolveClientDir:()=>F94,resolveAssetPathWithTraversalCheck:()=>$f$,isPathWithinDirectory:()=>eb$,createAssetHandler:()=>H94});import{resolve as Nr,dirname as Q94,join as J94,extname as W94,basename as K94,sep as sb$}from"path";function w94($,Z){if($===Z||K94($)==="index.html")return{"Cache-Control":"no-cache"};if($.includes(`${sb$}assets${sb$}`))return{"Cache-Control":"public, max-age=31536000, immutable"};return{}}function eb$($,Z){let G=Nr(Z),X=Nr($);return X===G||X.startsWith(G+"/")}function $f$({requestPath:$,clientDir:Z}){let G=$.startsWith("/")?$.slice(1):$,X=Nr(Z,G);if(!eb$(X,Z))return null;return X}function F94($,Z="../client"){let G=new URL($),X=Q94(G.pathname);return Nr(X,Z)}function H94($={}){let{env:Z="production",clientDir:G=U94,isServerPath:X=()=>!1}=$;if(Z==="development")return async function(Q){return null};return async function(Q){if(Q.method!=="GET")return null;let J=new URL(Q.url),W;try{W=decodeURIComponent(J.pathname)}catch{return null}if(X(W))return null;let K=$f$({requestPath:W,clientDir:G});if(!K)return null;let w=J94(K,"index.html"),U=Nr(G,"index.html"),F=Q.headers.get("accept"),N=F?.includes("text/html")||F?.includes("*/*")&&["",".html"].includes(W94(K))?[w,U]:[];for(let B of[K,...N])try{let D=Bun.file(B);if(await D.exists())return new Response(D,{headers:w94(B,U)})}catch{}if(W.includes("/assets/"))return new Response("Not Found",{status:404,headers:{"Cache-Control":"no-store"}});return null}}var U94="./dist/client";var Gf$=()=>{};var Xf$={};X6(Xf$,{tryUpgradePreviewWs:()=>z94,tryHandlePreviewHttp:()=>L94,previewWebSocketHandler:()=>j94,parsePreviewBaseDomain:()=>E94,isPreviewWsData:()=>sL0,extractHandleFromHost:()=>V81});function O94($){if($.method!=="GET")return!1;return($.headers.get("accept")??"").includes("text/html")}function D94(){return new Response(B94,{status:503,headers:{"content-type":"text/html; charset=utf-8","cache-control":"no-store","retry-after":"1","access-control-allow-origin":"*"}})}function E94($){if(!$||$.trim()==="")return null;let Z=$.includes("{handle}")?$.replace("{handle}","__handle__"):$,G;try{G=new URL(Z)}catch{return null}let X=G.hostname;if($.includes("{handle}")){let Y=X.indexOf(".");if(Y<=0||Y===X.length-1)return null;return X.slice(Y+1)}return X}function V81($,Z){if(!$||!Z)return null;let G=$.indexOf(":"),X=(G>=0?$.slice(0,G):$).toLowerCase(),Q=`.${Z.toLowerCase().replace(/^\.+|\.+$/g,"")}`;if(!X.endsWith(Q))return null;let J=X.slice(0,X.length-Q.length);if(!J||J.includes("."))return null;return J}async function L94($,Z){let G=V81($.headers.get("host"),Z.baseDomain);if(!G)return null;let X=await Z.getRunner();if(!X)return Or(503,"preview proxy not configured");let Y=await X.proxyPreviewRequest(G,$);if(Y.headers.get(jV)&&O94($))return D94();return Y.headers.delete(jV),Y}function Or($,Z){return new Response(JSON.stringify({error:Z}),{status:$,headers:{"content-type":"application/json","access-control-allow-origin":"*"}})}function sL0($){return typeof $==="object"&&$!==null&&$.kind==="preview"}async function z94($,Z,G){if(($.headers.get("upgrade")??"").toLowerCase()!=="websocket")return null;let X=V81($.headers.get("host"),G.baseDomain);if(!X)return null;let Y=await G.getRunner();if(!Y)return Or(503,"preview proxy not configured");let Q=await Y.resolvePreviewUpstreamUrl(X);if(!Q)return Or(404,"sandbox not found");let J=new URL($.url);if(J.pathname.startsWith("/_sandbox")||J.pathname.startsWith("/_decopilot_vm"))return Or(404,"not found");let W=`${Q.replace(/^http/,"ws")}${J.pathname}${J.search}`,K=$.headers.get("sec-websocket-protocol"),w=K?K.split(",").map((H)=>H.trim()).filter(Boolean):[],U={kind:"preview",upstreamUrl:W,upstreamProtocols:w,pending:[],upstream:null,closed:!1};if(!Z.upgrade($,{data:U}))return Or(426,"upgrade failed");return}function Br($,Z,G,X){if(Z.closed)return;Z.closed=!0;try{$.close(G,X)}catch{}try{Z.upstream?.close()}catch{}}var N94=256,B94='<!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>',j94;var Yf$=O(()=>{Tp0();j94={open($){let Z=$.data;if(!sL0(Z))return;let G;try{G=Z.upstreamProtocols.length>0?new WebSocket(Z.upstreamUrl,Z.upstreamProtocols):new WebSocket(Z.upstreamUrl)}catch(X){console.warn(`[preview-ws] failed to dial upstream ${Z.upstreamUrl}: ${X instanceof Error?X.message:String(X)}`),Br($,Z,1011,"upstream connect failed");return}G.binaryType="arraybuffer",Z.upstream=G,G.addEventListener("open",()=>{while(Z.pending.length>0){let X=Z.pending.shift();if(X!==void 0)G.send(X)}}),G.addEventListener("message",(X)=>{if(Z.closed)return;$.send(X.data)}),G.addEventListener("close",(X)=>{Br($,Z,X.code||1000,X.reason||"")}),G.addEventListener("error",()=>{Br($,Z,1011,"upstream error")})},message($,Z){let G=$.data;if(!sL0(G))return;let X=G.upstream;if(X&&X.readyState===WebSocket.OPEN){X.send(Z);return}if(G.pending.length>=N94){Br($,G,1011,"preview ws backlog overflow");return}G.pending.push(Z)},close($){let Z=$.data;if(!sL0(Z))return;Br($,Z,1000,"")}}});var Kf$={};X6(Kf$,{printBanner:()=>A94,bannerLines:()=>Wf$,BANNER_LINES:()=>Qf$,BANNER_GRADIENT:()=>Jf$});function P94($){let Z=Number.parseInt($.slice(1),16);return[Z>>16&255,Z>>8&255,Z&255]}function Wf$($){let Z=Qf$.map((G,X)=>{let[Y,Q,J]=P94(Jf$[X]);return`\x1B[38;2;${Y};${Q};${J}m${G}\x1B[39m`});if($!==void 0)Z.push(`\x1B[2m v${$}\x1B[22m`);return Z}function A94($){console.log("");for(let Z of Wf$($))console.log(Z);console.log("")}var Qf$,Jf$;var wf$=O(()=>{Qf$=[" \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588 ","\u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588 \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588 "," \u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2588 \u2591 \u2588\u2588\u2588 \u2591\u2591\u2591 \u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2591\u2591\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591 \u2588\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588 "," \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591 ","\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591 "],Jf$=["#00ff64","#00ee5e","#00dc56","#00c84e","#00b444","#00a03c","#008832","#006e28"]});var Ff$={};X6(Ff$,{bootstrapDevLinkSession:()=>C94});import{existsSync as T94}from"fs";import{chmod as I94,mkdir as R94,rename as q94,writeFile as M94}from"fs/promises";import{dirname as k94,join as Uf$}from"path";function S94($){return Uf$($,"dev-link")}function V94($){let Z=process.env.DEV_LINK_SESSION_PATH;if(Z&&Z.trim()!=="")return Z;return Uf$(S94($),"session.json")}async function C94($,Z){let G=V94($),X=H6().db,Y=yQ()?await Qp():await X.selectFrom("user").select(["id","email","name"]).orderBy("createdAt","desc").executeTakeFirst();if(!Y?.id)return null;if(T94(G))try{let w=await Bun.file(G).json(),U=w.user?.sub,F=w.accessToken;if(U===Y.id&&typeof F==="string"){if(await O8.api.verifyApiKey({body:{key:F}}).then((N)=>N?.valid===!0).catch(()=>!1))return{path:G,userSub:U}}}catch{}let Q=null;try{Q=await O8.api.createApiKey({body:{name:"dev-link (auto-minted by bun run dev)",userId:Y.id,permissions:{"*":["*"]},expiresIn:2592000,rateLimitEnabled:!1}})}catch(K){return console.warn("[dev-link] failed to mint API key:",K instanceof Error?K.message:String(K)),null}if(!Q?.key)return null;let J={target:Z,clientId:"dev-link",user:{sub:Y.id,...Y.email?{email:Y.email}:{},...Y.name?{name:Y.name}:{}},accessToken:Q.key,createdAt:new Date().toISOString()};await R94(k94(G),{recursive:!0});let W=`${G}.tmp`;return await M94(W,JSON.stringify(J,null,2),{mode:384}),await I94(W,384),await q94(W,G),{path:G,userSub:Y.id}}var Hf$=O(()=>{HQ();VQ();nN()});l5();var u81="4";function d81($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:u81,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}F8();Qz0();B5();function qx$(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function Iz0($,Z){for(let G=0;G<$.length;G++){let X=$[G];if(X===void 0)continue;if(X===Z)return $[G+1];if(X.startsWith(`${Z}=`))return X.slice(Z.length+1)}return}function T61(){let $=qx$();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:Iz0($,"--cpu-prof-dir")??process.cwd(),name:Iz0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(Iz0($,"--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.'}))}Mz0();var qr;function _61(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let G=kB();if(!G)return;let X={};try{let{heapStats:Y}=await import("bun:jsc"),Q=Y(),J=Object.entries(Q.objectTypeCounts).sort((W,K)=>K[1]-W[1]).slice(0,20);X={objectCount:Q.objectCount,heapSize:Q.heapSize,top:Object.fromEntries(J)}}catch{}console.log(JSON.stringify({msg:"heap-watch",ts:new Date().toISOString(),uptimeS:Math.round(process.uptime()),rss:G.rss,heapUsed:G.heapUsed,heapTotal:G.heapTotal,external:G.external,arrayBuffers:G.arrayBuffers,...X}))};return Z().catch(()=>{}),qr=setInterval(()=>void Z().catch(()=>{}),$),qr.unref?.(),process.on("SIGUSR2",()=>{try{let G=Bun.generateHeapSnapshot("v8"),X=typeof G==="string"?G:JSON.stringify(G),Y=`/tmp/heap-${process.pid}-${Date.now()}.heapsnapshot`;Bun.write(Y,X),console.log(JSON.stringify({msg:"heap-snapshot-written",path:Y}))}catch(G){console.error("[heap-watch] snapshot failed:",G)}}),()=>{if(qr)clearInterval(qr)}}import*as Sx$ from"bun:jsc";var{startSamplingProfiler:Vx$,samplingProfilerStackTraces:Cx$}=Sx$;function b61(){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{Vx$()}catch(Q){return console.error("[stall-watchdog] failed to start sampling profiler:",Q),()=>{}}let G,X=performance.now()+Z,Y=()=>{let Q=performance.now(),J=Q-X;X=Q+Z;let W=[];try{W=Cx$()?.traces??[]}catch{}if(J>$&&W.length>0){let K=new Map;for(let U of W){let F=U.frames.find((B)=>B.sourceURL&&!/Unknown Executable/.test(B.category??""))??U.frames[0];if(!F)continue;let H=(F.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),N=`${F.name??"?"} @ ${H}:${F.line??"?"}`;K.set(N,(K.get(N)??0)+1)}let w=[...K.entries()].sort((U,F)=>F[1]-U[1]).slice(0,8).map(([U,F])=>({frame:U,count:F}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(J),samplesInWindow:W.length,top:w}))}G=setTimeout(Y,Z),G.unref?.()};return G=setTimeout(Y,Z),G.unref?.(),()=>{if(G)clearTimeout(G)}}function f61(){T61();let $=[_61(),C61(),b61()];return()=>{for(let Z of $)Z()}}import{existsSync as h94}from"fs";var lX=O1();P61();var{DBOS:Dr,DBOSClient:_94}=await import("@dbos-inc/dbos-sdk");function Ef$($,Z){if(!Z)return $;let G=new URL($);if(!G.searchParams.has("sslmode"))G.searchParams.set("sslmode","verify-full");return G.toString()}var b94=[lY,sQ,TK,hU],f94=lX.dispatchRole==="worker"?b94:lX.dispatchRole==="api"?[]:void 0;Dr.setConfig(d81({systemDatabaseUrl:Ef$(lX.databaseUrl,lX.databasePgSsl),poolSize:Number(process.env.DBOS_POOL_SIZE??5),executorID:lX.podName,listenQueues:f94}));var{createApp:x94}=await Promise.resolve().then(() => (kp0(),Mp0)),{isServerPath:v94}=await Promise.resolve().then(() => (Tr(),Y61)),{createAssetHandler:y94,resolveClientDir:Lf$}=await Promise.resolve().then(() => (Gf$(),Zf$)),g94=lX.port,Nf$=Lf$(import.meta.url,"../client"),zf$=h94(Nf$)?Nf$:Lf$(import.meta.url,"../dist/client"),c94=y94({clientDir:zf$,isServerPath:v94}),u94={"X-Frame-Options":"DENY","Content-Security-Policy":"frame-ancestors 'none'"};function d94($){let Z=new Headers($.headers);for(let[G,X]of Object.entries(u94))Z.set(G,X);return new Response($.body,{status:$.status,statusText:$.statusText,headers:Z})}var{parsePreviewBaseDomain:l94,tryHandlePreviewHttp:m94,tryUpgradePreviewWs:i94,previewWebSocketHandler:C81,isPreviewWsData:_81}=await Promise.resolve().then(() => (Yf$(),Xf$)),{getOrInitSharedRunner:n94}=await Promise.resolve().then(() => (an(),w3$)),jf$=l94(process.env.STUDIO_SANDBOX_PREVIEW_URL_PATTERN),Bf$={baseDomain:jf$??"",getRunner:n94},eL0=await x94({clientDir:zf$}),b81=process.env.DBOS_CONDUCTOR_KEY?.trim(),Of$=process.env.DBOS_CONDUCTOR_URL?.trim();await Dr.launch({...b81?{conductorKey:b81}:{},...b81&&Of$?{conductorURL:Of$}:{}});console.log(`[dbos] application version: ${Dr.applicationVersion}`);var f81=5,x81=0;await aQ(async()=>{x81++;try{return await eL0.initDbos()}catch($){let Z=x81>=f81?"giving up":"retrying";throw console.warn(`[dbos] initDbos attempt ${x81}/${f81} failed, ${Z}`,$),$}},{maxAttempts:f81,minTimeout:1000,maxTimeout:1e4,jitter:0.5});if(!lX.isCli){let{bannerLines:$}=await Promise.resolve().then(() => (wf$(),Kf$));console.log("");for(let Z of $())console.log(Z)}var p94=Bun.serve({idleTimeout:0,port:g94,hostname:"0.0.0.0",fetch:async($,Z)=>{if(jf$){let X=await i94($,Z,Bf$);if(X===void 0)return;if(X)return X;let Y=await m94($,Bf$);if(Y)return Y}let G=await c94($);if(G)return d94(G);return eL0.fetch($,{server:Z})},websocket:{open($){if(_81($.data))C81.open($)},message($,Z){if(_81($.data))C81.message($,Z)},close($){if(_81($.data))C81.close($)}},development:!1}),t94=f61();if(lX.localMode)Promise.resolve().then(() => (nN(),uN0)).then(async({seedLocalMode:$,markSeedComplete:Z})=>{try{let G=await $();if(process.env.DEV_LINK_SESSION_PATH)try{let{bootstrapDevLinkSession:X}=await Promise.resolve().then(() => (Hf$(),Ff$)),Y=lX.baseUrl??`http://localhost:${lX.port}`,Q=await X(lX.dataDir,Y);if(Q)console.log(`[dev-link] session ready at ${Q.path} (userSub=${Q.userSub})`);else console.warn("[dev-link] no admin user yet \u2014 skipping session bootstrap. The auto-spawned link will refuse to start until an admin exists.")}catch(X){console.error("[dev-link] bootstrap failed:",X)}}catch(G){console.error("Failed to seed local mode:",G)}finally{Z()}}).catch(async($)=>{console.error("Failed to load local-mode module:",$);try{let{markSeedComplete:Z}=await Promise.resolve().then(() => (nN(),uN0));Z()}catch{}});var Df$=!1;async function r94($){let Z;try{Z=await _94.create({systemDatabaseUrl:Ef$(lX.databaseUrl,lX.databasePgSsl),systemDatabaseSchemaName:"dbos"});let G=await Z.listWorkflows({status:"PENDING",queueName:sQ,executorId:$,loadInput:!1,loadOutput:!1});if(G.length===0){console.log(`[shutdown] no in-flight thread-gate gates to hand off (executor ${$})`);return}let X=G.map((Y)=>Y.workflowID);await Z.resumeWorkflows(X,{queueName:sQ}),console.log(`[shutdown] re-enqueued ${X.length} in-flight thread-gate gate(s) for re-adoption by a live executor (from ${$}):`,X)}catch(G){console.error("[shutdown] thread-gate handoff failed:",G)}finally{await Z?.destroy().catch(()=>{})}}async function $z0($){if(Df$)return;Df$=!0,console.log(`
|
|
2728
2728
|
[shutdown] Received ${$}, shutting down gracefully...`);let Z=Number(process.env.SHUTDOWN_GRACE_SECONDS??60)*1000,G=Math.max(Z-5000,1e4),X=setTimeout(()=>{console.error(`[shutdown] Timed out after ${G}ms, forcing exit.`),process.exit(1)},G);X.unref?.();let Y=0;try{t94(),eL0.markShuttingDown();let Q=m81(lX.dispatchRole,G,process.env.SHUTDOWN_DRAIN_MS);await D8(Q),await p94.stop(!0);let J=Dr.executorID;await Dr.shutdown(),await r94(J),await eL0.shutdown()}catch(Q){console.error("[shutdown] Error during shutdown:",Q),Y=1}clearTimeout(X),process.exit(Y)}process.on("SIGTERM",()=>$z0("SIGTERM"));process.on("SIGINT",()=>$z0("SIGINT"));process.on("SIGHUP",()=>$z0("SIGHUP"));process.on("unhandledRejection",($)=>{console.error("[process] Unhandled rejection:",$)});process.on("uncaughtException",($)=>{console.error("[process] Uncaught exception:",$),$z0("uncaughtException")});
|