decocms 4.204.11 → 4.204.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/assets/{AlertCircle-Db8FAhD0.js → AlertCircle-DjjCqWTc.js} +1 -1
- package/dist/client/assets/{AreaChart-CkHaA1qM.js → AreaChart-fGTYJPuT.js} +1 -1
- package/dist/client/assets/{ArrowLeft-BBdrIXTE.js → ArrowLeft-__1hzT2t.js} +1 -1
- package/dist/client/assets/{ArrowUp-DAgivKXe.js → ArrowUp-BTCrlYkK.js} +1 -1
- package/dist/client/assets/{ArrowUpRight-BAYKU_Mt.js → ArrowUpRight-OYKlt2ZS.js} +1 -1
- package/dist/client/assets/{Check-Ckh2J0Wj.js → Check-Dl3nr2uz.js} +1 -1
- package/dist/client/assets/{CheckCircle-DWW9c4n7.js → CheckCircle-C54n2t0T.js} +1 -1
- package/dist/client/assets/{ChevronDown-DcGz0OOE.js → ChevronDown-Dygc5v7h.js} +1 -1
- package/dist/client/assets/{ChevronRight-DPR4kcMe.js → ChevronRight-D_gwFZRd.js} +1 -1
- package/dist/client/assets/{ChevronUp-335oTLfl.js → ChevronUp-CpVAW_jK.js} +1 -1
- package/dist/client/assets/{Copy01-DCGFBPLU.js → Copy01-3BqZ4EmX.js} +1 -1
- package/dist/client/assets/{CpuChip01-CpN_p7ZK.js → CpuChip01-Dp3sp9YJ.js} +1 -1
- package/dist/client/assets/{CreditCard01-CA0IYAzI.js → CreditCard01-BeXrcdSu.js} +1 -1
- package/dist/client/assets/{DotsVertical-BdH2ws1v.js → DotsVertical-DHtz1IIs.js} +1 -1
- package/dist/client/assets/{Eye-Cd6Z4wr1.js → Eye-u-BLLRQS.js} +1 -1
- package/dist/client/assets/{FilterLines-CGfVuof0.js → FilterLines-BhI1K40e.js} +1 -1
- package/dist/client/assets/{Globe01-C6n_Eepd.js → Globe01-D_1IiEtd.js} +1 -1
- package/dist/client/assets/{Globe04-B1lizZTT.js → Globe04-Du-85nKQ.js} +1 -1
- package/dist/client/assets/{HardDrive-DzwjWFWh.js → HardDrive-B4eb7-LH.js} +1 -1
- package/dist/client/assets/{Key01-1GhbQsqk.js → Key01-YBrWL2YU.js} +1 -1
- package/dist/client/assets/{LayoutLeft-9QVSG_-K.js → LayoutLeft-CdFpxE6Z.js} +1 -1
- package/dist/client/assets/{LinkExternal01-DnTES2u_.js → LinkExternal01-DNnLbiWO.js} +1 -1
- package/dist/client/assets/{LogOut01-BLj4aSl9.js → LogOut01-Jz80eaxm.js} +1 -1
- package/dist/client/assets/{Monitor01-aQHufnwR.js → Monitor01-D-H1uw26.js} +1 -1
- package/dist/client/assets/{Palette-hUc3dCur.js → Palette-Cahof-Sf.js} +1 -1
- package/dist/client/assets/{Play-3BJ0NCnw.js → Play-BlJjBios.js} +1 -1
- package/dist/client/assets/{Plus-DSVjF-4R.js → Plus-DJC0wPXF.js} +1 -1
- package/dist/client/assets/{SearchLg-DeEuvWgr.js → SearchLg-Qkw3ZlT8.js} +1 -1
- package/dist/client/assets/{SearchMd-D3BEkIfl.js → SearchMd-DvHRdcjz.js} +1 -1
- package/dist/client/assets/{Settings02-Dd-GnwO4.js → Settings02-Ca-7qyxD.js} +1 -1
- package/dist/client/assets/{Share07-BK5jaJxR.js → Share07-D0UgY5wf.js} +1 -1
- package/dist/client/assets/{Shield01-CAAiZUxe.js → Shield01-DwCDKvgs.js} +1 -1
- package/dist/client/assets/{Star01-BD9GU6__.js → Star01-BXWZkI5L.js} +1 -1
- package/dist/client/assets/{Stars01-CsmqcIh0.js → Stars01-tPzCkINI.js} +1 -1
- package/dist/client/assets/{Stars02-Ddu22e9e.js → Stars02-DUzlv30G.js} +1 -1
- package/dist/client/assets/{Sun-CBbSD7eu.js → Sun-DuKrOQTe.js} +1 -1
- package/dist/client/assets/{SwitchHorizontal01-DdUa0KSY.js → SwitchHorizontal01-7ufko9EU.js} +1 -1
- package/dist/client/assets/{Tool01-DKQr2Ku4.js → Tool01-BfCRmYQe.js} +1 -1
- package/dist/client/assets/{Tool02-DkhywL9m.js → Tool02-CvqiHQ_I.js} +1 -1
- package/dist/client/assets/{Trash01-N83L9DVj.js → Trash01-B7BRpm_4.js} +1 -1
- package/dist/client/assets/{TrendUp01-5u9J7nxr.js → TrendUp01-DJXcBhgu.js} +1 -1
- package/dist/client/assets/{Upload01-BKUwtebR.js → Upload01-Dsuw7EXQ.js} +1 -1
- package/dist/client/assets/{User01-DH7Gp-RH.js → User01-Cp63nbSc.js} +1 -1
- package/dist/client/assets/{Users01-CewPDueJ.js → Users01-Cnl7lwYM.js} +1 -1
- package/dist/client/assets/{Users03-DqyOOoSg.js → Users03-CM7XkNHF.js} +1 -1
- package/dist/client/assets/{X-BmCvrF6m.js → X-Ctbb_BcX.js} +1 -1
- package/dist/client/assets/{XCircle-Dl4jNIuW.js → XCircle-BQL1LAf9.js} +1 -1
- package/dist/client/assets/{XClose-B91Wj--l.js → XClose-1OM6Bo58.js} +1 -1
- package/dist/client/assets/{Zap-Byhu3tNy.js → Zap-BWQNmPHL.js} +1 -1
- package/dist/client/assets/{ZapSquare-CcO7sK-p.js → ZapSquare-B9PPEQYj.js} +1 -1
- package/dist/client/assets/{access-gate-BghzSCnE.js → access-gate-DuFWoWCW.js} +1 -1
- package/dist/client/assets/{agent-icon-BAPsFhIR.js → agent-icon-DUriprwb.js} +1 -1
- package/dist/client/assets/{agents-list-CvmlZ194.js → agents-list-DfqLCwL_.js} +1 -1
- package/dist/client/assets/{ai-providers-CeK1aDD5.js → ai-providers-BX5KcH6i.js} +1 -1
- package/dist/client/assets/{alert-BmYNBm_2.js → alert-UUEzMkxC.js} +1 -1
- package/dist/client/assets/{alert-dialog-BCaZm96Z.js → alert-dialog-BzMccYwU.js} +1 -1
- package/dist/client/assets/{app-editor-BkS9quwq.js → app-editor-Bjy1G6Lj.js} +1 -1
- package/dist/client/assets/{auth-CLFO3_RL.js → auth-CPyD4J7X.js} +1 -1
- package/dist/client/assets/{auth-catchall-CQs_KDud.js → auth-catchall-R4Ks06oT.js} +1 -1
- package/dist/client/assets/{auth-entry-DSPq_zl2.js → auth-entry-DFqiOHe_.js} +1 -1
- package/dist/client/assets/{auth-split-layout-xD8HIOJV.js → auth-split-layout-B1yE53hR.js} +1 -1
- package/dist/client/assets/{authenticate-and-persist-oauth-CJL9FtIM.js → authenticate-and-persist-oauth-BNR500ny.js} +1 -1
- package/dist/client/assets/{automation-list-row-U2osdxyj.js → automation-list-row-DFa6j-jh.js} +1 -1
- package/dist/client/assets/{automation-runs-xPJB6zEu.js → automation-runs-Bu_CVSZb.js} +1 -1
- package/dist/client/assets/{automations-By5FdrRI.js → automations-CT-o-u2n.js} +1 -1
- package/dist/client/assets/{avatar-BlKd_wSy.js → avatar-Cst2Q7of.js} +1 -1
- package/dist/client/assets/{badge-j9XMC7le.js → badge-Q5xWVNFw.js} +1 -1
- package/dist/client/assets/{billing-Dzs5yrq4.js → billing-QzN_CEWp.js} +1 -1
- package/dist/client/assets/{block-document-BWa5Tlq2.js → block-document-ETb_yttJ.js} +1 -1
- package/dist/client/assets/{brand-context-CD_ONfXU.js → brand-context-CYVryUZO.js} +1 -1
- package/dist/client/assets/{buckets-DQHToByp.js → buckets-CJLW6FOr.js} +1 -1
- package/dist/client/assets/{bulk-category-panel-DLoyqlGA.js → bulk-category-panel-Csdd9Mwk.js} +1 -1
- package/dist/client/assets/{capability-load-error-CvMtarEx.js → capability-load-error-DYfzgTpY.js} +1 -1
- package/dist/client/assets/{card-BdxDDHfa.js → card-BwSSRhtr.js} +1 -1
- package/dist/client/assets/{cards-NVoopU1W.js → cards-B1-Cf7sC.js} +1 -1
- package/dist/client/assets/{category-editor-AYvl8iXa.js → category-editor-BVrzzUL2.js} +1 -1
- package/dist/client/assets/{chat-context-CeV8_oNw.js → chat-context-Cx6AggmM.js} +1 -1
- package/dist/client/assets/{checkbox-B1jaivmN.js → checkbox-DMjj7-uU.js} +1 -1
- package/dist/client/assets/{cli-auth-success-BL0Y-yea.js → cli-auth-success-C4z2bFr3.js} +1 -1
- package/dist/client/assets/{collection-detail-DCEdt-jZ.js → collection-detail-DdB2rVfB.js} +1 -1
- package/dist/client/assets/{collection-display-button-B9Ra2TL3.js → collection-display-button-BRMZbmfV.js} +1 -1
- package/dist/client/assets/{collection-search-DbKCI-82.js → collection-search-CEgXTbL_.js} +1 -1
- package/dist/client/assets/{collection-table-wrapper-BzshRiXk.js → collection-table-wrapper-BYDqqbqp.js} +1 -1
- package/dist/client/assets/{collection-tabs-B6YV6Wqg.js → collection-tabs-C68siu1U.js} +1 -1
- package/dist/client/assets/{command-BBDTtSLh.js → command-BTAhLGCl.js} +1 -1
- package/dist/client/assets/{commerce-onboarding-9EjLW7tV.js → commerce-onboarding-uRo9AkR-.js} +1 -1
- package/dist/client/assets/{connect-B2SH5zln.js → connect-0KNczvo2.js} +1 -1
- package/dist/client/assets/{connection-wwxku9Ff.js → connection-PRGc2OPI.js} +1 -1
- package/dist/client/assets/{connection-card-CwA9Uv3g.js → connection-card-Fa0OsjRL.js} +1 -1
- package/dist/client/assets/{connection-detail-DU1vjuZG.js → connection-detail-DqFjE2V0.js} +1 -1
- package/dist/client/assets/{connection-form-helpers-CahL0pvk.js → connection-form-helpers-zLK8xcV1.js} +1 -1
- package/dist/client/assets/{connections-VGzSR5ha.js → connections-CdsZyAxm.js} +1 -1
- package/dist/client/assets/{decopilot-sse-pool-PkdJDYdO.js → decopilot-sse-pool-CVVhENSx.js} +1 -1
- package/dist/client/assets/{dialog-DyuBQbz8.js → dialog-DS07XD1d.js} +1 -1
- package/dist/client/assets/{domain-settings-DrHioTEw.js → domain-settings-BjUYriep.js} +1 -1
- package/dist/client/assets/{drawer-ClGoEAYt.js → drawer-DFS6xKNI.js} +1 -1
- package/dist/client/assets/{dropdown-menu-CN40TAwh.js → dropdown-menu-C55vCOfZ.js} +1 -1
- package/dist/client/assets/{empty-state-DwUtvF_m.js → empty-state-C_uDehqR.js} +1 -1
- package/dist/client/assets/{extract-connection-data-De7mHrhF.js → extract-connection-data-CnVm8qvF.js} +1 -1
- package/dist/client/assets/{file-explorer-k1tulnag.js → file-explorer-BD3j_iY7.js} +1 -1
- package/dist/client/assets/{file-type-icon-BlQX_yUc.js → file-type-icon-CJ761AAG.js} +1 -1
- package/dist/client/assets/{form-6TwMc-HF.js → form-BwESzsbs.js} +1 -1
- package/dist/client/assets/{general-DCs0LngS.js → general-4_M8JYAC.js} +1 -1
- package/dist/client/assets/{github-repo-picker-CNbnvvQi.js → github-repo-picker-C0EpOG1r.js} +1 -1
- package/dist/client/assets/{hooks-C92XOaKP.js → hooks-BsgHz7Au.js} +1 -1
- package/dist/client/assets/{index-xKCaiUtp.js → index-BFpJvM6R.js} +1 -1
- package/dist/client/assets/{index-BBOexEq8.js → index-C4rlPpGK.js} +1 -1
- package/dist/client/assets/{index-gBiaWWBo.js → index-CDedG1bs.js} +1 -1
- package/dist/client/assets/{index-sqdSTtTR.js → index-CVxNsnq9.js} +1 -1
- package/dist/client/assets/{index-WGPk5Q7x.js → index-CaICdacs.js} +1 -1
- package/dist/client/assets/{index-CPQnHYL0.js → index-Cj6Ntn9Z.js} +1 -1
- package/dist/client/assets/{index-DNAkesNr.js → index-Cp_Y0RAP.js} +1 -1
- package/dist/client/assets/{index-Ciskbrba.js → index-CvyB6pTl.js} +5 -5
- package/dist/client/assets/{index-CuhGmwi3.js → index-D3Fe9BXe.js} +1 -1
- package/dist/client/assets/{index-DWXkCL-D.js → index-Dh-VR4BE.js} +3 -3
- package/dist/client/assets/{index-redirect-D3KtZ2UU.js → index-redirect-DjVkeNOx.js} +1 -1
- package/dist/client/assets/{input-Cw-Wyzjp.js → input-BDwkCtc7.js} +1 -1
- package/dist/client/assets/{integration-icon-CNs8rVds.js → integration-icon-pdxLRGa3.js} +1 -1
- package/dist/client/assets/{invite-member-dialog-CdBFNToB.js → invite-member-dialog-e0KwgMDZ.js} +1 -1
- package/dist/client/assets/{label-i-JCcQNn.js → label-DI1qLC0i.js} +1 -1
- package/dist/client/assets/{layout-BQy87mOk.js → layout-CmZJVZE9.js} +1 -1
- package/dist/client/assets/{login-B2eBh913.js → login-CUDLKidx.js} +1 -1
- package/dist/client/assets/{mcp-oauth-Cz8lm40c.js → mcp-oauth-c4-Wj7KS.js} +1 -1
- package/dist/client/assets/{members-DPfTwGjQ.js → members-DJ0wOrOM.js} +1 -1
- package/dist/client/assets/{monaco-editor-VJrBuRSN.js → monaco-editor-xZr_aBRa.js} +1 -1
- package/dist/client/assets/{monitoring-stats-row-CwxtC9n0.js → monitoring-stats-row-BmOn7Lsv.js} +1 -1
- package/dist/client/assets/{multi-select-uHF1SoQJ.js → multi-select-DwKssIbm.js} +1 -1
- package/dist/client/assets/{oauth-callback-ChWiHCSr.js → oauth-callback-DexxsiN7.js} +1 -1
- package/dist/client/assets/{oauth-callback-ai-provider-DFozECrw.js → oauth-callback-ai-provider-C_J2WA98.js} +1 -1
- package/dist/client/assets/{onboarding-D5VzaCtk.js → onboarding-DESuBGnE.js} +1 -1
- package/dist/client/assets/{org-layout-DfyhjR2o.js → org-layout-CO-1h4Xt.js} +1 -1
- package/dist/client/assets/{organization-choice-CMtQudk_.js → organization-choice-BZDfq6K_.js} +1 -1
- package/dist/client/assets/{orgs-BkOIA6ce.js → orgs-zk7s9MZZ.js} +1 -1
- package/dist/client/assets/{page-seo-form-B36Slu3i.js → page-seo-form-DbCllHqe.js} +1 -1
- package/dist/client/assets/{popover-DssDKn2g.js → popover-tCczitOG.js} +1 -1
- package/dist/client/assets/{post-editor-Z0tZ_f5B.js → post-editor-DjCOH1Qu.js} +1 -1
- package/dist/client/assets/{primitives-DthsGsSM.js → primitives-Cf2iqlYp.js} +1 -1
- package/dist/client/assets/{profile-B2j3m06h.js → profile-CzCsNeoI.js} +1 -1
- package/dist/client/assets/{project-app-view-BsoxDm6i.js → project-app-view-h9g1fnT9.js} +1 -1
- package/dist/client/assets/record-editor-Dx0niol9.js +1 -0
- package/dist/client/assets/{redirect-editor-uLmND-LU.js → redirect-editor-Wt0sbTWC.js} +1 -1
- package/dist/client/assets/registry-DVxBOUV2.js +2 -0
- package/dist/client/assets/{registry-layout-CsM7mO5K.js → registry-layout-CmpOyje1.js} +1 -1
- package/dist/client/assets/{reports-Cc9cfYJZ.js → reports-fkd2ftYC.js} +1 -1
- package/dist/client/assets/{require-capability-D9rxWmoq.js → require-capability-D01HokeW.js} +1 -1
- package/dist/client/assets/{required-auth-layout-Cx1dgRdu.js → required-auth-layout-bHxCyVmP.js} +1 -1
- package/dist/client/assets/{reset-password-CDbRR2NR.js → reset-password-BmIaRBMY.js} +1 -1
- package/dist/client/assets/{roles-D0yIPM2u.js → roles-D27GvDYl.js} +1 -1
- package/dist/client/assets/{search-input-9VIRkcfy.js → search-input-ekjNtXMC.js} +1 -1
- package/dist/client/assets/{secrets-BFiNOtCX.js → secrets-RF4I5SG7.js} +1 -1
- package/dist/client/assets/sections-editor-BiOsAKWS.js +2 -0
- package/dist/client/assets/{select-BPHj3yEG.js → select-mPIJlDQl.js} +1 -1
- package/dist/client/assets/{select-model-JbUCoNOJ.js → select-model-DMPl2R-i.js} +1 -1
- package/dist/client/assets/{self-tool-result-CqE4epjU.js → self-tool-result-DpAPMqbN.js} +1 -1
- package/dist/client/assets/{seo-editor-B_3PyxQG.js → seo-editor-BcM4Bn08.js} +1 -1
- package/dist/client/assets/{settings-layout-CKf6cgue.js → settings-layout-BOLHk4JT.js} +1 -1
- package/dist/client/assets/{settings-section-Dh7xkKg_.js → settings-section-DrkRD_0G.js} +1 -1
- package/dist/client/assets/{shell-controls-DosMkzwp.js → shell-controls-n8nrRrSD.js} +1 -1
- package/dist/client/assets/{shell-layout-DsCjXZuI.js → shell-layout-DwLxuD_g.js} +1 -1
- package/dist/client/assets/{sidebar-Bt6Ox8Tg.js → sidebar-6RBSqwja.js} +1 -1
- package/dist/client/assets/{skeleton-DaSU0LrF.js → skeleton-BSYnx5k6.js} +1 -1
- package/dist/client/assets/{spinner-tb9aLmXA.js → spinner-DkpC4Wlu.js} +1 -1
- package/dist/client/assets/{sso-CnjZk_8r.js → sso-sFLLqttW.js} +1 -1
- package/dist/client/assets/{store-ZS51GiQE.js → store-QTRfaM9U.js} +1 -1
- package/dist/client/assets/store-registry-BLKfuLU5.js +2 -0
- package/dist/client/assets/{studio-tools-2Ky28cSc.js → studio-tools-DmL7OF1Z.js} +1 -1
- package/dist/client/assets/{switch-BsgP2USk.js → switch-pUc5zHr9.js} +1 -1
- package/dist/client/assets/{synced-repos-B3eX6lrw.js → synced-repos-CMhaz2km.js} +1 -1
- package/dist/client/assets/{tab-id-Bg-2ZvlR.js → tab-id-Cp8B9V-5.js} +1 -1
- package/dist/client/assets/{table-DtygcXDr.js → table-B41Lgm0q.js} +1 -1
- package/dist/client/assets/{tabs-B-yQnDjy.js → tabs-B3US2yiT.js} +1 -1
- package/dist/client/assets/{textarea-CIIh3eCO.js → textarea-Bndryu5P.js} +1 -1
- package/dist/client/assets/{toggle-group-SpDgsjAy.js → toggle-group-D3vwusj1.js} +1 -1
- package/dist/client/assets/{toolbar-DoiNuzRz.js → toolbar-BMwfzNxl.js} +1 -1
- package/dist/client/assets/{tooltip-bNOyqjG-.js → tooltip-ByYCgCu2.js} +1 -1
- package/dist/client/assets/{use-ai-providers-fR1LNvFR.js → use-ai-providers-Ntgi8njd.js} +1 -1
- package/dist/client/assets/{use-automations-6PKQGIaU.js → use-automations-ZY_2b6Sa.js} +1 -1
- package/dist/client/assets/{use-autosave-Cyw8Zffh.js → use-autosave-DhLMee7V.js} +1 -1
- package/dist/client/assets/{use-capability-DKpeN9dM.js → use-capability-CUv6rXBj.js} +1 -1
- package/dist/client/assets/{use-clock-tick-Dunir5bW.js → use-clock-tick-WRb-A5oj.js} +1 -1
- package/dist/client/assets/{use-connection-CvELWTwk.js → use-connection-BG-DO5JP.js} +1 -1
- package/dist/client/assets/{use-copy-BZ4yfNM-.js → use-copy-CKXt3cYc.js} +1 -1
- package/dist/client/assets/{use-create-virtual-mcp-CZ2B3BXE.js → use-create-virtual-mcp-dC38vLn0.js} +1 -1
- package/dist/client/assets/{use-debounced-autosave-BoxizbC8.js → use-debounced-autosave-BHqO0aOo.js} +1 -1
- package/dist/client/assets/{use-debounced-value-CBrkrBVe.js → use-debounced-value-Bd6Nt4Fb.js} +1 -1
- package/dist/client/assets/{use-deco-credits-j4q9AuO0.js → use-deco-credits-D66FFgQI.js} +1 -1
- package/dist/client/assets/{use-decopilot-events-M2HCToeh.js → use-decopilot-events-B81tavjV.js} +1 -1
- package/dist/client/assets/{use-delete-connection-DMSO0MLQ.js → use-delete-connection-DioixEBQ.js} +1 -1
- package/dist/client/assets/{use-deployment-admin-CPnc7Qs9.js → use-deployment-admin-oJVXGEKg.js} +1 -1
- package/dist/client/assets/{use-file-configs-uSz0v_YV.js → use-file-configs-BbEiK7vg.js} +1 -1
- package/dist/client/assets/{use-infinite-scroll-Csqlp5hg.js → use-infinite-scroll-v2tc3KR1.js} +1 -1
- package/dist/client/assets/{use-join-requests-B9Eyqa2b.js → use-join-requests-DLc9Wv8g.js} +1 -1
- package/dist/client/assets/{use-mcp-client-DKp-llYX.js → use-mcp-client-UYoSLJNH.js} +1 -1
- package/dist/client/assets/{use-mcp-tools-C6yyPNEW.js → use-mcp-tools-B_91kkHc.js} +1 -1
- package/dist/client/assets/{use-members-DPZXIkQa.js → use-members-D2yL3fLd.js} +1 -1
- package/dist/client/assets/{use-mobile-6uCDoREK.js → use-mobile-Scr30Ps1.js} +1 -1
- package/dist/client/assets/{use-navigate-to-agent-i487hDEf.js → use-navigate-to-agent-9yDFRkvQ.js} +1 -1
- package/dist/client/assets/{use-open-billing-url-IyKhK2Ci.js → use-open-billing-url-Cr8LFH4j.js} +1 -1
- package/dist/client/assets/{use-org-auth-client-DrjcoPeu.js → use-org-auth-client-hvg3KZfA.js} +1 -1
- package/dist/client/assets/{use-org-sso-d3sj4htn.js → use-org-sso-B7qwIhux.js} +1 -1
- package/dist/client/assets/{use-organization-roles-rTKk2RPb.js → use-organization-roles-lbRXdlLH.js} +1 -1
- package/dist/client/assets/{use-organization-settings-mJokZoPl.js → use-organization-settings-BGFM1ij2.js} +1 -1
- package/dist/client/assets/{use-registry-connections-cg2WmvBD.js → use-registry-connections-BlMy8Tro.js} +1 -1
- package/dist/client/assets/{use-secrets--J9RYnhw.js → use-secrets-CYD4rFjT.js} +1 -1
- package/dist/client/assets/{use-section-preview-base-B-NvnIwC.js → use-section-preview-base-D25j4DPq.js} +1 -1
- package/dist/client/assets/{use-status-sounds-BX6vUIM6.js → use-status-sounds-BIFrACuz.js} +1 -1
- package/dist/client/assets/{use-tags-BpnhmQR6.js → use-tags-DwOqNtoT.js} +1 -1
- package/dist/client/assets/{use-view-mode-mAo2loN2.js → use-view-mode-D7Q2fciq.js} +1 -1
- package/dist/client/assets/{use-virtual-mcp-CoA0Ur0Z.js → use-virtual-mcp-DX5rhmVQ.js} +1 -1
- package/dist/client/assets/useInfiniteQuery-DGV9QM_M.js +1 -0
- package/dist/client/assets/{useRouterState-B4HUQS9e.js → useRouterState-CFtTqM_a.js} +1 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-Dluy5f90.js +1 -0
- package/dist/client/assets/{users-D1gGSsyv.js → users-5hnD9DKy.js} +1 -1
- package/dist/client/assets/{variant-calendar-CNgwTPu-.js → variant-calendar-hfW0LRI9.js} +1 -1
- package/dist/client/assets/{view-mode-toggle-D2v_6Pw8.js → view-mode-toggle-CnWwAGfk.js} +1 -1
- package/dist/client/index.html +1 -1
- package/dist/server/cli.js +3 -3
- package/dist/server/server.js +3 -3
- package/package.json +1 -1
- package/dist/client/assets/record-editor-By1O18Uh.js +0 -1
- package/dist/client/assets/registry-C1PE-N76.js +0 -2
- package/dist/client/assets/sections-editor-DJGlX2Yh.js +0 -2
- package/dist/client/assets/store-registry-Bl2J1FeF.js +0 -2
- package/dist/client/assets/useInfiniteQuery-DTZxXa2W.js +0 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-eryeyNHv.js +0 -1
package/dist/server/cli.js
CHANGED
|
@@ -1332,7 +1332,7 @@ Usage: deco services <up|down|status>`),process.exit(1)}}var mc1=O(()=>{Vx()});f
|
|
|
1332
1332
|
`.execute($);if(Number(W.rows[0]?.cnt)===0){console.warn(`Failed to migrate ${J}/${K}, keeping in old table`);continue}}await Qb`
|
|
1333
1333
|
DELETE FROM kysely_migration WHERE name = ${X}
|
|
1334
1334
|
`.execute($)}}async function Wn1($){await lc6($),await dc6($);let Z=new Jn1({db:$,provider:{getMigrations:()=>Promise.resolve(ol0)}}),{error:X,results:Q}=await Z.migrateToLatest(),Y=0;if(Q?.forEach((G)=>{if(G.status==="Success")Y++;else if(G.status==="Error")console.error(`Failed to execute migration "${G.migrationName}"`)}),X)throw console.error("Failed to migrate"),console.error(X),X;return Y}async function mc6($){let{keepOpen:Z=!1,database:X,skipBetterAuth:Q=!1}=$??{},Y="skipped";if(!Q&&!X)Y=await jh0();let G=X??N6(),J=async()=>{if(!Z&&!X)await Ow(G).catch((K)=>{console.warn("Warning: Error closing database:",K)})};try{let K=await Wn1(G.db);return await J(),{betterAuth:Y,kysely:K}}catch(K){throw await J(),K}}async function ic6(){let $=N6(),Z=new Jn1({db:$.db,provider:{getMigrations:()=>Promise.resolve(ol0)}}),{error:X,results:Q}=await Z.migrateDown();if(Q?.forEach((Y)=>{if(Y.status==="Success")console.log(`\u2705 Migration "${Y.migrationName}" rolled back successfully`);else if(Y.status==="Error")console.error(`\u274C Failed to rollback migration "${Y.migrationName}"`)}),X)throw console.error("Failed to rollback migration"),console.error(X),X}var Nn1=O(()=>{Gn1();Ph0();o7()});async function a50($){let Z={...process.env},X=m00($,Z);console.log(RF1(X.settings.encryptionKey));let Q=X.settings.betterAuthSecret||(X.settings.localMode?Pd1(X.settings.dataDir):""),{ensureServices:Y}=await Promise.resolve().then(() => (K50(),J50)),{outputs:G,services:J}=await Y({home:X.settings.dataDir,externalDatabaseUrl:X.externalDatabaseUrl,externalNatsUrl:X.externalNatsUrl});if(!X.skipMigrations){let{migrateBetterAuth:W}=await Promise.resolve().then(() => (Ph0(),Td1));await W(G.databaseUrl);let{createDatabase:H}=await Promise.resolve().then(() => (o7(),hl1)),{migrateToLatest:N}=await Promise.resolve().then(() => (Nn1(),Hn1)),U=H(G.databaseUrl);await N({keepOpen:!0,database:U,skipBetterAuth:!0})}let K={...X.settings,betterAuthSecret:Q,databaseUrl:G.databaseUrl,natsUrls:G.natsUrls,...G.s3?{s3Endpoint:G.s3.endpoint,s3Bucket:G.s3.bucket,s3AccessKeyId:G.s3.accessKeyId,s3SecretAccessKey:G.s3.secretAccessKey,s3ForcePathStyle:G.s3.forcePathStyle}:{},...G.natsTunnel?{natsPublicUrl:G.natsTunnel.publicUrl,natsAccountJwt:G.natsTunnel.accountJwt,natsAccountSigningKey:G.natsTunnel.accountSigningKey,natsOperatorJwt:G.natsTunnel.operatorJwt,natsTunnelPublicEnabled:!0,natsCredsPath:G.natsTunnel.credsPath}:{}};return ic1(K),{settings:K,services:J.map((W)=>({name:W.name==="PostgreSQL"?"Postgres":W.name,port:W.port})),managedServiceNames:J.filter((W)=>W.owner==="managed").map((W)=>W.name)}}var rl0=O(()=>{Vx();Ad1();b8()});var wn1={};B0(wn1,{updateService:()=>oD,subscribeCliState:()=>el0,setTuiConsoleIntercepted:()=>s50,setServerUrl:()=>Vm,setMigrationsDone:()=>km,setDevMode:()=>tc6,resetCliStateForTests:()=>nc6,isTuiConsoleIntercepted:()=>e50,getCliState:()=>sl0,addLogEntry:()=>jw});function Un1(){return{services:[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}],migrationsStatus:"pending",serverUrl:null,logs:[]}}function nc6(){_Q=Un1()}function pc6(){return[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}]}function Mm(){for(let $ of al0)$()}function sl0(){return _Q}function el0($){return al0.add($),()=>al0.delete($)}function oD($){_Q={..._Q,services:_Q.services.map((Z)=>Z.name===$.name?$:Z)},Mm()}function km(){_Q={..._Q,migrationsStatus:"done"},Mm()}function Vm($){_Q={..._Q,serverUrl:$},Mm()}function jw($){let Z=[..._Q.logs,$];_Q={..._Q,logs:Z.length>500?Z.slice(-500):Z},Mm()}function tc6(){_Q={..._Q,services:[...pc6(),{name:"API",status:"pending",port:0},{name:"Vite",status:"pending",port:0}]},Mm()}function s50($){Fn1=$}function e50(){return Fn1}var _Q,al0,Fn1=!1;var rD=O(()=>{_Q=Un1();al0=new Set});import{createServer as Bn1}from"net";function oc6($){return new Promise((Z)=>{let X=Bn1();X.once("error",()=>Z(!1)),X.listen($,"0.0.0.0",()=>{X.close(()=>Z(!0))})})}async function Sm($){if(await oc6($))return $;let Z=await new Promise((X,Q)=>{let Y=Bn1();Y.once("error",Q),Y.listen(0,"0.0.0.0",()=>{let G=Y.address(),J=typeof G==="object"&&G?G.port:0;Y.close(()=>X(J))})});return console.warn(`Port ${$} is in use, using port ${Z} instead.`),Z}var $d0=()=>{};function Cm($){return $.replace(/\x1b\[[0-9;]*m/g,"")}var Zd0={};B0(Zd0,{startDevServer:()=>ac6});import{join as rc6}from"path";function On1($){let Z=$.getReader(),X=new TextDecoder,Q="";function Y(){let G=Q.split(`
|
|
1335
|
-
`);Q=G.pop()??"";for(let J of G){let K=Cm(J).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;jw({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:K})}}(async()=>{for(;;){let{done:G,value:J}=await Z.read();if(G)break;Q+=X.decode(J,{stream:!0}),Y()}if(Q.trim()){let G=Cm(Q).replace(/^\[\d+\]\s*/,"").trim();if(G)jw({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:G})}})()}async function ac6($){let{baseUrl:Z,noTui:X}=$,Q=process.env.HOST==="0.0.0.0"&&Boolean(process.env.PORT),Y=Q?process.env.PORT:$.vitePort,G=Z||`http://localhost:${Y}`,J=Q?await Sm(Number(Y)+1):await Sm(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await a50({port:String(J),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let L of W)oD({name:L.name,status:"ready",port:L.port});km();let N=rc6(import.meta.dir,"..","..","..","..",".."),U=X===!0,F=Bun.spawn(["bun","run","dev:servers"],{cwd:N,env:{...process.env,PORT:String(K.port),VITE_PORT:String(Y),DATABASE_URL:K.databaseUrl,NATS_URL:K.natsUrls.join(","),NODE_ENV:K.nodeEnv,BASE_URL:G,DECOCMS_LOCAL_MODE:String(K.localMode),DECOCMS_HOME:K.dataDir,DATA_DIR:K.dataDir,DECO_CLI:"1",...K.betterAuthSecret?{BETTER_AUTH_SECRET:K.betterAuthSecret}:{},...K.s3Endpoint?{S3_ENDPOINT:K.s3Endpoint,S3_BUCKET:K.s3Bucket??"",S3_ACCESS_KEY_ID:K.s3AccessKeyId??"",S3_SECRET_ACCESS_KEY:K.s3SecretAccessKey??"",S3_FORCE_PATH_STYLE:String(K.s3ForcePathStyle)}:{},...K.natsPublicUrl&&K.natsAccountJwt&&K.natsAccountSigningKey?{NATS_PUBLIC_URL:K.natsPublicUrl,NATS_ACCOUNT_JWT:K.natsAccountJwt,NATS_ACCOUNT_SIGNING_KEY:K.natsAccountSigningKey,NATS_OPERATOR_JWT:K.natsOperatorJwt??"",NATS_TUNNEL_PUBLIC_ENABLED:"true",...K.natsCredsPath?{NATS_CREDS:K.natsCredsPath}:{}}:{}},stdio:["inherit",U?"inherit":"pipe",U?"inherit":"pipe"]});if(!U)On1(F.stdout),On1(F.stderr);Vm(G),oD({name:"Vite",status:"ready",port:Number(Y)}),oD({name:"API",status:"ready",port:Number(K.port)});let B=async(L)=>{if(F.kill(L),await F.exited,H.length>0){let{stopServices:D}=await Promise.resolve().then(() => (K50(),J50));await D(K.dataDir)}};return process.on("SIGINT",()=>B("SIGINT")),process.on("SIGTERM",()=>B("SIGTERM")),{port:Number(Y),process:F}}var Xd0=O(()=>{rl0();rD();$d0()});var $90;var Qd0=O(()=>{$90={name:"decocms",version:"4.204.11",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@nats-io/jwt":"0.0.10-5","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});import{Box as ec6,Text as Ln1}from"ink";import{jsx as $l6,jsxs as Dn1}from"react/jsx-runtime";function En1({version:$}){return Dn1(ec6,{flexDirection:"column",marginTop:1,children:[k50.map((Z,X)=>$l6(Ln1,{color:V50[X],children:Z},X)),Dn1(Ln1,{dimColor:!0,children:[" v",$]})]})}var zn1=O(()=>{Lm()});import{Box as aD,Text as Pw}from"ink";import{Spinner as Zl6}from"@inkjs/ui";import{jsx as lY,jsxs as Yb}from"react/jsx-runtime";function jn1({status:$}){if($==="pending")return lY(Zl6,{label:""});return lY(Pw,{color:"green",children:"\u2713"})}function Xl6($){return`${$.name}: ${$.port||"...."}`}function Pn1({services:$,migrationsStatus:Z,home:X,serverUrl:Q}){return Yb(aD,{flexDirection:"column",paddingBottom:1,children:[lY(En1,{version:$90.version}),lY(aD,{marginBottom:1,children:lY(Pw,{dimColor:!0,children:"\u2500".repeat(80)})}),lY(aD,{children:Yb(Pw,{dimColor:!0,children:["Home: ",X]})}),Yb(aD,{gap:2,children:[$.map((Y)=>Yb(aD,{gap:1,children:[lY(Pw,{children:Xl6(Y)}),lY(jn1,{status:Y.status})]},Y.name)),Yb(aD,{gap:1,children:[lY(Pw,{children:"Migrations"}),lY(jn1,{status:Z})]})]}),lY(aD,{children:Q?Yb(Pw,{children:["Open in browser: ",lY(Pw,{color:"cyan",children:Q})]}):lY(Pw,{dimColor:!0,children:"Starting..."})})]})}var An1=O(()=>{Qd0();zn1()});import{Box as Ql6,Text as _m}from"ink";import{jsx as Yd0,jsxs as Gd0}from"react/jsx-runtime";function Yl6($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function Tn1({logs:$}){return Yd0(Ql6,{flexDirection:"column",children:$.map((Z,X)=>{if(Z.rawLine)return Yd0(_m,{dimColor:!0,children:Z.rawLine},X);let Q=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return Gd0(_m,{children:[Gd0(_m,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),Yd0(_m,{color:Yl6(Z.status),children:Z.status}),Gd0(_m,{dimColor:!0,children:[" ",Q.padStart(8)]})]},X)})})}var Rn1=()=>{};var Jd0={};B0(Jd0,{App:()=>Kl6});import{Box as Gl6}from"ink";import{useSyncExternalStore as Jl6}from"react";import{jsx as In1,jsxs as Wl6}from"react/jsx-runtime";function Kl6({home:$}){let Z=Jl6(el0,sl0);return Wl6(Gl6,{flexDirection:"column",children:[In1(Pn1,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),In1(Tn1,{logs:Z.logs})]})}var Kd0=O(()=>{An1();Rn1();rD()});var OJ="thread-gate",fN="decopilot-hosted-harness",tG="automations",Aw="background-tools";var qn1="7";function Mn1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:qn1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var kn1=()=>{};function Hl6(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function Wd0($,Z){for(let X=0;X<$.length;X++){let Q=$[X];if(Q===void 0)continue;if(Q===Z)return $[X+1];if(Q.startsWith(`${Z}=`))return Q.slice(Z.length+1)}return}function Vn1(){let $=Hl6();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:Wd0($,"--cpu-prof-dir")??process.cwd(),name:Wd0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(Wd0($,"--cpu-prof-interval")??1000),note:"profile is written on process exit"}));return}if(process.env.CPU_PROFILE)console.warn(JSON.stringify({msg:"cpu-profiling-requested-but-inactive",hint:'CPU profiling is a Bun launch flag. Set BUN_OPTIONS="--cpu-prof --cpu-prof-md --cpu-prof-dir=/tmp" before starting the process.'}))}function Sn1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let X=iD();if(!X)return;let Q={};try{let{heapStats:Y}=await import("bun:jsc"),G=Y(),J=Object.entries(G.objectTypeCounts).sort((K,W)=>W[1]-K[1]).slice(0,20);Q={objectCount:G.objectCount,heapSize:G.heapSize,top:Object.fromEntries(J)}}catch{}console.log(JSON.stringify({msg:"heap-watch",ts:new Date().toISOString(),uptimeS:Math.round(process.uptime()),rss:X.rss,heapUsed:X.heapUsed,heapTotal:X.heapTotal,external:X.external,arrayBuffers:X.arrayBuffers,...Q}))};return Z().catch(()=>{}),Z90=setInterval(()=>void Z().catch(()=>{}),$),Z90.unref?.(),process.on("SIGUSR2",()=>{try{let X=Bun.generateHeapSnapshot("v8"),Q=typeof X==="string"?X:JSON.stringify(X),Y=`/tmp/heap-${process.pid}-${Date.now()}.heapsnapshot`;Bun.write(Y,Q),console.log(JSON.stringify({msg:"heap-snapshot-written",path:Y}))}catch(X){console.error("[heap-watch] snapshot failed:",X)}}),()=>{if(Z90)clearInterval(Z90)}}var Z90;var Cn1=()=>{};import*as Nl6 from"bun:jsc";function _n1(){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{Ul6()}catch(G){return console.error("[stall-watchdog] failed to start sampling profiler:",G),()=>{}}let X,Q=performance.now()+Z,Y=()=>{let G=performance.now(),J=G-Q;Q=G+Z;let K=[];try{K=Fl6()?.traces??[]}catch{}if(J>$&&K.length>0){let W=new Map;for(let N of K){let U=N.frames.find((B)=>B.sourceURL&&!/Unknown Executable/.test(B.category??""))??N.frames[0];if(!U)continue;let F=(U.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),w=`${U.name??"?"} @ ${F}:${U.line??"?"}`;W.set(w,(W.get(w)??0)+1)}let H=[...W.entries()].sort((N,U)=>U[1]-N[1]).slice(0,8).map(([N,U])=>({frame:N,count:U}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(J),samplesInWindow:K.length,top:H}))}X=setTimeout(Y,Z),X.unref?.()};return X=setTimeout(Y,Z),X.unref?.(),()=>{if(X)clearTimeout(X)}}var Ul6,Fl6;var vn1=O(()=>{({startSamplingProfiler:Ul6,samplingProfilerStackTraces:Fl6}=Nl6)});function xn1(){Vn1();let $=[Sn1(),Cl1(),_n1()];return()=>{for(let Z of $)Z()}}var fn1=O(()=>{Nh0();Cn1();vn1()});var sD=_((bn1)=>{Object.defineProperty(bn1,"__esModule",{value:!0});bn1.RepublishHeaders=bn1.DirectMsgHeaders=bn1.JsHeaders=bn1.AdvisoryKind=void 0;bn1.isOrderedPushConsumerOptions=wl6;bn1.isPullConsumer=Bl6;bn1.isPushConsumer=Ol6;bn1.isBoundPushConsumerOptions=Ll6;function wl6($){if($&&typeof $==="object")return"name_prefix"in $||"deliver_subject_prefix"in $||"filter_subjects"in $||"filter_subject"in $||"deliver_policy"in $||"opt_start_seq"in $||"opt_start_time"in $||"replay_policy"in $||"inactive_threshold"in $||"headers_only"in $||"deliver_prefix"in $;return!1}function Bl6($){return $.isPullConsumer()}function Ol6($){return $.isPushConsumer()}function Ll6($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}bn1.AdvisoryKind={API:"api_audit",StreamAction:"stream_action",ConsumerAction:"consumer_action",SnapshotCreate:"snapshot_create",SnapshotComplete:"snapshot_complete",RestoreCreate:"restore_create",RestoreComplete:"restore_complete",MaxDeliver:"max_deliver",Terminated:"terminated",Ack:"consumer_ack",StreamLeaderElected:"stream_leader_elected",StreamQuorumLost:"stream_quorum_lost",ConsumerLeaderElected:"consumer_leader_elected",ConsumerQuorumLost:"consumer_quorum_lost"};bn1.JsHeaders={StreamSourceHdr:"Nats-Stream-Source",LastConsumerSeqHdr:"Nats-Last-Consumer",LastStreamSeqHdr:"Nats-Last-Stream",ConsumerStalledHdr:"Nats-Consumer-Stalled",MessageSizeHdr:"Nats-Msg-Size",RollupHdr:"Nats-Rollup",RollupValueSubject:"sub",RollupValueAll:"all",PendingMessagesHdr:"Nats-Pending-Messages",PendingBytesHdr:"Nats-Pending-Bytes",RequiredApiLevel:"Nats-Required-Api-Level"};bn1.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};bn1.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var dY=_((gn1)=>{Object.defineProperty(gn1,"__esModule",{value:!0});gn1.TD=gn1.TE=gn1.Empty=void 0;gn1.encode=Il6;gn1.decode=ql6;gn1.Empty=new Uint8Array(0);gn1.TE=new TextEncoder;gn1.TD=new TextDecoder;function Rl6(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}function Il6(...$){let Z=[];for(let X=0;X<$.length;X++)Z.push(gn1.TE.encode($[X]));if(Z.length===0)return gn1.Empty;if(Z.length===1)return Z[0];return Rl6(...Z)}function ql6($){if(!$||$.length===0)return"";return gn1.TD.decode($)}});var mY=_((cn1)=>{Object.defineProperty(cn1,"__esModule",{value:!0});cn1.errors=cn1.PermissionViolationError=cn1.NoRespondersError=cn1.TimeoutError=cn1.RequestError=cn1.ProtocolError=cn1.ConnectionError=cn1.DrainingConnectionError=cn1.ClosedConnectionError=cn1.AuthorizationError=cn1.UserAuthenticationExpiredError=cn1.InvalidOperationError=cn1.InvalidArgumentError=cn1.InvalidSubjectError=void 0;class Nd0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}cn1.InvalidSubjectError=Nd0;class X90 extends Error{constructor($,Z){super($,Z);this.name="InvalidArgumentError"}static format($,Z,X){if(Array.isArray(Z)&&Z.length>1)Z=Z[0];if(Array.isArray($))$=$.map((Q)=>`'${Q}'`),$=$.join(",");else $=`'${$}'`;return new X90(`${$} ${Z}`,X)}}cn1.InvalidArgumentError=X90;class Ud0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}cn1.InvalidOperationError=Ud0;class Q90 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new Q90($);return null}}cn1.UserAuthenticationExpiredError=Q90;class Y90 extends Error{constructor($,Z){super($,Z);this.name="AuthorizationError"}static parse($){let Z=["authorization violation","account authentication expired","authentication timeout"],X=$.toLowerCase();for(let Q=0;Q<Z.length;Q++)if(X.indexOf(Z[Q])!==-1)return new Y90($);return null}}cn1.AuthorizationError=Y90;class Fd0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}cn1.ClosedConnectionError=Fd0;class wd0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}cn1.DrainingConnectionError=wd0;class Bd0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}cn1.ConnectionError=Bd0;class Od0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}cn1.ProtocolError=Od0;class Ld0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof G90}}cn1.RequestError=Ld0;class Dd0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}cn1.TimeoutError=Dd0;class G90 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}cn1.NoRespondersError=G90;class J90 extends Error{operation;subject;queue;constructor($,Z,X,Q,Y){super($,Y);this.name="PermissionViolationError",this.operation=Z,this.subject=X,this.queue=Q}static parse($){if(($?$.toLowerCase():"").indexOf("permissions violation")===-1)return null;let X="publish",Q="",Y=void 0,G=$.match(/(Publish|Subscription) to "(\S+)"/);if(G){if(X=G[1].toLowerCase(),Q=G[2],X==="subscription"){let J=$.match(/using queue "(\S+)"/);if(J)Y=J[1]}}return new J90($,X,Q,Y)}}cn1.PermissionViolationError=J90;cn1.errors={AuthorizationError:Y90,ClosedConnectionError:Fd0,ConnectionError:Bd0,DrainingConnectionError:wd0,InvalidArgumentError:X90,InvalidOperationError:Ud0,InvalidSubjectError:Nd0,NoRespondersError:G90,PermissionViolationError:J90,ProtocolError:Od0,RequestError:Ld0,TimeoutError:Dd0,UserAuthenticationExpiredError:Q90}});var LJ=_((nn1)=>{Object.defineProperty(nn1,"__esModule",{value:!0});nn1.SimpleMutex=nn1.Perf=void 0;nn1.extend=dl6;nn1.render=ml6;nn1.timeout=il6;nn1.delay=nl6;nn1.deadline=pl6;nn1.deferred=zd0;nn1.debugDeferred=tl6;nn1.shuffle=ol6;nn1.collect=rl6;nn1.jitter=in1;nn1.backoff=al6;nn1.nanos=sl6;nn1.millis=el6;nn1.randomToken=Xd6;var ll6=dY(),Ed0=mY();function dl6($,...Z){for(let X=0;X<Z.length;X++){let Q=Z[X];Object.keys(Q).forEach(function(Y){$[Y]=Q[Y]})}return $}function ml6($){return ll6.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function il6($,Z=!0){let X=Z?new Ed0.TimeoutError:null,Q,Y,G=new Promise((J,K)=>{Q={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(X===null)K(new Ed0.TimeoutError);else K(X)},$)});return Object.assign(G,Q)}function nl6($=0){let Z,X=new Promise((Q)=>{let Y=setTimeout(()=>{Q()},$);Z={cancel:()=>{if(Y)clearTimeout(Y),Q()}}});return Object.assign(X,Z)}async function pl6($,Z=1000){let X=zd0(),Q=setTimeout(()=>{X.reject(new Ed0.TimeoutError)},Z);try{return await Promise.race([$,X])}finally{clearTimeout(Q)}}function zd0(){let $={},Z=new Promise((X,Q)=>{$={resolve:X,reject:Q}});return Object.assign(Z,$)}function tl6(){let $={},Z=new Promise((X,Q)=>{$={resolve:(Y)=>{console.trace("resolve",Y),X(Y)},reject:(Y)=>{console.trace("reject"),Q(Y)}}});return Object.assign(Z,$)}function ol6($){for(let Z=$.length-1;Z>0;Z--){let X=Math.floor(Math.random()*(Z+1));[$[Z],$[X]]=[$[X],$[Z]]}return $}async function rl6($){let Z=[];for await(let X of $)Z.push(X);return Z}class dn1{timers;measures;constructor(){this.timers=new Map,this.measures=new Map}mark($){this.timers.set($,performance.now())}measure($,Z,X){let Q=this.timers.get(Z);if(Q===void 0)throw Error(`${Z} is not defined`);let Y=this.timers.get(X);if(Y===void 0)throw Error(`${X} is not defined`);this.measures.set($,Y-Q)}getEntries(){let $=[];return this.measures.forEach((Z,X)=>{$.push({name:X,duration:Z})}),$}}nn1.Perf=dn1;class mn1{max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=zd0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}nn1.SimpleMutex=mn1;function in1($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function al6($=[0,250,250,500,500,3000,5000]){if(!Array.isArray($))$=[0,250,250,500,500,3000,5000];let Z=$.length-1;return{backoff(X){return in1(X>Z?$[Z]:$[X])}}}function sl6($){return $*1e6}function el6($){return Math.floor($/1e6)}var $d6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",bN=new Uint8Array(62);for(let $=0;$<62;$++)bN[$]=$d6.charCodeAt($);var Zd6=218340105584896;function Xd6(){let $=Math.floor(Math.random()*Zd6),Z=$%62,X=bN[Z];$=($-Z)/62,Z=$%62;let Q=bN[Z];$=($-Z)/62,Z=$%62;let Y=bN[Z];$=($-Z)/62,Z=$%62;let G=bN[Z];$=($-Z)/62,Z=$%62;let J=bN[Z];$=($-Z)/62,Z=$%62;let K=bN[Z];$=($-Z)/62,Z=$%62;let W=bN[Z];$=($-Z)/62;let H=bN[$];return String.fromCharCode(X,Q,Y,G,J,K,W,H)}});var $p1=_((sn1)=>{Object.defineProperty(sn1,"__esModule",{value:!0});sn1.nuid=sn1.NuidImpl=void 0;var Ed6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",Tw=62,W90=12,rn1=10,tn1=33,zd6=333,on1=W90+rn1,Pd0=new Uint8Array(Tw);for(let $=0;$<Tw;$++)Pd0[$]=Ed6.charCodeAt($);var K90=4294967296,an1=BigInt(Tw)**BigInt(rn1),vm=Number(an1/(1n<<32n)),jd0=Number(an1%(1n<<32n));function jd6($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function Pd6($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else jd6($)}class Ad0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(on1),this.cbuf=new Uint8Array(W90),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(vm+1)),this.seqLo=Math.floor(Math.random()*K90);while($++<8&&this.seqHi===vm&&this.seqLo>=jd0);if(this.seqHi===vm&&this.seqLo>=jd0)this.seqLo=0;this.inc=Math.random()*(zd6-tn1)+tn1|0}setPre(){Pd6(this.cbuf);for(let $=0;$<W90;$++)this.buf[$]=Pd0[this.cbuf[$]%Tw]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let X=on1-1;X>=W90;X--){let Q=Math.floor($/Tw),G=($-Q*Tw)*K90+Z,J=Math.floor(G/Tw),K=G-J*Tw;this.buf[X]=Pd0[K],$=Q,Z=J}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=K90)this.seqLo-=K90,this.seqHi+=1;if(this.seqHi>vm||this.seqHi===vm&&this.seqLo>=jd0)this.setPre(),this.initSeqAndInc();this.fillSeq();let $=this.buf;return String.fromCharCode($[0],$[1],$[2],$[3],$[4],$[5],$[6],$[7],$[8],$[9],$[10],$[11],$[12],$[13],$[14],$[15],$[16],$[17],$[18],$[19],$[20],$[21])}reset(){this.init()}}sn1.NuidImpl=Ad0;sn1.nuid=new Ad0});var Yp1=_((Xp1)=>{Object.defineProperty(Xp1,"__esModule",{value:!0});Xp1.nuid=Xp1.Nuid=void 0;var Zp1=$p1();Xp1.Nuid=Zp1.NuidImpl;Xp1.nuid=Zp1.nuid});var N90=_((H90)=>{Object.defineProperty(H90,"__esModule",{value:!0});H90.nuid=H90.Nuid=void 0;var Gp1=Yp1();Object.defineProperty(H90,"Nuid",{enumerable:!0,get:function(){return Gp1.Nuid}});Object.defineProperty(H90,"nuid",{enumerable:!0,get:function(){return Gp1.nuid}})});var Rw=_((Jp1)=>{Object.defineProperty(Jp1,"__esModule",{value:!0});Jp1.DEFAULT_HOST=Jp1.DEFAULT_PORT=Jp1.Match=void 0;Jp1.syncIterator=Md6;Jp1.createInbox=kd6;var Id6=N90(),qd6=mY();Jp1.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function Md6($){let Z=$[Symbol.asyncIterator]();return{async next(){let X=await Z.next();if(X.done)return Promise.resolve(null);return Promise.resolve(X.value)}}}function kd6($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw qd6.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${Id6.nuid.next()}`}Jp1.DEFAULT_PORT=4222;Jp1.DEFAULT_HOST="127.0.0.1"});var xm=_((Np1)=>{Object.defineProperty(Np1,"__esModule",{value:!0});Np1.DataBuffer=void 0;var Wp1=dY();class Hp1{buffers;byteLength;constructor(){this.buffers=[],this.byteLength=0}static concat(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}static fromAscii($){if(!$)$="";return Wp1.TE.encode($)}static toAscii($){return Wp1.TD.decode($)}reset(){this.buffers.length=0,this.byteLength=0}pack(){if(this.buffers.length>1){let $=new Uint8Array(this.byteLength),Z=0;for(let X=0;X<this.buffers.length;X++)$.set(this.buffers[X],Z),Z+=this.buffers[X].length;this.buffers.length=0,this.buffers.push($)}}shift(){if(this.buffers.length){let $=this.buffers.shift();if($)return this.byteLength-=$.length,$}return new Uint8Array(0)}drain($){if(this.buffers.length){this.pack();let Z=this.buffers.pop();if(Z){let X=this.byteLength;if($===void 0||$>X)$=X;let Q=Z.subarray(0,$);if(X>$)this.buffers.push(Z.subarray($));return this.byteLength=X-$,Q}}return new Uint8Array(0)}fill($,...Z){if($)this.buffers.push($),this.byteLength+=$.length;for(let X=0;X<Z.length;X++)if(Z[X]&&Z[X].length)this.buffers.push(Z[X]),this.byteLength+=Z[X].length}peek(){if(this.buffers.length)return this.pack(),this.buffers[0];return new Uint8Array(0)}size(){return this.byteLength}length(){return this.buffers.length}}Np1.DataBuffer=Hp1});var eD=_((wp1)=>{Object.defineProperty(wp1,"__esModule",{value:!0});wp1.LF=wp1.CR=wp1.CRLF=wp1.CR_LF_LEN=wp1.CR_LF=void 0;wp1.setTransportFactory=bd6;wp1.defaultPort=yd6;wp1.getUrlParseFn=gd6;wp1.newTransport=hd6;wp1.getResolveFn=ud6;wp1.protoLen=Fp1;wp1.extractProtocolMessage=cd6;var vd6=dY(),xd6=Rw(),fd6=xm(),iY;function bd6($){iY=$}function yd6(){return iY!==void 0&&iY.defaultPort!==void 0?iY.defaultPort:xd6.DEFAULT_PORT}function gd6(){return iY!==void 0&&iY.urlParseFn?iY.urlParseFn:void 0}function hd6(){if(!iY||typeof iY.factory!=="function")throw Error("transport fn is not set");return iY.factory()}function ud6(){return iY!==void 0&&iY.dnsResolveFn?iY.dnsResolveFn:void 0}wp1.CR_LF=`\r
|
|
1335
|
+
`);Q=G.pop()??"";for(let J of G){let K=Cm(J).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;jw({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:K})}}(async()=>{for(;;){let{done:G,value:J}=await Z.read();if(G)break;Q+=X.decode(J,{stream:!0}),Y()}if(Q.trim()){let G=Cm(Q).replace(/^\[\d+\]\s*/,"").trim();if(G)jw({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:G})}})()}async function ac6($){let{baseUrl:Z,noTui:X}=$,Q=process.env.HOST==="0.0.0.0"&&Boolean(process.env.PORT),Y=Q?process.env.PORT:$.vitePort,G=Z||`http://localhost:${Y}`,J=Q?await Sm(Number(Y)+1):await Sm(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await a50({port:String(J),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let L of W)oD({name:L.name,status:"ready",port:L.port});km();let N=rc6(import.meta.dir,"..","..","..","..",".."),U=X===!0,F=Bun.spawn(["bun","run","dev:servers"],{cwd:N,env:{...process.env,PORT:String(K.port),VITE_PORT:String(Y),DATABASE_URL:K.databaseUrl,NATS_URL:K.natsUrls.join(","),NODE_ENV:K.nodeEnv,BASE_URL:G,DECOCMS_LOCAL_MODE:String(K.localMode),DECOCMS_HOME:K.dataDir,DATA_DIR:K.dataDir,DECO_CLI:"1",...K.betterAuthSecret?{BETTER_AUTH_SECRET:K.betterAuthSecret}:{},...K.s3Endpoint?{S3_ENDPOINT:K.s3Endpoint,S3_BUCKET:K.s3Bucket??"",S3_ACCESS_KEY_ID:K.s3AccessKeyId??"",S3_SECRET_ACCESS_KEY:K.s3SecretAccessKey??"",S3_FORCE_PATH_STYLE:String(K.s3ForcePathStyle)}:{},...K.natsPublicUrl&&K.natsAccountJwt&&K.natsAccountSigningKey?{NATS_PUBLIC_URL:K.natsPublicUrl,NATS_ACCOUNT_JWT:K.natsAccountJwt,NATS_ACCOUNT_SIGNING_KEY:K.natsAccountSigningKey,NATS_OPERATOR_JWT:K.natsOperatorJwt??"",NATS_TUNNEL_PUBLIC_ENABLED:"true",...K.natsCredsPath?{NATS_CREDS:K.natsCredsPath}:{}}:{}},stdio:["inherit",U?"inherit":"pipe",U?"inherit":"pipe"]});if(!U)On1(F.stdout),On1(F.stderr);Vm(G),oD({name:"Vite",status:"ready",port:Number(Y)}),oD({name:"API",status:"ready",port:Number(K.port)});let B=async(L)=>{if(F.kill(L),await F.exited,H.length>0){let{stopServices:D}=await Promise.resolve().then(() => (K50(),J50));await D(K.dataDir)}};return process.on("SIGINT",()=>B("SIGINT")),process.on("SIGTERM",()=>B("SIGTERM")),{port:Number(Y),process:F}}var Xd0=O(()=>{rl0();rD();$d0()});var $90;var Qd0=O(()=>{$90={name:"decocms",version:"4.204.12",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@nats-io/jwt":"0.0.10-5","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});import{Box as ec6,Text as Ln1}from"ink";import{jsx as $l6,jsxs as Dn1}from"react/jsx-runtime";function En1({version:$}){return Dn1(ec6,{flexDirection:"column",marginTop:1,children:[k50.map((Z,X)=>$l6(Ln1,{color:V50[X],children:Z},X)),Dn1(Ln1,{dimColor:!0,children:[" v",$]})]})}var zn1=O(()=>{Lm()});import{Box as aD,Text as Pw}from"ink";import{Spinner as Zl6}from"@inkjs/ui";import{jsx as lY,jsxs as Yb}from"react/jsx-runtime";function jn1({status:$}){if($==="pending")return lY(Zl6,{label:""});return lY(Pw,{color:"green",children:"\u2713"})}function Xl6($){return`${$.name}: ${$.port||"...."}`}function Pn1({services:$,migrationsStatus:Z,home:X,serverUrl:Q}){return Yb(aD,{flexDirection:"column",paddingBottom:1,children:[lY(En1,{version:$90.version}),lY(aD,{marginBottom:1,children:lY(Pw,{dimColor:!0,children:"\u2500".repeat(80)})}),lY(aD,{children:Yb(Pw,{dimColor:!0,children:["Home: ",X]})}),Yb(aD,{gap:2,children:[$.map((Y)=>Yb(aD,{gap:1,children:[lY(Pw,{children:Xl6(Y)}),lY(jn1,{status:Y.status})]},Y.name)),Yb(aD,{gap:1,children:[lY(Pw,{children:"Migrations"}),lY(jn1,{status:Z})]})]}),lY(aD,{children:Q?Yb(Pw,{children:["Open in browser: ",lY(Pw,{color:"cyan",children:Q})]}):lY(Pw,{dimColor:!0,children:"Starting..."})})]})}var An1=O(()=>{Qd0();zn1()});import{Box as Ql6,Text as _m}from"ink";import{jsx as Yd0,jsxs as Gd0}from"react/jsx-runtime";function Yl6($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function Tn1({logs:$}){return Yd0(Ql6,{flexDirection:"column",children:$.map((Z,X)=>{if(Z.rawLine)return Yd0(_m,{dimColor:!0,children:Z.rawLine},X);let Q=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return Gd0(_m,{children:[Gd0(_m,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),Yd0(_m,{color:Yl6(Z.status),children:Z.status}),Gd0(_m,{dimColor:!0,children:[" ",Q.padStart(8)]})]},X)})})}var Rn1=()=>{};var Jd0={};B0(Jd0,{App:()=>Kl6});import{Box as Gl6}from"ink";import{useSyncExternalStore as Jl6}from"react";import{jsx as In1,jsxs as Wl6}from"react/jsx-runtime";function Kl6({home:$}){let Z=Jl6(el0,sl0);return Wl6(Gl6,{flexDirection:"column",children:[In1(Pn1,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),In1(Tn1,{logs:Z.logs})]})}var Kd0=O(()=>{An1();Rn1();rD()});var OJ="thread-gate",fN="decopilot-hosted-harness",tG="automations",Aw="background-tools";var qn1="7";function Mn1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:qn1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var kn1=()=>{};function Hl6(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function Wd0($,Z){for(let X=0;X<$.length;X++){let Q=$[X];if(Q===void 0)continue;if(Q===Z)return $[X+1];if(Q.startsWith(`${Z}=`))return Q.slice(Z.length+1)}return}function Vn1(){let $=Hl6();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:Wd0($,"--cpu-prof-dir")??process.cwd(),name:Wd0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(Wd0($,"--cpu-prof-interval")??1000),note:"profile is written on process exit"}));return}if(process.env.CPU_PROFILE)console.warn(JSON.stringify({msg:"cpu-profiling-requested-but-inactive",hint:'CPU profiling is a Bun launch flag. Set BUN_OPTIONS="--cpu-prof --cpu-prof-md --cpu-prof-dir=/tmp" before starting the process.'}))}function Sn1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let X=iD();if(!X)return;let Q={};try{let{heapStats:Y}=await import("bun:jsc"),G=Y(),J=Object.entries(G.objectTypeCounts).sort((K,W)=>W[1]-K[1]).slice(0,20);Q={objectCount:G.objectCount,heapSize:G.heapSize,top:Object.fromEntries(J)}}catch{}console.log(JSON.stringify({msg:"heap-watch",ts:new Date().toISOString(),uptimeS:Math.round(process.uptime()),rss:X.rss,heapUsed:X.heapUsed,heapTotal:X.heapTotal,external:X.external,arrayBuffers:X.arrayBuffers,...Q}))};return Z().catch(()=>{}),Z90=setInterval(()=>void Z().catch(()=>{}),$),Z90.unref?.(),process.on("SIGUSR2",()=>{try{let X=Bun.generateHeapSnapshot("v8"),Q=typeof X==="string"?X:JSON.stringify(X),Y=`/tmp/heap-${process.pid}-${Date.now()}.heapsnapshot`;Bun.write(Y,Q),console.log(JSON.stringify({msg:"heap-snapshot-written",path:Y}))}catch(X){console.error("[heap-watch] snapshot failed:",X)}}),()=>{if(Z90)clearInterval(Z90)}}var Z90;var Cn1=()=>{};import*as Nl6 from"bun:jsc";function _n1(){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{Ul6()}catch(G){return console.error("[stall-watchdog] failed to start sampling profiler:",G),()=>{}}let X,Q=performance.now()+Z,Y=()=>{let G=performance.now(),J=G-Q;Q=G+Z;let K=[];try{K=Fl6()?.traces??[]}catch{}if(J>$&&K.length>0){let W=new Map;for(let N of K){let U=N.frames.find((B)=>B.sourceURL&&!/Unknown Executable/.test(B.category??""))??N.frames[0];if(!U)continue;let F=(U.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),w=`${U.name??"?"} @ ${F}:${U.line??"?"}`;W.set(w,(W.get(w)??0)+1)}let H=[...W.entries()].sort((N,U)=>U[1]-N[1]).slice(0,8).map(([N,U])=>({frame:N,count:U}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(J),samplesInWindow:K.length,top:H}))}X=setTimeout(Y,Z),X.unref?.()};return X=setTimeout(Y,Z),X.unref?.(),()=>{if(X)clearTimeout(X)}}var Ul6,Fl6;var vn1=O(()=>{({startSamplingProfiler:Ul6,samplingProfilerStackTraces:Fl6}=Nl6)});function xn1(){Vn1();let $=[Sn1(),Cl1(),_n1()];return()=>{for(let Z of $)Z()}}var fn1=O(()=>{Nh0();Cn1();vn1()});var sD=_((bn1)=>{Object.defineProperty(bn1,"__esModule",{value:!0});bn1.RepublishHeaders=bn1.DirectMsgHeaders=bn1.JsHeaders=bn1.AdvisoryKind=void 0;bn1.isOrderedPushConsumerOptions=wl6;bn1.isPullConsumer=Bl6;bn1.isPushConsumer=Ol6;bn1.isBoundPushConsumerOptions=Ll6;function wl6($){if($&&typeof $==="object")return"name_prefix"in $||"deliver_subject_prefix"in $||"filter_subjects"in $||"filter_subject"in $||"deliver_policy"in $||"opt_start_seq"in $||"opt_start_time"in $||"replay_policy"in $||"inactive_threshold"in $||"headers_only"in $||"deliver_prefix"in $;return!1}function Bl6($){return $.isPullConsumer()}function Ol6($){return $.isPushConsumer()}function Ll6($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}bn1.AdvisoryKind={API:"api_audit",StreamAction:"stream_action",ConsumerAction:"consumer_action",SnapshotCreate:"snapshot_create",SnapshotComplete:"snapshot_complete",RestoreCreate:"restore_create",RestoreComplete:"restore_complete",MaxDeliver:"max_deliver",Terminated:"terminated",Ack:"consumer_ack",StreamLeaderElected:"stream_leader_elected",StreamQuorumLost:"stream_quorum_lost",ConsumerLeaderElected:"consumer_leader_elected",ConsumerQuorumLost:"consumer_quorum_lost"};bn1.JsHeaders={StreamSourceHdr:"Nats-Stream-Source",LastConsumerSeqHdr:"Nats-Last-Consumer",LastStreamSeqHdr:"Nats-Last-Stream",ConsumerStalledHdr:"Nats-Consumer-Stalled",MessageSizeHdr:"Nats-Msg-Size",RollupHdr:"Nats-Rollup",RollupValueSubject:"sub",RollupValueAll:"all",PendingMessagesHdr:"Nats-Pending-Messages",PendingBytesHdr:"Nats-Pending-Bytes",RequiredApiLevel:"Nats-Required-Api-Level"};bn1.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};bn1.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var dY=_((gn1)=>{Object.defineProperty(gn1,"__esModule",{value:!0});gn1.TD=gn1.TE=gn1.Empty=void 0;gn1.encode=Il6;gn1.decode=ql6;gn1.Empty=new Uint8Array(0);gn1.TE=new TextEncoder;gn1.TD=new TextDecoder;function Rl6(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}function Il6(...$){let Z=[];for(let X=0;X<$.length;X++)Z.push(gn1.TE.encode($[X]));if(Z.length===0)return gn1.Empty;if(Z.length===1)return Z[0];return Rl6(...Z)}function ql6($){if(!$||$.length===0)return"";return gn1.TD.decode($)}});var mY=_((cn1)=>{Object.defineProperty(cn1,"__esModule",{value:!0});cn1.errors=cn1.PermissionViolationError=cn1.NoRespondersError=cn1.TimeoutError=cn1.RequestError=cn1.ProtocolError=cn1.ConnectionError=cn1.DrainingConnectionError=cn1.ClosedConnectionError=cn1.AuthorizationError=cn1.UserAuthenticationExpiredError=cn1.InvalidOperationError=cn1.InvalidArgumentError=cn1.InvalidSubjectError=void 0;class Nd0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}cn1.InvalidSubjectError=Nd0;class X90 extends Error{constructor($,Z){super($,Z);this.name="InvalidArgumentError"}static format($,Z,X){if(Array.isArray(Z)&&Z.length>1)Z=Z[0];if(Array.isArray($))$=$.map((Q)=>`'${Q}'`),$=$.join(",");else $=`'${$}'`;return new X90(`${$} ${Z}`,X)}}cn1.InvalidArgumentError=X90;class Ud0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}cn1.InvalidOperationError=Ud0;class Q90 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new Q90($);return null}}cn1.UserAuthenticationExpiredError=Q90;class Y90 extends Error{constructor($,Z){super($,Z);this.name="AuthorizationError"}static parse($){let Z=["authorization violation","account authentication expired","authentication timeout"],X=$.toLowerCase();for(let Q=0;Q<Z.length;Q++)if(X.indexOf(Z[Q])!==-1)return new Y90($);return null}}cn1.AuthorizationError=Y90;class Fd0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}cn1.ClosedConnectionError=Fd0;class wd0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}cn1.DrainingConnectionError=wd0;class Bd0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}cn1.ConnectionError=Bd0;class Od0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}cn1.ProtocolError=Od0;class Ld0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof G90}}cn1.RequestError=Ld0;class Dd0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}cn1.TimeoutError=Dd0;class G90 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}cn1.NoRespondersError=G90;class J90 extends Error{operation;subject;queue;constructor($,Z,X,Q,Y){super($,Y);this.name="PermissionViolationError",this.operation=Z,this.subject=X,this.queue=Q}static parse($){if(($?$.toLowerCase():"").indexOf("permissions violation")===-1)return null;let X="publish",Q="",Y=void 0,G=$.match(/(Publish|Subscription) to "(\S+)"/);if(G){if(X=G[1].toLowerCase(),Q=G[2],X==="subscription"){let J=$.match(/using queue "(\S+)"/);if(J)Y=J[1]}}return new J90($,X,Q,Y)}}cn1.PermissionViolationError=J90;cn1.errors={AuthorizationError:Y90,ClosedConnectionError:Fd0,ConnectionError:Bd0,DrainingConnectionError:wd0,InvalidArgumentError:X90,InvalidOperationError:Ud0,InvalidSubjectError:Nd0,NoRespondersError:G90,PermissionViolationError:J90,ProtocolError:Od0,RequestError:Ld0,TimeoutError:Dd0,UserAuthenticationExpiredError:Q90}});var LJ=_((nn1)=>{Object.defineProperty(nn1,"__esModule",{value:!0});nn1.SimpleMutex=nn1.Perf=void 0;nn1.extend=dl6;nn1.render=ml6;nn1.timeout=il6;nn1.delay=nl6;nn1.deadline=pl6;nn1.deferred=zd0;nn1.debugDeferred=tl6;nn1.shuffle=ol6;nn1.collect=rl6;nn1.jitter=in1;nn1.backoff=al6;nn1.nanos=sl6;nn1.millis=el6;nn1.randomToken=Xd6;var ll6=dY(),Ed0=mY();function dl6($,...Z){for(let X=0;X<Z.length;X++){let Q=Z[X];Object.keys(Q).forEach(function(Y){$[Y]=Q[Y]})}return $}function ml6($){return ll6.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function il6($,Z=!0){let X=Z?new Ed0.TimeoutError:null,Q,Y,G=new Promise((J,K)=>{Q={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(X===null)K(new Ed0.TimeoutError);else K(X)},$)});return Object.assign(G,Q)}function nl6($=0){let Z,X=new Promise((Q)=>{let Y=setTimeout(()=>{Q()},$);Z={cancel:()=>{if(Y)clearTimeout(Y),Q()}}});return Object.assign(X,Z)}async function pl6($,Z=1000){let X=zd0(),Q=setTimeout(()=>{X.reject(new Ed0.TimeoutError)},Z);try{return await Promise.race([$,X])}finally{clearTimeout(Q)}}function zd0(){let $={},Z=new Promise((X,Q)=>{$={resolve:X,reject:Q}});return Object.assign(Z,$)}function tl6(){let $={},Z=new Promise((X,Q)=>{$={resolve:(Y)=>{console.trace("resolve",Y),X(Y)},reject:(Y)=>{console.trace("reject"),Q(Y)}}});return Object.assign(Z,$)}function ol6($){for(let Z=$.length-1;Z>0;Z--){let X=Math.floor(Math.random()*(Z+1));[$[Z],$[X]]=[$[X],$[Z]]}return $}async function rl6($){let Z=[];for await(let X of $)Z.push(X);return Z}class dn1{timers;measures;constructor(){this.timers=new Map,this.measures=new Map}mark($){this.timers.set($,performance.now())}measure($,Z,X){let Q=this.timers.get(Z);if(Q===void 0)throw Error(`${Z} is not defined`);let Y=this.timers.get(X);if(Y===void 0)throw Error(`${X} is not defined`);this.measures.set($,Y-Q)}getEntries(){let $=[];return this.measures.forEach((Z,X)=>{$.push({name:X,duration:Z})}),$}}nn1.Perf=dn1;class mn1{max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=zd0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}nn1.SimpleMutex=mn1;function in1($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function al6($=[0,250,250,500,500,3000,5000]){if(!Array.isArray($))$=[0,250,250,500,500,3000,5000];let Z=$.length-1;return{backoff(X){return in1(X>Z?$[Z]:$[X])}}}function sl6($){return $*1e6}function el6($){return Math.floor($/1e6)}var $d6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",bN=new Uint8Array(62);for(let $=0;$<62;$++)bN[$]=$d6.charCodeAt($);var Zd6=218340105584896;function Xd6(){let $=Math.floor(Math.random()*Zd6),Z=$%62,X=bN[Z];$=($-Z)/62,Z=$%62;let Q=bN[Z];$=($-Z)/62,Z=$%62;let Y=bN[Z];$=($-Z)/62,Z=$%62;let G=bN[Z];$=($-Z)/62,Z=$%62;let J=bN[Z];$=($-Z)/62,Z=$%62;let K=bN[Z];$=($-Z)/62,Z=$%62;let W=bN[Z];$=($-Z)/62;let H=bN[$];return String.fromCharCode(X,Q,Y,G,J,K,W,H)}});var $p1=_((sn1)=>{Object.defineProperty(sn1,"__esModule",{value:!0});sn1.nuid=sn1.NuidImpl=void 0;var Ed6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",Tw=62,W90=12,rn1=10,tn1=33,zd6=333,on1=W90+rn1,Pd0=new Uint8Array(Tw);for(let $=0;$<Tw;$++)Pd0[$]=Ed6.charCodeAt($);var K90=4294967296,an1=BigInt(Tw)**BigInt(rn1),vm=Number(an1/(1n<<32n)),jd0=Number(an1%(1n<<32n));function jd6($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function Pd6($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else jd6($)}class Ad0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(on1),this.cbuf=new Uint8Array(W90),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(vm+1)),this.seqLo=Math.floor(Math.random()*K90);while($++<8&&this.seqHi===vm&&this.seqLo>=jd0);if(this.seqHi===vm&&this.seqLo>=jd0)this.seqLo=0;this.inc=Math.random()*(zd6-tn1)+tn1|0}setPre(){Pd6(this.cbuf);for(let $=0;$<W90;$++)this.buf[$]=Pd0[this.cbuf[$]%Tw]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let X=on1-1;X>=W90;X--){let Q=Math.floor($/Tw),G=($-Q*Tw)*K90+Z,J=Math.floor(G/Tw),K=G-J*Tw;this.buf[X]=Pd0[K],$=Q,Z=J}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=K90)this.seqLo-=K90,this.seqHi+=1;if(this.seqHi>vm||this.seqHi===vm&&this.seqLo>=jd0)this.setPre(),this.initSeqAndInc();this.fillSeq();let $=this.buf;return String.fromCharCode($[0],$[1],$[2],$[3],$[4],$[5],$[6],$[7],$[8],$[9],$[10],$[11],$[12],$[13],$[14],$[15],$[16],$[17],$[18],$[19],$[20],$[21])}reset(){this.init()}}sn1.NuidImpl=Ad0;sn1.nuid=new Ad0});var Yp1=_((Xp1)=>{Object.defineProperty(Xp1,"__esModule",{value:!0});Xp1.nuid=Xp1.Nuid=void 0;var Zp1=$p1();Xp1.Nuid=Zp1.NuidImpl;Xp1.nuid=Zp1.nuid});var N90=_((H90)=>{Object.defineProperty(H90,"__esModule",{value:!0});H90.nuid=H90.Nuid=void 0;var Gp1=Yp1();Object.defineProperty(H90,"Nuid",{enumerable:!0,get:function(){return Gp1.Nuid}});Object.defineProperty(H90,"nuid",{enumerable:!0,get:function(){return Gp1.nuid}})});var Rw=_((Jp1)=>{Object.defineProperty(Jp1,"__esModule",{value:!0});Jp1.DEFAULT_HOST=Jp1.DEFAULT_PORT=Jp1.Match=void 0;Jp1.syncIterator=Md6;Jp1.createInbox=kd6;var Id6=N90(),qd6=mY();Jp1.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function Md6($){let Z=$[Symbol.asyncIterator]();return{async next(){let X=await Z.next();if(X.done)return Promise.resolve(null);return Promise.resolve(X.value)}}}function kd6($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw qd6.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${Id6.nuid.next()}`}Jp1.DEFAULT_PORT=4222;Jp1.DEFAULT_HOST="127.0.0.1"});var xm=_((Np1)=>{Object.defineProperty(Np1,"__esModule",{value:!0});Np1.DataBuffer=void 0;var Wp1=dY();class Hp1{buffers;byteLength;constructor(){this.buffers=[],this.byteLength=0}static concat(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}static fromAscii($){if(!$)$="";return Wp1.TE.encode($)}static toAscii($){return Wp1.TD.decode($)}reset(){this.buffers.length=0,this.byteLength=0}pack(){if(this.buffers.length>1){let $=new Uint8Array(this.byteLength),Z=0;for(let X=0;X<this.buffers.length;X++)$.set(this.buffers[X],Z),Z+=this.buffers[X].length;this.buffers.length=0,this.buffers.push($)}}shift(){if(this.buffers.length){let $=this.buffers.shift();if($)return this.byteLength-=$.length,$}return new Uint8Array(0)}drain($){if(this.buffers.length){this.pack();let Z=this.buffers.pop();if(Z){let X=this.byteLength;if($===void 0||$>X)$=X;let Q=Z.subarray(0,$);if(X>$)this.buffers.push(Z.subarray($));return this.byteLength=X-$,Q}}return new Uint8Array(0)}fill($,...Z){if($)this.buffers.push($),this.byteLength+=$.length;for(let X=0;X<Z.length;X++)if(Z[X]&&Z[X].length)this.buffers.push(Z[X]),this.byteLength+=Z[X].length}peek(){if(this.buffers.length)return this.pack(),this.buffers[0];return new Uint8Array(0)}size(){return this.byteLength}length(){return this.buffers.length}}Np1.DataBuffer=Hp1});var eD=_((wp1)=>{Object.defineProperty(wp1,"__esModule",{value:!0});wp1.LF=wp1.CR=wp1.CRLF=wp1.CR_LF_LEN=wp1.CR_LF=void 0;wp1.setTransportFactory=bd6;wp1.defaultPort=yd6;wp1.getUrlParseFn=gd6;wp1.newTransport=hd6;wp1.getResolveFn=ud6;wp1.protoLen=Fp1;wp1.extractProtocolMessage=cd6;var vd6=dY(),xd6=Rw(),fd6=xm(),iY;function bd6($){iY=$}function yd6(){return iY!==void 0&&iY.defaultPort!==void 0?iY.defaultPort:xd6.DEFAULT_PORT}function gd6(){return iY!==void 0&&iY.urlParseFn?iY.urlParseFn:void 0}function hd6(){if(!iY||typeof iY.factory!=="function")throw Error("transport fn is not set");return iY.factory()}function ud6(){return iY!==void 0&&iY.dnsResolveFn?iY.dnsResolveFn:void 0}wp1.CR_LF=`\r
|
|
1336
1336
|
`;wp1.CR_LF_LEN=wp1.CR_LF.length;wp1.CRLF=fd6.DataBuffer.fromAscii(wp1.CR_LF);wp1.CR=new Uint8Array(wp1.CRLF)[0];wp1.LF=new Uint8Array(wp1.CRLF)[1];function Fp1($){for(let Z=0;Z<$.length;Z++){let X=Z+1;if($.byteLength>X&&$[Z]===wp1.CR&&$[X]===wp1.LF)return X+1}return 0}function cd6($){let Z=Fp1($);if(Z>0){let Q=new Uint8Array($).slice(0,Z);return vd6.TD.decode(Q)}return""}});var Md0=_((Pp1)=>{Object.defineProperty(Pp1,"__esModule",{value:!0});Pp1.ipV4=Ep1;Pp1.isIP=sd6;Pp1.parseIP=zp1;var fm=4,$E=16,U90=48,Dp1=57,Op1=65,rd6=70,Lp1=97,ad6=102,qd0=16777215;function Ep1($,Z,X,Q){let Y=new Uint8Array($E);return[0,0,0,0,0,0,0,0,0,0,255,255].forEach((J,K)=>{Y[K]=J}),Y[12]=$,Y[13]=Z,Y[14]=X,Y[15]=Q,Y}function sd6($){return zp1($)!==void 0}function zp1($){for(let Z=0;Z<$.length;Z++)switch($[Z]){case".":return jp1($);case":":return ed6($)}return}function jp1($){let Z=new Uint8Array(fm);for(let X=0;X<fm;X++){if($.length===0)return;if(X>0){if($[0]!==".")return;$=$.substring(1)}let{n:Q,c:Y,ok:G}=$m6($);if(!G||Q>255)return;$=$.substring(Y),Z[X]=Q}return Ep1(Z[0],Z[1],Z[2],Z[3])}function ed6($){let Z=new Uint8Array($E),X=-1;if($.length>=2&&$[0]===":"&&$[1]===":"){if(X=0,$=$.substring(2),$.length===0)return Z}let Q=0;while(Q<$E){let{n:Y,c:G,ok:J}=Zm6($);if(!J||Y>65535)return;if(G<$.length&&$[G]==="."){if(X<0&&Q!=$E-fm)return;if(Q+fm>$E)return;let K=jp1($);if(K===void 0)return;Z[Q]=K[12],Z[Q+1]=K[13],Z[Q+2]=K[14],Z[Q+3]=K[15],$="",Q+=fm;break}if(Z[Q]=Y>>8,Z[Q+1]=Y,Q+=2,$=$.substring(G),$.length===0)break;if($[0]!==":"||$.length==1)return;if($=$.substring(1),$[0]===":"){if(X>=0)return;if(X=Q,$=$.substring(1),$.length===0)break}}if($.length!==0)return;if(Q<$E){if(X<0)return;let Y=$E-Q;for(let G=Q-1;G>=X;G--)Z[G+Y]=Z[G];for(let G=X+Y-1;G>=X;G--)Z[G]=0}else if(X>=0)return;return Z}function $m6($){let Z=0,X=0;for(Z=0;Z<$.length&&U90<=$.charCodeAt(Z)&&$.charCodeAt(Z)<=Dp1;Z++)if(X=X*10+($.charCodeAt(Z)-U90),X>=qd0)return{n:qd0,c:Z,ok:!1};if(Z===0)return{n:0,c:0,ok:!1};return{n:X,c:Z,ok:!0}}function Zm6($){let Z=0,X=0;for(X=0;X<$.length;X++){if(U90<=$.charCodeAt(X)&&$.charCodeAt(X)<=Dp1)Z*=16,Z+=$.charCodeAt(X)-U90;else if(Lp1<=$.charCodeAt(X)&&$.charCodeAt(X)<=ad6)Z*=16,Z+=$.charCodeAt(X)-Lp1+10;else if(Op1<=$.charCodeAt(X)&&$.charCodeAt(X)<=rd6)Z*=16,Z+=$.charCodeAt(X)-Op1+10;else break;if(Z>=qd0)return{n:0,c:X,ok:!1}}if(X===0)return{n:0,c:X,ok:!1};return{n:Z,c:X,ok:!0}}});var vd0=_((Tp1)=>{Object.defineProperty(Tp1,"__esModule",{value:!0});Tp1.Servers=Tp1.ServerImpl=void 0;Tp1.isIPV4OrHostname=Ap1;Tp1.hostPort=_d0;var kd0=eD(),Vd0=LJ(),Sd0=Md0(),Gm6=Rw(),Jm6=mY();function Ap1($){if($.indexOf("[")!==-1||$.indexOf("::")!==-1)return!1;if($.indexOf(".")!==-1)return!0;if($.split(":").length<=2)return!0;return!1}function Cd0($){return!Ap1($)}function Km6($){let X=$.toUpperCase().indexOf("::FFFF:");if(X!==-1&&$.indexOf(".")!==-1){let Q=$.substring(X+7);return Q=Q.replace("[",""),Q.replace("]","")}return $}function _d0($){if($=$.trim(),$.match(/^(.*:\/\/)(.*)/m))$=$.replace(/^(.*:\/\/)(.*)/gm,"$2");if($=Km6($),Cd0($)&&$.indexOf("[")===-1)$=`[${$}]`;let Z=Cd0($)?$.match(/(]:)(\d+)/):$.match(/(:)(\d+)/),X=Z&&Z.length===3&&Z[1]&&Z[2]?parseInt(Z[2]):Gm6.DEFAULT_PORT,Y=new URL(`${X===80?"https":"http"}://${$}`);Y.port=`${X}`;let G=Y.hostname;if(G.charAt(0)==="[")G=G.substring(1,G.length-1);return{listen:Y.host,hostname:G,port:X}}class Gb{src;listen;hostname;port;didConnect;reconnects;lastConnect;gossiped;tlsName;resolves;constructor($,Z=!1){this.src=$,this.tlsName="";let X=_d0($);this.listen=X.listen,this.hostname=X.hostname,this.port=X.port,this.didConnect=!1,this.reconnects=0,this.lastConnect=0,this.gossiped=Z}toString(){return this.listen}async resolve($){if(!$.fn||$.resolve===!1)return[this];let Z=[];if((0,Sd0.isIP)(this.hostname))return[this];else{let X=await $.fn(this.hostname);if($.debug)console.log(`resolve ${this.hostname} = ${X.join(",")}`);for(let Q of X){let Y=this.port===80?"https":"http",G=new URL(`${Y}://${Cd0(Q)?"["+Q+"]":Q}`);G.port=`${this.port}`;let J=new Gb(G.host,!1);J.tlsName=this.hostname,Z.push(J)}}if($.randomize)(0,Vd0.shuffle)(Z);return this.resolves=Z,Z}}Tp1.ServerImpl=Gb;class F90{firstSelect;servers;currentServer;tlsName;randomize;constructor($={}){this.firstSelect=!0,this.servers=[],this.tlsName="",this.randomize=$.randomize||!1}setServers($){if(!Array.isArray($)||$.length===0)throw Jm6.InvalidArgumentError.format("servers","cannot be empty");let Z=(0,kd0.getUrlParseFn)(),X=new Map;for(let Y of this.servers)X.set(Y.listen,Y);let Q=[];for(let Y of $){Y=Z?Z(Y):Y;let{listen:G}=_d0(Y),J=X.get(G);if(J)J.gossiped=!1,Q.push(J);else Q.push(new Gb(Y))}if(this.randomize)(0,Vd0.shuffle)(Q);if(this.servers=Q,this.currentServer===void 0||!Q.includes(this.currentServer))this.currentServer=Q[0],this.firstSelect=!0}clear(){this.servers.length=0}updateTLSName(){let $=this.getCurrentServer();if(!(0,Sd0.isIP)($.hostname))this.tlsName=$.hostname,this.servers.forEach((Z)=>{if(Z.gossiped)Z.tlsName=this.tlsName})}getCurrentServer(){return this.currentServer}addServer($,Z=!1){let X=(0,kd0.getUrlParseFn)();$=X?X($):$;let Q=new Gb($,Z);if((0,Sd0.isIP)(Q.hostname))Q.tlsName=this.tlsName;this.servers.push(Q)}selectServer(){if(this.firstSelect)return this.firstSelect=!1,this.currentServer;let $=this.servers.shift();if($)this.servers.push($),this.currentServer=$;return $}removeCurrentServer(){this.removeServer(this.currentServer)}removeServer($){if($){let Z=this.servers.indexOf($);this.servers.splice(Z,1)}}snapshot(){return F90.freezeAll(this.servers)}snapshotForHandler(){let $=this.currentServer;if(!$)return this.snapshot();let Z=this.servers.indexOf($);if(Z<=0)return this.snapshot();return F90.freezeAll([$,...this.servers.slice(0,Z),...this.servers.slice(Z+1)])}static freezeAll($){return $.map((Z)=>Object.freeze({hostname:Z.hostname,port:Z.port,listen:Z.listen,src:Z.src,tlsName:Z.tlsName,reconnects:Z.reconnects,lastConnect:Z.lastConnect,gossiped:Z.gossiped,didConnect:Z.didConnect}))}find($){return this.servers.find((Z)=>Z.listen===$.listen)}setCurrent($){this.currentServer=$}length(){return this.servers.length}next(){return this.servers.length?this.servers[0]:void 0}getServers(){return this.servers}update($,Z){let X=[],Q=[],Y=(0,kd0.getUrlParseFn)(),G=new Map;if($.connect_urls&&$.connect_urls.length>0)$.connect_urls.forEach((K)=>{K=Y?Y(K,Z):K;let W=new Gb(K,!0);G.set(K,W)});let J=[];if(this.servers.forEach((K,W)=>{let H=K.listen;if(K.gossiped&&this.currentServer.listen!==H&&G.get(H)===void 0)J.push(W);G.delete(H)}),J.reverse(),J.forEach((K)=>{let W=this.servers.splice(K,1);Q=Q.concat(W[0].listen)}),G.forEach((K,W)=>{this.servers.push(K),X.push(W)}),this.randomize&&X.length>0){let K=this.currentServer,W=this.servers.filter((H)=>H!==K);(0,Vd0.shuffle)(W),this.servers=K?[K,...W]:W}return{added:X,deleted:Q}}}Tp1.Servers=F90});var w90=_((Mp1)=>{Object.defineProperty(Mp1,"__esModule",{value:!0});Mp1.QueuedIteratorImpl=void 0;var xd0=LJ(),Ip1=mY();class qp1{inflight;processed;received;noIterator;iterClosed;done;signal;yields;filtered;pendingFiltered;ctx;_data;err;time;profile;yielding;didBreak;constructor(){this.inflight=0,this.filtered=0,this.pendingFiltered=0,this.processed=0,this.received=0,this.noIterator=!1,this.done=!1,this.signal=(0,xd0.deferred)(),this.yields=[],this.iterClosed=(0,xd0.deferred)(),this.time=0,this.yielding=!1,this.didBreak=!1,this.profile=!1}[Symbol.asyncIterator](){return this.iterate()}push($){if(this.done)return;if(this.didBreak){if(typeof $==="function"){let Z=$;try{Z()}catch(X){}}return}if(typeof $==="function")this.pendingFiltered++;this.yields.push($),this.signal.resolve()}async*iterate(){if(this.noIterator)throw new Ip1.InvalidOperationError("iterator cannot be used when a callback is registered");if(this.yielding)throw new Ip1.InvalidOperationError("iterator is already yielding");this.yielding=!0;try{while(!0){if(this.yields.length===0)await this.signal;if(this.err)throw this.err;let $=this.yields;this.inflight=$.length,this.yields=[];for(let Z=0;Z<$.length;Z++){if(typeof $[Z]==="function"){this.pendingFiltered--;let Q=$[Z];try{Q()}catch(Y){throw Y}if(this.err)throw this.err;continue}this.processed++,this.inflight--;let X=this.profile?Date.now():0;yield $[Z],this.time=this.profile?Date.now()-X:0}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,xd0.deferred)()}}finally{this.didBreak=!0,this.stop()}}stop($){if(this.done)return;this.err=$,this.done=!0,this.signal.resolve(),this.iterClosed.resolve($)}getProcessed(){return this.noIterator?this.received:this.processed}getPending(){return this.yields.length+this.inflight-this.pendingFiltered}getReceived(){return this.received-this.filtered}}Mp1.QueuedIteratorImpl=qp1});var fd0=_((Cp1)=>{Object.defineProperty(Cp1,"__esModule",{value:!0});Cp1.MuxSubscription=void 0;var Um6=Rw(),Vp1=mY();class Sp1{baseInbox;reqs;constructor(){this.reqs=new Map}size(){return this.reqs.size}init($){return this.baseInbox=`${(0,Um6.createInbox)($)}.`,this.baseInbox}add($){if(!isNaN($.received))$.received=0;this.reqs.set($.token,$)}get($){return this.reqs.get($)}cancel($){this.reqs.delete($.token)}getToken($){let Z=$.subject||"";if(Z.indexOf(this.baseInbox)===0)return Z.substring(this.baseInbox.length);return null}all(){return Array.from(this.reqs.values())}handleError($,Z){if($)return this.all().forEach((X)=>{X.resolver(Z,{})}),!0;if(Z.operation==="publish"){let X=this.all().find((Q)=>{return Q.requestSubject===Z.subject});if(X)return X.resolver(Z,{}),!0}return!1}dispatcher(){return($,Z)=>{let X=this.getToken(Z);if(X){let Q=this.get(X);if(Q){if($===null)$=Z?.data?.length===0&&Z.headers?.code===503?new Vp1.NoRespondersError(Q.requestSubject):null;Q.resolver($,Z)}}}}close(){let $=new Vp1.RequestError("connection closed");this.reqs.forEach((Z)=>{Z.resolver($,{})})}}Cp1.MuxSubscription=Sp1});var bd0=_((xp1)=>{Object.defineProperty(xp1,"__esModule",{value:!0});xp1.Heartbeat=void 0;var Fm6=LJ();class vp1{ph;interval;maxOut;timer;pendings;constructor($,Z,X){this.ph=$,this.interval=Z,this.maxOut=X,this.pendings=[]}start(){this.cancel(),this._schedule()}cancel($){if(this.timer)clearTimeout(this.timer),this.timer=void 0;if(this._reset(),$)this.ph.disconnect()}_schedule(){this.timer=setTimeout(()=>{if(this.ph.dispatchStatus({type:"ping",pendingPings:this.pendings.length+1}),this.pendings.length===this.maxOut){this.cancel(!0);return}let $=(0,Fm6.deferred)();this.ph.flush($).then(()=>{this._reset()}).catch(()=>{this.cancel()}),this.pendings.push($),this._schedule()},this.interval)}_reset(){this.pendings=this.pendings.filter(($)=>{return $.resolve(),!1})}}xp1.Heartbeat=vp1});var hd0=_((hp1)=>{Object.defineProperty(hp1,"__esModule",{value:!0});hp1.DenoBuffer=hp1.MAX_SIZE=hp1.AssertionError=void 0;hp1.assert=yp1;hp1.concat=gp1;hp1.append=Bm6;hp1.readAll=Om6;hp1.writeAll=Lm6;var wm6=dY();class yd0 extends Error{constructor($){super($);this.name="AssertionError"}}hp1.AssertionError=yd0;function yp1($,Z="Assertion failed."){if(!$)throw new yd0(Z)}var bp1=32768;hp1.MAX_SIZE=4294967294;function B90($,Z,X=0){let Q=Z.byteLength-X;if($.byteLength>Q)$=$.subarray(0,Q);return Z.set($,X),$.byteLength}function gp1($,Z){if($===void 0&&Z===void 0)return new Uint8Array(0);if($===void 0)return Z;if(Z===void 0)return $;let X=new Uint8Array($.length+Z.length);return X.set($,0),X.set(Z,$.length),X}function Bm6($,Z){return gp1($,Uint8Array.of(Z))}class gd0{_buf;_off;constructor($){if(this._off=0,$==null){this._buf=new Uint8Array(0);return}this._buf=new Uint8Array($)}bytes($={copy:!0}){if($.copy===!1)return this._buf.subarray(this._off);return this._buf.slice(this._off)}empty(){return this._buf.byteLength<=this._off}get length(){return this._buf.byteLength-this._off}get capacity(){return this._buf.buffer.byteLength}truncate($){if($===0){this.reset();return}if($<0||$>this.length)throw Error("bytes.Buffer: truncation out of range");this._reslice(this._off+$)}reset(){this._reslice(0),this._off=0}_tryGrowByReslice($){let Z=this._buf.byteLength;if($<=this.capacity-Z)return this._reslice(Z+$),Z;return-1}_reslice($){yp1($<=this._buf.buffer.byteLength),this._buf=new Uint8Array(this._buf.buffer,0,$)}readByte(){let $=new Uint8Array(1);if(this.read($))return $[0];return null}read($){if(this.empty()){if(this.reset(),$.byteLength===0)return 0;return null}let Z=B90(this._buf.subarray(this._off),$);return this._off+=Z,Z}writeByte($){return this.write(Uint8Array.of($))}writeString($){return this.write(wm6.TE.encode($))}write($){let Z=this._grow($.byteLength);return B90($,this._buf,Z)}_grow($){let Z=this.length;if(Z===0&&this._off!==0)this.reset();let X=this._tryGrowByReslice($);if(X>=0)return X;let Q=this.capacity;if($<=Math.floor(Q/2)-Z)B90(this._buf.subarray(this._off),this._buf);else if(Q+$>hp1.MAX_SIZE)throw Error("The buffer cannot be grown beyond the maximum size.");else{let Y=new Uint8Array(Math.min(2*Q+$,hp1.MAX_SIZE));B90(this._buf.subarray(this._off),Y),this._buf=Y}return this._off=0,this._reslice(Math.min(Z+$,hp1.MAX_SIZE)),Z}grow($){if($<0)throw Error("Buffer._grow: negative count");let Z=this._grow($);this._reslice(Z)}readFrom($){let Z=0,X=new Uint8Array(bp1);while(!0){let Q=this.capacity-this.length<bp1,Y=Q?X:new Uint8Array(this._buf.buffer,this.length),G=$.read(Y);if(G===null)return Z;if(Q)this.write(Y.subarray(0,G));else this._reslice(this.length+G);Z+=G}}}hp1.DenoBuffer=gd0;function Om6($){let Z=new gd0;return Z.readFrom($),Z.bytes()}function Lm6($,Z){let X=0;while(X<Z.length)X+=$.write(Z.subarray(X))}});var ld0=_((mp1)=>{Object.defineProperty(mp1,"__esModule",{value:!0});mp1.cc=mp1.State=mp1.Parser=mp1.Kind=void 0;mp1.describe=Tm6;var ud0=hd0(),cd0=dY();mp1.Kind={OK:0,ERR:1,MSG:2,INFO:3,PING:4,PONG:5};function Tm6($){let Z,X="";switch($.kind){case mp1.Kind.MSG:Z="MSG";break;case mp1.Kind.OK:Z="OK";break;case mp1.Kind.ERR:Z="ERR",X=cd0.TD.decode($.data);break;case mp1.Kind.PING:Z="PING";break;case mp1.Kind.PONG:Z="PONG";break;case mp1.Kind.INFO:Z="INFO",X=cd0.TD.decode($.data)}return`${Z}: ${X}`}function cp1(){let $={};return $.sid=-1,$.hdr=-1,$.size=-1,$}var lp1=48,Rm6=57,Jb=67108864;class dp1{dispatcher;state;as;drop;hdr;ma;argBuf;msgBuf;constructor($){this.dispatcher=$,this.state=mp1.State.OP_START,this.as=0,this.drop=0,this.hdr=0}parse($){let Z;for(Z=0;Z<$.length;Z++){let X=$[Z];switch(this.state){case mp1.State.OP_START:switch(X){case mp1.cc.M:case mp1.cc.m:this.state=mp1.State.OP_M,this.hdr=-1,this.ma=cp1();break;case mp1.cc.H:case mp1.cc.h:this.state=mp1.State.OP_H,this.hdr=0,this.ma=cp1();break;case mp1.cc.P:case mp1.cc.p:this.state=mp1.State.OP_P;break;case mp1.cc.PLUS:this.state=mp1.State.OP_PLUS;break;case mp1.cc.MINUS:this.state=mp1.State.OP_MINUS;break;case mp1.cc.I:case mp1.cc.i:this.state=mp1.State.OP_I;break;default:throw this.fail($.subarray(Z))}break;case mp1.State.OP_H:switch(X){case mp1.cc.M:case mp1.cc.m:this.state=mp1.State.OP_M;break;default:throw this.fail($.subarray(Z))}break;case mp1.State.OP_M:switch(X){case mp1.cc.S:case mp1.cc.s:this.state=mp1.State.OP_MS;break;default:throw this.fail($.subarray(Z))}break;case mp1.State.OP_MS:switch(X){case mp1.cc.G:case mp1.cc.g:this.state=mp1.State.OP_MSG;break;default:throw this.fail($.subarray(Z))}break;case mp1.State.OP_MSG:switch(X){case mp1.cc.SPACE:case mp1.cc.TAB:this.state=mp1.State.OP_MSG_SPC;break;default:throw this.fail($.subarray(Z))}break;case mp1.State.OP_MSG_SPC:switch(X){case mp1.cc.SPACE:case mp1.cc.TAB:continue;default:this.state=mp1.State.MSG_ARG,this.as=Z}break;case mp1.State.MSG_ARG:switch(X){case mp1.cc.CR:this.drop=1;break;case mp1.cc.NL:{let Q=this.argBuf?this.argBuf.bytes():$.subarray(this.as,Z-this.drop);this.processMsgArgs(Q),this.drop=0,this.as=Z+1,this.state=mp1.State.MSG_PAYLOAD,Z=this.as+this.ma.size-1;break}default:if(this.argBuf)this.argBuf.writeByte(X)}break;case mp1.State.MSG_PAYLOAD:if(this.msgBuf)if(this.msgBuf.length>=this.ma.size){let Q=this.msgBuf.bytes({copy:!1});this.dispatcher.push({kind:mp1.Kind.MSG,msg:this.ma,data:Q}),this.argBuf=void 0,this.msgBuf=void 0,this.state=mp1.State.MSG_END}else{let Q=this.ma.size-this.msgBuf.length,Y=$.length-Z;if(Y<Q)Q=Y;if(Q>0)this.msgBuf.write($.subarray(Z,Z+Q)),Z=Z+Q-1;else this.msgBuf.writeByte(X)}else if(Z-this.as>=this.ma.size)this.dispatcher.push({kind:mp1.Kind.MSG,msg:this.ma,data:$.subarray(this.as,Z)}),this.argBuf=void 0,this.msgBuf=void 0,this.state=mp1.State.MSG_END;break;case mp1.State.MSG_END:switch(X){case mp1.cc.NL:this.drop=0,this.as=Z+1,this.state=mp1.State.OP_START;break;default:continue}break;case mp1.State.OP_PLUS:switch(X){case mp1.cc.O:case mp1.cc.o:this.state=mp1.State.OP_PLUS_O;break;default:throw this.fail($.subarray(Z))}break;case mp1.State.OP_PLUS_O:switch(X){case mp1.cc.K:case mp1.cc.k:this.state=mp1.State.OP_PLUS_OK;break;default:throw this.fail($.subarray(Z))}break;case mp1.State.OP_PLUS_OK:switch(X){case mp1.cc.NL:this.dispatcher.push({kind:mp1.Kind.OK}),this.drop=0,this.state=mp1.State.OP_START;break}break;case mp1.State.OP_MINUS:switch(X){case mp1.cc.E:case mp1.cc.e:this.state=mp1.State.OP_MINUS_E;break;default:throw this.fail($.subarray(Z))}break;case mp1.State.OP_MINUS_E:switch(X){case mp1.cc.R:case mp1.cc.r:this.state=mp1.State.OP_MINUS_ER;break;default:throw this.fail($.subarray(Z))}break;case mp1.State.OP_MINUS_ER:switch(X){case mp1.cc.R:case mp1.cc.r:this.state=mp1.State.OP_MINUS_ERR;break;default:throw this.fail($.subarray(Z))}break;case mp1.State.OP_MINUS_ERR:switch(X){case mp1.cc.SPACE:case mp1.cc.TAB:this.state=mp1.State.OP_MINUS_ERR_SPC;break;default:throw this.fail($.subarray(Z))}break;case mp1.State.OP_MINUS_ERR_SPC:switch(X){case mp1.cc.SPACE:case mp1.cc.TAB:continue;default:this.state=mp1.State.MINUS_ERR_ARG,this.as=Z}break;case mp1.State.MINUS_ERR_ARG:switch(X){case mp1.cc.CR:this.drop=1;break;case mp1.cc.NL:{let Q;if(this.argBuf)Q=this.argBuf.bytes(),this.argBuf=void 0;else Q=$.subarray(this.as,Z-this.drop);this.dispatcher.push({kind:mp1.Kind.ERR,data:Q}),this.drop=0,this.as=Z+1,this.state=mp1.State.OP_START;break}default:if(this.argBuf)this.argBuf.write(Uint8Array.of(X))}break;case mp1.State.OP_P:switch(X){case mp1.cc.I:case mp1.cc.i:this.state=mp1.State.OP_PI;break;case mp1.cc.O:case mp1.cc.o:this.state=mp1.State.OP_PO;break;default:throw this.fail($.subarray(Z))}break;case mp1.State.OP_PO:switch(X){case mp1.cc.N:case mp1.cc.n:this.state=mp1.State.OP_PON;break;default:throw this.fail($.subarray(Z))}break;case mp1.State.OP_PON:switch(X){case mp1.cc.G:case mp1.cc.g:this.state=mp1.State.OP_PONG;break;default:throw this.fail($.subarray(Z))}break;case mp1.State.OP_PONG:switch(X){case mp1.cc.NL:this.dispatcher.push({kind:mp1.Kind.PONG}),this.drop=0,this.state=mp1.State.OP_START;break}break;case mp1.State.OP_PI:switch(X){case mp1.cc.N:case mp1.cc.n:this.state=mp1.State.OP_PIN;break;default:throw this.fail($.subarray(Z))}break;case mp1.State.OP_PIN:switch(X){case mp1.cc.G:case mp1.cc.g:this.state=mp1.State.OP_PING;break;default:throw this.fail($.subarray(Z))}break;case mp1.State.OP_PING:switch(X){case mp1.cc.NL:this.dispatcher.push({kind:mp1.Kind.PING}),this.drop=0,this.state=mp1.State.OP_START;break}break;case mp1.State.OP_I:switch(X){case mp1.cc.N:case mp1.cc.n:this.state=mp1.State.OP_IN;break;default:throw this.fail($.subarray(Z))}break;case mp1.State.OP_IN:switch(X){case mp1.cc.F:case mp1.cc.f:this.state=mp1.State.OP_INF;break;default:throw this.fail($.subarray(Z))}break;case mp1.State.OP_INF:switch(X){case mp1.cc.O:case mp1.cc.o:this.state=mp1.State.OP_INFO;break;default:throw this.fail($.subarray(Z))}break;case mp1.State.OP_INFO:switch(X){case mp1.cc.SPACE:case mp1.cc.TAB:this.state=mp1.State.OP_INFO_SPC;break;default:throw this.fail($.subarray(Z))}break;case mp1.State.OP_INFO_SPC:switch(X){case mp1.cc.SPACE:case mp1.cc.TAB:continue;default:this.state=mp1.State.INFO_ARG,this.as=Z}break;case mp1.State.INFO_ARG:switch(X){case mp1.cc.CR:this.drop=1;break;case mp1.cc.NL:{let Q;if(this.argBuf)Q=this.argBuf.bytes(),this.argBuf=void 0;else Q=$.subarray(this.as,Z-this.drop);this.dispatcher.push({kind:mp1.Kind.INFO,data:Q}),this.drop=0,this.as=Z+1,this.state=mp1.State.OP_START;break}default:if(this.argBuf)this.argBuf.writeByte(X)}break;default:throw this.fail($.subarray(Z))}}if((this.state===mp1.State.MSG_ARG||this.state===mp1.State.MINUS_ERR_ARG||this.state===mp1.State.INFO_ARG)&&!this.argBuf)this.argBuf=new ud0.DenoBuffer($.subarray(this.as,Z-this.drop));if(this.state===mp1.State.MSG_PAYLOAD&&!this.msgBuf){if(!this.argBuf)this.cloneMsgArg();this.msgBuf=new ud0.DenoBuffer($.subarray(this.as))}}cloneMsgArg(){let $=this.ma.subject.length,Z=this.ma.reply?this.ma.reply.length:0,X=new Uint8Array($+Z);if(X.set(this.ma.subject),this.ma.reply)X.set(this.ma.reply,$);if(this.argBuf=new ud0.DenoBuffer(X),this.ma.subject=X.subarray(0,$),this.ma.reply)this.ma.reply=X.subarray($)}processMsgArgs($){if(this.hdr>=0)return this.processHeaderMsgArgs($);let Z=[],X=-1;for(let Q=0;Q<$.length;Q++)switch($[Q]){case mp1.cc.SPACE:case mp1.cc.TAB:case mp1.cc.CR:case mp1.cc.NL:if(X>=0)Z.push($.subarray(X,Q)),X=-1;break;default:if(X<0)X=Q}if(X>=0)Z.push($.subarray(X));switch(Z.length){case 3:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=void 0,this.ma.size=this.protoParseInt(Z[2],Jb);break;case 4:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=Z[2],this.ma.size=this.protoParseInt(Z[3],Jb);break;default:throw this.fail($,"processMsgArgs Parse Error")}if(this.ma.sid<0)throw this.fail($,"processMsgArgs Bad or Missing Sid Error");if(this.ma.size<0)throw this.fail($,"processMsgArgs Bad or Missing Size Error")}fail($,Z=""){if(!Z)Z=`parse error [${this.state}]`;else Z=`${Z} [${this.state}]`;return Error(`${Z}: ${cd0.TD.decode($)}`)}processHeaderMsgArgs($){let Z=[],X=-1;for(let Q=0;Q<$.length;Q++)switch($[Q]){case mp1.cc.SPACE:case mp1.cc.TAB:case mp1.cc.CR:case mp1.cc.NL:if(X>=0)Z.push($.subarray(X,Q)),X=-1;break;default:if(X<0)X=Q}if(X>=0)Z.push($.subarray(X));switch(Z.length){case 4:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=void 0,this.ma.hdr=this.protoParseInt(Z[2],Jb),this.ma.size=this.protoParseInt(Z[3],Jb);break;case 5:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=Z[2],this.ma.hdr=this.protoParseInt(Z[3],Jb),this.ma.size=this.protoParseInt(Z[4],Jb);break;default:throw this.fail($,"processHeaderMsgArgs Parse Error")}if(this.ma.sid<0)throw this.fail($,"processHeaderMsgArgs Bad or Missing Sid Error");if(this.ma.hdr<0||this.ma.hdr>this.ma.size)throw this.fail($,"processHeaderMsgArgs Bad or Missing Header Size Error");if(this.ma.size<0)throw this.fail($,"processHeaderMsgArgs Bad or Missing Size Error")}protoParseInt($,Z){if($.length===0||$.length>15)return-1;let X=0;for(let Q=0;Q<$.length;Q++){if($[Q]<lp1||$[Q]>Rm6)return-1;X=X*10+($[Q]-lp1)}return Z!==void 0&&X>Z?-1:X}}mp1.Parser=dp1;mp1.State={OP_START:0,OP_PLUS:1,OP_PLUS_O:2,OP_PLUS_OK:3,OP_MINUS:4,OP_MINUS_E:5,OP_MINUS_ER:6,OP_MINUS_ERR:7,OP_MINUS_ERR_SPC:8,MINUS_ERR_ARG:9,OP_M:10,OP_MS:11,OP_MSG:12,OP_MSG_SPC:13,MSG_ARG:14,MSG_PAYLOAD:15,MSG_END:16,OP_H:17,OP_P:18,OP_PI:19,OP_PIN:20,OP_PING:21,OP_PO:22,OP_PON:23,OP_PONG:24,OP_I:25,OP_IN:26,OP_INF:27,OP_INFO:28,OP_INFO_SPC:29,INFO_ARG:30};mp1.cc={CR:13,E:69,e:101,F:70,f:102,G:71,g:103,H:72,h:104,I:73,i:105,K:75,k:107,M:77,m:109,MINUS:45,N:78,n:110,NL:10,O:79,o:111,P:80,p:112,PLUS:43,R:82,r:114,S:83,s:115,SPACE:32,TAB:9}});var D90=_((np1)=>{Object.defineProperty(np1,"__esModule",{value:!0});np1.MsgHdrsImpl=void 0;np1.canonicalMIMEHeaderKey=md0;np1.headers=Mm6;var ip1=dY(),DJ=Rw(),L90=mY();function md0($){let N=!0,U=Array($.length);for(let F=0;F<$.length;F++){let w=$.charCodeAt(F);if(w===58||w<33||w>126)throw L90.InvalidArgumentError.format("header",`'${$[F]}' is not a valid character in a header name`);if(N&&97<=w&&w<=122)w-=32;else if(!N&&65<=w&&w<=90)w+=32;U[F]=w,N=w==45}return String.fromCharCode(...U)}function Mm6($=0,Z=""){if($===0&&Z!=="")throw L90.InvalidArgumentError.format("code","is required");else if($>0&&Z==="")throw L90.InvalidArgumentError.format("description","is required");return new Kb($,Z)}var dd0="NATS/1.0";class Kb{_code;headers;_description;constructor($=0,Z=""){this._code=$,this._description=Z,this.headers=new Map}[Symbol.iterator](){return this.headers.entries()}size(){return this.headers.size}equals($){if($&&this.headers.size===$.headers.size&&this._code===$._code){for(let[Z,X]of this.headers){let Q=$.values(Z);if(X.length!==Q.length)return!1;let Y=[...X].sort(),G=[...Q].sort();for(let J=0;J<Y.length;J++)if(Y[J]!==G[J])return!1}return!0}return!1}static decode($){let Z=new Kb,Q=ip1.TD.decode($).split(`\r
|
|
1337
1337
|
`),Y=Q[0];if(Y!==dd0){let G=Y.replace(dd0,"").trim();if(G.length>0){if(Z._code=parseInt(G,10),isNaN(Z._code))Z._code=0;let J=Z._code.toString();G=G.replace(J,""),Z._description=G.trim()}}if(Q.length>=1)Q.slice(1).map((G)=>{if(G){let J=G.indexOf(":");if(J>-1){let K=G.slice(0,J),W=G.slice(J+1).trim();Z.append(K,W)}}});return Z}toString(){if(this.headers.size===0&&this._code===0)return"";let $=dd0;if(this._code>0&&this._description!=="")$+=` ${this._code} ${this._description}`;for(let[Z,X]of this.headers)for(let Q=0;Q<X.length;Q++)$=`${$}\r
|
|
1338
1338
|
${Z}: ${X[Q]}`;return`${$}\r
|
|
@@ -2685,7 +2685,7 @@ Guidelines:
|
|
|
2685
2685
|
Guidelines:
|
|
2686
2686
|
- Include file paths, function names, and specific code locations discovered during exploration.
|
|
2687
2687
|
- List concrete implementation steps in order.
|
|
2688
|
-
- Note any risks, dependencies, or trade-offs.`,Kj0=l8({description:Lh4,inputSchema:K0(Bh4),outputSchema:K0(Oh4)})});function R7($){return`studio-storage://${$}`}function Wr($){if($.startsWith("studio-storage://"))return $.slice(17);if($.startsWith("mesh-storage://"))return $.slice(15);return null}function a41(){return/(?:studio|mesh)-storage:\/\/([^\s"'<>[\]]+)/g}var S_=()=>{};var C_="https://chrome.browserless.io",__=32000;import{z as zH}from"zod";function zh4($,Z=!1){return{...$&&Z?{clip:{x:0,y:0,width:dq8.width,height:Wj0}}:{fullPage:$},type:"jpeg",quality:Eh4}}function cq8($){if($[0]!==255||$[1]!==216)return null;let Z=new DataView($.buffer,$.byteOffset,$.byteLength),X=2;while(X+9<$.length){if($[X]!==255)return null;let Q=$[X+1];if(Q>=192&&Q<=207&&![196,200,204].includes(Q))return Z.getUint16(X+5);X+=2+Z.getUint16(X+2)}return null}function Hj0($){if($>uq8){let Z=($/1048576).toFixed(1),X=uq8/1048576;throw Error(`Reference image too large: ${Z} MB (max ${X} MB). Use a smaller image.`)}}function Ah4($,Z){let X;try{X=new URL($)}catch{throw Error("Invalid image URL")}if(X.protocol!=="https:"&&!(Z&&X.protocol==="http:"))throw Error("Image URL must use HTTPS");for(let Q of Ph4)if(Q.test(X.hostname))throw Error("Image URL must not point to a private network address")}async function lq8($,Z){if(!Z?.getBytes)throw Error("Object storage read is not available");if(Z.head){let{size:Q}=await Z.head($);Hj0(Q)}let X=await Z.getBytes($);return Hj0(X.byteLength),X}async function Th4($,Z){let X=Wr($);if(X!==null)return lq8(X,Z.objectStorage);let Q=$.match(Dh4);if(Q)return lq8(Q[1],Z.objectStorage);if($.startsWith("data:")){let J=$.match(/^data:[^;]+;base64,(.+)$/s);if(!J)throw Error("Invalid data: URI");let K=Buffer.from(J[1],"base64");return Hj0(K.byteLength),K}Ah4($,Z.allowHttpExternalUrls===!0);let Y=await fetch($,{signal:Z.abortSignal});if(!Y.ok)throw Error(`Failed to fetch image from ${$}: ${Y.status}`);let G=new Uint8Array(await Y.arrayBuffer());return Hj0(G.byteLength),G}async function s41($,Z){let{provider:X,imageModelInfo:Q,objectStorage:Y}=Z,G=X.aiSdk.imageModel(Q.id),J=$.referenceImages&&$.referenceImages.length>0,K=J?await Promise.all($.referenceImages.map((w)=>{let B=w.uri??w.url;if(!B)throw Error("Reference image missing uri");return Th4(B,Z)})):[],W=J?{text:$.prompt,images:K}:$.prompt,H=await yG0({model:G,prompt:W,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 N=$.n??1,U=H.images.length>N?H.images.slice(-N):H.images;return{success:!0,images:await Promise.all(U.map(async(w)=>{let B=w.mediaType??"image/png",L=B.split("/")[1]??"png",D=`generated-images/${crypto.randomUUID()}.${L}`,E=Uint8Array.from(atob(w.base64),(z)=>z.charCodeAt(0));return await Y.put(D,E,{contentType:B}),{uri:R7(D),mediaType:B}})),prompt:$.prompt,model:Q.id,usage:{inputTokens:H.usage.inputTokens??0,outputTokens:H.usage.outputTokens??0},usedReferenceImages:J?$.referenceImages.length:0}}function Nj0($,Z){return l8({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:K0(Hr),execute:async(X,Q)=>{let Y=performance.now();try{return await s41(X,Z)}finally{$.write({type:"data-tool-metadata",id:Q.toolCallId,data:{latencyMs:performance.now()-Y}})}}})}function Uj0($,Z){let{objectStorage:X,toolOutputMap:Q,pendingImages:Y}=Z;return l8({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:K0(jh4),execute:async(G,J)=>{let K=performance.now();try{let W=Z.browserlessToken??process.env.BROWSERLESS_TOKEN;if(!W)return{success:!1,error:"BROWSERLESS_TOKEN is not configured."};let H=G.fullPage??!1,N=async(z)=>await fetch(`${C_}/screenshot?token=${encodeURIComponent(W)}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({url:G.url,options:zh4(H,z),viewport:dq8})}),U=await N(!1);if(!U.ok){let z=await U.text().catch(()=>"Unknown error");return{success:!1,error:`Browserless screenshot failed (${U.status}): ${z}`,url:G.url}}let F=new Uint8Array(await U.arrayBuffer()),w=cq8(F);if(H&&w!==null&&w>Wj0){U=await N(!0);let z=U.ok?new Uint8Array(await U.arrayBuffer()):null;if(!z||(cq8(z)??0)>Wj0)return{success:!1,error:`Full-page screenshot of ${G.url} is ${w}px tall, over the ${Wj0}px limit, and the clipped retry did not come back within it. Retry with fullPage: false.`,url:G.url};F=z}let B="image/jpeg",L=`screenshots/${crypto.randomUUID()}.jpg`,D,E=null;if(X)try{await X.put(L,F,{contentType:B}),D=R7(L),E=await X.presignedGetUrl?.(L,600)??null}catch(z){console.error("[take-screenshot] Failed to upload, using data: URI fallback",z),D=`data:${B};base64,${Buffer.from(F).toString("base64")}`}else D=`data:${B};base64,${Buffer.from(F).toString("base64")}`;if(!E)E=D.startsWith("data:")?D:`data:${B};base64,${Buffer.from(F).toString("base64")}`;return Y.push({url:E,mediaType:B,pageUrl:G.url}),Q.set(J.toolCallId,`Screenshot of ${G.url} stored at ${D}`),{success:!0,image:{uri:D,mediaType:B},url:G.url}}finally{$.write({type:"data-tool-metadata",id:J.toolCallId,data:{latencyMs:performance.now()-K}})}},toModelOutput({output:G}){if(!G.success)return{type:"text",value:G.error??"Screenshot failed"};return{type:"text",value:`Screenshot of ${G.url} captured successfully. The image is attached below.`}}})}var Dh4,uq8=20971520,dq8,Eh4=80,Wj0=7000,Hr,jh4,Ph4;var Rh=O(()=>{h4();h4();S_();Dh4=/\/api\/[^/]+\/files\/([^?#]+)/,dq8={width:1280,height:800};Hr=zH.object({prompt:zH.string().max(1e4).describe("Detailed description of the image to generate. Be specific about style, composition, colors, and subject matter."),referenceImages:zH.array(zH.object({uri:zH.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:zH.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:zH.number().int().min(1).max(4).optional().describe("Number of images to generate. Defaults to 1.")}),jh4=zH.object({url:zH.string().url().describe("The URL of the web page to screenshot."),fullPage:zH.boolean().optional().describe("When true, captures the full scrollable page instead of just the viewport. Defaults to false.")}),Ph4=[/^127\./,/^10\./,/^172\.(1[6-9]|2\d|3[01])\./,/^192\.168\./,/^169\.254\./,/^0\./,/^\[::1\]$/,/^\[fd/,/^\[fe80:/,/^\[::ffff:/i,/^localhost$/i]});function mq8($,Z){return Nj0($,{provider:Z.provider,imageModelInfo:Z.imageModelInfo,objectStorage:Z.objectStorage,allowHttpExternalUrls:Z.allowHttpExternalUrls})}var iq8=O(()=>{Rh()});import{z as Rh4}from"zod";function nq8($){return{background:!0,status:"started",jobId:$,note:Ih4}}function Mh4($){return!!$&&typeof $==="object"&&$.status==="started"&&$.background===!0}function Nr($,Z,X,Q,Y){if(!Q)return X;let G=X.execute,J=K0(Z.extend(qh4)),W=G.constructor.name==="AsyncGeneratorFunction"?async function*(N,U){let{background:F,...w}=N,B=async function*(){let{jobId:j}=await Q.start({toolName:$,input:w,toolCallId:U.toolCallId});yield nq8(j)};if(F){yield*B();return}let L=Y?.(U.toolCallId);if(!L){yield*G(w,U);return}let D=new AbortController,E=()=>D.abort();U.abortSignal?.addEventListener("abort",E,{once:!0});let z=G(w,{...U,abortSignal:D.signal})[Symbol.asyncIterator]();try{let j=z.next(),A=j.then((P)=>({kind:"next",r:P}));while(!0){let P=await Promise.race([A,L.flipped.then(()=>({kind:"flip"}))]);if(P.kind==="flip"){D.abort(),A.catch(()=>{}),(async()=>{try{await j}catch{}try{await z.return?.(void 0)}catch{}})(),yield*B();return}if(P.r.done)return;yield P.r.value,j=z.next(),A=j.then((q)=>({kind:"next",r:q}))}}finally{U.abortSignal?.removeEventListener("abort",E),L.dispose()}}:async(N,U)=>{let{background:F,...w}=N;if(F){let{jobId:B}=await Q.start({toolName:$,input:w,toolCallId:U.toolCallId});return nq8(B)}return G(w,U)};return{...X,inputSchema:J,execute:W,toModelOutput:(N)=>{if(Mh4(N.output))return{type:"text",value:N.output.note};if(X.toModelOutput)return X.toModelOutput(N);return{type:"text",value:JSON.stringify(N.output)}}}}var Ih4,qh4;var e41=O(()=>{h4();Ih4="Running in the background. The result will appear in the conversation as "+"soon as it's ready \u2014 keep helping the user in the meantime, and do not "+"wait for it or call this tool again for the same request.",qh4={background:Rh4.boolean().optional().describe("Run this in the BACKGROUND and return immediately instead of blocking this turn. Set true for long, fire-and-forget work whose result you do "+"NOT need in this same reply \u2014 it's delivered to the conversation when "+"it finishes and you'll be nudged to use it then. Leave false/omit when you need the result now to act on it this turn.")}});function pq8($,Z){let X=Ur.get($);if(!X)X=new Map,Ur.set($,X);let Q,Y=new Promise((G)=>{Q=G});return X.set(Z,Q),{flipped:Y,dispose(){let G=Ur.get($);if(!G)return;if(G.delete(Z),G.size===0)Ur.delete($)}}}function $$1($,Z){Ur.get($)?.get(Z)?.()}var Ur;var Z$1=O(()=>{Ur=new Map});import{z as tq8}from"zod";function X$1($,Z){let{researchJob:X,toolOutputMap:Q,taskId:Y}=Z;return l8({description:Z.description??Vh4,inputSchema:K0(kh4),execute:async(G,J)=>{let K=performance.now(),W=(H)=>{$.write({type:"data-web-search",id:J.toolCallId,data:{text:H}})};try{let H=X({query:G.query,taskId:Y,toolCallId:J.toolCallId,abortSignal:J.abortSignal}),N=await H.next();while(!N.done)W(N.value.progress),N=await H.next();let U=N.value;return Q.set(J.toolCallId,U.text),Sh4({query:G.query,text:U.text,citations:U.citations,usage:U.usage,resultUri:U.resultUri??null,preview:U.preview??""})}finally{let H=performance.now()-K;$.write({type:"data-tool-metadata",id:J.toolCallId,data:{latencyMs:H}})}}})}function Sh4($){if($.resultUri)return{success:!0,uri:$.resultUri,preview:$.preview,query:$.query,usage:$.usage,...$.citations.length>0&&{citations:$.citations}};return{success:!0,content:$.text,query:$.query,usage:$.usage,...$.citations.length>0&&{citations:$.citations}}}var kh4,Vh4="Search the web for up-to-date information and synthesize a concise answer. Use this for quick lookups, fact-checking, current events, or when the answer requires knowledge beyond your training data and a fast response is enough. For exhaustive, multi-source reports prefer `deep_research` when available.";var oq8=O(()=>{h4();kh4=tq8.object({query:tq8.string().max(1e4).describe("The research query. Be specific about what information you need. The research model will search the web and synthesize a comprehensive answer.")})});var rq8=O(()=>{E41()});var aq8=O(()=>{rq8()});function FG($,Z,X){let Q=Object.entries(X).filter(([,G])=>G!==void 0&&G!==null).map(([G,J])=>`${G}=${typeof J==="string"?J:JSON.stringify(J)}`).join(" "),Y=`[web-search] ${Z} ${Q}`.trim();if($==="error")console.error(Y);else if($==="warn")console.warn(Y);else console.log(Y)}function Q$1($){let{provider:Z,modelInfo:X,ctx:Q,mode:Y,toolName:G}=$,J=X.id;return async function*(W){let H=Z.asyncResearch;if(Y==="deep"&&H?.canHandle(J)===!0&&H)return yield*Ch4({params:W,asyncResearch:H,providerId:Z.info.id,modelId:J,toolName:G,ctx:Q});return yield*vh4({params:W,provider:Z,modelId:J,ctx:Q})}}async function*Ch4({params:$,asyncResearch:Z,providerId:X,modelId:Q,toolName:Y,ctx:G}){let{toolCallId:J,taskId:K}=$,W={tc:J,thread:K,provider:X,model:Q},H=await G.storage.asyncResearchJobs.upsertPending({threadId:K,toolCallId:J,provider:X,modelId:Q,query:$.query});if(H.status==="completed"&&H.resultPreview!=null)return FG("info","replay-completed",{...W,job:H.id}),_h4(H);if(H.status==="failed"||H.status==="cancelled")throw FG("warn",`replay-${H.status}`,{...W,job:H.id,err:H.lastError}),Error(H.lastError??`previous research ${H.status}`);if(!H.interactionId){FG("info","submit",{...W,job:H.id});let w;try{w=(await Z.start({modelId:Q,query:$.query,abortSignal:$.abortSignal})).jobId}catch(B){let L=B.message??String(B);throw await G.storage.asyncResearchJobs.markFailed(J,L),FG("error","submit-failed",{...W,job:H.id,err:L}),B}await G.storage.asyncResearchJobs.markPolling(J,w,{threadId:K,toolName:Y,query:$.query}),H={...H,interactionId:w,status:"polling"},FG("info","polling-started",{...W,job:H.id,interaction:w})}else FG("info","polling-resumed",{...W,job:H.id,interaction:H.interactionId,attempts:H.attempts});let N=0,U=50,F=[];try{let w=!1,B,L=Z.resume({jobId:H.interactionId,abortSignal:$.abortSignal,onProgress:(P)=>{let q=Date.now();if(q-N>=U)N=q,F.push(P);G.storage.asyncResearchJobs.recordPoll(J).catch((k)=>{FG("warn","record-poll-failed",{...W,job:H.id,err:k.message})})}}).catch((P)=>{B=P;return}).finally(()=>{w=!0});while(!w){while(F.length>0)yield{progress:F.shift()};await Promise.race([L,_8(U)])}while(F.length>0)yield{progress:F.shift()};if(await L,B!==void 0)throw B;let D=await L;if(yield{progress:D.text},D.text.trim()==="")throw FG("error","empty-result",{...W,job:H.id,tokens:D.usage.outputTokens}),new M_("research completed with empty result");let E={inputTokens:D.usage.inputTokens,outputTokens:D.usage.outputTokens},z=D.usage.outputTokens>__&&G.objectStorage!=null,j=null;if(z&&G.objectStorage){let P=`web-search/${crypto.randomUUID()}.md`;try{await G.objectStorage.put(P,new TextEncoder().encode(D.text),{contentType:"text/markdown"}),j=R7(P)}catch(q){FG("warn","blob-upload-failed",{...W,job:H.id,err:q.message})}}let A=wQ(D.text);return await G.storage.asyncResearchJobs.markCompleted(J,{inputTokens:E.inputTokens,outputTokens:E.outputTokens,citations:D.citations,resultUri:j,resultPreview:A,resultContent:j?null:D.text}),FG("info","completed",{...W,job:H.id,tokens:E.outputTokens,citations:D.citations.length,uri:j??"inline"}),{text:D.text,citations:D.citations,usage:E,resultUri:j,preview:j?A:void 0}}catch(w){if($.abortSignal?.aborted)throw await G.storage.asyncResearchJobs.markCancelled(J,"aborted"),FG("info","cancelled",{...W,job:H.id}),w;let B=w.message??String(w);if(w instanceof M_||w instanceof Error&&w.name==="AsyncResearchTerminalError")throw await G.storage.asyncResearchJobs.markFailed(J,B),FG("error","terminal-failure",{...W,job:H.id,err:B}),w;throw await G.storage.asyncResearchJobs.recordPoll(J,B).catch(()=>{}),FG("warn","transient-error",{...W,job:H.id,err:B}),w}}function _h4($){if($.resultUri)return{text:"",citations:[],usage:{inputTokens:0,outputTokens:0},resultUri:$.resultUri,preview:$.resultPreview??""};return{text:$.resultContent??$.resultPreview??"",citations:[],usage:{inputTokens:0,outputTokens:0},resultUri:null}}async function*vh4({params:$,provider:Z,modelId:X,ctx:Q}){let Y=Z.aiSdk.languageModel(X),G=WO({model:Y,prompt:$.query,abortSignal:$.abortSignal}),J="",K=0,W=50;for await(let D of G.textStream){J+=D;let E=Date.now();if(E-K>=W)K=E,yield{progress:J}}yield{progress:J};let[H,N,U]=await Promise.all([G.usage,G.sources,G.providerMetadata]),F=H.inputTokens??0,w=H.outputTokens??0;m70(U);let B=[];if(N&&Array.isArray(N)){for(let D of N)if(D&&typeof D==="object"&&"sourceType"in D&&D.sourceType==="url"&&"url"in D&&typeof D.url==="string")B.push({url:D.url,title:"title"in D&&typeof D.title==="string"?D.title:void 0})}let L={inputTokens:F,outputTokens:w};if(w>__&&Q.objectStorage){let D=`web-search/${crypto.randomUUID()}.md`,E=new TextEncoder().encode(J);try{return await Q.objectStorage.put(D,E,{contentType:"text/markdown"}),{text:J,citations:B,usage:L,resultUri:R7(D),preview:wQ(J)}}catch(z){console.error("[web-search] Failed to upload to storage, returning inline",z)}}return{text:J,citations:B,usage:L,resultUri:null}}var sq8=O(()=>{h4();F$();aq8();q6();S_();cU()});function eq8($,Z){return Uj0($,{objectStorage:Z.objectStorage,toolOutputMap:Z.toolOutputMap,pendingImages:Z.pendingImages})}var $M8=O(()=>{Rh()});import{z as ZM8}from"zod";function QM8($,Z){let{browserless:X,objectStorage:Q,toolOutputMap:Y}=Z;return l8({description:"Scrape the rendered HTML content of a web page. Use this when you need to read the content, structure, or data from a website. Returns the full HTML of the page after JavaScript has been executed. "+"For very large pages the result may be truncated \u2014 use read_tool_output to access the full content.",inputSchema:K0(fh4),execute:async(G,J)=>{let K=performance.now();try{let W;try{W=await fetch(`${X.baseUrl}/content?token=${encodeURIComponent(X.token)}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({url:G.url}),signal:AbortSignal.timeout(XM8)})}catch(U){return{success:!1,error:U instanceof Error&&U.name==="TimeoutError"?`Browserless content fetch timed out after ${XM8}ms`:`Browserless content fetch failed: ${U instanceof Error?U.message:String(U)}`,url:G.url}}if(!W.ok){let U=await W.text().catch(()=>"Unknown error");return{success:!1,error:`Browserless content fetch failed (${W.status}): ${U.slice(0,xh4)}`,url:G.url}}let H=await W.text();Y.set(J.toolCallId,H);let N=jX(H);if(N>__){let U=`scraped-pages/${crypto.randomUUID()}.html`,F=new TextEncoder().encode(H);try{await Q.put(U,F,{contentType:"text/html"});let w=wQ(H);return{success:!0,uri:R7(U),preview:w,url:G.url,tokenCount:N}}catch(w){console.error("[scrape-url] Failed to upload to storage, returning inline",w)}}return{success:!0,content:H,url:G.url,tokenCount:N}}finally{let W=performance.now()-K;$.write({type:"data-tool-metadata",id:J.toolCallId,data:{latencyMs:W}})}}})}var XM8=45000,xh4=500,fh4;var YM8=O(()=>{h4();cU();S_();fh4=ZM8.object({url:ZM8.string().url().describe("The URL of the web page to scrape.")})});import{z as Fj0}from"zod";function yh4($,Z){let X=Z.waitUntil??"networkidle2",Q=Z.evaluate?JSON.stringify(Z.evaluate):"null";return`
|
|
2688
|
+
- Note any risks, dependencies, or trade-offs.`,Kj0=l8({description:Lh4,inputSchema:K0(Bh4),outputSchema:K0(Oh4)})});function R7($){return`studio-storage://${$}`}function Wr($){if($.startsWith("studio-storage://"))return $.slice(17);if($.startsWith("mesh-storage://"))return $.slice(15);return null}function a41(){return/(?:studio|mesh)-storage:\/\/([^\s"'<>[\]]+)/g}var S_=()=>{};var C_="https://chrome.browserless.io",__=32000;import{z as zH}from"zod";function zh4($,Z=!1){return{...$&&Z?{clip:{x:0,y:0,width:dq8.width,height:Wj0}}:{fullPage:$},type:"jpeg",quality:Eh4}}function cq8($){if($[0]!==255||$[1]!==216)return null;let Z=new DataView($.buffer,$.byteOffset,$.byteLength),X=2;while(X+9<$.length){if($[X]!==255)return null;let Q=$[X+1];if(Q>=192&&Q<=207&&![196,200,204].includes(Q))return Z.getUint16(X+5);X+=2+Z.getUint16(X+2)}return null}function Hj0($){if($>uq8){let Z=($/1048576).toFixed(1),X=uq8/1048576;throw Error(`Reference image too large: ${Z} MB (max ${X} MB). Use a smaller image.`)}}function Ah4($,Z){let X;try{X=new URL($)}catch{throw Error("Invalid image URL")}if(X.protocol!=="https:"&&!(Z&&X.protocol==="http:"))throw Error("Image URL must use HTTPS");for(let Q of Ph4)if(Q.test(X.hostname))throw Error("Image URL must not point to a private network address")}async function lq8($,Z){if(!Z?.getBytes)throw Error("Object storage read is not available");if(Z.head){let{size:Q}=await Z.head($);Hj0(Q)}let X=await Z.getBytes($);return Hj0(X.byteLength),X}async function Th4($,Z){let X=Wr($);if(X!==null)return lq8(X,Z.objectStorage);let Q=$.match(Dh4);if(Q)return lq8(Q[1],Z.objectStorage);if($.startsWith("data:")){let J=$.match(/^data:[^;]+;base64,(.+)$/s);if(!J)throw Error("Invalid data: URI");let K=Buffer.from(J[1],"base64");return Hj0(K.byteLength),K}Ah4($,Z.allowHttpExternalUrls===!0);let Y=await fetch($,{signal:Z.abortSignal});if(!Y.ok)throw Error(`Failed to fetch image from ${$}: ${Y.status}`);let G=new Uint8Array(await Y.arrayBuffer());return Hj0(G.byteLength),G}async function s41($,Z){let{provider:X,imageModelInfo:Q,objectStorage:Y}=Z,G=X.aiSdk.imageModel(Q.id),J=$.referenceImages&&$.referenceImages.length>0,K=J?await Promise.all($.referenceImages.map((w)=>{let B=w.uri??w.url;if(!B)throw Error("Reference image missing uri");return Th4(B,Z)})):[],W=J?{text:$.prompt,images:K}:$.prompt,H=await yG0({model:G,prompt:W,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 N=$.n??1,U=H.images.length>N?H.images.slice(-N):H.images;return{success:!0,images:await Promise.all(U.map(async(w)=>{let B=w.mediaType??"image/png",L=B.split("/")[1]??"png",D=`generated-images/${crypto.randomUUID()}.${L}`,E=Uint8Array.from(atob(w.base64),(z)=>z.charCodeAt(0));return await Y.put(D,E,{contentType:B}),{uri:R7(D),mediaType:B}})),prompt:$.prompt,model:Q.id,usage:{inputTokens:H.usage.inputTokens??0,outputTokens:H.usage.outputTokens??0},usedReferenceImages:J?$.referenceImages.length:0}}function Nj0($,Z){return l8({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:K0(Hr),execute:async(X,Q)=>{let Y=performance.now();try{return await s41(X,Z)}finally{$.write({type:"data-tool-metadata",id:Q.toolCallId,data:{latencyMs:performance.now()-Y}})}}})}function Uj0($,Z){let{objectStorage:X,toolOutputMap:Q,pendingImages:Y}=Z;return l8({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:K0(jh4),execute:async(G,J)=>{let K=performance.now();try{let W=Z.browserlessToken??process.env.BROWSERLESS_TOKEN;if(!W)return{success:!1,error:"BROWSERLESS_TOKEN is not configured."};let H=G.fullPage??!1,N=async(z)=>await fetch(`${C_}/screenshot?token=${encodeURIComponent(W)}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({url:G.url,options:zh4(H,z),viewport:dq8})}),U=await N(!1);if(!U.ok){let z=await U.text().catch(()=>"Unknown error");return{success:!1,error:`Browserless screenshot failed (${U.status}): ${z}`,url:G.url}}let F=new Uint8Array(await U.arrayBuffer()),w=cq8(F);if(H&&w!==null&&w>Wj0){U=await N(!0);let z=U.ok?new Uint8Array(await U.arrayBuffer()):null;if(!z||(cq8(z)??0)>Wj0)return{success:!1,error:`Full-page screenshot of ${G.url} is ${w}px tall, over the ${Wj0}px limit, and the clipped retry did not come back within it. Retry with fullPage: false.`,url:G.url};F=z}let B="image/jpeg",L=`screenshots/${crypto.randomUUID()}.jpg`,D,E=null;if(X)try{await X.put(L,F,{contentType:B}),D=R7(L),E=await X.presignedGetUrl?.(L,600)??null}catch(z){console.error("[take-screenshot] Failed to upload, using data: URI fallback",z),D=`data:${B};base64,${Buffer.from(F).toString("base64")}`}else D=`data:${B};base64,${Buffer.from(F).toString("base64")}`;if(!E)E=D.startsWith("data:")?D:`data:${B};base64,${Buffer.from(F).toString("base64")}`;return Y.push({url:E,mediaType:B,pageUrl:G.url}),Q.set(J.toolCallId,`Screenshot of ${G.url} stored at ${D}`),{success:!0,image:{uri:D,mediaType:B},url:G.url}}finally{$.write({type:"data-tool-metadata",id:J.toolCallId,data:{latencyMs:performance.now()-K}})}},toModelOutput({output:G}){if(!G.success)return{type:"text",value:G.error??"Screenshot failed"};return{type:"text",value:`Screenshot of ${G.url} captured successfully. The image is attached below.`}}})}var Dh4,uq8=20971520,dq8,Eh4=80,Wj0=7000,Hr,jh4,Ph4;var Rh=O(()=>{h4();h4();S_();Dh4=/\/api\/[^/]+\/files\/([^?#]+)/,dq8={width:1280,height:800};Hr=zH.object({prompt:zH.string().max(1e4).describe("Detailed description of the image to generate. Be specific about style, composition, colors, and subject matter."),referenceImages:zH.array(zH.object({uri:zH.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:zH.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:zH.number().int().min(1).max(4).optional().describe("Number of images to generate. Defaults to 1.")}),jh4=zH.object({url:zH.string().url().describe("The URL of the web page to screenshot."),fullPage:zH.boolean().optional().describe("When true, captures the full scrollable page instead of just the viewport. Defaults to false.")}),Ph4=[/^127\./,/^10\./,/^172\.(1[6-9]|2\d|3[01])\./,/^192\.168\./,/^169\.254\./,/^0\./,/^\[::1\]$/,/^\[fd/,/^\[fe80:/,/^\[::ffff:/i,/^localhost$/i]});function mq8($,Z){return Nj0($,{provider:Z.provider,imageModelInfo:Z.imageModelInfo,objectStorage:Z.objectStorage,allowHttpExternalUrls:Z.allowHttpExternalUrls})}var iq8=O(()=>{Rh()});import{z as Rh4}from"zod";function nq8($){return{background:!0,status:"started",jobId:$,note:Ih4}}function Mh4($){return!!$&&typeof $==="object"&&$.status==="started"&&$.background===!0}function Nr($,Z,X,Q,Y){if(!Q)return X;let G=X.execute,J=K0(Z.extend(qh4)),W=G.constructor.name==="AsyncGeneratorFunction"?async function*(N,U){let{background:F,...w}=N,B=async function*(){let{jobId:j}=await Q.start({toolName:$,input:w,toolCallId:U.toolCallId});yield nq8(j)};if(F){yield*B();return}let L=Y?.(U.toolCallId);if(!L){yield*G(w,U);return}let D=new AbortController,E=()=>D.abort();U.abortSignal?.addEventListener("abort",E,{once:!0});let z=G(w,{...U,abortSignal:D.signal})[Symbol.asyncIterator]();try{let j=z.next(),A=j.then((P)=>({kind:"next",r:P}));while(!0){let P=await Promise.race([A,L.flipped.then(()=>({kind:"flip"}))]);if(P.kind==="flip"){D.abort(),A.catch(()=>{}),(async()=>{try{await j}catch{}try{await z.return?.(void 0)}catch{}})(),yield*B();return}if(P.r.done)return;yield P.r.value,j=z.next(),A=j.then((q)=>({kind:"next",r:q}))}}finally{U.abortSignal?.removeEventListener("abort",E),L.dispose()}}:async(N,U)=>{let{background:F,...w}=N;if(F){let{jobId:B}=await Q.start({toolName:$,input:w,toolCallId:U.toolCallId});return nq8(B)}return G(w,U)};return{...X,inputSchema:J,execute:W,toModelOutput:(N)=>{if(Mh4(N.output))return{type:"text",value:N.output.note};if(X.toModelOutput)return X.toModelOutput(N);return{type:"text",value:JSON.stringify(N.output)}}}}var Ih4,qh4;var e41=O(()=>{h4();Ih4="Running in the background. The result will appear in the conversation as "+"soon as it's ready \u2014 keep helping the user in the meantime, and do not "+"wait for it or call this tool again for the same request.",qh4={background:Rh4.boolean().optional().describe("Run this in the BACKGROUND and return immediately instead of blocking this turn. Set true for long, fire-and-forget work whose result you do "+"NOT need in this same reply \u2014 it's delivered to the conversation when "+"it finishes and you'll be nudged to use it then. Leave false/omit when you need the result now to act on it this turn.")}});function pq8($,Z){let X=Ur.get($);if(!X)X=new Map,Ur.set($,X);let Q,Y=new Promise((G)=>{Q=G});return X.set(Z,Q),{flipped:Y,dispose(){let G=Ur.get($);if(!G)return;if(G.delete(Z),G.size===0)Ur.delete($)}}}function $$1($,Z){Ur.get($)?.get(Z)?.()}var Ur;var Z$1=O(()=>{Ur=new Map});import{z as tq8}from"zod";function X$1($,Z){let{researchJob:X,toolOutputMap:Q,taskId:Y}=Z;return l8({description:Z.description??Vh4,inputSchema:K0(kh4),execute:async(G,J)=>{let K=performance.now(),W=(H)=>{$.write({type:"data-web-search",id:J.toolCallId,data:{text:H}})};try{let H=X({query:G.query,taskId:Y,toolCallId:J.toolCallId,abortSignal:J.abortSignal}),N=await H.next();while(!N.done)W(N.value.progress),N=await H.next();let U=N.value;return Q.set(J.toolCallId,U.text),Sh4({query:G.query,text:U.text,citations:U.citations,usage:U.usage,resultUri:U.resultUri??null,preview:U.preview??""})}finally{let H=performance.now()-K;$.write({type:"data-tool-metadata",id:J.toolCallId,data:{latencyMs:H}})}}})}function Sh4($){if($.resultUri)return{success:!0,uri:$.resultUri,preview:$.preview,query:$.query,usage:$.usage,...$.citations.length>0&&{citations:$.citations}};return{success:!0,content:$.text,query:$.query,usage:$.usage,...$.citations.length>0&&{citations:$.citations}}}var kh4,Vh4="Search the web for up-to-date information and synthesize a concise answer. Use this for quick lookups, fact-checking, current events, or when the answer requires knowledge beyond your training data and a fast response is enough. For exhaustive, multi-source reports prefer `deep_research` when available.";var oq8=O(()=>{h4();kh4=tq8.object({query:tq8.string().max(1e4).describe("The research query. Be specific about what information you need. The research model will search the web and synthesize a comprehensive answer.")})});var rq8=O(()=>{E41()});var aq8=O(()=>{rq8()});function FG($,Z,X){let Q=Object.entries(X).filter(([,G])=>G!==void 0&&G!==null).map(([G,J])=>`${G}=${typeof J==="string"?J:JSON.stringify(J)}`).join(" "),Y=`[web-search] ${Z} ${Q}`.trim();if($==="error")console.error(Y);else if($==="warn")console.warn(Y);else console.log(Y)}function Q$1($){let{provider:Z,modelInfo:X,ctx:Q,mode:Y,toolName:G}=$,J=X.id;return async function*(W){let H=Z.asyncResearch;if(Y==="deep"&&H?.canHandle(J)===!0&&H)return yield*Ch4({params:W,asyncResearch:H,providerId:Z.info.id,modelId:J,toolName:G,ctx:Q});return yield*vh4({params:W,provider:Z,modelId:J,ctx:Q})}}async function*Ch4({params:$,asyncResearch:Z,providerId:X,modelId:Q,toolName:Y,ctx:G}){let{toolCallId:J,taskId:K}=$,W={tc:J,thread:K,provider:X,model:Q},H=await G.storage.asyncResearchJobs.upsertPending({threadId:K,toolCallId:J,provider:X,modelId:Q,query:$.query});if(H.status==="completed"&&H.resultPreview!=null)return FG("info","replay-completed",{...W,job:H.id}),_h4(H);if(H.status==="failed"||H.status==="cancelled")throw FG("warn",`replay-${H.status}`,{...W,job:H.id,err:H.lastError}),Error(H.lastError??`previous research ${H.status}`);if(!H.interactionId){FG("info","submit",{...W,job:H.id});let w;try{w=(await Z.start({modelId:Q,query:$.query,abortSignal:$.abortSignal})).jobId}catch(B){let L=B.message??String(B);throw await G.storage.asyncResearchJobs.markFailed(J,L),FG("error","submit-failed",{...W,job:H.id,err:L}),B}await G.storage.asyncResearchJobs.markPolling(J,w,{threadId:K,toolName:Y,query:$.query}),H={...H,interactionId:w,status:"polling"},FG("info","polling-started",{...W,job:H.id,interaction:w})}else FG("info","polling-resumed",{...W,job:H.id,interaction:H.interactionId,attempts:H.attempts});let N=0,U=50,F=[];try{let w=!1,B,L=Z.resume({jobId:H.interactionId,abortSignal:$.abortSignal,onProgress:(P)=>{let q=Date.now();if(q-N>=U)N=q,F.push(P);G.storage.asyncResearchJobs.recordPoll(J).catch((k)=>{FG("warn","record-poll-failed",{...W,job:H.id,err:k.message})})}}).catch((P)=>{B=P;return}).finally(()=>{w=!0});while(!w){while(F.length>0)yield{progress:F.shift()};await Promise.race([L,_8(U)])}while(F.length>0)yield{progress:F.shift()};if(await L,B!==void 0)throw B;let D=await L;if(yield{progress:D.text},D.text.trim()==="")throw FG("error","empty-result",{...W,job:H.id,tokens:D.usage.outputTokens}),new M_("research completed with empty result");let E={inputTokens:D.usage.inputTokens,outputTokens:D.usage.outputTokens},z=D.usage.outputTokens>__&&G.objectStorage!=null,j=null;if(z&&G.objectStorage){let P=`web-search/${crypto.randomUUID()}.md`;try{await G.objectStorage.put(P,new TextEncoder().encode(D.text),{contentType:"text/markdown"}),j=R7(P)}catch(q){FG("warn","blob-upload-failed",{...W,job:H.id,err:q.message})}}let A=wQ(D.text);return await G.storage.asyncResearchJobs.markCompleted(J,{inputTokens:E.inputTokens,outputTokens:E.outputTokens,citations:D.citations,resultUri:j,resultPreview:A,resultContent:j?null:D.text}),FG("info","completed",{...W,job:H.id,tokens:E.outputTokens,citations:D.citations.length,uri:j??"inline"}),{text:D.text,citations:D.citations,usage:E,resultUri:j,preview:j?A:void 0}}catch(w){if($.abortSignal?.aborted)throw await G.storage.asyncResearchJobs.markCancelled(J,"aborted"),FG("info","cancelled",{...W,job:H.id}),w;let B=w.message??String(w);if(w instanceof M_||w instanceof Error&&w.name==="AsyncResearchTerminalError")throw await G.storage.asyncResearchJobs.markFailed(J,B),FG("error","terminal-failure",{...W,job:H.id,err:B}),w;throw await G.storage.asyncResearchJobs.recordPoll(J,B).catch(()=>{}),FG("warn","transient-error",{...W,job:H.id,err:B}),w}}function _h4($){if($.resultUri)return{text:"",citations:[],usage:{inputTokens:0,outputTokens:0},resultUri:$.resultUri,preview:$.resultPreview??""};return{text:$.resultContent??$.resultPreview??"",citations:[],usage:{inputTokens:0,outputTokens:0},resultUri:null}}async function*vh4({params:$,provider:Z,modelId:X,ctx:Q}){let Y=Z.aiSdk.languageModel(X),G=WO({model:Y,prompt:$.query,abortSignal:$.abortSignal}),J="",K=0,W=50;for await(let D of G.textStream){J+=D;let E=Date.now();if(E-K>=W)K=E,yield{progress:J}}yield{progress:J};let[H,N,U]=await Promise.all([G.usage,G.sources,G.providerMetadata]),F=H.inputTokens??0,w=H.outputTokens??0;m70(U);let B=[];if(N&&Array.isArray(N)){for(let D of N)if(D&&typeof D==="object"&&"sourceType"in D&&D.sourceType==="url"&&"url"in D&&typeof D.url==="string")B.push({url:D.url,title:"title"in D&&typeof D.title==="string"?D.title:void 0})}let L={inputTokens:F,outputTokens:w};if(w>__&&Q.objectStorage){let D=`web-search/${crypto.randomUUID()}.md`,E=new TextEncoder().encode(J);try{return await Q.objectStorage.put(D,E,{contentType:"text/markdown"}),{text:J,citations:B,usage:L,resultUri:R7(D),preview:wQ(J)}}catch(z){console.error("[web-search] Failed to upload to storage, returning inline",z)}}return{text:J,citations:B,usage:L,resultUri:null}}var sq8=O(()=>{h4();F$();aq8();q6();S_();cU()});function eq8($,Z){return Uj0($,{objectStorage:Z.objectStorage,toolOutputMap:Z.toolOutputMap,pendingImages:Z.pendingImages})}var $M8=O(()=>{Rh()});import{z as ZM8}from"zod";function QM8($,Z){let{browserless:X,objectStorage:Q,toolOutputMap:Y}=Z;return l8({description:"Scrape the rendered HTML content of a web page. Use this when you need to read the content, structure, or data from a website. Returns the full HTML of the page after JavaScript has been executed. "+"For very large pages the result may be truncated \u2014 use read_tool_output to access the full content.",inputSchema:K0(fh4),execute:async(G,J)=>{let K=performance.now();try{let W;try{W=await fetch(`${X.baseUrl}/content?token=${encodeURIComponent(X.token)}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({url:G.url}),signal:AbortSignal.timeout(XM8)})}catch(U){return{success:!1,error:U instanceof Error&&U.name==="TimeoutError"?`Browserless content fetch timed out after ${XM8}ms`:`Browserless content fetch failed: ${U instanceof Error?U.message:String(U)}`,url:G.url}}if(!W.ok){let U=await W.text().catch(()=>"Unknown error");return{success:!1,error:`Browserless content fetch failed (${W.status}): ${U.slice(0,xh4)}`,url:G.url}}let H=await W.text();Y.set(J.toolCallId,H);let N=jX(H);if(N>__){let U=`scraped-pages/${crypto.randomUUID()}.html`,F=new TextEncoder().encode(H);try{await Q.put(U,F,{contentType:"text/html"});let w=wQ(H);return{success:!0,uri:R7(U),preview:w,url:G.url,tokenCount:N}}catch(w){console.error("[scrape-url] Failed to upload to storage, returning inline",w)}}return{success:!0,content:H,url:G.url,tokenCount:N}}finally{let W=performance.now()-K;$.write({type:"data-tool-metadata",id:J.toolCallId,data:{latencyMs:W}})}}})}var XM8=45000,xh4=500,fh4;var YM8=O(()=>{h4();cU();S_();fh4=ZM8.object({url:ZM8.string().url().refine(($)=>/^https?:\/\//i.test($),{message:"URL must use http or https"}).describe("The URL of the web page to scrape.")})});import{z as Fj0}from"zod";function yh4($,Z){let X=Z.waitUntil??"networkidle2",Q=Z.evaluate?JSON.stringify(Z.evaluate):"null";return`
|
|
2689
2689
|
export default async function ({ page }) {
|
|
2690
2690
|
const consoleLogs = [];
|
|
2691
2691
|
const errors = [];
|
|
@@ -2730,7 +2730,7 @@ Guidelines:
|
|
|
2730
2730
|
}
|
|
2731
2731
|
return { consoleLogs, errors, evaluateResult };
|
|
2732
2732
|
}
|
|
2733
|
-
`,B=await fetch(`${C_}/function?token=${encodeURIComponent(H)}`,{method:"POST",headers:{"Content-Type":"application/javascript"},body:w});if(!B.ok){let z=await B.text().catch(()=>"Unknown error");return{success:!1,error:`Browserless function call failed (${B.status}): ${z}`,url:N.url}}let L=await B.json().catch(async()=>{return{error:`Browserless returned non-JSON response: ${(await B.text().catch(()=>"")).slice(0,200)}`}}),D=JSON.stringify(L,null,2);X.set(K.toolCallId,D);let E=jX(D);if(!("error"in L)&&E>fO&&Q){let z=`inspect-pages/${crypto.randomUUID()}.json`;return await Q.put(z,new TextEncoder().encode(D),{contentType:"application/json"}),{success:!0,uri:R7(z),preview:wQ(D),url:N.url,tokenCount:E,consoleLogCount:L.consoleLogs?.length??0,errorCount:L.errors?.length??0,hasEvaluateResult:L.evaluateResult!=null}}return{success:!("error"in L),...L,url:N.url,tokenCount:E}}finally{$.write({type:"data-tool-metadata",id:K.toolCallId,data:{latencyMs:performance.now()-W}})}}})}function HM8($){let{writer:Z,toolOutputMap:X,objectStorage:Q,pendingImages:Y,imageTool:G}=$,J={user_ask:Yj0,todo_write:Gj0,propose_plan:Kj0,read_tool_output:Zj0({toolOutputMap:X})};if(G)J.generate_image=Nr("generate_image",Hr,Nj0(Z,{...G,objectStorage:Q}),null);if(process.env.BROWSERLESS_TOKEN){if(J.scrape_url=WM8(Z,{toolOutputMap:X,objectStorage:Q,kind:"scrape"}),J.inspect_page=WM8(Z,{toolOutputMap:X,objectStorage:Q,kind:"inspect"}),Y)J.take_screenshot=Uj0(Z,{objectStorage:Q,toolOutputMap:X,pendingImages:Y})}return J}var NM8=O(()=>{h4();t41();o41();r41();cU();S_();Rh();e41()});function Y$1($,Z=Date.now()){let X=new Date($.updated_at).getTime(),Q=$.last_progress_at?new Date($.last_progress_at).getTime():Number.NaN,Y=Math.max(Number.isFinite(X)?X:Number.NEGATIVE_INFINITY,Number.isFinite(Q)?Q:Number.NEGATIVE_INFINITY);return!Number.isFinite(Y)||Z-Y>1800000}function V3($,Z=Date.now()){let X=$.status;if(X==="in_progress"&&Y$1($,Z))X="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:X,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 UM8=1800000;var G$1;var FM8=O(()=>{G$1=["in_progress","requires_action","failed","completed"]});import{z as S8}from"zod";var wM8,gh4,BM8,jH,OM8,LM8;var v_=O(()=>{FM8();wM8=S8.object({id:S8.string().describe("Unique message ID"),thread_id:S8.string().describe("ID of the parent thread"),metadata:S8.unknown().optional().describe("Optional message metadata"),parts:S8.array(S8.record(S8.string(),S8.unknown())).describe("Message content parts (AI SDK UIMessagePart format)"),role:S8.enum(["user","assistant","system"]).describe("Message role"),created_at:S8.string().datetime().describe("Timestamp of creation"),updated_at:S8.string().datetime().describe("Timestamp of last update")}),gh4=S8.object({toolName:S8.string().describe("Fully qualified tool name"),appId:S8.string().describe("App ID that owns the tool"),args:S8.record(S8.string(),S8.unknown()).describe("Arguments used when expanding the tool"),expandedAt:S8.string().datetime().describe("When the tool was expanded")}),BM8=S8.object({expanded_tools:S8.array(gh4).optional(),read_only:S8.boolean().optional().describe("The thread takes no further input (an autonomous run the user cannot continue)")}).catchall(S8.unknown()),jH=S8.object({id:S8.string().describe("Unique thread ID"),organization_id:S8.string().describe("Organization this thread belongs to"),title:S8.string().describe("Thread title"),description:S8.string().nullable().describe("Thread description"),created_at:S8.string().datetime().describe("Timestamp of creation"),updated_at:S8.string().datetime().describe("Timestamp of last update"),hidden:S8.boolean().optional().describe("Whether the thread is hidden"),status:S8.enum([...G$1,"expired"]).describe("Thread execution status. 'expired' is virtual -- computed at read time for stale in_progress threads"),created_by:S8.string().describe("User ID who created the thread"),updated_by:S8.string().optional().describe("User ID who last updated the thread"),virtual_mcp_id:S8.string().optional().describe("Virtual MCP (agent) this thread was initiated with"),trigger_id:S8.string().nullable().optional().describe("Automation trigger that created this thread; null/absent for human-initiated threads."),branch:S8.string().nullable().optional().describe("Git branch this thread is pinned to (GitHub-linked vms only)"),sandbox_provider_kind:S8.string().nullable().optional().describe("Pinned on first message; identifies which sandbox provider to dispatch to (e.g. 'agent-sandbox', 'user-desktop')."),harness_id:S8.string().nullable().optional().describe("Pinned on first message; selects which harness runs the thread (e.g. 'claude-code', 'codex', 'decopilot')."),metadata:BM8.optional().describe("Free-form per-thread UI state (e.g. expanded_tools)"),run_config:S8.record(S8.string(),S8.unknown()).nullable().optional().describe("Persisted run configuration (contains agent and model info)")}),OM8=S8.object({id:S8.string().optional().describe("Optional custom ID for the thread"),title:S8.string().optional().describe("Thread title"),description:S8.string().nullish().describe("Thread description"),virtual_mcp_id:S8.string().describe("Virtual MCP (agent) this thread is bound to"),branch:S8.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.")}),LM8=S8.object({title:S8.string().optional().describe("New thread title"),description:S8.string().nullish().describe("New thread description"),hidden:S8.boolean().optional().describe("Whether the thread is hidden"),status:S8.enum(G$1).optional().describe("New thread status (user-set override). 'expired' is a computed virtual status and cannot be set directly."),metadata:BM8.optional().describe("Full replacement of the thread's metadata object"),branch:S8.string().min(1).nullish().describe("New git branch for this thread"),virtual_mcp_id:S8.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.")})});import{z as wG}from"zod";var hh4,uh4,x_;var J$1=O(()=>{F3();t0();v_();hh4=pJ.extend({where:wG.object({created_by:wG.string().optional(),trigger_ids:wG.array(wG.string()).optional(),virtual_mcp_id:wG.string().optional(),hidden:wG.boolean().optional(),has_trigger:wG.boolean().optional()}).optional(),startDate:wG.string().datetime().optional().describe("Filter threads updated at or after this ISO timestamp"),endDate:wG.string().datetime().optional().describe("Filter threads updated at or before this ISO timestamp"),search:wG.string().optional().describe("Full-text search on thread title (case-insensitive)"),status:wG.string().optional().describe("Filter by thread status (e.g. completed, failed, in_progress)"),userId:wG.string().optional().describe("Filter by the user who created the thread"),agentId:wG.string().optional().describe("Filter by agent (connection or virtual MCP) ID")}),uh4=FU(jH),x_=t({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:hh4,outputSchema:uh4,handler:async($,Z)=>{await Z.access.check();let X=Z.auth.user?.id;if(!X)throw Error("User ID required to list threads");Y0(Z);let Q=$.offset??0,Y=$.limit??100,G=$.where?.trigger_ids,J=$.where?.virtual_mcp_id,K=$.userId??($.where?.created_by==="me"?X:$.where?.created_by),{threads:W,total:H}=G?.length?await Z.storage.threads.listByTriggerIds(G,{limit:Y,offset:Q}):await Z.storage.threads.list(K,{limit:Y,offset:Q,virtualMcpId:J,startDate:$.startDate,endDate:$.endDate,search:$.search,status:$.status,agentId:$.agentId,includeArchived:$.where?.hidden,hasTrigger:$.where?.has_trigger}),N=Q+Y<H,U=Date.now();return{items:W.map((F)=>V3(F,U)),totalCount:H,hasMore:N}}})});var ch4,f_;var K$1=O(()=>{F3();t0();v_();ch4=Ot(jH),f_=t({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:Bt,outputSchema:ch4,handler:async($,Z)=>{W0(Z),Y0(Z),await Z.access.check();let X=await Z.storage.threads.get($.id);if(!X)return{item:null};return{item:V3(X)}}})});import{z as lh4}from"zod";function DM8($){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 X=DM8(Z);if(X)return X}return null}var dh4,mh4,b_;var W$1=O(()=>{F3();t0();v_();dh4=pJ.extend({thread_id:lh4.string().optional().describe("ID of the thread to list messages for (required)")}),mh4=FU(wM8),b_=t({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:dh4,outputSchema:mh4,handler:async($,Z)=>{Y0(Z),await Z.access.check();let X=$.thread_id??DM8($.where);if(!X)throw Error("thread_id is required (provide as top-level param or in where clause)");let Q=$.offset??0,Y=$.limit??100,G=$.orderBy?.[0]?.direction??"asc",J=await Z.storage.threads.get(X);if(!J)return{items:[],totalCount:0,hasMore:!1};if(J.message_storage_version===2){let{messages:N,total:U}=await Z.storage.threads.messageParts().loadWindow(X,{limit:Y,offset:Q,includeInFlight:!0});return{items:N.map((F)=>({id:F.id,thread_id:X,role:F.role,parts:F.parts,metadata:F.metadata??null,created_at:F.created_at,updated_at:F.created_at})),totalCount:U,hasMore:Q+Y<U}}let{messages:K,total:W}=await Z.storage.threads.listMessages(X,{limit:Y,offset:Q,sort:G}),H=Q+Y<W;return{items:K,totalCount:W,hasMore:H}}})});function EM8($){return{search_threads:l8({description:x_.description,inputSchema:K0(x_.inputSchema),execute:(Z)=>x_.execute(Z,$)}),get_thread:l8({description:f_.description,inputSchema:K0(f_.inputSchema),execute:(Z)=>f_.execute(Z,$)}),list_thread_messages:l8({description:b_.description,inputSchema:K0(b_.inputSchema),execute:(Z)=>b_.execute(Z,$)})}}var zM8=O(()=>{h4();J$1();K$1();W$1()});async function nh4($,Z,X){let{provider:Q,imageProvider:Y,webSearchProvider:G,deepResearchProvider:J,organization:K,models:W,toolApprovalLevel:H="auto",isPlanMode:N=!1,toolOutputMap:U,pendingImages:F,passthroughClient:w,vmContext:B,htmlArtifactBuffer:L,taskId:D,agentId:E,onChildUsage:z,backgroundDispatcher:j}=Z,A={isPlanMode:N},P=X.auth?.user?.id,q=HM8({writer:$,toolOutputMap:U,passthroughClient:w,toolApprovalLevel:H,isPlanMode:N,objectStorage:X.objectStorage});if(P)q.update_interests=gq8({write:async(C)=>{await X.storage.interests.setForAgent(C.orgId,C.agentId,C.userId,{interests:C.interests})},orgId:K.id,agentId:E,userId:P});Object.assign(q,EM8(X));let k=Gr(H,!1,A)!==!1,M;if(B){let C=await Bh(X,{virtualMcpId:B.virtualMcpId,branch:B.branch,userId:B.userId,syncTools:B.syncTools,threadId:B.threadId}),m=bq8(C);M=xq8({fs:m.fs,htmlArtifactBuffer:L,toolOutputMap:U,needsApproval:k,pendingImages:F,ctx:X,threadId:B.threadId,virtualMcpId:B.virtualMcpId}),Object.assign(q,M);let f=await rT8({ctx:X,orgId:K.id,virtualMcpId:B.virtualMcpId,userId:B.userId,threadId:B.threadId,writer:$,rebindFs:async(y)=>{m.swap(await Bh(X,{virtualMcpId:B.virtualMcpId,branch:y,userId:B.userId,syncTools:B.syncTools,threadId:B.threadId}))}});if(f)q.load_repo=f}if(Q)q.subtask=Nr("subtask",N$1,U$1($,{provider:Q,organization:K,models:W,self:{id:E},currentThreadId:D,needsApproval:Gr(H,!1,A)!==!1,onChildUsage:z,vmTools:M,parentBuiltInParams:Z},X),j,(C)=>pq8(D,C));if(Y&&W.image&&X.objectStorage)q.generate_image=Nr("generate_image",Hr,mq8($,{provider:Y,imageModelInfo:W.image,objectStorage:X.objectStorage,allowHttpExternalUrls:Z1().localMode}),j);if(G&&W.webSearch){let C=Q$1({provider:G,modelInfo:W.webSearch,ctx:X,mode:"quick",toolName:"web_search"});q.web_search=X$1($,{researchJob:C,toolOutputMap:U,taskId:D})}if(J&&W.deepResearch){let C=Q$1({provider:J,modelInfo:W.deepResearch,ctx:X,mode:"deep",toolName:"deep_research"});q.deep_research=X$1($,{researchJob:C,toolOutputMap:U,taskId:D,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 C={baseUrl:C_,token:process.env.BROWSERLESS_TOKEN};if(q.take_screenshot=eq8($,{objectStorage:X.objectStorage,toolOutputMap:U,pendingImages:F}),X.objectStorage)q.scrape_url=QM8($,{browserless:C,objectStorage:X.objectStorage,toolOutputMap:U}),q.inspect_page=JM8($,{browserless:C,objectStorage:X.objectStorage,toolOutputMap:U})}return q}function ph4($,Z,X){let Q=Z.organization.id,Y=X.auth?.user?.id,G={};for(let[J,K]of Object.entries($)){let W=K,H=W.execute;if(typeof H!=="function"){G[J]=K;continue}let N=ih4[J],U=H.constructor?.name==="AsyncGeneratorFunction",F=(B,L)=>{if(!Q||!Y)return;n1.capture({distinctId:Y,event:"tool_called",groups:{organization:Q},properties:{organization_id:Q,tool_source:"builtin",tool_name:J,tool_safe_name:J,read_only:N?.readOnly??null,destructive:N?.destructive??null,idempotent:null,open_world:null,latency_ms:Math.round(B),is_error:L}})},w=U?async function*(B,L){let D=performance.now(),E=!1;try{yield*H.call(W,B,L)}catch(z){throw E=!0,z}finally{F(performance.now()-D,E)}}:async(B,L)=>{let D=performance.now(),E=!1;try{return await H.call(W,B,L)}catch(z){throw E=!0,z}finally{F(performance.now()-D,E)}};G[J]={...W,execute:w}}return G}async function wj0($,Z,X){let Q=await nh4($,Z,X),Y=ph4(Q,Z,X);if(!Z.isPlanMode){let{propose_plan:G,...J}=Y;return J}return Y}function jM8($){let{ctx:Z,writer:X,toolOutputMap:Q,subtaskParams:Y,planMode:G}=$,J={user_ask:Yj0,todo_write:Gj0,read_tool_output:Zj0({toolOutputMap:Q})};if(G)J.propose_plan=Kj0;if(Y.provider)J.subtask=U$1(X,Y,Z);return J}var ih4;var H$1=O(()=>{n4();Jr();cU();fq8();kz0();Vz0();F$1();t41();o41();hq8();r41();iq8();e41();Z$1();Rh();oq8();sq8();$M8();YM8();KM8();NM8();zM8();b8();ih4={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 PM8($){let Z=$.toolOutputMap??new Map,{tools:X,nameMap:Q}=await Qj0($.mcpClient,Z,$.writer,$.toolApprovalLevel,{disableOutputTruncation:!1,isPlanMode:$.planMode,timeoutMs:$j0,resolveArgs:$.resolveArgs,onToolCalled:$.onToolCalled,onPrOpened:$.onPrOpened}),Y=$.fullBuiltInParams?await wj0($.writer,{...$.fullBuiltInParams,toolOutputMap:Z},$.ctx):jM8({ctx:$.ctx,writer:$.writer,toolOutputMap:Z,subtaskParams:$.subtaskParams,planMode:$.planMode}),G=$.kind==="subagent"?Object.fromEntries(Object.entries(Y).filter(([K])=>!th4.includes(K))):Y;return{tools:{...X,...G},toolOutputMap:Z,nameMap:Q}}var th4;var AM8=O(()=>{Jr();H$1();th4=["subtask","user_ask","propose_plan"]});var Oj0={};B0(Oj0,{waitForSeed:()=>Yu4,seedLocalMode:()=>Zu4,pruneUndecryptableJwks:()=>IM8,markSeedComplete:()=>Qu4,isLocalMode:()=>PH,healLocalJwks:()=>sh4,getLocalAdminUser:()=>w$1,getLocalAdminPassword:()=>Bj0});import{symmetricDecrypt as oh4}from"better-auth/crypto";import{sql as TM8}from"kysely";import{userInfo as rh4}from"os";async function sh4(){let $=Z1();if(!$.localMode)return 0;if(!$.betterAuthSecret)return 0;return IM8(N6().db,$.betterAuthSecret)}async function IM8($,Z){let X;try{X=(await TM8`
|
|
2733
|
+
`,B=await fetch(`${C_}/function?token=${encodeURIComponent(H)}`,{method:"POST",headers:{"Content-Type":"application/javascript"},body:w});if(!B.ok){let z=await B.text().catch(()=>"Unknown error");return{success:!1,error:`Browserless function call failed (${B.status}): ${z}`,url:N.url}}let L=await B.json().catch(async()=>{return{error:`Browserless returned non-JSON response: ${(await B.text().catch(()=>"")).slice(0,200)}`}}),D=JSON.stringify(L,null,2);X.set(K.toolCallId,D);let E=jX(D);if(!("error"in L)&&E>fO&&Q){let z=`inspect-pages/${crypto.randomUUID()}.json`;return await Q.put(z,new TextEncoder().encode(D),{contentType:"application/json"}),{success:!0,uri:R7(z),preview:wQ(D),url:N.url,tokenCount:E,consoleLogCount:L.consoleLogs?.length??0,errorCount:L.errors?.length??0,hasEvaluateResult:L.evaluateResult!=null}}return{success:!("error"in L),...L,url:N.url,tokenCount:E}}finally{$.write({type:"data-tool-metadata",id:K.toolCallId,data:{latencyMs:performance.now()-W}})}}})}function HM8($){let{writer:Z,toolOutputMap:X,objectStorage:Q,pendingImages:Y,imageTool:G}=$,J={user_ask:Yj0,todo_write:Gj0,propose_plan:Kj0,read_tool_output:Zj0({toolOutputMap:X})};if(G)J.generate_image=Nr("generate_image",Hr,Nj0(Z,{...G,objectStorage:Q}),null);if(process.env.BROWSERLESS_TOKEN){if(J.scrape_url=WM8(Z,{toolOutputMap:X,objectStorage:Q,kind:"scrape"}),J.inspect_page=WM8(Z,{toolOutputMap:X,objectStorage:Q,kind:"inspect"}),Y)J.take_screenshot=Uj0(Z,{objectStorage:Q,toolOutputMap:X,pendingImages:Y})}return J}var NM8=O(()=>{h4();t41();o41();r41();cU();S_();Rh();e41()});function Y$1($,Z=Date.now()){let X=new Date($.updated_at).getTime(),Q=$.last_progress_at?new Date($.last_progress_at).getTime():Number.NaN,Y=Math.max(Number.isFinite(X)?X:Number.NEGATIVE_INFINITY,Number.isFinite(Q)?Q:Number.NEGATIVE_INFINITY);return!Number.isFinite(Y)||Z-Y>1800000}function V3($,Z=Date.now()){let X=$.status;if(X==="in_progress"&&Y$1($,Z))X="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:X,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 UM8=1800000;var G$1;var FM8=O(()=>{G$1=["in_progress","requires_action","failed","completed"]});import{z as S8}from"zod";var wM8,gh4,BM8,jH,OM8,LM8;var v_=O(()=>{FM8();wM8=S8.object({id:S8.string().describe("Unique message ID"),thread_id:S8.string().describe("ID of the parent thread"),metadata:S8.unknown().optional().describe("Optional message metadata"),parts:S8.array(S8.record(S8.string(),S8.unknown())).describe("Message content parts (AI SDK UIMessagePart format)"),role:S8.enum(["user","assistant","system"]).describe("Message role"),created_at:S8.string().datetime().describe("Timestamp of creation"),updated_at:S8.string().datetime().describe("Timestamp of last update")}),gh4=S8.object({toolName:S8.string().describe("Fully qualified tool name"),appId:S8.string().describe("App ID that owns the tool"),args:S8.record(S8.string(),S8.unknown()).describe("Arguments used when expanding the tool"),expandedAt:S8.string().datetime().describe("When the tool was expanded")}),BM8=S8.object({expanded_tools:S8.array(gh4).optional(),read_only:S8.boolean().optional().describe("The thread takes no further input (an autonomous run the user cannot continue)")}).catchall(S8.unknown()),jH=S8.object({id:S8.string().describe("Unique thread ID"),organization_id:S8.string().describe("Organization this thread belongs to"),title:S8.string().describe("Thread title"),description:S8.string().nullable().describe("Thread description"),created_at:S8.string().datetime().describe("Timestamp of creation"),updated_at:S8.string().datetime().describe("Timestamp of last update"),hidden:S8.boolean().optional().describe("Whether the thread is hidden"),status:S8.enum([...G$1,"expired"]).describe("Thread execution status. 'expired' is virtual -- computed at read time for stale in_progress threads"),created_by:S8.string().describe("User ID who created the thread"),updated_by:S8.string().optional().describe("User ID who last updated the thread"),virtual_mcp_id:S8.string().optional().describe("Virtual MCP (agent) this thread was initiated with"),trigger_id:S8.string().nullable().optional().describe("Automation trigger that created this thread; null/absent for human-initiated threads."),branch:S8.string().nullable().optional().describe("Git branch this thread is pinned to (GitHub-linked vms only)"),sandbox_provider_kind:S8.string().nullable().optional().describe("Pinned on first message; identifies which sandbox provider to dispatch to (e.g. 'agent-sandbox', 'user-desktop')."),harness_id:S8.string().nullable().optional().describe("Pinned on first message; selects which harness runs the thread (e.g. 'claude-code', 'codex', 'decopilot')."),metadata:BM8.optional().describe("Free-form per-thread UI state (e.g. expanded_tools)"),run_config:S8.record(S8.string(),S8.unknown()).nullable().optional().describe("Persisted run configuration (contains agent and model info)")}),OM8=S8.object({id:S8.string().optional().describe("Optional custom ID for the thread"),title:S8.string().optional().describe("Thread title"),description:S8.string().nullish().describe("Thread description"),virtual_mcp_id:S8.string().describe("Virtual MCP (agent) this thread is bound to"),branch:S8.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.")}),LM8=S8.object({title:S8.string().optional().describe("New thread title"),description:S8.string().nullish().describe("New thread description"),hidden:S8.boolean().optional().describe("Whether the thread is hidden"),status:S8.enum(G$1).optional().describe("New thread status (user-set override). 'expired' is a computed virtual status and cannot be set directly."),metadata:BM8.optional().describe("Full replacement of the thread's metadata object"),branch:S8.string().min(1).nullish().describe("New git branch for this thread"),virtual_mcp_id:S8.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.")})});import{z as wG}from"zod";var hh4,uh4,x_;var J$1=O(()=>{F3();t0();v_();hh4=pJ.extend({where:wG.object({created_by:wG.string().optional(),trigger_ids:wG.array(wG.string()).max(1000).optional(),virtual_mcp_id:wG.string().optional(),hidden:wG.boolean().optional(),has_trigger:wG.boolean().optional()}).optional(),startDate:wG.string().datetime().optional().describe("Filter threads updated at or after this ISO timestamp"),endDate:wG.string().datetime().optional().describe("Filter threads updated at or before this ISO timestamp"),search:wG.string().optional().describe("Full-text search on thread title (case-insensitive)"),status:wG.string().optional().describe("Filter by thread status (e.g. completed, failed, in_progress)"),userId:wG.string().optional().describe("Filter by the user who created the thread"),agentId:wG.string().optional().describe("Filter by agent (connection or virtual MCP) ID")}),uh4=FU(jH),x_=t({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:hh4,outputSchema:uh4,handler:async($,Z)=>{await Z.access.check();let X=Z.auth.user?.id;if(!X)throw Error("User ID required to list threads");Y0(Z);let Q=$.offset??0,Y=$.limit??100,G=$.where?.trigger_ids,J=$.where?.virtual_mcp_id,K=$.userId??($.where?.created_by==="me"?X:$.where?.created_by),{threads:W,total:H}=G?.length?await Z.storage.threads.listByTriggerIds(G,{limit:Y,offset:Q}):await Z.storage.threads.list(K,{limit:Y,offset:Q,virtualMcpId:J,startDate:$.startDate,endDate:$.endDate,search:$.search,status:$.status,agentId:$.agentId,includeArchived:$.where?.hidden,hasTrigger:$.where?.has_trigger}),N=Q+Y<H,U=Date.now();return{items:W.map((F)=>V3(F,U)),totalCount:H,hasMore:N}}})});var ch4,f_;var K$1=O(()=>{F3();t0();v_();ch4=Ot(jH),f_=t({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:Bt,outputSchema:ch4,handler:async($,Z)=>{W0(Z),Y0(Z),await Z.access.check();let X=await Z.storage.threads.get($.id);if(!X)return{item:null};return{item:V3(X)}}})});import{z as lh4}from"zod";function DM8($){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 X=DM8(Z);if(X)return X}return null}var dh4,mh4,b_;var W$1=O(()=>{F3();t0();v_();dh4=pJ.extend({thread_id:lh4.string().optional().describe("ID of the thread to list messages for (required)")}),mh4=FU(wM8),b_=t({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:dh4,outputSchema:mh4,handler:async($,Z)=>{Y0(Z),await Z.access.check();let X=$.thread_id??DM8($.where);if(!X)throw Error("thread_id is required (provide as top-level param or in where clause)");let Q=$.offset??0,Y=$.limit??100,G=$.orderBy?.[0]?.direction??"asc",J=await Z.storage.threads.get(X);if(!J)return{items:[],totalCount:0,hasMore:!1};if(J.message_storage_version===2){let{messages:N,total:U}=await Z.storage.threads.messageParts().loadWindow(X,{limit:Y,offset:Q,includeInFlight:!0});return{items:N.map((F)=>({id:F.id,thread_id:X,role:F.role,parts:F.parts,metadata:F.metadata??null,created_at:F.created_at,updated_at:F.created_at})),totalCount:U,hasMore:Q+Y<U}}let{messages:K,total:W}=await Z.storage.threads.listMessages(X,{limit:Y,offset:Q,sort:G}),H=Q+Y<W;return{items:K,totalCount:W,hasMore:H}}})});function EM8($){return{search_threads:l8({description:x_.description,inputSchema:K0(x_.inputSchema),execute:(Z)=>x_.execute(Z,$)}),get_thread:l8({description:f_.description,inputSchema:K0(f_.inputSchema),execute:(Z)=>f_.execute(Z,$)}),list_thread_messages:l8({description:b_.description,inputSchema:K0(b_.inputSchema),execute:(Z)=>b_.execute(Z,$)})}}var zM8=O(()=>{h4();J$1();K$1();W$1()});async function nh4($,Z,X){let{provider:Q,imageProvider:Y,webSearchProvider:G,deepResearchProvider:J,organization:K,models:W,toolApprovalLevel:H="auto",isPlanMode:N=!1,toolOutputMap:U,pendingImages:F,passthroughClient:w,vmContext:B,htmlArtifactBuffer:L,taskId:D,agentId:E,onChildUsage:z,backgroundDispatcher:j}=Z,A={isPlanMode:N},P=X.auth?.user?.id,q=HM8({writer:$,toolOutputMap:U,passthroughClient:w,toolApprovalLevel:H,isPlanMode:N,objectStorage:X.objectStorage});if(P)q.update_interests=gq8({write:async(C)=>{await X.storage.interests.setForAgent(C.orgId,C.agentId,C.userId,{interests:C.interests})},orgId:K.id,agentId:E,userId:P});Object.assign(q,EM8(X));let k=Gr(H,!1,A)!==!1,M;if(B){let C=await Bh(X,{virtualMcpId:B.virtualMcpId,branch:B.branch,userId:B.userId,syncTools:B.syncTools,threadId:B.threadId}),m=bq8(C);M=xq8({fs:m.fs,htmlArtifactBuffer:L,toolOutputMap:U,needsApproval:k,pendingImages:F,ctx:X,threadId:B.threadId,virtualMcpId:B.virtualMcpId}),Object.assign(q,M);let f=await rT8({ctx:X,orgId:K.id,virtualMcpId:B.virtualMcpId,userId:B.userId,threadId:B.threadId,writer:$,rebindFs:async(y)=>{m.swap(await Bh(X,{virtualMcpId:B.virtualMcpId,branch:y,userId:B.userId,syncTools:B.syncTools,threadId:B.threadId}))}});if(f)q.load_repo=f}if(Q)q.subtask=Nr("subtask",N$1,U$1($,{provider:Q,organization:K,models:W,self:{id:E},currentThreadId:D,needsApproval:Gr(H,!1,A)!==!1,onChildUsage:z,vmTools:M,parentBuiltInParams:Z},X),j,(C)=>pq8(D,C));if(Y&&W.image&&X.objectStorage)q.generate_image=Nr("generate_image",Hr,mq8($,{provider:Y,imageModelInfo:W.image,objectStorage:X.objectStorage,allowHttpExternalUrls:Z1().localMode}),j);if(G&&W.webSearch){let C=Q$1({provider:G,modelInfo:W.webSearch,ctx:X,mode:"quick",toolName:"web_search"});q.web_search=X$1($,{researchJob:C,toolOutputMap:U,taskId:D})}if(J&&W.deepResearch){let C=Q$1({provider:J,modelInfo:W.deepResearch,ctx:X,mode:"deep",toolName:"deep_research"});q.deep_research=X$1($,{researchJob:C,toolOutputMap:U,taskId:D,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 C={baseUrl:C_,token:process.env.BROWSERLESS_TOKEN};if(q.take_screenshot=eq8($,{objectStorage:X.objectStorage,toolOutputMap:U,pendingImages:F}),X.objectStorage)q.scrape_url=QM8($,{browserless:C,objectStorage:X.objectStorage,toolOutputMap:U}),q.inspect_page=JM8($,{browserless:C,objectStorage:X.objectStorage,toolOutputMap:U})}return q}function ph4($,Z,X){let Q=Z.organization.id,Y=X.auth?.user?.id,G={};for(let[J,K]of Object.entries($)){let W=K,H=W.execute;if(typeof H!=="function"){G[J]=K;continue}let N=ih4[J],U=H.constructor?.name==="AsyncGeneratorFunction",F=(B,L)=>{if(!Q||!Y)return;n1.capture({distinctId:Y,event:"tool_called",groups:{organization:Q},properties:{organization_id:Q,tool_source:"builtin",tool_name:J,tool_safe_name:J,read_only:N?.readOnly??null,destructive:N?.destructive??null,idempotent:null,open_world:null,latency_ms:Math.round(B),is_error:L}})},w=U?async function*(B,L){let D=performance.now(),E=!1;try{yield*H.call(W,B,L)}catch(z){throw E=!0,z}finally{F(performance.now()-D,E)}}:async(B,L)=>{let D=performance.now(),E=!1;try{return await H.call(W,B,L)}catch(z){throw E=!0,z}finally{F(performance.now()-D,E)}};G[J]={...W,execute:w}}return G}async function wj0($,Z,X){let Q=await nh4($,Z,X),Y=ph4(Q,Z,X);if(!Z.isPlanMode){let{propose_plan:G,...J}=Y;return J}return Y}function jM8($){let{ctx:Z,writer:X,toolOutputMap:Q,subtaskParams:Y,planMode:G}=$,J={user_ask:Yj0,todo_write:Gj0,read_tool_output:Zj0({toolOutputMap:Q})};if(G)J.propose_plan=Kj0;if(Y.provider)J.subtask=U$1(X,Y,Z);return J}var ih4;var H$1=O(()=>{n4();Jr();cU();fq8();kz0();Vz0();F$1();t41();o41();hq8();r41();iq8();e41();Z$1();Rh();oq8();sq8();$M8();YM8();KM8();NM8();zM8();b8();ih4={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 PM8($){let Z=$.toolOutputMap??new Map,{tools:X,nameMap:Q}=await Qj0($.mcpClient,Z,$.writer,$.toolApprovalLevel,{disableOutputTruncation:!1,isPlanMode:$.planMode,timeoutMs:$j0,resolveArgs:$.resolveArgs,onToolCalled:$.onToolCalled,onPrOpened:$.onPrOpened}),Y=$.fullBuiltInParams?await wj0($.writer,{...$.fullBuiltInParams,toolOutputMap:Z},$.ctx):jM8({ctx:$.ctx,writer:$.writer,toolOutputMap:Z,subtaskParams:$.subtaskParams,planMode:$.planMode}),G=$.kind==="subagent"?Object.fromEntries(Object.entries(Y).filter(([K])=>!th4.includes(K))):Y;return{tools:{...X,...G},toolOutputMap:Z,nameMap:Q}}var th4;var AM8=O(()=>{Jr();H$1();th4=["subtask","user_ask","propose_plan"]});var Oj0={};B0(Oj0,{waitForSeed:()=>Yu4,seedLocalMode:()=>Zu4,pruneUndecryptableJwks:()=>IM8,markSeedComplete:()=>Qu4,isLocalMode:()=>PH,healLocalJwks:()=>sh4,getLocalAdminUser:()=>w$1,getLocalAdminPassword:()=>Bj0});import{symmetricDecrypt as oh4}from"better-auth/crypto";import{sql as TM8}from"kysely";import{userInfo as rh4}from"os";async function sh4(){let $=Z1();if(!$.localMode)return 0;if(!$.betterAuthSecret)return 0;return IM8(N6().db,$.betterAuthSecret)}async function IM8($,Z){let X;try{X=(await TM8`
|
|
2734
2734
|
select id, "privateKey" from jwks
|
|
2735
2735
|
`.execute($)).rows}catch(Y){if(Y?.code==="42P01")return 0;return console.warn("[local-mode] JWKS heal skipped \u2014 could not read jwks:",Y),0}let Q=0;for(let Y of X){let G=!0;try{await oh4({key:Z,data:JSON.parse(Y.privateKey)})}catch{G=!1}if(G)continue;try{await TM8`delete from jwks where id = ${Y.id}`.execute($),Q++}catch(J){console.warn(`[local-mode] JWKS heal could not delete stale key ${Y.id}:`,J)}}return Q}async function Bj0(){return"local-mode-default"}function qM8(){try{return rh4().username||"local"}catch{return"local"}}function eh4($){return $.charAt(0).toUpperCase()+$.slice(1)}async function $u4(){let $=N6(),Z=await $.db.selectFrom("user").select($.db.fn.countAll().as("count")).executeTakeFirst();return Number(Z?.count??0)===0}async function Zu4(){if(!await $u4())return!1;let Z=qM8(),X=`${Z}@${RM8}`,Q=eh4(Z),Y=await Bj0(),G=await k6.api.signUpEmail({body:{email:X,password:Y,name:Q}});if(!G?.user?.id)throw Error("Failed to create local admin user");let J=G.user.id,K=N6();await K.db.updateTable("user").set({role:"admin"}).where("id","=",J).execute();let W=`${Z}-local`.toLowerCase().replace(/[^a-z0-9-]/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,""),H=`${Q} Local`;return await K.db.updateTable("organization").set({name:H,slug:W}).where("id","in",(N)=>N.selectFrom("member").select("organizationId").where("userId","=",J)).execute(),!0}async function w$1(){let $=N6(),Z=qM8(),X=await $.db.selectFrom("user").where("email","=",`${Z}@${RM8}`).selectAll().executeTakeFirst();if(X)return X;return $.db.selectFrom("user").where("email","=",`${Z}@${ah4}`).selectAll().executeTakeFirst()}function PH(){return Z1().localMode}function Qu4(){MM8()}function Yu4(){return Xu4}var RM8="localhost.studio",ah4="localhost.mesh",MM8,Xu4;var y_=O(()=>{o7();b8();D3();Xu4=new Promise(($)=>{if(MM8=$,!PH())$()})});var kM8=O(()=>{S_()});function Ju4($){return $.type==="file"&&"mediaType"in $&&typeof $.mediaType==="string"&&Gu4.has($.mediaType)}function vM8($){let Z=$.match(/^data:([^;]+);base64,(.+)$/s);if(!Z)return null;let[,X,Q]=Z;try{let Y=atob(Q),G=new Uint8Array(Y.length);for(let J=0;J<Y.length;J++)G[J]=Y.charCodeAt(J);return{mimeType:X,bytes:G}}catch{return null}}function B$1($){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 Ku4($,Z,X,Q){if(!Q.objectStorage)return null;try{return await Q.objectStorage.put(Z,$,{contentType:X}),Z}catch(Y){return console.error("[file-materializer] Failed to upload file:",Y),null}}async function Fr($,Z){if(!Z.objectStorage)return null;try{return await Z.objectStorage.presignedGetUrl($,Wu4)}catch(X){return console.error("[file-materializer] Failed to generate presigned URL:",X),null}}function xM8($){try{return decodeURIComponent($)}catch{return $}}function SM8($,Z){let X=typeof $.filename==="string"&&$.filename.trim()?$.filename:`attachment.${B$1(Z)}`,Q=X.match(Hu4);if(Q?.[1])X=xM8(Q[1]);return[...X.split(/[\\/]/).pop()??X].filter((J)=>(J.codePointAt(0)??0)>=32).join("").trim()||`attachment.${B$1(Z)}`}function CM8($,Z){if(!Z.has($))return Z.add($),$;let X=$.lastIndexOf("."),Q=X>0?$.slice(0,X):$,Y=X>0?$.slice(X):"";for(let G=2;;G++){let J=`${Q} (${G})${Y}`;if(!Z.has(J))return Z.add(J),J}}async function _M8($,Z,X,Q,Y){if(!Y||!Q.orgFs)return console.warn("[file-materializer] uploads-volume write skipped",{hasThreadId:Boolean(Y),hasOrgFs:Boolean(Q.orgFs)}),null;try{let G=`${Y}/${X}`;return await Q.orgFs.write("uploads",G,$,{actor:Q.auth?.user?.id??"unknown",contentType:Z}),{key:LW("uploads",G),sandboxPath:`org/upload/${X}`}}catch(G){return console.error("[file-materializer] uploads-volume write failed:",G),null}}async function Lj0($,Z,X){if(!Z.organization)return $;let Q=Z.organization.slug;if(!Q)return $;let Y=$.findLastIndex((A)=>A.role==="user");if(Y===-1)return $;let G=$[Y],J=G.parts.filter((A)=>A.type==="file"&&("url"in A)&&typeof A.url==="string"&&A.url.startsWith("data:")),W=Boolean(X?.threadId&&Z.orgFs)?G.parts.flatMap((A)=>{if(A.type!=="text"||!("text"in A)||typeof A.text!=="string")return[];let P=A.text.match(Nu4);if(!P?.[1]||P[2]===void 0)return[];return[{name:xM8(P[1]),content:P[2]}]}):[];if(J.length===0&&W.length===0)return $;let H=new Set,N=J.flatMap((A)=>{if(A.type!=="file"||!("url"in A)||typeof A.url!=="string")return[];let P=vM8(A.url);if(!P)return[];let q=CM8(SM8(A,P.mimeType),H);return[{dataUrl:A.url,parsed:P,filename:q}]}),U=W.map(({name:A,content:P})=>({filename:CM8(SM8({filename:A},"text/plain"),H),content:P})),w=(await Promise.all([...N.map(async({dataUrl:A,parsed:P,filename:q})=>{let k=await _M8(P.bytes,P.mimeType,q,Z,X?.threadId);if(!k)return null;return{dataUrl:A,studioStorageUrl:R7(k.key),redirectUrl:sf(Z.baseUrl,Q,k.key),filename:q,sandboxPath:k.sandboxPath}}),...U.map(async({filename:A,content:P})=>{let q=await _M8(new TextEncoder().encode(P),bZ(A),A,Z,X?.threadId);if(!q)return null;return{dataUrl:null,studioStorageUrl:R7(q.key),redirectUrl:sf(Z.baseUrl,Q,q.key),filename:A,sandboxPath:q.sandboxPath}})])).filter((A)=>A!==null);if(w.length===0)return $;let B=w.map((A)=>A.sandboxPath?`- ${A.filename}: ${A.sandboxPath} (tool URL: ${A.studioStorageUrl})`:`- ${A.filename}: ${A.studioStorageUrl}`).join(`
|
|
2736
2736
|
`),L=w.some((A)=>A.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]
|