decocms 4.76.35 → 4.76.37
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-BbVU_M57.js → AlertCircle-CD7UU0mk.js} +1 -1
- package/dist/client/assets/{AreaChart-BEwS4xfn.js → AreaChart-T436zRar.js} +1 -1
- package/dist/client/assets/{ArrowUp-PqzaeRG8.js → ArrowUp-BxcgDC5i.js} +1 -1
- package/dist/client/assets/{ArrowUpRight-9m_AnJhd.js → ArrowUpRight-DpaK4iT6.js} +1 -1
- package/dist/client/assets/{Check-BrAbF38Z.js → Check-BbhLGS9R.js} +1 -1
- package/dist/client/assets/{CheckCircle-Br4CT5yr.js → CheckCircle-DJ-ItcNI.js} +1 -1
- package/dist/client/assets/{ChevronDown-e2nU__4J.js → ChevronDown-BJl661Aw.js} +1 -1
- package/dist/client/assets/{ChevronRight-DFgsLTlu.js → ChevronRight-DWSVoO5u.js} +1 -1
- package/dist/client/assets/{ChevronUp-CnvLCDT8.js → ChevronUp-qAdds7vg.js} +1 -1
- package/dist/client/assets/{Circle-BI0_EaQ5.js → Circle-C1voGXvD.js} +1 -1
- package/dist/client/assets/{Copy01-Cxf_i4iz.js → Copy01-BTaAwz3S.js} +1 -1
- package/dist/client/assets/{DotsVertical-D1Eiyvi4.js → DotsVertical-SXiPV5fo.js} +1 -1
- package/dist/client/assets/{Eye-DBAkIlqf.js → Eye-DeZK9mvd.js} +1 -1
- package/dist/client/assets/{FilterLines-CD7BD52o.js → FilterLines-CNEg7Mr7.js} +1 -1
- package/dist/client/assets/{Flag01-D47CtwKL.js → Flag01-BEYy9qFC.js} +1 -1
- package/dist/client/assets/{Globe01-xo32DInn.js → Globe01-Dbij8KO4.js} +1 -1
- package/dist/client/assets/{Globe04-Dzjn0n5C.js → Globe04-94kCWNzM.js} +1 -1
- package/dist/client/assets/{HardDrive-DnhIMIrn.js → HardDrive-7sc2-Dvj.js} +1 -1
- package/dist/client/assets/{Key01-D09etqSH.js → Key01-BySUqVlD.js} +1 -1
- package/dist/client/assets/{LayoutLeft-NSCTucqo.js → LayoutLeft-B_MR8JmL.js} +1 -1
- package/dist/client/assets/{LinkExternal01-Dj5uR4-z.js → LinkExternal01-CUnfNnuI.js} +1 -1
- package/dist/client/assets/{List-B9GLQatp.js → List-BxJ7wIZt.js} +1 -1
- package/dist/client/assets/{Monitor01-BckTVDSZ.js → Monitor01-BopbrKdf.js} +1 -1
- package/dist/client/assets/{Package-CHVkNDES.js → Package-CS58Z5pS.js} +1 -1
- package/dist/client/assets/{Palette-DsM4IR9t.js → Palette-mGbQbCQL.js} +1 -1
- package/dist/client/assets/{Play-BPNMts0R.js → Play-Wez4rSRp.js} +1 -1
- package/dist/client/assets/{Plus-DzPwwTp9.js → Plus-CsDWNOAO.js} +1 -1
- package/dist/client/assets/{SearchLg-DrOVigbL.js → SearchLg-CLtBmvwn.js} +1 -1
- package/dist/client/assets/{SearchMd-BFUW3fyX.js → SearchMd-D6R4kPaT.js} +1 -1
- package/dist/client/assets/{Settings02-B5a5bs_H.js → Settings02-C6wKidr6.js} +1 -1
- package/dist/client/assets/{Shield01-yduHziWq.js → Shield01-0t3nVgX0.js} +1 -1
- package/dist/client/assets/{Star01-CalIBh_k.js → Star01-CjbGtxhW.js} +1 -1
- package/dist/client/assets/{Stars01-Ce9VTahm.js → Stars01-s3gUABCl.js} +1 -1
- package/dist/client/assets/{Stars02-t2oea7AR.js → Stars02-AlrJEJdV.js} +1 -1
- package/dist/client/assets/{Sun-Bk2pZzu4.js → Sun-0xhXVU6d.js} +1 -1
- package/dist/client/assets/{SwitchHorizontal01-CUdzJhne.js → SwitchHorizontal01-BSwEsAga.js} +1 -1
- package/dist/client/assets/{Tool01-B3FteGN8.js → Tool01-Bq_TBuny.js} +1 -1
- package/dist/client/assets/{Tool02-CmfPcCg1.js → Tool02-BD5U5ZQj.js} +1 -1
- package/dist/client/assets/{Trash01-CzRKLFxp.js → Trash01-GxvjHN1T.js} +1 -1
- package/dist/client/assets/{TrendUp01-D6wNU5BR.js → TrendUp01-C5S2LMlp.js} +1 -1
- package/dist/client/assets/{Upload01-B29858XX.js → Upload01-3Dc8KoJr.js} +1 -1
- package/dist/client/assets/{User01-DcUFdXra.js → User01-BY67WUF2.js} +1 -1
- package/dist/client/assets/{UserPlus01-Dg_bjziF.js → UserPlus01-BfwH7jMO.js} +1 -1
- package/dist/client/assets/{Users01-DQmgvj1p.js → Users01-B29u1DFY.js} +1 -1
- package/dist/client/assets/{Users03-Dgw2XMR7.js → Users03-mv3nMnil.js} +1 -1
- package/dist/client/assets/{X-C2b9--gd.js → X-BzRb2dWC.js} +1 -1
- package/dist/client/assets/{XCircle-CPmPZh3u.js → XCircle-CcKBDjCD.js} +1 -1
- package/dist/client/assets/{XClose-BFgxHIUk.js → XClose-Pa2b33Pu.js} +1 -1
- package/dist/client/assets/{Zap-on_bJtWO.js → Zap-DhTnIP19.js} +1 -1
- package/dist/client/assets/{ZapSquare-DWCM1jwB.js → ZapSquare-BCUQVPqh.js} +1 -1
- package/dist/client/assets/{ZoomOut-__9fdq3G.js → ZoomOut-97ejeUvX.js} +1 -1
- package/dist/client/assets/{access-gate-LnPyy-ri.js → access-gate-BmxcoEEI.js} +1 -1
- package/dist/client/assets/{add-section-modal-B02SUfWM.js → add-section-modal-BIqU7e3V.js} +1 -1
- package/dist/client/assets/{agent-icon--blbl_Up.js → agent-icon-g2Fjcp0s.js} +1 -1
- package/dist/client/assets/{agents-list-DTUM8F4e.js → agents-list-D31wwdSf.js} +1 -1
- package/dist/client/assets/{ai-providers-CnPGumvg.js → ai-providers-CtHNwtIC.js} +1 -1
- package/dist/client/assets/{alert-CNgQ_vl1.js → alert-BsqXlqT0.js} +1 -1
- package/dist/client/assets/{alert-dialog-DzHlILxF.js → alert-dialog-BcyPgt7e.js} +1 -1
- package/dist/client/assets/app-editor-_sUAtWsE.js +1 -0
- package/dist/client/assets/{auth-catchall-Cp7uSiwQ.js → auth-catchall-BhWZUeXs.js} +1 -1
- package/dist/client/assets/{auth-entry-D85Y_bB5.js → auth-entry-CByw_ftX.js} +1 -1
- package/dist/client/assets/{auth-Bt_2G4Rk.js → auth-mS7Judfo.js} +1 -1
- package/dist/client/assets/{auth-split-layout-B-3mbMJL.js → auth-split-layout-C2P-gcr6.js} +1 -1
- package/dist/client/assets/{authenticate-and-persist-oauth-B5F7gAt5.js → authenticate-and-persist-oauth-CYeQlxXy.js} +1 -1
- package/dist/client/assets/{automation-list-row-TVILK-Vw.js → automation-list-row-s6wPN8dy.js} +1 -1
- package/dist/client/assets/{automation-runs-DCoeKfw4.js → automation-runs-GEX5t4nj.js} +1 -1
- package/dist/client/assets/automations-YyiyQ7UF.js +1 -0
- package/dist/client/assets/{autosend-UcSdf6rI.js → autosend-BFqNvBmz.js} +1 -1
- package/dist/client/assets/{avatar-Cso_SdNF.js → avatar-BvGvybYL.js} +1 -1
- package/dist/client/assets/{badge-Cl7EzYya.js → badge-B3z8DOuZ.js} +1 -1
- package/dist/client/assets/{block-document-B6S0yhQj.js → block-document-DyL5pqL9.js} +1 -1
- package/dist/client/assets/{brand-context-BRS9eG4O.js → brand-context-Do93ycEn.js} +1 -1
- package/dist/client/assets/{buckets-BYQWbtMn.js → buckets-DbvEjYpg.js} +1 -1
- package/dist/client/assets/{bulk-category-panel-F69j0vCX.js → bulk-category-panel-BoeCfyG6.js} +1 -1
- package/dist/client/assets/{calendar-BJKibYpy.js → calendar-G_0cuISU.js} +1 -1
- package/dist/client/assets/{capability-load-error-Dp3m9Dyq.js → capability-load-error-BtM04wRs.js} +1 -1
- package/dist/client/assets/{card-BN2DHlPa.js → card-BHyBEXt7.js} +1 -1
- package/dist/client/assets/{category-editor-C2DIFbHM.js → category-editor-BSGi46W3.js} +1 -1
- package/dist/client/assets/{chat-context-BUPn43IG.js → chat-context-BKevbSa9.js} +1 -1
- package/dist/client/assets/{checkbox-xhBSxaZ7.js → checkbox-BuxrR5Ir.js} +1 -1
- package/dist/client/assets/{cli-auth-success-BL-Ubhb9.js → cli-auth-success-Cc0V-ASJ.js} +1 -1
- package/dist/client/assets/{collection-detail-DXySkTU2.js → collection-detail-DYBh0TUq.js} +1 -1
- package/dist/client/assets/{collection-display-button-D9Hqc4LK.js → collection-display-button-EEZV94J2.js} +1 -1
- package/dist/client/assets/{collection-search-CDN9r0KR.js → collection-search-Bx5xuGhc.js} +1 -1
- package/dist/client/assets/{collection-table-wrapper-QezGAaj9.js → collection-table-wrapper-B_iQVxT0.js} +1 -1
- package/dist/client/assets/{collection-tabs-Di-R4fwD.js → collection-tabs-CnTFLyDb.js} +1 -1
- package/dist/client/assets/{command-CnnmDj3l.js → command-Bxov-yex.js} +1 -1
- package/dist/client/assets/{commerce-onboarding-BJAJ0n-z.js → commerce-onboarding-D5HSgcIr.js} +1 -1
- package/dist/client/assets/{companions-core-BvI6dVTD.js → companions-core-D4i2X6nt.js} +1 -1
- package/dist/client/assets/{connect-desktop-dialog-8QknLnNa.js → connect-desktop-dialog-DPS7ddA8.js} +1 -1
- package/dist/client/assets/{connection-card-CapXTCnm.js → connection-card-BacVj75V.js} +1 -1
- package/dist/client/assets/{connection-detail-DnKGL-dX.js → connection-detail-6KAmdvUF.js} +1 -1
- package/dist/client/assets/{connection-form-helpers-B79kn3fW.js → connection-form-helpers-DFLPoq9v.js} +1 -1
- package/dist/client/assets/{connections-klUdPps_.js → connections-By5V06l0.js} +1 -1
- package/dist/client/assets/{decopilot-sse-pool-OHD56Uqb.js → decopilot-sse-pool-DpCwOsT-.js} +1 -1
- package/dist/client/assets/{dialog-CdRNMfnk.js → dialog-Bb06KpUS.js} +1 -1
- package/dist/client/assets/{domain-settings-hdMqelwq.js → domain-settings-JHoGNZKG.js} +1 -1
- package/dist/client/assets/{drawer-Z-10e_W1.js → drawer-D4SaGPts.js} +1 -1
- package/dist/client/assets/{dropdown-menu-CkieeFhq.js → dropdown-menu-Bp3al6MQ.js} +1 -1
- package/dist/client/assets/{empty-state-CZWIOpF6.js → empty-state-DbSzqQLg.js} +1 -1
- package/dist/client/assets/{extract-connection-data-Difbi8AR.js → extract-connection-data-COiGrd_8.js} +1 -1
- package/dist/client/assets/{file-explorer-CDQBkzBn.js → file-explorer-CfkR-vW4.js} +1 -1
- package/dist/client/assets/{file-type-icon-wgFD8huU.js → file-type-icon-DnQSWj3Y.js} +1 -1
- package/dist/client/assets/{files-CjLKJOdB.js → files-CAyt19cK.js} +1 -1
- package/dist/client/assets/{form-B4j-tP32.js → form-DbKfzITy.js} +1 -1
- package/dist/client/assets/{general-BNaR8PN3.js → general-BDjPQYx6.js} +1 -1
- package/dist/client/assets/{github-repo-picker-DWJ1aQ4b.js → github-repo-picker-Ow7Za68m.js} +1 -1
- package/dist/client/assets/{hooks-B4Z_1715.js → hooks-DT8-Wo08.js} +1 -1
- package/dist/client/assets/{index-DC--WTDk.js → index-B6LwR9Nc.js} +7 -7
- package/dist/client/assets/{index-CLOHAR7s.js → index-B_1mkaHZ.js} +3 -3
- package/dist/client/assets/{index-DsK25eRU.js → index-BbplzGv2.js} +1 -1
- package/dist/client/assets/index-BnQPLq3D.css +1 -0
- package/dist/client/assets/{index-BRPl8I7z.js → index-CCnCq4e-.js} +1 -1
- package/dist/client/assets/{index-BWst5sbJ.js → index-CsFoaqcb.js} +1 -1
- package/dist/client/assets/{index-DfSA0tZk.js → index-CvM0I3Jk.js} +1 -1
- package/dist/client/assets/{index-BwtkU0PO.js → index-D23rd-Jw.js} +1 -1
- package/dist/client/assets/{index-gSf41Kxa.js → index-DLU8MAVc.js} +1 -1
- package/dist/client/assets/{index-4ny2QZgI.js → index-Dc5OxhqU.js} +1 -1
- package/dist/client/assets/{index-DcWnG8kT.js → index-DpU03QjV.js} +1 -1
- package/dist/client/assets/{index-Cewz4ExB.js → index-DqPMGylU.js} +2 -2
- package/dist/client/assets/{index-9Vz0RaTa.js → index-_WsX8vqH.js} +1 -1
- package/dist/client/assets/{index-Dr4Ft1Rw.js → index-i5hDjsGh.js} +1 -1
- package/dist/client/assets/{index-redirect-Bz8zGt1N.js → index-redirect-DGOwDPeB.js} +1 -1
- package/dist/client/assets/{index-f5L5uGqq.js → index-tqIdcpBL.js} +1 -1
- package/dist/client/assets/{input-B4DelTP-.js → input-DBAxX0uL.js} +1 -1
- package/dist/client/assets/{integration-icon-DwbT0T2-.js → integration-icon-s4jWULIC.js} +1 -1
- package/dist/client/assets/{invite-member-dialog-BDIri1Pz.js → invite-member-dialog-BQ4dhQgS.js} +1 -1
- package/dist/client/assets/{label-sclq-WPT.js → label-D81RkQ_E.js} +1 -1
- package/dist/client/assets/{layout-BHEsZMIi.js → layout-BqIpNdRO.js} +1 -1
- package/dist/client/assets/{login-BoE2ioFi.js → login-CrEKDaWM.js} +1 -1
- package/dist/client/assets/{mcp-oauth-Cfb67Fpt.js → mcp-oauth-Bv_CVma3.js} +1 -1
- package/dist/client/assets/{members-Dv6h5tnp.js → members-C3K_94wv.js} +1 -1
- package/dist/client/assets/{monaco-editor-DRFeLj3A.js → monaco-editor-B6tNMr2j.js} +1 -1
- package/dist/client/assets/{monitoring-stats-row-CsRYj4j4.js → monitoring-stats-row-DQ2a4sAV.js} +1 -1
- package/dist/client/assets/{oauth-callback-C86N-NqF.js → oauth-callback-DOFV2r0-.js} +1 -1
- package/dist/client/assets/{oauth-callback-ai-provider-DNAUw0PR.js → oauth-callback-ai-provider-C_vABSYT.js} +1 -1
- package/dist/client/assets/{onboarding-D3839ArR.js → onboarding-hxZelcnR.js} +1 -1
- package/dist/client/assets/{org-install-JMuZ1SAv.js → org-install-CtzoMJPL.js} +1 -1
- package/dist/client/assets/{org-layout-BCWvWGvZ.js → org-layout-DsVonSv3.js} +1 -1
- package/dist/client/assets/{organization-choice-CheaEaXi.js → organization-choice-Cl2AAX44.js} +1 -1
- package/dist/client/assets/{orgs-DxWlSMWY.js → orgs-DTbCWUG4.js} +1 -1
- package/dist/client/assets/{page-seo-form-BCiJYL6k.js → page-seo-form-CODjSs13.js} +1 -1
- package/dist/client/assets/page-seo-sheet-Cev8qZXh.js +1 -0
- package/dist/client/assets/{popover-C4AXYMwO.js → popover-CJJGvHmL.js} +1 -1
- package/dist/client/assets/{post-editor-04lW2qPn.js → post-editor-C-ngxIBm.js} +1 -1
- package/dist/client/assets/{primitives-BoXorPhN.js → primitives-Cngh821N.js} +1 -1
- package/dist/client/assets/{profile-CLAKiufa.js → profile-C94m4i76.js} +1 -1
- package/dist/client/assets/project-app-view-dLFFEtAK.js +1 -0
- package/dist/client/assets/record-editor-ChJ7KdIo.js +1 -0
- package/dist/client/assets/redirect-editor-t1R558HH.js +1 -0
- package/dist/client/assets/registry-B_uDXdKX.js +2 -0
- package/dist/client/assets/{registry-layout-NnLt-NZ-.js → registry-layout-P-vPLjZ1.js} +1 -1
- package/dist/client/assets/{reports-DL9I9LOW.js → reports-Dstg-k7i.js} +1 -1
- package/dist/client/assets/{require-capability-n-Ljl8zY.js → require-capability-Cg40liT-.js} +1 -1
- package/dist/client/assets/{required-auth-layout-BH8MtWFO.js → required-auth-layout-DuXVA9e-.js} +1 -1
- package/dist/client/assets/{reset-password-FGamR2nK.js → reset-password-Cjqbi7Zc.js} +1 -1
- package/dist/client/assets/{roles-Cwi_xySg.js → roles-Culjb49y.js} +1 -1
- package/dist/client/assets/{search-input-0vDnHguv.js → search-input-CMIYVuvu.js} +1 -1
- package/dist/client/assets/{secrets-E_xVXpOj.js → secrets-BxtubbpZ.js} +1 -1
- package/dist/client/assets/{sections-editor-Cj-2FfX4.js → sections-editor-BkfT81Ia.js} +1 -1
- package/dist/client/assets/{select-DWW1tCso.js → select-BxnZ85S7.js} +1 -1
- package/dist/client/assets/{select-model-BOop-ftz.js → select-model-Bm-REDJo.js} +1 -1
- package/dist/client/assets/{self-tool-result-CrJqL8ES.js → self-tool-result-BbQVTDek.js} +1 -1
- package/dist/client/assets/{seo-editor-B6gOcNHu.js → seo-editor-C28_jGwN.js} +1 -1
- package/dist/client/assets/{settings-layout-BZtPubzR.js → settings-layout-D3RJO__9.js} +1 -1
- package/dist/client/assets/{settings-section-BUrd0ZsN.js → settings-section-T1xQl-Ul.js} +1 -1
- package/dist/client/assets/{shell-controls-BdqAMHMK.js → shell-controls-PfzXjhl6.js} +1 -1
- package/dist/client/assets/{shell-layout-VbEtsgyW.js → shell-layout-DZtnQuMU.js} +1 -1
- package/dist/client/assets/{sidebar-D9WV5ZAP.js → sidebar-OrT2BPDa.js} +1 -1
- package/dist/client/assets/{skeleton-tt8GwfmJ.js → skeleton-F0FOHOIG.js} +1 -1
- package/dist/client/assets/{sso-BRDvINgQ.js → sso-BXoEGwdy.js} +1 -1
- package/dist/client/assets/{store-Bcas022h.js → store-CgMWGd7t.js} +1 -1
- package/dist/client/assets/store-registry-BbZZdcoe.js +2 -0
- package/dist/client/assets/{studio-tools-1flesIBS.js → studio-tools-Dfrou8Tl.js} +1 -1
- package/dist/client/assets/{switch-ByghmIsQ.js → switch-BM3vqg5f.js} +1 -1
- package/dist/client/assets/{table-CrW9Vme2.js → table-Bm-yGaUw.js} +1 -1
- package/dist/client/assets/{tabs-C4q5mFWj.js → tabs-Cj4QXKj0.js} +1 -1
- package/dist/client/assets/{textarea-CD9VN86Z.js → textarea-CwmlEesY.js} +1 -1
- package/dist/client/assets/{toggle-group-B2_GzdKJ.js → toggle-group-D4NsmAiD.js} +1 -1
- package/dist/client/assets/{toolbar-D5kA-v9S.js → toolbar-B-PaBPiC.js} +1 -1
- package/dist/client/assets/{toolbar-icon-button-DR-ID7ih.js → toolbar-icon-button-BZxtVjHP.js} +1 -1
- package/dist/client/assets/{tools-list-BhvK4UcU.js → tools-list-DMJeB3LC.js} +1 -1
- package/dist/client/assets/{tooltip-DQLHEX-8.js → tooltip-D-K0d1iz.js} +1 -1
- package/dist/client/assets/{use-ai-providers-BDlVuGzv.js → use-ai-providers-DAnQ1yU3.js} +1 -1
- package/dist/client/assets/{use-automations-RsuDI0-r.js → use-automations-GuGD80Sh.js} +1 -1
- package/dist/client/assets/{use-autosave-8JtDMMor.js → use-autosave-C206ZFpG.js} +1 -1
- package/dist/client/assets/{use-capability-TZECvtFx.js → use-capability-C9l0eUAr.js} +1 -1
- package/dist/client/assets/{use-clock-tick-j8abP1IV.js → use-clock-tick-JpYlekfC.js} +1 -1
- package/dist/client/assets/{use-collections-CJvaHCo-.js → use-collections-CnKLZMz6.js} +1 -1
- package/dist/client/assets/{use-connection-DnvOYRLh.js → use-connection-2D02qyHW.js} +1 -1
- package/dist/client/assets/{use-copy-5Df3V-Qz.js → use-copy-Zd3B1nUo.js} +1 -1
- package/dist/client/assets/{use-create-virtual-mcp-oBd0jhT2.js → use-create-virtual-mcp-XzL-18xe.js} +1 -1
- package/dist/client/assets/{use-debounced-autosave-Chof10Yg.js → use-debounced-autosave-aqvHmHKL.js} +1 -1
- package/dist/client/assets/{use-debounced-value-aW1wCxqF.js → use-debounced-value-ByNhJ339.js} +1 -1
- package/dist/client/assets/{use-deco-credits-CxQZBnHY.js → use-deco-credits-AKpYMx_g.js} +1 -1
- package/dist/client/assets/{use-decopilot-events-CY6zVMmP.js → use-decopilot-events-CBFUEQVI.js} +1 -1
- package/dist/client/assets/{use-delete-connection-bDWwuu_s.js → use-delete-connection-D5bi50UF.js} +1 -1
- package/dist/client/assets/{use-deployment-admin-BrFirsu7.js → use-deployment-admin-Bw9bvWGc.js} +1 -1
- package/dist/client/assets/{use-file-configs-DgEHQv4W.js → use-file-configs-CaqpWXPI.js} +1 -1
- package/dist/client/assets/{use-infinite-scroll-g14sU8yP.js → use-infinite-scroll-C_xSsisO.js} +1 -1
- package/dist/client/assets/{use-join-requests-Bimtvora.js → use-join-requests-L30gEJ3X.js} +1 -1
- package/dist/client/assets/{use-mcp-client-DYYg4u_m.js → use-mcp-client-C2-LgojR.js} +1 -1
- package/dist/client/assets/{use-mcp-tools-C4PXeo0g.js → use-mcp-tools-DEmmldu4.js} +1 -1
- package/dist/client/assets/{use-members-BFQbrbYN.js → use-members-u9Vx_6cK.js} +1 -1
- package/dist/client/assets/{use-mobile-CyxN2S1v.js → use-mobile-Cmc7I9Ot.js} +1 -1
- package/dist/client/assets/{use-navigate-to-agent-uDMhARUE.js → use-navigate-to-agent-CqYmXmBo.js} +1 -1
- package/dist/client/assets/{use-org-auth-client-CXkgeuFb.js → use-org-auth-client-ChFbxLrW.js} +1 -1
- package/dist/client/assets/{use-org-sso-CbZ9GMuk.js → use-org-sso-BAZamkLP.js} +1 -1
- package/dist/client/assets/{use-organization-roles-C4zSI1QY.js → use-organization-roles-DQ8pkt-J.js} +1 -1
- package/dist/client/assets/{use-organization-settings-Gv9kbPB6.js → use-organization-settings-l1q9QxIF.js} +1 -1
- package/dist/client/assets/{use-registry-connections-D8p8kqGb.js → use-registry-connections-DhobN5IN.js} +1 -1
- package/dist/client/assets/{use-secrets-DY-hjr_M.js → use-secrets-BQA0GsoD.js} +1 -1
- package/dist/client/assets/{use-status-sounds-BNeh2P8H.js → use-status-sounds-CI4DJgeP.js} +1 -1
- package/dist/client/assets/{use-view-mode-BoAJ6Unt.js → use-view-mode-D-atO7m6.js} +1 -1
- package/dist/client/assets/{use-virtual-mcp-DvQvRquO.js → use-virtual-mcp-C8RMjRFj.js} +1 -1
- package/dist/client/assets/useInfiniteQuery-DQzRHsRg.js +1 -0
- package/dist/client/assets/{useRouterState-45BdFVm9.js → useRouterState-CZLjycRG.js} +1 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-CM7s5wvG.js +1 -0
- package/dist/client/assets/{users-Coi8guhF.js → users-D5QGNI86.js} +1 -1
- package/dist/client/assets/{variant-calendar-qexqRLVO.js → variant-calendar-CLsbtwNM.js} +1 -1
- package/dist/client/assets/{view-mode-toggle-BKAWFOxW.js → view-mode-toggle-CMOBcqYe.js} +1 -1
- package/dist/client/index.html +2 -2
- package/dist/server/cli.js +2 -2
- package/dist/server/server.js +2 -2
- package/package.json +1 -1
- package/dist/client/assets/app-editor-BvUMldX_.js +0 -1
- package/dist/client/assets/automations-C11NHy35.js +0 -1
- package/dist/client/assets/index-_SL9bbAR.css +0 -1
- package/dist/client/assets/page-seo-sheet-C1JF0JlP.js +0 -1
- package/dist/client/assets/project-app-view-CyiHjK6J.js +0 -1
- package/dist/client/assets/record-editor-C3XQG7Ai.js +0 -1
- package/dist/client/assets/redirect-editor-ClyZvdyG.js +0 -1
- package/dist/client/assets/registry-DOMe0Vk-.js +0 -2
- package/dist/client/assets/store-registry-CZ7kpR-6.js +0 -2
- package/dist/client/assets/useInfiniteQuery-DJjbpAUC.js +0 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-Bwzj4n9g.js +0 -1
package/dist/server/cli.js
CHANGED
|
@@ -84517,7 +84517,7 @@ ${$}`;h(N);return}if(E(null,y),t.strategy==="count"){if(w--,w===0)h()}if(t.strat
|
|
|
84517
84517
|
`);function h(_){if(t===void 0)return!0;let v=sM(_),D=v&&sM(t)?bmu(t):t,n=v?bmu(_):Cmu(_),O=yCt(D,n);return O===""||!O.startsWith("..")&&!OCt(O)}return{upsert(_){f.run({$handle:_.handle,$status:_.status,$sandboxPath:_.sandboxPath,$port:_.port??null,$previewUrl:_.previewUrl??null,$repoCloneUrl:_.repoCloneUrl??null,$branch:_.branch??null,$projectName:_.projectName??null,$error:_.error??null,$now:Date.now()})},list(){return l.all().map(j1i)},reconcile(){let _=Date.now();for(let v of l.all().map(j1i)){if(!h(v.sandboxPath)){c.run({$handle:v.handle,$now:_});continue}if(!sM(v.sandboxPath)){E.run({$handle:v.handle,$now:_});continue}if(v.status==="spawning"||v.status==="ready"||v.status==="failed"||v.status==="missing")$.run({$handle:v.handle,$now:_})}return l.all().map(j1i)},prune(_){let v=[],D=[],n=this.reconcile();for(let O of n){if(!h(O.sandboxPath)){D.push({handle:O.handle,sandboxPath:O.sandboxPath,reason:"outside_root",deletedFiles:!1});continue}if(_.missing&&O.status==="missing"){w.run({$handle:O.handle}),v.push({handle:O.handle,sandboxPath:O.sandboxPath,reason:"missing",deletedFiles:!1});continue}if(!_.merged||!sM(O.sandboxPath))continue;if(O.branch===null||O.branch.trim()===""){D.push({handle:O.handle,sandboxPath:O.sandboxPath,reason:"no_branch",deletedFiles:!1});continue}if(!y2(O.sandboxPath,["rev-parse","--is-inside-work-tree"]).ok){D.push({handle:O.handle,sandboxPath:O.sandboxPath,reason:"git_unavailable",deletedFiles:!1});continue}let N=y2(O.sandboxPath,["status","--porcelain"]);if(!N.ok){D.push({handle:O.handle,sandboxPath:O.sandboxPath,reason:"git_unavailable",deletedFiles:!1});continue}if(N.stdout.trim()!==""){D.push({handle:O.handle,sandboxPath:O.sandboxPath,reason:"dirty_worktree",deletedFiles:!1});continue}let y=qmu(O.sandboxPath,O.branch);if(y===null){D.push({handle:O.handle,sandboxPath:O.sandboxPath,reason:"git_unavailable",deletedFiles:!1});continue}if(!y){D.push({handle:O.handle,sandboxPath:O.sandboxPath,reason:"branch_not_merged",deletedFiles:!1});continue}nCt(O.sandboxPath,{recursive:!0,force:!0}),w.run({$handle:O.handle}),v.push({handle:O.handle,sandboxPath:O.sandboxPath,reason:"merged",deletedFiles:!0})}return{removed:v,skipped:D}},delete(_){w.run({$handle:_})},inspect(_){let v=d.get({$handle:_});if(v===null)return null;let D=j1i(v),n=0,O=null;if(sM(D.sandboxPath)&&y2(D.sandboxPath,["rev-parse","--is-inside-work-tree"]).ok){let N=y2(D.sandboxPath,["status","--porcelain"]);if(N.ok){let y=N.stdout.trim();n=y===""?0:y.split(`
|
|
84518
84518
|
`).length}if(D.branch!==null&&D.branch.trim()!=="")O=qmu(D.sandboxPath,D.branch)}return{handle:D.handle,branch:D.branch,sandboxPath:D.sandboxPath,dirtyCount:n,merged:O}},close(){u.close()}}}var KRi=()=>{};function FCt(i,u){return u?[["umount","-f",i]]:[["fusermount","-uz",i],["umount","-l",i]]}function rmu(i,u){if(process.platform==="win32")return;for(let t of FCt(i,u))if(Bun.spawnSync(t,{stdout:"ignore",stderr:"ignore",timeout:5000}).exitCode===0)break}var mmu=()=>{};import{existsSync as UCt,readdirSync as PCt}from"fs";import{rm as ACt}from"fs/promises";import{join as emu}from"path";async function amu(i,u={}){let t=u.detach??ICt,f=u.exists??UCt,l=u.readdir??(($)=>PCt($)),c=u.rm??(($)=>ACt($,{recursive:!0,force:!0})),E=emu(i,"org");if(f(E))for(let $ of l(E))t(emu(E,$));await c(i)}var ICt=(i)=>rmu(i,process.platform==="darwin");var omu=g(()=>{mmu()});import{join as xCt}from"path";function smu(i){let u=i.purge??amu;return{stopSandbox(t){return i.provider.deleteSandbox(t)},inspectSandbox(t){return i.registry.inspect(t)},async removeSandbox(t){try{return await Cl(async()=>{if(await i.provider.deleteSandbox(t),i.provider.hasHandle(t))throw Error("Can't delete \u2014 run in progress");let l=i.registry.inspect(t)?.sandboxPath??xCt(i.dataDir,"sandboxes",t);await u(l)},{maxAttempts:2,minTimeout:250,jitter:0}),i.registry.delete(t),{ok:!0}}catch(f){let l=f instanceof Wc?f.cause:f;return{ok:!1,error:l instanceof Error?l.message:String(l)}}}}}var pmu=g(()=>{y4();omu()});import{randomBytes as kCt}from"crypto";import{mkdir as GCt}from"fs/promises";import{createServer as SCt}from"net";import{join as jCt}from"path";function ieu(i,u){return Error(`sandbox failed to start: ${i}`,{cause:u})}function KCt(i){if(!(i instanceof Error))return!1;return i.name==="TimeoutError"||/timed out|timeout|operation was aborted|aborted/i.test(i.message)}function ueu(i){if(i instanceof Error){let u=i.cause;if(u instanceof Error&&u.message)return u.message;return i.message}return String(i)}function JCt(i){if(!i)return null;let u=i.trim().replace(/\/+$/,"");if(!u)return null;let t=u.split(/[/:]/).filter(Boolean).at(-1);if(!t)return null;return t.replace(/\.git$/i,"")||null}function XCt(i){return{repoCloneUrl:i.repo?.cloneUrl??null,branch:i.repo?.branch??null,projectName:JCt(i.repo?.cloneUrl)}}function teu(i){let u=i.maxSandboxes??20,t=new Map,f=i.pickPort??LCt,l=i.fetchImpl??fetch,c=i.resolvePreviewUrl??((n,O)=>`http://127.0.0.1:${O}`),E=(n)=>jCt(i.dataDir,"sandboxes",n),$=(n)=>{try{i.registry?.upsert(n)}catch(O){console.warn(`[user-desktop] failed to persist sandbox lifecycle handle=${n.handle} status=${n.status}:`,O)}},w=(n)=>{try{i.onEvent?.(n)}catch{}},d=async(n)=>{let O=new AbortController,N=setTimeout(()=>O.abort(),1500);try{let y=await l(`${n}/health`,{signal:O.signal});if(!y.ok)console.warn(`[user-desktop] probe ${n}/health \u2192 ${y.status} (treating as dead)`);return y.ok}catch(y){return console.warn(`[user-desktop] probe ${n}/health failed: ${y instanceof Error?y.message:String(y)} (treating as dead)`),!1}finally{clearTimeout(N)}},h=(n)=>{console.warn(`[user-desktop] evicting dead daemon handle=${n.handle} port=${n.port}`);try{n.process.kill("SIGTERM")}catch{}if(t.get(n.handle)===n)t.delete(n.handle),$({handle:n.handle,status:"stopped",sandboxPath:E(n.handle),port:null,previewUrl:null,...n.registryMetadata,error:null}),w({handle:n.handle,phase:"evicted"})},_=new Map;function v(){if(t.size<u)return;let n=[...t.values()].filter((N)=>N.activeDispatchCount===0).sort((N,y)=>N.lastUsedAt-y.lastUsedAt);if(n.length===0){console.warn(`[user-desktop] at cap ${t.size}/${u} but every sandbox is pinned (active dispatch) \u2014 exceeding cap temporarily`);return}let O=n[0];console.log(`[user-desktop] evicting LRU victim handle=${O.handle} port=${O.port} (cap ${u} reached, size=${t.size})`);try{O.process.kill("SIGTERM")}catch{}t.delete(O.handle),$({handle:O.handle,status:"stopped",sandboxPath:E(O.handle),port:null,previewUrl:null,...O.registryMetadata,error:null}),w({handle:O.handle,phase:"evicted"})}let D=async(n)=>{let O=XCt(n),N=E(n.handle);$({handle:n.handle,status:"spawning",sandboxPath:N,port:null,previewUrl:null,...O,error:null}),w({handle:n.handle,phase:"spawning",sandboxPath:N,projectName:O.projectName,branch:O.branch}),v();let y,Z=null,T;try{await GCt(N,{recursive:!0}),console.log(`[user-desktop] ensure handle=${n.handle} repo=${n.repo?.cloneUrl??"(none)"} branch=${n.repo?.branch??"(none)"} runtime=${n.workload?.runtime??"(autodetect)"} pm=${n.workload?.packageManager??"(autodetect)"}`),T=kCt(24).toString("hex");let[G,I]=await Promise.all([f(),f()]);y=G,console.log(`[user-desktop] spawn handle=${n.handle} port=${y} devPort=${I} workdir=${N}`),Z=await Promise.resolve(i.spawnDaemon({workdir:N,handle:n.handle,port:y,daemonToken:T,offloadAllowedHosts:n.offloadAllowedHosts??[],offloadAllowSameHostDev:n.offloadAllowSameHostDev??!1,orgFsConfigJson:n.orgFsConfigJson}));try{await i.waitForHealth(y)}catch(k){throw ieu("the sandbox didn't come online in time",k)}console.log(`[user-desktop] healthy handle=${n.handle} port=${y} \u2014 posting config`);try{await i.postConfig(y,I,{repo:n.repo,workload:n.workload,operator:n.operator},T)}catch(k){throw ieu(KCt(k)?"configuration timed out":"the sandbox rejected its configuration",k)}}catch(G){if(console.error(`[user-desktop] sandbox bring-up failed handle=${n.handle} port=${y??"(none)"}${Z?" (killing daemon)":""}:`,G),Z)try{Z.kill("SIGKILL")}catch{}throw w({handle:n.handle,phase:"failed",error:ueu(G),sandboxPath:N,projectName:O.projectName,branch:O.branch}),$({handle:n.handle,status:"failed",sandboxPath:N,port:null,previewUrl:null,...O,error:ueu(G)}),G}if(!Z||y===void 0)throw Error("sandbox bring-up invariant violated");let B=`http://127.0.0.1:${y}`,F=c(n.handle,y);console.log(`[user-desktop] ready handle=${n.handle} port=${y} sandboxApiUrl=${B} previewUrl=${F}`);let A={handle:n.handle,port:y,process:Z,sandboxApiUrl:B,previewUrl:F,lastUsedAt:Date.now(),activeDispatchCount:0,daemonToken:T,registryMetadata:O};if(t.set(n.handle,A),$({handle:n.handle,status:"ready",sandboxPath:N,port:y,previewUrl:F,...O,error:null}),w({handle:n.handle,phase:"ready",port:y,previewUrl:F,sandboxPath:N,projectName:O.projectName,branch:O.branch}),Z.exited)Z.exited.then(()=>{if(t.get(n.handle)===A)console.warn(`[user-desktop] daemon process exited unexpectedly handle=${n.handle} port=${y} \u2014 removing from cache`),t.delete(n.handle),$({handle:n.handle,status:"stopped",sandboxPath:N,port:null,previewUrl:null,...O,error:null}),w({handle:n.handle,phase:"evicted"});else console.log(`[user-desktop] daemon process exited handle=${n.handle} port=${y} (already replaced/removed)`)});return{sandboxApiUrl:B,previewUrl:F,port:y}};return{async ensureSandbox(n){let O=t.get(n.handle);if(O){if(await d(O.sandboxApiUrl))return console.log(`[user-desktop] cache hit handle=${n.handle} port=${O.port} (alive)`),O.lastUsedAt=Date.now(),{sandboxApiUrl:O.sandboxApiUrl,previewUrl:O.previewUrl,port:O.port};console.warn(`[user-desktop] cache stale handle=${n.handle} port=${O.port} \u2014 respawning`),h(O)}let N=_.get(n.handle);if(N)return console.log(`[user-desktop] joining in-flight ensure handle=${n.handle}`),N;let y=D(n).finally(()=>{_.delete(n.handle)});return _.set(n.handle,y),y},proxyPort(n){let O=t.get(n);if(O)O.lastUsedAt=Date.now();return O?.port??null},getDaemonToken(n){return t.get(n)?.daemonToken??null},hasHandle(n){return t.has(n)||_.has(n)},recordHit(n){let O=t.get(n);if(O)O.lastUsedAt=Date.now()},acquireDispatch(n){let O=t.get(n);if(!O)return()=>{};O.activeDispatchCount+=1;let N=!1;return()=>{if(N)return;N=!0;let y=t.get(n);if(y)y.activeDispatchCount=Math.max(0,y.activeDispatchCount-1)}},listSandboxes(){return[...t.values()]},async deleteSandbox(n){let O=t.get(n);if(!O){console.log(`[user-desktop] delete handle=${n} (not found, no-op)`);return}if(O.activeDispatchCount>0){console.warn(`[user-desktop] delete handle=${n} port=${O.port} REFUSED \u2014 ${O.activeDispatchCount} active dispatch(es) in flight`);return}console.log(`[user-desktop] delete handle=${n} port=${O.port}`);try{O.process.kill("SIGTERM")}catch{}t.delete(n),$({handle:n,status:"stopped",sandboxPath:E(n),port:null,previewUrl:null,repoCloneUrl:null,branch:null,projectName:null,error:null}),w({handle:n,phase:"deleted"})},async shutdown(){console.log(`[user-desktop] shutdown \u2014 killing ${t.size} sandbox(es)`);for(let n of t.values())try{n.process.kill("SIGTERM")}catch{}t.clear()}}}function LCt(){return new Promise((i,u)=>{let t=SCt();t.unref(),t.on("error",u),t.listen(0,"127.0.0.1",()=>{let f=t.address();if(f&&typeof f==="object"){let l=f.port;t.close(()=>i(l))}else t.close(()=>u(Error("could not allocate port")))})})}var feu=()=>{};import{randomUUID as WCt}from"crypto";import{hostname as YCt}from"os";async function leu(i){let u=YCt()||void 0;i.monitor?.onMachine?.(u??"this machine");let t=Qbu(i.dataDir,{outFd:i.logFd,perSandboxLog:i.perSandboxLogs,hotReload:i.hotReload}),f=J1i({path:K1i(i.dataDir),managedSandboxRoot:`${i.dataDir}/sandboxes`}),l=!1,c=()=>{if(l)return;l=!0;try{f.close()}catch{}};try{let E=0,$=teu({dataDir:i.dataDir,registry:f,resolvePreviewUrl:(k,q)=>E>0?`http://${k}.localhost:${E}`:`http://127.0.0.1:${q}`,spawnDaemon:async(k)=>{let q={DAEMON_BOOT_ID:WCt(),APP_ROOT:k.workdir,PROXY_PORT:String(k.port),DAEMON_TOKEN:k.daemonToken,OFFLOAD_ALLOWED_HOSTS:k.offloadAllowedHosts.join(","),...k.offloadAllowSameHostDev?{OFFLOAD_ALLOW_SAME_HOST_DEV:"1"}:{}};if(k.orgFsConfigJson){let W=await bbu(i.dataDir);if(W)q.ORGFS_CONFIG=k.orgFsConfigJson,q.ORGFS_RCLONE_PATH=W}let J=await t({workdir:k.workdir,env:q,daemonPort:k.port});return{port:k.port,kill:(W)=>J.kill(W),exited:J.exited.then(()=>{return})}},postConfig:async(k,q,J,W)=>{let r={port:q};if(J.workload)r.runtime=J.workload.runtime,r.packageManager={name:J.workload.packageManager,...J.workload.packageManagerPath?{path:J.workload.packageManagerPath}:{}};let Y={application:r},li=_h(J.operator??null);if(li)Y.operator=li;if(J.repo)Y.git={repository:{cloneUrl:J.repo.cloneUrl,branch:J.repo.branch},...J.repo.userName&&J.repo.userEmail?{identity:{userName:J.repo.userName,userEmail:J.repo.userEmail}}:{}};await $2(`http://127.0.0.1:${k}`,W,Y)},waitForHealth:async(k)=>{await Kli(`http://127.0.0.1:${k}`)},maxSandboxes:20,onEvent:i.monitor?.onEvent}),w=await Smu({port:i.port,lookupSandboxPort:(k)=>$.proxyPort(k)});E=w.port,console.log(`Local ingress listening on http://127.0.0.1:${w.port} (use http://<handle>.localhost:${w.port}/)`),i.monitor?.onIngress?.(w.port);let d=Mbu({provider:$}),h=async()=>{let k=await E2({dataDir:i.dataDir,target:i.clusterBaseUrl});if(!k)throw Object.assign(Error(`Session for ${i.clusterBaseUrl} is no longer valid \u2014 run \`deco auth login --target ${i.clusterBaseUrl}\` and restart \`deco link\`.`),{fatal:!0});return k.accessToken},_=await Hmu(i.dataDir),v=process.env.npm_package_version??"0.0.0",D=await jRi(),n=Qmu(D,{onChange:(k)=>{console.log(`[link-daemon] capabilities detected: +${k.join(",")} (now: ${D.join(",")})`)}}),O=Zzi({path:`${i.dataDir}/link/outbox.sqlite`});O.clear();let N=()=>{},y=new AbortController,Z={clusterBaseUrl:i.clusterBaseUrl,getAccessToken:h,provider:$,outbox:O,controlHandler:d,capabilities:D,machineId:_,cliVersion:v,previewPort:w.port,onConnected:()=>{i.monitor?.onCluster?.("linked"),console.log(`Linked to ${i.clusterBaseUrl}`)},onShutdown:()=>N(),runLifetimeSignal:y.signal};console.log(`[link-daemon] transport=tunnel cluster=${i.clusterBaseUrl}`);let T=await ymu(Z);console.log("[link-daemon] active transport=tunnel");let B,F=new Promise((k)=>{B=k}),A=!1,G=async()=>{if(A)return;A=!0,y.abort(),console.log(`
|
|
84519
84519
|
Shutting down\u2026`),n();try{await T.close()}catch{}try{await w.stop()}catch{}try{await $.shutdown()}catch{}try{O.close()}catch{}c(),B(0)};process.on("SIGINT",()=>void G()),process.on("SIGTERM",()=>void G()),N=()=>{console.log("Disconnect requested from the Studio web UI \u2014 shutting down. Run `bunx decocms@latest link` to reconnect."),G()},T.closed.then(()=>{if(i.monitor?.onCluster?.("closed"),!A)console.error("Cluster connection closed permanently; exiting."),G()});let I=smu({provider:$,registry:f,dataDir:i.dataDir});return{stopped:F,stop:G,stopSandbox:I.stopSandbox,removeSandbox:I.removeSandbox,inspectSandbox:I.inspectSandbox}}catch(E){throw c(),E}}var ceu=g(()=>{vzi();BM();zbu();Cbu();qbu();Tzi();Zmu();jmu();zmu();Rmu();TM();KRi();pmu();feu()});function JRi(i){return i.map((u)=>typeof u==="string"?u:String(u)).join(" ")}import{createServer as QCt}from"net";async function HCt(i){for(let u of zCt)if(await XRi(i,u))return u;return null}async function Eeu(i,{intervalMs:u=1000}={}){for(;;){let t=await HCt(i);if(t)return t;await O0(u)}}function XRi(i,u){return new Promise((t)=>{let f=QCt();f.once("error",(l)=>{t(l.code==="EADDRINUSE")}),f.listen(i,u,()=>{f.close(()=>t(!1))})})}var zCt;var LRi=g(()=>{y4();zCt=["localhost","127.0.0.1","0.0.0.0"]});function $eu(i){return typeof i==="object"&&i!==null&&"code"in i&&i.code==="EADDRINUSE"}function RCt(i,u=process.platform){if(u==="win32")return`for /f "tokens=5" %P in ('netstat -ano ^| findstr /R /C:":${i} .*LISTENING"') do taskkill /F /PID %P`;return`kill -9 $(lsof -ti tcp:${i})`}function weu(i,u=process.platform){return[`Port ${i} is already in use.`,"Run this command to stop the process listening on it, then retry `decocms link`:","",` ${RCt(i,u)}`].join(`
|
|
84520
|
-
`)}var WRi;var deu=g(()=>{WRi=class WRi extends Error{port;code="EADDRINUSE";constructor(i){super(`Port ${i} is already in use.`);this.port=i;this.name="PortInUseError"}}});var iW;var X1i=g(()=>{iW={name:"decocms",version:"4.76.35",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/mesh"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:'bun run migrate && concurrently "bun run dev:client" "bun run dev:server"',"dev:servers":'concurrently "bun run dev:client" "bun run dev:server"',"dev:client":"vite dev","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts","build:client":"bun --bun vite build","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","db:migrate":"bun run ./dist/server/migrate.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts",test:"bun test","test:ct":"playwright test -c playwright-ct.config.ts","test:ct:ui":"playwright test -c playwright-ct.config.ts --ui","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts","smoke:link":"bun run scripts/smoke-link.ts",prepublishOnly:"bun run build:client && bun run build:server"},optionalDependencies:{"@anthropic-ai/claude-agent-sdk":"^0.3.181","@duckdb/node-api":"^1.5.0-r.1","@openai/codex":"0.144.3","@openai/codex-darwin-arm64":"npm:@openai/codex@0.144.3-darwin-arm64","@openai/codex-darwin-x64":"npm:@openai/codex@0.144.3-darwin-x64","@openai/codex-linux-arm64":"npm:@openai/codex@0.144.3-linux-arm64","@openai/codex-linux-x64":"npm:@openai/codex@0.144.3-linux-x64","@openai/codex-win32-arm64":"npm:@openai/codex@0.144.3-win32-arm64","@openai/codex-win32-x64":"npm:@openai/codex@0.144.3-win32-x64"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@dnd-kit/core":"^6.3.1","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@inkjs/ui":"^2.0.0","@modelcontextprotocol/ext-apps":"^1.7.1","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","@tanstack/react-virtual":"3.13.24","@tiptap/extension-text-align":"3.20.2","@xterm/addon-fit":"^0.11.0","@xterm/xterm":"^6.0.0",echarts:"^5.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","node-pty":"^1.0.0","posthog-js":"^1.371.1","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6","use-stick-to-bottom":"^1.1.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@ai-sdk/react":"^3.0.210","@better-auth/sso":"1.4.1","@daveyplate/better-auth-ui":"^3.2.7","@deco/ui":"workspace:*","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/harness":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/mesh-sdk":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/std":"workspace:*","@decocms/tunnel":"workspace:*","@floating-ui/react":"^0.27.16","@happy-dom/global-registrator":"^20.9.0","@hookform/resolvers":"^5.2.2","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@monaco-editor/react":"^4.7.0","@nats-io/jwt":"0.0.10-5","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@playwright/experimental-ct-react":"1.59.1","@playwright/test":"^1.58.2","@radix-ui/react-avatar":"^1.1.10","@radix-ui/react-checkbox":"^1.3.3","@radix-ui/react-dialog":"^1.1.15","@radix-ui/react-dropdown-menu":"^2.1.16","@radix-ui/react-label":"^2.1.7","@radix-ui/react-select":"^2.2.6","@radix-ui/react-separator":"^1.1.7","@radix-ui/react-slot":"^1.2.3","@radix-ui/react-tabs":"^1.1.13","@rjsf/shadcn":"^6.6.2","@rjsf/utils":"^6.6.2","@rjsf/validator-ajv8":"^6.6.2","@tailwindcss/vite":"^4.1.17","@tanstack/react-query":"5.100.10","@tanstack/react-router":"1.169.2","@testing-library/jest-dom":"^6.9.1","@testing-library/react":"^16.3.2","@tiptap/core":"3.20.2","@tiptap/extension-placeholder":"3.20.2","@tiptap/pm":"3.20.2","@tiptap/react":"3.20.2","@tiptap/starter-kit":"3.20.2","@tiptap/suggestion":"3.20.2","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@untitledui/icons":"^0.0.19","@vercel/nft":"^1.1.1","@vitejs/plugin-react":"^5.1.0",ai:"^6.0.208","babel-plugin-react-compiler":"^1.0.0","better-auth":"1.4.22","class-variance-authority":"^0.7.1",clsx:"^2.1.1",concurrently:"^9.2.1",croner:"^9.1.0","date-fns":"^4.1.0",degit:"^2.8.4",hono:"^4.10.7","input-otp":"^1.4.2",jose:"^6.0.11","lucide-react":"^0.468.0",marked:"^15.0.6",nanoid:"^5.1.6",pg:"^8.16.3",prettier:"^3.4.2","react-hook-form":"^7.66.0","react-markdown":"^10.1.0","react-resizable-panels":"^2.1.7","react-syntax-highlighter":"^15.6.1",recharts:"^3.6.0","rehype-raw":"^7.0.0","remark-gfm":"^4.0.0","sass-embedded":"^1.97.2",sonner:"^2.0.7","tailwind-merge":"^3.3.1",tailwindcss:"^4.1.17",typescript:"^5.9.3",vite:"^7.2.1","vite-tsconfig-paths":"^5.1.4",zod:"^4.0.0"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","mesh","tools"],license:"MIT",publishConfig:{access:"public"}}});var pM={};Xi(pM,{printBanner:()=>MCt,bannerLines:()=>heu,BANNER_LINES:()=>L1i,BANNER_GRADIENT:()=>W1i});function CCt(i){let u=Number.parseInt(i.slice(1),16);return[u>>16&255,u>>8&255,u&255]}function heu(i){let u=L1i.map((t,f)=>{let[l,c,E]=CCt(W1i[f]);return`\x1B[38;2;${l};${c};${E}m${t}\x1B[39m`});if(i!==void 0)u.push(`\x1B[2m v${i}\x1B[22m`);return u}function MCt(i){console.log("");for(let u of heu(i))console.log(u);console.log("")}var L1i,W1i;var uW=g(()=>{L1i=[" \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588 ","\u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588 \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588 "," \u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2588 \u2591 \u2588\u2588\u2588 \u2591\u2591\u2591 \u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2591\u2591\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591 \u2588\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588 "," \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591 ","\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591 "],W1i=["#00ff64","#00ee5e","#00dc56","#00c84e","#00b444","#00a03c","#008832","#006e28"]});import{Box as qCt,Text as _eu}from"ink";import{jsx as VCt,jsxs as veu}from"react/jsx-runtime";function Y1i({version:i}){return veu(qCt,{flexDirection:"column",marginTop:1,children:[L1i.map((u,t)=>VCt(_eu,{color:W1i[t],children:u},t)),veu(_eu,{dimColor:!0,children:[" v",i]})]})}var YRi=g(()=>{uW()});function Deu(i){let u=i.branch??i.handle,t=[];if(i.dirtyCount>0)t.push(`${i.dirtyCount} uncommitted file${i.dirtyCount===1?"":"s"}`);if(i.merged===!1)t.push("branch not merged");return t.length>0?`\u26A0 ${t.join(", ")} \u2014 delete ${u}? (y/n)`:`Delete ${u}? (y/n)`}function tW(i){return[...i.values()].map((u)=>u.handle).sort((u,t)=>u.localeCompare(t))}function neu(i,u,t){if(i.length===0)return null;let f=u===null?-1:i.indexOf(u);if(f===-1)return t>0?i[0]:i[i.length-1];let l=Math.max(0,Math.min(i.length-1,f+t));return i[l]}function geu(i,u,t){if(t!==u)return t;let f=i.indexOf(u);if(f===-1)return t;return i[f+1]??i[f-1]??null}var RRi={};Xi(RRi,{subscribeLinkState:()=>QRi,setSelectedHandle:()=>zRi,setRemoving:()=>H1i,setPersistedSandboxes:()=>tMt,setPendingConfirm:()=>uq,setMachine:()=>sCt,setLogPath:()=>iMt,setLinkActions:()=>uMt,setIngress:()=>oCt,setDaemonError:()=>pCt,setClusterUrl:()=>aCt,setCluster:()=>eCt,setActionError:()=>z1i,resetLinkStateForTests:()=>lMt,removeSandboxRow:()=>HRi,pushSandboxEvent:()=>fMt,getLinkState:()=>iq,applySandboxEvent:()=>Oeu});function mCt(i){return i==="spawning"||i==="ready"||i==="failed"}function Oeu(i,u){let t=new Map(i),f=t.get(u.handle);if(u.phase==="evicted"||u.phase==="deleted"){if(f)t.set(u.handle,{...f,port:null,previewUrl:null,status:"stopped",error:null});return t}return t.set(u.handle,{handle:u.handle,port:u.port??f?.port??null,previewUrl:u.previewUrl??f?.previewUrl??null,status:u.phase,error:u.phase==="failed"?u.error??"failed":null,projectName:u.projectName??f?.projectName??null,branch:u.branch??f?.branch??null,sandboxPath:u.sandboxPath??f?.sandboxPath??null}),t}function Neu(){return{cluster:"connecting",clusterUrl:null,ingressUrl:null,ingressPort:null,machine:null,cap:rCt,sandboxes:new Map,daemonError:null,logPath:null,selectedHandle:null,pendingConfirm:null,removingHandles:new Set,actionError:null,actions:null}}function z$(){for(let i of Q1i)i()}function iq(){return cf}function QRi(i){return Q1i.add(i),()=>Q1i.delete(i)}function eCt(i){cf={...cf,cluster:i},z$()}function aCt(i){cf={...cf,clusterUrl:i},z$()}function oCt(i,u){cf={...cf,ingressPort:i,ingressUrl:u},z$()}function sCt(i){cf={...cf,machine:i},z$()}function pCt(i){cf={...cf,daemonError:i},z$()}function iMt(i){cf={...cf,logPath:i},z$()}function zRi(i){cf={...cf,selectedHandle:i},z$()}function uq(i){cf={...cf,pendingConfirm:i},z$()}function z1i(i){cf={...cf,actionError:i},z$()}function H1i(i,u){if(cf.removingHandles.has(i)===u)return;let t=new Set(cf.removingHandles);if(u)t.add(i);else t.delete(i);cf={...cf,removingHandles:t},z$()}function uMt(i){cf={...cf,actions:i},z$()}function HRi(i){let u=tW(cf.sandboxes),t=geu(u,i,cf.selectedHandle),f=new Map(cf.sandboxes);f.delete(i);let l=new Set(cf.removingHandles);l.delete(i),cf={...cf,sandboxes:f,selectedHandle:t,pendingConfirm:null,removingHandles:l},z$()}function tMt(i){let u=new Map;for(let t of i)u.set(t.handle,{handle:t.handle,port:t.port,previewUrl:t.previewUrl,status:t.status,error:t.error,projectName:t.projectName,branch:t.branch,sandboxPath:t.sandboxPath});for(let[t,f]of cf.sandboxes)if(mCt(f.status))u.set(t,f);cf={...cf,sandboxes:u},z$()}function fMt(i){cf={...cf,sandboxes:Oeu(cf.sandboxes,i)},z$()}function lMt(){cf=Neu(),Q1i.clear()}var rCt=20,cf,Q1i;var tq=g(()=>{cf=Neu(),Q1i=new Set});import{spawn as cMt}from"child_process";function EMt(i){if(i==="darwin")return"open";if(i==="win32")return"start";return"xdg-open"}function yeu(i,u=process.platform){let t=EMt(u);try{cMt(t,[i],{stdio:"ignore",detached:!0}).unref()}catch{}}var Zeu=()=>{};function Teu(i,u={}){let t=u.openUrl??yeu,f=iq(),l=tW(f.sandboxes),c=f.selectedHandle!==null&&l.includes(f.selectedHandle)?f.selectedHandle:l[0]??null,E=f.actions;switch(i.type){case"move":zRi(neu(l,f.selectedHandle,i.delta));return;case"open":{if(c===null)return;let $=f.sandboxes.get(c);if($?.status==="ready"&&$.previewUrl)t($.previewUrl);return}case"stop":if(c!==null&&E)E.stopSandbox(c);return;case"delete":{if(c===null||!E)return;let $=E.inspectSandbox(c),w=f.sandboxes.get(c);z1i(null),uq({handle:c,branch:$?.branch??w?.branch??null,dirtyCount:$?.dirtyCount??0,merged:$?.merged??null});return}case"confirmYes":{let $=f.pendingConfirm;if(uq(null),$===null||!E)return;H1i($.handle,!0),E.removeSandbox($.handle).then((w)=>{if(w.ok)HRi($.handle);else H1i($.handle,!1),z1i(w.error)});return}case"confirmNo":uq(null);return;case"quit":if(E)E.quit();return}}var Beu=g(()=>{tq();Zeu()});function Feu(i,u,t){if(t)return i==="y"||i==="Y"?{type:"confirmYes"}:{type:"confirmNo"};if(u.upArrow||i==="k")return{type:"move",delta:-1};if(u.downArrow||i==="j")return{type:"move",delta:1};if(i==="s")return{type:"stop"};if(i==="d")return{type:"delete"};if(i==="o")return{type:"open"};if(i==="q"||u.ctrl===!0&&i==="c")return{type:"quit"};return null}var Ueu={};Xi(Ueu,{LinkApp:()=>hMt});import{Box as ql,Text as _1,useInput as $Mt}from"ink";import{useSyncExternalStore as wMt}from"react";import{jsx as Gf,jsxs as Fh}from"react/jsx-runtime";function dMt(i,u){if(u)return{color:"yellow",text:"\u25CC Removing\u2026"};if(i.status==="ready")return{color:"green",text:"\u25CF Live"};if(i.status==="spawning")return{color:"yellow",text:"\u25CC Starting\u2026"};if(i.status==="stopped")return{color:"gray",text:"\u25A0 Stopped"};if(i.status==="missing")return{color:"yellow",text:"\u25A1 Missing"};if(i.status==="merged")return{color:"cyan",text:"\u2713 Merged"};if(i.status==="invalid")return{color:"red",text:"\u2717 Invalid"};if(i.status==="failed")return{color:"red",text:`\u2717 Failed: ${i.error??"failed"}`};return{color:"red",text:`\u2717 Error: ${i.error??""}`}}function hMt(){let i=wMt(QRi,iq),u=[...i.sandboxes.values()].sort((l,c)=>l.handle.localeCompare(c.handle)),t=tW(i.sandboxes),f=i.selectedHandle!==null&&t.includes(i.selectedHandle)?i.selectedHandle:t[0]??null;return $Mt((l,c)=>{let E=Feu(l,c,i.pendingConfirm!==null);if(E!==null)Teu(E)}),Fh(ql,{flexDirection:"column",children:[Gf(Y1i,{version:iW.version}),Gf(ql,{marginBottom:1,children:Gf(_1,{dimColor:!0,children:"\u2500".repeat(80)})}),Gf(ql,{children:i.cluster==="linked"?Fh(_1,{color:"green",children:["\u2713 Connected to ",i.clusterUrl??"deco"]}):i.cluster==="connecting"?Fh(_1,{color:"yellow",children:["\u25CC Connecting to ",i.clusterUrl??"deco","\u2026"]}):Fh(_1,{color:"red",children:["\u2717 Disconnected from ",i.clusterUrl??"deco"]})}),Gf(ql,{children:i.ingressUrl?Fh(_1,{color:"green",children:["\u2713 Serving at ",i.ingressUrl]}):Gf(_1,{dimColor:!0,children:"\u25CC Starting local server\u2026"})}),Gf(ql,{marginBottom:1,children:Gf(_1,{dimColor:!0,children:`${"Computer".padEnd(16)}${i.machine??"this computer"} \xB7 ${u.length} of ${i.cap} previews`})}),u.length===0?Gf(_1,{dimColor:!0,children:"No previews running yet."}):Fh(ql,{flexDirection:"column",children:[Fh(ql,{children:[Gf(ql,{width:2,flexShrink:0}),Gf(ql,{width:fW.project,flexShrink:0,marginRight:1,children:Gf(_1,{dimColor:!0,wrap:"truncate-end",children:"PROJECT"})}),Gf(ql,{width:fW.branch,flexShrink:0,marginRight:1,children:Gf(_1,{dimColor:!0,wrap:"truncate-end",children:"BRANCH"})}),Gf(ql,{width:fW.status,flexShrink:0,marginRight:1,children:Gf(_1,{dimColor:!0,wrap:"truncate-end",children:"STATUS"})}),Gf(ql,{flexGrow:1,children:Gf(_1,{dimColor:!0,wrap:"truncate-end",children:"PREVIEW URL"})})]}),u.map((l)=>{let c=dMt(l,i.removingHandles.has(l.handle)),E=l.handle===f;return Fh(ql,{children:[Gf(ql,{width:2,flexShrink:0,children:Gf(_1,{color:"cyan",children:E?"\u203A":" "})}),Gf(ql,{width:fW.project,flexShrink:0,marginRight:1,children:Gf(_1,{bold:E,wrap:"truncate-end",children:l.projectName??l.handle})}),Gf(ql,{width:fW.branch,flexShrink:0,marginRight:1,children:Gf(_1,{bold:E,wrap:"truncate-end",children:l.branch??"\u2014"})}),Gf(ql,{width:fW.status,flexShrink:0,marginRight:1,children:Gf(_1,{color:c.color,bold:E,wrap:"truncate-end",children:c.text})}),Gf(ql,{flexGrow:1,children:Gf(_1,{dimColor:!0,wrap:"truncate-end",children:l.previewUrl??"\u2014"})})]},l.handle)})]}),i.daemonError?Gf(ql,{marginTop:1,children:Fh(_1,{color:"red",children:["\u26A0 ",i.daemonError]})}):null,i.logPath?Gf(ql,{marginTop:1,children:Fh(_1,{dimColor:!0,children:["Logs: ",i.logPath]})}):null,i.pendingConfirm?Gf(ql,{marginTop:1,children:Gf(_1,{color:"yellow",children:Deu(i.pendingConfirm)})}):null,i.actionError?Gf(ql,{marginTop:1,children:Fh(_1,{color:"red",children:["\u2717 ",i.actionError]})}):null,Gf(ql,{marginTop:1,children:Gf(_1,{dimColor:!0,children:"\u2191\u2193 move \xB7 s stop \xB7 d delete \xB7 o open \xB7 q quit"})})]})}var fW;var Peu=g(()=>{X1i();YRi();Beu();tq();fW={project:18,branch:22,status:14}});var Aeu={};Xi(Aeu,{runLinkCommand:()=>yMt});import{closeSync as _Mt,mkdirSync as vMt,openSync as DMt,writeSync as nMt}from"fs";import{homedir as gMt}from"os";import{join as bRi}from"path";function OMt(i,u){let t={log:console.log,warn:console.warn,error:console.error},f=(l)=>{if(u===void 0)return;try{nMt(u,`${JRi(l)}
|
|
84520
|
+
`)}var WRi;var deu=g(()=>{WRi=class WRi extends Error{port;code="EADDRINUSE";constructor(i){super(`Port ${i} is already in use.`);this.port=i;this.name="PortInUseError"}}});var iW;var X1i=g(()=>{iW={name:"decocms",version:"4.76.37",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/mesh"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:'bun run migrate && concurrently "bun run dev:client" "bun run dev:server"',"dev:servers":'concurrently "bun run dev:client" "bun run dev:server"',"dev:client":"vite dev","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts","build:client":"bun --bun vite build","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","db:migrate":"bun run ./dist/server/migrate.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts",test:"bun test","test:ct":"playwright test -c playwright-ct.config.ts","test:ct:ui":"playwright test -c playwright-ct.config.ts --ui","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts","smoke:link":"bun run scripts/smoke-link.ts",prepublishOnly:"bun run build:client && bun run build:server"},optionalDependencies:{"@anthropic-ai/claude-agent-sdk":"^0.3.181","@duckdb/node-api":"^1.5.0-r.1","@openai/codex":"0.144.3","@openai/codex-darwin-arm64":"npm:@openai/codex@0.144.3-darwin-arm64","@openai/codex-darwin-x64":"npm:@openai/codex@0.144.3-darwin-x64","@openai/codex-linux-arm64":"npm:@openai/codex@0.144.3-linux-arm64","@openai/codex-linux-x64":"npm:@openai/codex@0.144.3-linux-x64","@openai/codex-win32-arm64":"npm:@openai/codex@0.144.3-win32-arm64","@openai/codex-win32-x64":"npm:@openai/codex@0.144.3-win32-x64"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@dnd-kit/core":"^6.3.1","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@inkjs/ui":"^2.0.0","@modelcontextprotocol/ext-apps":"^1.7.1","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","@tanstack/react-virtual":"3.13.24","@tiptap/extension-text-align":"3.20.2","@xterm/addon-fit":"^0.11.0","@xterm/xterm":"^6.0.0",echarts:"^5.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","node-pty":"^1.0.0","posthog-js":"^1.371.1","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6","use-stick-to-bottom":"^1.1.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@ai-sdk/react":"^3.0.210","@better-auth/sso":"1.4.1","@daveyplate/better-auth-ui":"^3.2.7","@deco/ui":"workspace:*","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/harness":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/mesh-sdk":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/std":"workspace:*","@decocms/tunnel":"workspace:*","@floating-ui/react":"^0.27.16","@happy-dom/global-registrator":"^20.9.0","@hookform/resolvers":"^5.2.2","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@monaco-editor/react":"^4.7.0","@nats-io/jwt":"0.0.10-5","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@playwright/experimental-ct-react":"1.59.1","@playwright/test":"^1.58.2","@radix-ui/react-avatar":"^1.1.10","@radix-ui/react-checkbox":"^1.3.3","@radix-ui/react-dialog":"^1.1.15","@radix-ui/react-dropdown-menu":"^2.1.16","@radix-ui/react-label":"^2.1.7","@radix-ui/react-select":"^2.2.6","@radix-ui/react-separator":"^1.1.7","@radix-ui/react-slot":"^1.2.3","@radix-ui/react-tabs":"^1.1.13","@rjsf/shadcn":"^6.6.2","@rjsf/utils":"^6.6.2","@rjsf/validator-ajv8":"^6.6.2","@tailwindcss/vite":"^4.1.17","@tanstack/react-query":"5.100.10","@tanstack/react-router":"1.169.2","@testing-library/jest-dom":"^6.9.1","@testing-library/react":"^16.3.2","@tiptap/core":"3.20.2","@tiptap/extension-placeholder":"3.20.2","@tiptap/pm":"3.20.2","@tiptap/react":"3.20.2","@tiptap/starter-kit":"3.20.2","@tiptap/suggestion":"3.20.2","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@untitledui/icons":"^0.0.19","@vercel/nft":"^1.1.1","@vitejs/plugin-react":"^5.1.0",ai:"^6.0.208","babel-plugin-react-compiler":"^1.0.0","better-auth":"1.4.22","class-variance-authority":"^0.7.1",clsx:"^2.1.1",concurrently:"^9.2.1",croner:"^9.1.0","date-fns":"^4.1.0",degit:"^2.8.4",hono:"^4.10.7","input-otp":"^1.4.2",jose:"^6.0.11","lucide-react":"^0.468.0",marked:"^15.0.6",nanoid:"^5.1.6",pg:"^8.16.3",prettier:"^3.4.2","react-hook-form":"^7.66.0","react-markdown":"^10.1.0","react-resizable-panels":"^2.1.7","react-syntax-highlighter":"^15.6.1",recharts:"^3.6.0","rehype-raw":"^7.0.0","remark-gfm":"^4.0.0","sass-embedded":"^1.97.2",sonner:"^2.0.7","tailwind-merge":"^3.3.1",tailwindcss:"^4.1.17",typescript:"^5.9.3",vite:"^7.2.1","vite-tsconfig-paths":"^5.1.4",zod:"^4.0.0"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","mesh","tools"],license:"MIT",publishConfig:{access:"public"}}});var pM={};Xi(pM,{printBanner:()=>MCt,bannerLines:()=>heu,BANNER_LINES:()=>L1i,BANNER_GRADIENT:()=>W1i});function CCt(i){let u=Number.parseInt(i.slice(1),16);return[u>>16&255,u>>8&255,u&255]}function heu(i){let u=L1i.map((t,f)=>{let[l,c,E]=CCt(W1i[f]);return`\x1B[38;2;${l};${c};${E}m${t}\x1B[39m`});if(i!==void 0)u.push(`\x1B[2m v${i}\x1B[22m`);return u}function MCt(i){console.log("");for(let u of heu(i))console.log(u);console.log("")}var L1i,W1i;var uW=g(()=>{L1i=[" \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588 ","\u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588 \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588 "," \u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2588 \u2591 \u2588\u2588\u2588 \u2591\u2591\u2591 \u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2591\u2591\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591 \u2588\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588 "," \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591 ","\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591 "],W1i=["#00ff64","#00ee5e","#00dc56","#00c84e","#00b444","#00a03c","#008832","#006e28"]});import{Box as qCt,Text as _eu}from"ink";import{jsx as VCt,jsxs as veu}from"react/jsx-runtime";function Y1i({version:i}){return veu(qCt,{flexDirection:"column",marginTop:1,children:[L1i.map((u,t)=>VCt(_eu,{color:W1i[t],children:u},t)),veu(_eu,{dimColor:!0,children:[" v",i]})]})}var YRi=g(()=>{uW()});function Deu(i){let u=i.branch??i.handle,t=[];if(i.dirtyCount>0)t.push(`${i.dirtyCount} uncommitted file${i.dirtyCount===1?"":"s"}`);if(i.merged===!1)t.push("branch not merged");return t.length>0?`\u26A0 ${t.join(", ")} \u2014 delete ${u}? (y/n)`:`Delete ${u}? (y/n)`}function tW(i){return[...i.values()].map((u)=>u.handle).sort((u,t)=>u.localeCompare(t))}function neu(i,u,t){if(i.length===0)return null;let f=u===null?-1:i.indexOf(u);if(f===-1)return t>0?i[0]:i[i.length-1];let l=Math.max(0,Math.min(i.length-1,f+t));return i[l]}function geu(i,u,t){if(t!==u)return t;let f=i.indexOf(u);if(f===-1)return t;return i[f+1]??i[f-1]??null}var RRi={};Xi(RRi,{subscribeLinkState:()=>QRi,setSelectedHandle:()=>zRi,setRemoving:()=>H1i,setPersistedSandboxes:()=>tMt,setPendingConfirm:()=>uq,setMachine:()=>sCt,setLogPath:()=>iMt,setLinkActions:()=>uMt,setIngress:()=>oCt,setDaemonError:()=>pCt,setClusterUrl:()=>aCt,setCluster:()=>eCt,setActionError:()=>z1i,resetLinkStateForTests:()=>lMt,removeSandboxRow:()=>HRi,pushSandboxEvent:()=>fMt,getLinkState:()=>iq,applySandboxEvent:()=>Oeu});function mCt(i){return i==="spawning"||i==="ready"||i==="failed"}function Oeu(i,u){let t=new Map(i),f=t.get(u.handle);if(u.phase==="evicted"||u.phase==="deleted"){if(f)t.set(u.handle,{...f,port:null,previewUrl:null,status:"stopped",error:null});return t}return t.set(u.handle,{handle:u.handle,port:u.port??f?.port??null,previewUrl:u.previewUrl??f?.previewUrl??null,status:u.phase,error:u.phase==="failed"?u.error??"failed":null,projectName:u.projectName??f?.projectName??null,branch:u.branch??f?.branch??null,sandboxPath:u.sandboxPath??f?.sandboxPath??null}),t}function Neu(){return{cluster:"connecting",clusterUrl:null,ingressUrl:null,ingressPort:null,machine:null,cap:rCt,sandboxes:new Map,daemonError:null,logPath:null,selectedHandle:null,pendingConfirm:null,removingHandles:new Set,actionError:null,actions:null}}function z$(){for(let i of Q1i)i()}function iq(){return cf}function QRi(i){return Q1i.add(i),()=>Q1i.delete(i)}function eCt(i){cf={...cf,cluster:i},z$()}function aCt(i){cf={...cf,clusterUrl:i},z$()}function oCt(i,u){cf={...cf,ingressPort:i,ingressUrl:u},z$()}function sCt(i){cf={...cf,machine:i},z$()}function pCt(i){cf={...cf,daemonError:i},z$()}function iMt(i){cf={...cf,logPath:i},z$()}function zRi(i){cf={...cf,selectedHandle:i},z$()}function uq(i){cf={...cf,pendingConfirm:i},z$()}function z1i(i){cf={...cf,actionError:i},z$()}function H1i(i,u){if(cf.removingHandles.has(i)===u)return;let t=new Set(cf.removingHandles);if(u)t.add(i);else t.delete(i);cf={...cf,removingHandles:t},z$()}function uMt(i){cf={...cf,actions:i},z$()}function HRi(i){let u=tW(cf.sandboxes),t=geu(u,i,cf.selectedHandle),f=new Map(cf.sandboxes);f.delete(i);let l=new Set(cf.removingHandles);l.delete(i),cf={...cf,sandboxes:f,selectedHandle:t,pendingConfirm:null,removingHandles:l},z$()}function tMt(i){let u=new Map;for(let t of i)u.set(t.handle,{handle:t.handle,port:t.port,previewUrl:t.previewUrl,status:t.status,error:t.error,projectName:t.projectName,branch:t.branch,sandboxPath:t.sandboxPath});for(let[t,f]of cf.sandboxes)if(mCt(f.status))u.set(t,f);cf={...cf,sandboxes:u},z$()}function fMt(i){cf={...cf,sandboxes:Oeu(cf.sandboxes,i)},z$()}function lMt(){cf=Neu(),Q1i.clear()}var rCt=20,cf,Q1i;var tq=g(()=>{cf=Neu(),Q1i=new Set});import{spawn as cMt}from"child_process";function EMt(i){if(i==="darwin")return"open";if(i==="win32")return"start";return"xdg-open"}function yeu(i,u=process.platform){let t=EMt(u);try{cMt(t,[i],{stdio:"ignore",detached:!0}).unref()}catch{}}var Zeu=()=>{};function Teu(i,u={}){let t=u.openUrl??yeu,f=iq(),l=tW(f.sandboxes),c=f.selectedHandle!==null&&l.includes(f.selectedHandle)?f.selectedHandle:l[0]??null,E=f.actions;switch(i.type){case"move":zRi(neu(l,f.selectedHandle,i.delta));return;case"open":{if(c===null)return;let $=f.sandboxes.get(c);if($?.status==="ready"&&$.previewUrl)t($.previewUrl);return}case"stop":if(c!==null&&E)E.stopSandbox(c);return;case"delete":{if(c===null||!E)return;let $=E.inspectSandbox(c),w=f.sandboxes.get(c);z1i(null),uq({handle:c,branch:$?.branch??w?.branch??null,dirtyCount:$?.dirtyCount??0,merged:$?.merged??null});return}case"confirmYes":{let $=f.pendingConfirm;if(uq(null),$===null||!E)return;H1i($.handle,!0),E.removeSandbox($.handle).then((w)=>{if(w.ok)HRi($.handle);else H1i($.handle,!1),z1i(w.error)});return}case"confirmNo":uq(null);return;case"quit":if(E)E.quit();return}}var Beu=g(()=>{tq();Zeu()});function Feu(i,u,t){if(t)return i==="y"||i==="Y"?{type:"confirmYes"}:{type:"confirmNo"};if(u.upArrow||i==="k")return{type:"move",delta:-1};if(u.downArrow||i==="j")return{type:"move",delta:1};if(i==="s")return{type:"stop"};if(i==="d")return{type:"delete"};if(i==="o")return{type:"open"};if(i==="q"||u.ctrl===!0&&i==="c")return{type:"quit"};return null}var Ueu={};Xi(Ueu,{LinkApp:()=>hMt});import{Box as ql,Text as _1,useInput as $Mt}from"ink";import{useSyncExternalStore as wMt}from"react";import{jsx as Gf,jsxs as Fh}from"react/jsx-runtime";function dMt(i,u){if(u)return{color:"yellow",text:"\u25CC Removing\u2026"};if(i.status==="ready")return{color:"green",text:"\u25CF Live"};if(i.status==="spawning")return{color:"yellow",text:"\u25CC Starting\u2026"};if(i.status==="stopped")return{color:"gray",text:"\u25A0 Stopped"};if(i.status==="missing")return{color:"yellow",text:"\u25A1 Missing"};if(i.status==="merged")return{color:"cyan",text:"\u2713 Merged"};if(i.status==="invalid")return{color:"red",text:"\u2717 Invalid"};if(i.status==="failed")return{color:"red",text:`\u2717 Failed: ${i.error??"failed"}`};return{color:"red",text:`\u2717 Error: ${i.error??""}`}}function hMt(){let i=wMt(QRi,iq),u=[...i.sandboxes.values()].sort((l,c)=>l.handle.localeCompare(c.handle)),t=tW(i.sandboxes),f=i.selectedHandle!==null&&t.includes(i.selectedHandle)?i.selectedHandle:t[0]??null;return $Mt((l,c)=>{let E=Feu(l,c,i.pendingConfirm!==null);if(E!==null)Teu(E)}),Fh(ql,{flexDirection:"column",children:[Gf(Y1i,{version:iW.version}),Gf(ql,{marginBottom:1,children:Gf(_1,{dimColor:!0,children:"\u2500".repeat(80)})}),Gf(ql,{children:i.cluster==="linked"?Fh(_1,{color:"green",children:["\u2713 Connected to ",i.clusterUrl??"deco"]}):i.cluster==="connecting"?Fh(_1,{color:"yellow",children:["\u25CC Connecting to ",i.clusterUrl??"deco","\u2026"]}):Fh(_1,{color:"red",children:["\u2717 Disconnected from ",i.clusterUrl??"deco"]})}),Gf(ql,{children:i.ingressUrl?Fh(_1,{color:"green",children:["\u2713 Serving at ",i.ingressUrl]}):Gf(_1,{dimColor:!0,children:"\u25CC Starting local server\u2026"})}),Gf(ql,{marginBottom:1,children:Gf(_1,{dimColor:!0,children:`${"Computer".padEnd(16)}${i.machine??"this computer"} \xB7 ${u.length} of ${i.cap} previews`})}),u.length===0?Gf(_1,{dimColor:!0,children:"No previews running yet."}):Fh(ql,{flexDirection:"column",children:[Fh(ql,{children:[Gf(ql,{width:2,flexShrink:0}),Gf(ql,{width:fW.project,flexShrink:0,marginRight:1,children:Gf(_1,{dimColor:!0,wrap:"truncate-end",children:"PROJECT"})}),Gf(ql,{width:fW.branch,flexShrink:0,marginRight:1,children:Gf(_1,{dimColor:!0,wrap:"truncate-end",children:"BRANCH"})}),Gf(ql,{width:fW.status,flexShrink:0,marginRight:1,children:Gf(_1,{dimColor:!0,wrap:"truncate-end",children:"STATUS"})}),Gf(ql,{flexGrow:1,children:Gf(_1,{dimColor:!0,wrap:"truncate-end",children:"PREVIEW URL"})})]}),u.map((l)=>{let c=dMt(l,i.removingHandles.has(l.handle)),E=l.handle===f;return Fh(ql,{children:[Gf(ql,{width:2,flexShrink:0,children:Gf(_1,{color:"cyan",children:E?"\u203A":" "})}),Gf(ql,{width:fW.project,flexShrink:0,marginRight:1,children:Gf(_1,{bold:E,wrap:"truncate-end",children:l.projectName??l.handle})}),Gf(ql,{width:fW.branch,flexShrink:0,marginRight:1,children:Gf(_1,{bold:E,wrap:"truncate-end",children:l.branch??"\u2014"})}),Gf(ql,{width:fW.status,flexShrink:0,marginRight:1,children:Gf(_1,{color:c.color,bold:E,wrap:"truncate-end",children:c.text})}),Gf(ql,{flexGrow:1,children:Gf(_1,{dimColor:!0,wrap:"truncate-end",children:l.previewUrl??"\u2014"})})]},l.handle)})]}),i.daemonError?Gf(ql,{marginTop:1,children:Fh(_1,{color:"red",children:["\u26A0 ",i.daemonError]})}):null,i.logPath?Gf(ql,{marginTop:1,children:Fh(_1,{dimColor:!0,children:["Logs: ",i.logPath]})}):null,i.pendingConfirm?Gf(ql,{marginTop:1,children:Gf(_1,{color:"yellow",children:Deu(i.pendingConfirm)})}):null,i.actionError?Gf(ql,{marginTop:1,children:Fh(_1,{color:"red",children:["\u2717 ",i.actionError]})}):null,Gf(ql,{marginTop:1,children:Gf(_1,{dimColor:!0,children:"\u2191\u2193 move \xB7 s stop \xB7 d delete \xB7 o open \xB7 q quit"})})]})}var fW;var Peu=g(()=>{X1i();YRi();Beu();tq();fW={project:18,branch:22,status:14}});var Aeu={};Xi(Aeu,{runLinkCommand:()=>yMt});import{closeSync as _Mt,mkdirSync as vMt,openSync as DMt,writeSync as nMt}from"fs";import{homedir as gMt}from"os";import{join as bRi}from"path";function OMt(i,u){let t={log:console.log,warn:console.warn,error:console.error},f=(l)=>{if(u===void 0)return;try{nMt(u,`${JRi(l)}
|
|
84521
84521
|
`)}catch{}};return console.log=(...l)=>f(l),console.warn=(...l)=>f(l),console.error=(...l)=>{f(l),i(JRi(l))},()=>{console.log=t.log,console.warn=t.warn,console.error=t.error}}async function NMt(i,u){let t;try{t=await fetch(`${i}/api/links/me`,{headers:{authorization:`Bearer ${u}`},signal:AbortSignal.timeout(1e4)})}catch{return}if(t.status===401||t.status===403)throw Error(`Authentication rejected by ${i} \u2014 the session token was not accepted. `+`Run \`deco auth login --target ${i}\` and try again.`)}async function yMt(i={}){let u=i.port??5174,t=i.dataDir??process.env.DATA_DIR??process.env.DECOCMS_HOME??bRi(gMt(),"deco"),f=i.clusterBaseUrl??process.env.MESH_CLUSTER_URL??"https://studio.decocms.com",l,c,E,$=()=>{if(E===void 0)return;try{E.close()}catch{}finally{E=void 0}};try{if(await XRi(u,"127.0.0.1"))throw new WRi(u);let w=bRi(t,"sandboxes");E=J1i({path:K1i(t),managedSandboxRoot:w});let d=await kli({dataDir:t,intent:"Link",target:f});if(process.env.DECOCMS_LINK_MANAGED!=="1")await NMt(f,d.accessToken);let h=E.reconcile();if(i.prune){let n=E.prune({missing:!0,merged:!0});if(!i.tui)console.log(`Pruned local sandboxes: removed ${n.removed.length}, skipped ${n.skipped.length}.`);h=E.reconcile()}let _;if(i.tui){let{render:n}=await import("ink"),{createElement:O}=await import("react"),{LinkApp:N}=await Promise.resolve().then(() => (Peu(),Ueu)),{pushSandboxEvent:y,setCluster:Z,setClusterUrl:T,setDaemonError:B,setIngress:F,setLogPath:A,setMachine:G,setPersistedSandboxes:I}=await Promise.resolve().then(() => (tq(),RRi));vMt(t,{recursive:!0});let k=bRi(t,"link.log");c=DMt(k,"w"),A(k),I(h),T(f),Z("connecting"),_={onEvent:(q)=>y(q),onIngress:(q)=>F(q,`http://127.0.0.1:${q}`),onCluster:(q)=>Z(q),onMachine:(q)=>G(q)},l=OMt(B,c),n(O(N),{patchConsole:!1})}else if(i.banner!==!1){let{printBanner:n}=await Promise.resolve().then(() => (uW(),pM));n(i.version??"0.0.0")}$();let v=process.env.DECOCMS_LINK_MANAGED!=="1",D=await leu({port:u,clusterBaseUrl:f,dataDir:t,session:d,monitor:_,logFd:c,perSandboxLogs:v,hotReload:i.hotReload});if(i.tui){let{setLinkActions:n}=await Promise.resolve().then(() => (tq(),RRi));n({stopSandbox:D.stopSandbox,removeSandbox:D.removeSandbox,inspectSandbox:D.inspectSandbox,quit:D.stop})}return await D.stopped}catch(w){return l?.(),console.error($eu(w)?weu(u):w instanceof Error?w.message:String(w)),1}finally{if(l?.(),c!==void 0)try{_Mt(c)}catch{}$()}}var Ieu=g(()=>{_zi();ceu();LRi();deu();KRi()});var mRi={};Xi(mRi,{resolveDevLinkClusterUrl:()=>FMt,populateDevLinkToxiProxy:()=>Keu,isDevLinkToxiProxyEnabled:()=>BMt,ensureDevLinkToxiProxy:()=>xMt,buildDevLinkToxiProxyConfig:()=>Seu,DEV_LINK_TOXIPROXY_SERVICE_NAME:()=>keu,DEV_LINK_TOXIPROXY_PROXY_NAME:()=>Geu});function BMt(i=process.env){return i.DECO_DEV_LINK_TOXIPROXY==="1"}function CRi(i,u){if(!Number.isInteger(i)||i<1||i>65535)throw Error(`${u} must be an integer port in 1..65535`);return i}function Seu(i){let u=new URL(i.serverUrl);if(u.protocol!=="http:")throw Error("DECO_DEV_LINK_TOXIPROXY only supports http local Studio URLs");let t=CRi(i.apiPort,"apiPort"),f=CRi(i.listenPort,"listenPort");if(u.port.length===0)throw Error("serverUrl must include an explicit valid port");let l=CRi(Number.parseInt(u.port,10),"upstreamPort"),c=`http://127.0.0.1:${l}`,E=`http://127.0.0.1:${f}`;return{serviceName:keu,proxyName:Geu,apiUrl:`http://127.0.0.1:${t}`,listen:`0.0.0.0:${f}`,upstream:`host.docker.internal:${l}`,publicTargetUrl:c,clusterUrl:E,logLine:`[dev-link-toxiproxy] ready: ${E} -> ${c}`}}function FMt(i){return i.toxiproxy?.clusterUrl??i.serverUrl}async function MRi(i,u,t){if(i.ok)return;let f=await i.text();throw Error(`ToxiProxy ${u} failed for ${t}: status=${i.status} statusText=${i.statusText} body=${f}`)}function rRi(i){if(i instanceof Error)return i.name==="Error"?i.message:`${i.name}: ${i.message}`;return String(i)}function jeu(i){if(!(i instanceof Error))return!1;if(i.name==="TimeoutError")return!0;return jeu(i.cause)}async function qRi(i,u,t,f){try{return await i(t,f)}catch(l){throw Error(`ToxiProxy ${u} failed for ${t}: ${rRi(l)}`,{cause:l})}}async function Keu(i,u=fetch){let t=`${i.apiUrl}/reset`,f=await qRi(u,"reset",t,{method:"POST"});await MRi(f,"reset",t);let l=`${i.apiUrl}/populate`,c=await qRi(u,"populate",l,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify([{name:i.proxyName,listen:i.listen,upstream:i.upstream,enabled:!0}])});await MRi(c,"populate",l)}async function UMt(i,u){let t=`${i.apiUrl}/version`;try{await Cl(async()=>{let f=await qRi(u,"readiness check",t,{method:"GET",signal:AbortSignal.timeout(TMt)});await MRi(f,"readiness check",t)},{maxAttempts:ZMt,minTimeout:xeu,maxTimeout:xeu,multiplier:1,jitter:0,isRetriable:(f)=>!jeu(f)})}catch(f){let l=f instanceof Wc?f.cause:f;throw Error(`ToxiProxy API did not become ready at ${t}: ${rRi(l)}`,{cause:l})}}async function PMt(i){if(i===null)return"";return await new Response(i).text()}async function VRi(i,u={}){let t=["docker",...i].join(" "),f=(()=>{try{return Bun.spawn(["docker",...i],{stdout:"ignore",stderr:"pipe"})}catch($){throw Error(`Docker command failed to start (${t}): ${rRi($)}`,{cause:$})}})(),[l,c]=await Promise.all([f.exited,PMt(f.stderr)]);if(l===0||u.ignoreFailure===!0)return;let E=c.trim().length>0?`: ${c.trim()}`:"";throw Error(`Docker command failed (${t}) with exit ${l}${E}`)}async function AMt(i,u){let t=`deco-dev-link-toxiproxy-${i}`;await VRi(["rm","-f",t],{ignoreFailure:!0}),await VRi(["run","--rm","-d","--name",t,"-p",`127.0.0.1:${i}:8474`,"-p",`127.0.0.1:${u}:${u}`,"ghcr.io/shopify/toxiproxy:2.12.0","-host=0.0.0.0"])}async function IMt(i,u){let t=`deco-dev-link-toxiproxy-${i}`;await VRi(["rm","-f",t],{ignoreFailure:!0})}async function xMt(i){let u=Seu(i),t=i.startDaemon??AMt,f=i.stopDaemon??(i.startDaemon===void 0?IMt:void 0);await t(i.apiPort,i.listenPort);let l=i.fetchImpl??fetch;try{await UMt(u,l),await Keu(u,l)}catch(c){if(f!==void 0)try{await f(i.apiPort,i.listenPort)}catch{}throw c}return{config:u,stop:async()=>{if(f!==void 0)await f(i.apiPort,i.listenPort)}}}var keu="ToxiProxy",Geu="dev_link_studio",ZMt=20,xeu=100,TMt=100;var eRi=g(()=>{y4()});var Jeu={};Xi(Jeu,{migrateBetterAuth:()=>aRi});import{getMigrations as kMt}from"better-auth/db";import{sso as GMt}from"@better-auth/sso";import{organization as SMt}from"@decocms/better-auth/plugins";import{admin as jMt,apiKey as KMt,jwt as JMt,magicLink as XMt,mcp as LMt,openAPI as WMt}from"better-auth/plugins";import{emailOTP as YMt}from"better-auth/plugins/email-otp";async function aRi(i){let t={database:nM(i||t2()),plugins:[SMt({dynamicAccessControl:{enabled:!0,enableCustomResources:!0}}),jMt(),KMt(),JMt(),WMt(),LMt({loginPage:"/login"}),GMt(),XMt({sendMagicLink:async()=>{}}),YMt({sendVerificationOTP:async()=>{}})]},{toBeAdded:f,toBeCreated:l,runMigrations:c}=await kMt(t);if(!f.length&&!l.length)return"up to date";return await c(),`${l.length+f.length} table(s) migrated`}var oRi=g(()=>{lE()});var sRi={};Xi(sRi,{up:()=>QMt,down:()=>zMt});import{sql as $v}from"kysely";async function QMt(i){await i.schema.createTable("connections").addColumn("id","text",(u)=>u.primaryKey()).addColumn("organizationId","text",(u)=>u.notNull().references("organization.id").onDelete("cascade")).addColumn("createdById","text",(u)=>u.notNull().references("user.id").onDelete("cascade")).addColumn("name","text",(u)=>u.notNull()).addColumn("description","text").addColumn("icon","text").addColumn("appName","text").addColumn("appId","text").addColumn("connectionType","text",(u)=>u.notNull()).addColumn("connectionUrl","text",(u)=>u.notNull()).addColumn("connectionToken","text").addColumn("connectionHeaders","text").addColumn("oauthConfig","text").addColumn("metadata","text").addColumn("tools","text").addColumn("bindings","text").addColumn("status","text",(u)=>u.notNull().defaultTo("active")).addColumn("createdAt","text",(u)=>u.notNull().defaultTo($v`CURRENT_TIMESTAMP`)).addColumn("updatedAt","text",(u)=>u.notNull().defaultTo($v`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("api_keys").addColumn("id","text",(u)=>u.primaryKey()).addColumn("userId","text",(u)=>u.notNull().references("user.id").onDelete("cascade")).addColumn("name","text",(u)=>u.notNull()).addColumn("hashedKey","text",(u)=>u.notNull().unique()).addColumn("permissions","text",(u)=>u.notNull()).addColumn("expiresAt","text").addColumn("remaining","integer").addColumn("metadata","text").addColumn("createdAt","text",(u)=>u.notNull().defaultTo($v`CURRENT_TIMESTAMP`)).addColumn("updatedAt","text",(u)=>u.notNull().defaultTo($v`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("audit_logs").addColumn("id","text",(u)=>u.primaryKey()).addColumn("organizationId","text").addColumn("userId","text",(u)=>u.references("user.id").onDelete("set null")).addColumn("connectionId","text",(u)=>u.references("connections.id").onDelete("set null")).addColumn("toolName","text",(u)=>u.notNull()).addColumn("allowed","integer",(u)=>u.notNull()).addColumn("duration","integer").addColumn("timestamp","text",(u)=>u.notNull().defaultTo($v`CURRENT_TIMESTAMP`)).addColumn("requestMetadata","text").execute(),await i.schema.createTable("oauth_clients").addColumn("id","text",(u)=>u.primaryKey()).addColumn("clientId","text",(u)=>u.notNull().unique()).addColumn("clientSecret","text").addColumn("clientName","text",(u)=>u.notNull()).addColumn("redirectUris","text",(u)=>u.notNull()).addColumn("grantTypes","text",(u)=>u.notNull()).addColumn("scope","text").addColumn("clientUri","text").addColumn("logoUri","text").addColumn("createdAt","text",(u)=>u.notNull().defaultTo($v`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("oauth_authorization_codes").addColumn("code","text",(u)=>u.primaryKey()).addColumn("clientId","text",(u)=>u.notNull().references("oauth_clients.clientId").onDelete("cascade")).addColumn("userId","text",(u)=>u.notNull().references("user.id").onDelete("cascade")).addColumn("redirectUri","text",(u)=>u.notNull()).addColumn("scope","text").addColumn("codeChallenge","text").addColumn("codeChallengeMethod","text").addColumn("expiresAt","text",(u)=>u.notNull()).addColumn("createdAt","text",(u)=>u.notNull().defaultTo($v`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("oauth_refresh_tokens").addColumn("token","text",(u)=>u.primaryKey()).addColumn("clientId","text",(u)=>u.notNull().references("oauth_clients.clientId").onDelete("cascade")).addColumn("userId","text",(u)=>u.notNull().references("user.id").onDelete("cascade")).addColumn("scope","text").addColumn("expiresAt","text").addColumn("createdAt","text",(u)=>u.notNull().defaultTo($v`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("downstream_tokens").addColumn("id","text",(u)=>u.primaryKey()).addColumn("connectionId","text",(u)=>u.notNull().references("connections.id").onDelete("cascade")).addColumn("userId","text",(u)=>u.references("user.id").onDelete("cascade")).addColumn("accessToken","text",(u)=>u.notNull()).addColumn("refreshToken","text").addColumn("scope","text").addColumn("expiresAt","text").addColumn("createdAt","text",(u)=>u.notNull().defaultTo($v`CURRENT_TIMESTAMP`)).addColumn("updatedAt","text",(u)=>u.notNull().defaultTo($v`CURRENT_TIMESTAMP`)).execute(),await i.schema.createIndex("idx_connections_organizationId").on("connections").column("organizationId").execute(),await i.schema.createIndex("idx_audit_logs_organizationId").on("audit_logs").column("organizationId").execute(),await i.schema.createIndex("idx_audit_logs_userId").on("audit_logs").column("userId").execute(),await i.schema.createIndex("idx_audit_logs_timestamp").on("audit_logs").column("timestamp").execute()}async function zMt(i){await i.schema.dropTable("downstream_tokens").execute(),await i.schema.dropTable("oauth_refresh_tokens").execute(),await i.schema.dropTable("oauth_authorization_codes").execute(),await i.schema.dropTable("oauth_clients").execute(),await i.schema.dropTable("audit_logs").execute(),await i.schema.dropTable("api_keys").execute(),await i.schema.dropTable("connections").execute()}var Xeu=()=>{};var pRi={};Xi(pRi,{up:()=>HMt,down:()=>RMt});import{sql as Leu}from"kysely";async function HMt(i){await i.schema.createTable("organization_settings").addColumn("organizationId","text",(u)=>u.primaryKey().references("organization.id").onDelete("cascade")).addColumn("modelsBindingConnectionId","text",(u)=>u.references("connections.id").onDelete("set null")).addColumn("createdAt","text",(u)=>u.notNull().defaultTo(Leu`CURRENT_TIMESTAMP`)).addColumn("updatedAt","text",(u)=>u.notNull().defaultTo(Leu`CURRENT_TIMESTAMP`)).execute()}async function RMt(i){await i.schema.dropTable("organization_settings").execute()}var Weu=()=>{};var ibi={};Xi(ibi,{up:()=>bMt,down:()=>CMt});async function bMt(i){await i.schema.alterTable("connections").renameColumn("name","title").execute(),await i.schema.alterTable("connections").renameColumn("createdById","created_by").execute(),await i.schema.alterTable("connections").renameColumn("createdAt","created_at").execute(),await i.schema.alterTable("connections").renameColumn("updatedAt","updated_at").execute(),await i.schema.alterTable("connections").renameColumn("organizationId","organization_id").execute(),await i.schema.alterTable("connections").renameColumn("connectionType","connection_type").execute(),await i.schema.alterTable("connections").renameColumn("connectionUrl","connection_url").execute(),await i.schema.alterTable("connections").renameColumn("connectionToken","connection_token").execute(),await i.schema.alterTable("connections").renameColumn("connectionHeaders","connection_headers").execute(),await i.schema.alterTable("connections").renameColumn("oauthConfig","oauth_config").execute(),await i.schema.alterTable("connections").renameColumn("appName","app_name").execute(),await i.schema.alterTable("connections").renameColumn("appId","app_id").execute()}async function CMt(i){await i.schema.alterTable("connections").renameColumn("title","name").execute(),await i.schema.alterTable("connections").renameColumn("created_by","createdById").execute(),await i.schema.alterTable("connections").renameColumn("created_at","createdAt").execute(),await i.schema.alterTable("connections").renameColumn("updated_at","updatedAt").execute(),await i.schema.alterTable("connections").renameColumn("organization_id","organizationId").execute(),await i.schema.alterTable("connections").renameColumn("connection_type","connectionType").execute(),await i.schema.alterTable("connections").renameColumn("connection_url","connectionUrl").execute(),await i.schema.alterTable("connections").renameColumn("connection_token","connectionToken").execute(),await i.schema.alterTable("connections").renameColumn("connection_headers","connectionHeaders").execute(),await i.schema.alterTable("connections").renameColumn("oauth_config","oauthConfig").execute(),await i.schema.alterTable("connections").renameColumn("app_name","appName").execute(),await i.schema.alterTable("connections").renameColumn("app_id","appId").execute()}var ubi={};Xi(ubi,{up:()=>MMt,down:()=>qMt});async function MMt(i){await i.schema.createTable("organization_settings_new").addColumn("organizationId","text",(u)=>u.primaryKey().references("organization.id").onDelete("cascade")).addColumn("createdAt","text",(u)=>u.notNull()).addColumn("updatedAt","text",(u)=>u.notNull()).execute(),await i.insertInto("organization_settings_new").columns(["organizationId","createdAt","updatedAt"]).expression((u)=>u.selectFrom("organization_settings").select(["organizationId","createdAt","updatedAt"])).execute(),await i.schema.dropTable("organization_settings").execute(),await i.schema.alterTable("organization_settings_new").renameTo("organization_settings").execute()}async function qMt(i){await i.schema.createTable("organization_settings_new").addColumn("organizationId","text",(u)=>u.primaryKey().references("organization.id").onDelete("cascade")).addColumn("modelsBindingConnectionId","text",(u)=>u.references("connections.id").onDelete("set null")).addColumn("createdAt","text",(u)=>u.notNull()).addColumn("updatedAt","text",(u)=>u.notNull()).execute(),await i.insertInto("organization_settings_new").columns(["organizationId","modelsBindingConnectionId","createdAt","updatedAt"]).expression((u)=>u.selectFrom("organization_settings").select(["organizationId",u.val(null).as("modelsBindingConnectionId"),"createdAt","updatedAt"])).execute(),await i.schema.dropTable("organization_settings").execute(),await i.schema.alterTable("organization_settings_new").renameTo("organization_settings").execute()}var tbi={};Xi(tbi,{up:()=>VMt,down:()=>rMt});async function VMt(i){await i.schema.alterTable("connections").addColumn("configuration_state","text").execute(),await i.schema.alterTable("connections").addColumn("configuration_scopes","text").execute()}async function rMt(i){await i.schema.alterTable("connections").dropColumn("configuration_state").execute(),await i.schema.alterTable("connections").dropColumn("configuration_scopes").execute()}var fbi={};Xi(fbi,{up:()=>eMt,down:()=>aMt});import{sql as mMt}from"kysely";async function eMt(i){await i.schema.alterTable("organization_settings").addColumn("sidebar_items",mMt`text`).execute()}async function aMt(i){await i.schema.alterTable("organization_settings").dropColumn("sidebar_items").execute()}var Yeu=()=>{};var lbi={};Xi(lbi,{up:()=>oMt,down:()=>sMt});async function oMt(i){await i.schema.createTable("monitoring_logs").addColumn("id","text",(u)=>u.primaryKey()).addColumn("organization_id","text",(u)=>u.notNull().references("organization.id").onDelete("cascade")).addColumn("connection_id","text",(u)=>u.notNull().references("connections.id").onDelete("cascade")).addColumn("connection_title","text",(u)=>u.notNull()).addColumn("tool_name","text",(u)=>u.notNull()).addColumn("input","text",(u)=>u.notNull()).addColumn("output","text",(u)=>u.notNull()).addColumn("is_error","integer",(u)=>u.notNull()).addColumn("error_message","text").addColumn("duration_ms","integer",(u)=>u.notNull()).addColumn("timestamp","text",(u)=>u.notNull()).addColumn("user_id","text").addColumn("request_id","text",(u)=>u.notNull()).execute(),await i.schema.createIndex("monitoring_logs_org_timestamp").on("monitoring_logs").columns(["organization_id","timestamp"]).execute(),await i.schema.createIndex("monitoring_logs_connection_timestamp").on("monitoring_logs").columns(["connection_id","timestamp"]).execute(),await i.schema.createIndex("monitoring_logs_is_error").on("monitoring_logs").columns(["organization_id","is_error","timestamp"]).execute()}async function sMt(i){await i.schema.dropIndex("monitoring_logs_is_error").execute(),await i.schema.dropIndex("monitoring_logs_connection_timestamp").execute(),await i.schema.dropIndex("monitoring_logs_org_timestamp").execute(),await i.schema.dropTable("monitoring_logs").execute()}var cbi={};Xi(cbi,{up:()=>pMt,down:()=>iqt});import{sql as fq}from"kysely";async function pMt(i){await i.schema.createTable("events").addColumn("id","text",(u)=>u.primaryKey()).addColumn("organization_id","text",(u)=>u.notNull().references("organization.id").onDelete("cascade")).addColumn("type","text",(u)=>u.notNull()).addColumn("source","text",(u)=>u.notNull()).addColumn("specversion","text",(u)=>u.notNull().defaultTo("1.0")).addColumn("subject","text").addColumn("time","text",(u)=>u.notNull()).addColumn("datacontenttype","text",(u)=>u.notNull().defaultTo("application/json")).addColumn("dataschema","text").addColumn("data","text").addColumn("cron","varchar(255)").addColumn("status","text",(u)=>u.notNull().defaultTo("pending")).addColumn("attempts","integer",(u)=>u.notNull().defaultTo(0)).addColumn("last_error","text").addColumn("next_retry_at","text").addColumn("created_at","text",(u)=>u.notNull().defaultTo(fq`CURRENT_TIMESTAMP`)).addColumn("updated_at","text",(u)=>u.notNull().defaultTo(fq`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("event_subscriptions").addColumn("id","text",(u)=>u.primaryKey()).addColumn("organization_id","text",(u)=>u.notNull().references("organization.id").onDelete("cascade")).addColumn("connection_id","text",(u)=>u.notNull().references("connections.id").onDelete("cascade")).addColumn("publisher","text").addColumn("event_type","text",(u)=>u.notNull()).addColumn("filter","text").addColumn("enabled","integer",(u)=>u.notNull().defaultTo(1)).addColumn("created_at","text",(u)=>u.notNull().defaultTo(fq`CURRENT_TIMESTAMP`)).addColumn("updated_at","text",(u)=>u.notNull().defaultTo(fq`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("event_deliveries").addColumn("id","text",(u)=>u.primaryKey()).addColumn("event_id","text",(u)=>u.notNull()).addColumn("subscription_id","text",(u)=>u.notNull().references("event_subscriptions.id").onDelete("cascade")).addColumn("status","text",(u)=>u.notNull().defaultTo("pending")).addColumn("attempts","integer",(u)=>u.notNull().defaultTo(0)).addColumn("last_error","text").addColumn("delivered_at","text").addColumn("next_retry_at","text").addColumn("created_at","text",(u)=>u.notNull().defaultTo(fq`CURRENT_TIMESTAMP`)).execute(),await i.schema.createIndex("idx_events_org_status").on("events").columns(["organization_id","status"]).execute(),await i.schema.createIndex("idx_events_source").on("events").columns(["source"]).execute(),await i.schema.createIndex("idx_events_type").on("events").columns(["type"]).execute(),await i.schema.createIndex("idx_events_retry").on("events").columns(["status","next_retry_at"]).execute(),await i.schema.createIndex("idx_subscriptions_connection").on("event_subscriptions").columns(["connection_id"]).execute(),await i.schema.createIndex("idx_subscriptions_type").on("event_subscriptions").columns(["event_type"]).execute(),await i.schema.createIndex("idx_subscriptions_org_enabled").on("event_subscriptions").columns(["organization_id","enabled"]).execute(),await i.schema.createIndex("idx_subscriptions_unique").on("event_subscriptions").columns(["connection_id","event_type","publisher","filter"]).unique().execute(),await i.schema.createIndex("idx_deliveries_event").on("event_deliveries").columns(["event_id"]).execute(),await i.schema.createIndex("idx_deliveries_subscription_status").on("event_deliveries").columns(["subscription_id","status"]).execute(),await i.schema.createIndex("idx_deliveries_retry").on("event_deliveries").columns(["status","next_retry_at"]).execute()}async function iqt(i){await i.schema.dropIndex("idx_deliveries_retry").execute(),await i.schema.dropIndex("idx_deliveries_subscription_status").execute(),await i.schema.dropIndex("idx_deliveries_event").execute(),await i.schema.dropIndex("idx_subscriptions_unique").execute(),await i.schema.dropIndex("idx_subscriptions_org_enabled").execute(),await i.schema.dropIndex("idx_subscriptions_type").execute(),await i.schema.dropIndex("idx_subscriptions_connection").execute(),await i.schema.dropIndex("idx_events_retry").execute(),await i.schema.dropIndex("idx_events_type").execute(),await i.schema.dropIndex("idx_events_source").execute(),await i.schema.dropIndex("idx_events_org_status").execute(),await i.schema.dropTable("event_deliveries").execute(),await i.schema.dropTable("event_subscriptions").execute(),await i.schema.dropTable("events").execute()}var Qeu=()=>{};var Ebi={};Xi(Ebi,{up:()=>tqt,down:()=>fqt});import{sql as uqt}from"kysely";async function tqt(i){await i.schema.dropTable("audit_logs").ifExists().execute()}async function fqt(i){await i.schema.createTable("audit_logs").ifNotExists().addColumn("id","text",(u)=>u.primaryKey()).addColumn("organizationId","text").addColumn("userId","text",(u)=>u.references("user.id").onDelete("set null")).addColumn("connectionId","text",(u)=>u.references("connections.id").onDelete("set null")).addColumn("toolName","text",(u)=>u.notNull()).addColumn("allowed","integer",(u)=>u.notNull()).addColumn("duration","integer").addColumn("timestamp","text",(u)=>u.notNull().defaultTo(uqt`CURRENT_TIMESTAMP`)).addColumn("requestMetadata","text").execute(),await i.schema.createIndex("idx_audit_logs_organizationId").on("audit_logs").column("organizationId").execute(),await i.schema.createIndex("idx_audit_logs_userId").on("audit_logs").column("userId").execute(),await i.schema.createIndex("idx_audit_logs_timestamp").on("audit_logs").column("timestamp").execute()}var zeu=()=>{};var $bi={};Xi($bi,{up:()=>lqt,down:()=>cqt});import{sql as R1i}from"kysely";async function lqt(i){await i.schema.createTable("gateways").addColumn("id","text",(u)=>u.primaryKey()).addColumn("organization_id","text",(u)=>u.notNull().references("organization.id").onDelete("cascade")).addColumn("title","text",(u)=>u.notNull()).addColumn("description","text").addColumn("tool_selection_strategy","text").addColumn("status","text",(u)=>u.notNull().defaultTo("active")).addColumn("is_default","integer",(u)=>u.notNull().defaultTo(0)).addColumn("created_at","text",(u)=>u.notNull().defaultTo(R1i`CURRENT_TIMESTAMP`)).addColumn("updated_at","text",(u)=>u.notNull().defaultTo(R1i`CURRENT_TIMESTAMP`)).addColumn("created_by","text",(u)=>u.notNull().references("user.id").onDelete("cascade")).addColumn("updated_by","text").execute(),await i.schema.createTable("gateway_connections").addColumn("id","text",(u)=>u.primaryKey()).addColumn("gateway_id","text",(u)=>u.notNull().references("gateways.id").onDelete("cascade")).addColumn("connection_id","text",(u)=>u.notNull().references("connections.id").onDelete("cascade")).addColumn("selected_tools","text").addColumn("created_at","text",(u)=>u.notNull().defaultTo(R1i`CURRENT_TIMESTAMP`)).execute(),await i.schema.createIndex("idx_gateways_org").on("gateways").columns(["organization_id"]).execute(),await i.schema.createIndex("idx_gateways_org_status").on("gateways").columns(["organization_id","status"]).execute(),await R1i`CREATE UNIQUE INDEX idx_gateways_default_per_org ON gateways (organization_id) WHERE is_default = 1`.execute(i),await i.schema.createIndex("idx_gateway_connections_gateway").on("gateway_connections").columns(["gateway_id"]).execute(),await i.schema.createIndex("idx_gateway_connections_connection").on("gateway_connections").columns(["connection_id"]).execute(),await i.schema.createIndex("idx_gateway_connections_unique").on("gateway_connections").columns(["gateway_id","connection_id"]).unique().execute()}async function cqt(i){await i.schema.dropIndex("idx_gateway_connections_unique").execute(),await i.schema.dropIndex("idx_gateway_connections_connection").execute(),await i.schema.dropIndex("idx_gateway_connections_gateway").execute(),await i.schema.dropIndex("idx_gateways_default_per_org").execute(),await i.schema.dropIndex("idx_gateways_org_status").execute(),await i.schema.dropIndex("idx_gateways_org").execute(),await i.schema.dropTable("gateway_connections").execute(),await i.schema.dropTable("gateways").execute()}var Heu=()=>{};var wbi={};Xi(wbi,{up:()=>Eqt,down:()=>$qt});async function Eqt(i){await i.schema.alterTable("gateways").addColumn("icon","text").execute()}async function $qt(i){await i.schema.alterTable("gateways").dropColumn("icon").execute()}var dbi={};Xi(dbi,{up:()=>wqt,down:()=>dqt});import{sql as b1i}from"kysely";async function wqt(i){await i.schema.alterTable("gateways").addColumn("tool_selection_mode","text",(u)=>u.notNull().defaultTo("inclusion")).execute(),await b1i`
|
|
84522
84522
|
UPDATE gateways
|
|
84523
84523
|
SET tool_selection_mode = CASE
|
|
@@ -86955,7 +86955,7 @@ Use this to continue with the user's request \u2014 do NOT call subtask again fo
|
|
|
86955
86955
|
|
|
86956
86956
|
${u}
|
|
86957
86957
|
|
|
86958
|
-
Use this to continue with the user's request \u2014 do NOT call subtask again for this.`:`The background subtask you started completed but produced no usable output${t==="length"?" (it hit its step limit)":""}. Continue with the user's request without calling subtask again for this.`;return{models:f,reactionNudge:c}}}};qK.registerWorkflow(yVf,{name:"backgroundToolWorkflow"})});import{z as Z$}from"zod";var ZVf,TVf,BVf,Wcu;var kK0=g(()=>{nH();DZ();Eu();ZVf=Z$.object({prompt:Z$.string(),agent_id:Z$.string().optional()}),TVf=Z$.object({threadId:Z$.string(),fenceToken:Z$.string(),toolName:Z$.enum(["generate_image","subtask"]),input:Z$.unknown(),toolCallId:Z$.string(),agentId:Z$.string(),temperature:Z$.number(),toolApprovalLevel:Z$.enum(["auto","readonly"]),branch:Z$.string().nullable().optional()}),BVf=Z$.object({jobId:Z$.string()}),Wcu=ti({name:"THREAD_BACKGROUND_TOOL_START",description:"Enqueue a slow built-in tool (generate_image or subtask) as a durable background job on the active run's thread. Used by desktop daemons \u2014 not called by the model.",annotations:{title:"Start Background Tool",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!1},inputSchema:TVf,outputSchema:BVf,handler:async(i,u)=>{ki(u);let t=yi(u);await u.access.check();let f=await u.storage.threads.get(i.threadId);if(!f||f.organization_id!==t.id)throw Error("Thread not found in organization");let l=await u.storage.threads.getCancelRequestedAt(i.threadId);if(uU0(l))throw Error("Run cancelled");let c=await u.storage.threads.getRunFence(i.threadId);if(c===null||!khi(c,i.fenceToken))throw Error("Stale run fence");let E=i.toolName==="generate_image"?vZ.parse(i.input):ZVf.parse(i.input),$=mTi({threadId:i.threadId,orgId:t.id,userId:u.auth.user.id,agentId:i.agentId,temperature:i.temperature,toolApprovalLevel:i.toolApprovalLevel,branch:i.branch??null}),{jobId:w}=await $.start({toolName:i.toolName,input:E,toolCallId:i.toolCallId});return{jobId:w}}})});import{z as k_}from"zod";var FVf,UVf,Ycu;var GK0=g(()=>{nH();Eu();FVf=k_.object({threadId:k_.string(),fenceToken:k_.string(),jobId:k_.string(),report:k_.string(),agentId:k_.string(),temperature:k_.number(),toolApprovalLevel:k_.enum(["auto","readonly"]),branch:k_.string().nullable().optional()}),UVf=k_.object({ok:k_.literal(!0)}),Ycu=ti({name:"THREAD_SUBTASK_DELIVER",description:"Deliver a backgrounded subtask's report back to its thread (persist + react). Called by desktop daemons \u2014 not by the model.",annotations:{title:"Deliver Subtask Result",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!1},inputSchema:FVf,outputSchema:UVf,handler:async(i,u)=>{ki(u);let t=yi(u);await u.access.check();let f=await u.storage.threads.get(i.threadId);if(!f||f.organization_id!==t.id)throw Error("Thread not found in organization");let l=await u.storage.threads.getRunFence(i.threadId);if(l===null||!khi(l,i.fenceToken))throw Error("Stale run fence");return await IK0({snapshot:{threadId:i.threadId,orgId:t.id,userId:u.auth.user.id,agentId:i.agentId,temperature:i.temperature,toolApprovalLevel:i.toolApprovalLevel,branch:i.branch??null},jobId:i.jobId,report:i.report}),{ok:!0}}})});var SK0=g(()=>{oF0();I4u();x4u();sF0();pF0();j4u();kK0();GK0()});function AVf(i){return{type:"doc",content:[{type:"paragraph",content:[{type:"text",text:i}]}]}}function IVf(i){return i.map((u)=>{let t=u.metadata;if(t?.tiptapDoc)return u;let f=u.parts.find((l)=>l.type==="text"&&typeof l.text==="string");if(!f?.text||typeof f.text!=="string")return u;return{...u,metadata:{...t,tiptapDoc:AVf(f.text)}}})}function eTi(i){let u;if(typeof i==="string")try{let t=JSON.parse(i);if(Array.isArray(t)&&t.length>0&&t[0]?.role&&Array.isArray(t[0]?.parts))u=t;else u=[{role:"user",parts:[{type:"text",text:i}]}]}catch{u=[{role:"user",parts:[{type:"text",text:i}]}]}else u=i;return IVf(u)}import{z as ll}from"zod";var Qcu;var jK0=g(()=>{H4();Eu();T8();Qcu=ti({name:"AUTOMATION_CREATE",description:"Create an automation that runs an agent thread on trigger fire. Requires virtual_mcp_id + messages.",annotations:{title:"Create Automation",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!1},inputSchema:ll.object({name:ll.string().min(1).max(255),virtual_mcp_id:ll.string(),messages:ll.union([ll.string(),ll.array(ll.looseObject({id:ll.string().optional(),role:ll.enum(["user","assistant","system"]),parts:ll.array(ll.record(ll.string(),ll.unknown())),metadata:ll.unknown().optional()}))]),models:ll.object({tier:X3i,modelId:ll.string().optional(),credentialId:ll.string().optional()}).loose().default({tier:"smart"}),tools:ll.array(ll.string()).nullable().optional(),maxAgentSteps:ll.number().int().min(1).max(100).nullable().optional(),temperature:ll.number().default(0.5),active:ll.boolean().default(!0)}),outputSchema:ll.object({id:ll.string(),name:ll.string(),active:ll.boolean(),created_at:ll.string()}),handler:async(i,u)=>{ki(u);let t=yi(u);await u.access.check();let f=Hu(u);if(!f)throw Error("Unable to determine user identity");let l=eTi(i.messages),c=await u.storage.automations.create({organization_id:t.id,created_by:f,name:i.name,messages:JSON.stringify(l),models:JSON.stringify(i.models),tools:i.tools===void 0||i.tools===null?null:JSON.stringify(i.tools),max_agent_steps:i.maxAgentSteps??null,temperature:i.temperature,active:i.active,virtual_mcp_id:i.virtual_mcp_id});return mu.capture({distinctId:f,event:"automation_created",groups:{organization:t.id},properties:{organization_id:t.id,automation_id:c.id,virtual_mcp_id:i.virtual_mcp_id,active:c.active,tier:i.models.tier}}),{id:c.id,name:c.name,active:c.active,created_at:c.created_at}}})});import{z as r4}from"zod";var zcu;var KK0=g(()=>{Eu();zcu=ti({name:"AUTOMATION_GET",description:"Get an automation's full configuration and triggers by ID.",annotations:{title:"Get Automation",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:r4.object({id:r4.string()}),outputSchema:r4.object({automation:r4.object({id:r4.string(),name:r4.string(),active:r4.boolean(),created_by:r4.string(),created_at:r4.string(),updated_at:r4.string(),virtual_mcp_id:r4.string(),messages:r4.unknown(),models:r4.unknown(),tools:r4.array(r4.string()).nullable(),maxAgentSteps:r4.number().nullable(),temperature:r4.number(),triggers:r4.array(r4.object({id:r4.string(),type:r4.enum(["cron","event","webhook"]),cron_expression:r4.string().nullable(),connection_id:r4.string().nullable(),event_type:r4.string().nullable(),params:r4.unknown().nullable(),last_run_at:r4.string().nullable(),api_key_id:r4.string().nullable(),created_at:r4.string()}))}).nullable()}),handler:async(i,u)=>{ki(u);let t=yi(u);await u.access.check();let f=await u.storage.automations.findById(i.id,t.id);if(!f)return{automation:null};let l=await u.storage.automations.listTriggers(f.id);return{automation:{id:f.id,name:f.name,active:f.active,created_by:f.created_by,created_at:f.created_at,updated_at:f.updated_at,virtual_mcp_id:f.virtual_mcp_id,messages:JSON.parse(f.messages),models:JSON.parse(f.models),tools:f.tools?JSON.parse(f.tools):null,maxAgentSteps:f.max_agent_steps,temperature:f.temperature,triggers:l.map((c)=>({id:c.id,type:c.type,cron_expression:c.cron_expression,connection_id:c.connection_id,event_type:c.event_type,params:c.params?JSON.parse(c.params):null,last_run_at:c.last_run_at,api_key_id:c.api_key_id,created_at:c.created_at}))}}}})});import{z as xd}from"zod";var Hcu;var JK0=g(()=>{Eu();Hcu=ti({name:"AUTOMATION_LIST",description:"List automations with their status, triggers, and configuration.",annotations:{title:"List Automations",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:xd.object({virtual_mcp_id:xd.string().optional().nullable()}),outputSchema:xd.object({automations:xd.array(xd.object({id:xd.string(),name:xd.string(),active:xd.boolean(),created_by:xd.string(),created_at:xd.string(),trigger_count:xd.number(),nearest_next_run_at:xd.string().nullable(),virtual_mcp_id:xd.string()}))}),handler:async(i,u)=>{ki(u);let t=yi(u);return await u.access.check(),{automations:(await u.storage.automations.listWithTriggerCounts(t.id,i.virtual_mcp_id)).map((c)=>({id:c.id,name:c.name,active:c.active,created_by:c.created_by,created_at:c.created_at,trigger_count:c.trigger_count,nearest_next_run_at:c.nearest_next_run_at,virtual_mcp_id:c.virtual_mcp_id}))}}})});function XK0(i){return i instanceof Vg||typeof i==="object"&&i!==null&&i.permanent===!0}var Vg;var Rcu=g(()=>{Vg=class Vg extends Error{permanent=!0;code;constructor(i,u){super(u);this.name="PermanentRunError",this.code=i}}});function xVf(i){if(!i)return null;try{let u=JSON.parse(i);if(Array.isArray(u)&&u.every((t)=>typeof t==="string"))return u.length>0?u:null}catch{}return null}function LK0(i,u,t,f,l){return{messages:JSON.parse(i.messages).map((w)=>({...w,id:crypto.randomUUID()})),models:{credentialId:f.credentialId,thinking:f.thinking,...f.image?{image:f.image}:{},...f.webSearch?{webSearch:f.webSearch}:{},...f.deepResearch?{deepResearch:f.deepResearch}:{}},agent:{id:i.virtual_mcp_id},toolAllowlist:xVf(i.tools),maxAgentSteps:i.max_agent_steps??void 0,temperature:i.temperature??0.5,toolApprovalLevel:"auto",mode:"default",organizationId:i.organization_id,userId:i.created_by,triggerId:u??void 0,...l?{runMetadata:l}:{},taskId:t}}function jE(i,u,t,f,l,c,E,$){return jE.fromTZ(jE.tp(i,u,t,f,l,c,E),$)}function bcu(i,u=new Date){let t=u.toLocaleString("en-US",{timeZone:i,timeZoneName:"shortOffset"}).split(" ").slice(-1)[0],f=u.toLocaleString("en-US").replace(/[\u202f]/," ");return Date.parse(`${f} GMT`)-Date.parse(`${f} ${t}`)}function kVf(i,u){let t=new Date(Date.parse(i));if(isNaN(t))throw Error("minitz: Invalid ISO8601 passed to parser.");let f=i.substring(9);return i.includes("Z")||f.includes("-")||f.includes("+")?jE.tp(t.getUTCFullYear(),t.getUTCMonth()+1,t.getUTCDate(),t.getUTCHours(),t.getUTCMinutes(),t.getUTCSeconds(),"Etc/UTC"):jE.tp(t.getFullYear(),t.getMonth()+1,t.getDate(),t.getHours(),t.getMinutes(),t.getSeconds(),u)}function GVf(i){if(i===void 0&&(i={}),delete i.name,i.legacyMode=i.legacyMode===void 0?!0:i.legacyMode,i.paused=i.paused===void 0?!1:i.paused,i.maxRuns=i.maxRuns===void 0?1/0:i.maxRuns,i.catch=i.catch===void 0?!1:i.catch,i.interval=i.interval===void 0?0:parseInt(i.interval.toString(),10),i.utcOffset=i.utcOffset===void 0?void 0:parseInt(i.utcOffset.toString(),10),i.unref=i.unref===void 0?!1:i.unref,i.startAt&&(i.startAt=new z3(i.startAt,i.timezone)),i.stopAt&&(i.stopAt=new z3(i.stopAt,i.timezone)),i.interval!==null){if(isNaN(i.interval))throw Error("CronOptions: Supplied value for interval is not a number");if(i.interval<0)throw Error("CronOptions: Supplied value for interval can not be negative")}if(i.utcOffset!==void 0){if(isNaN(i.utcOffset))throw Error("CronOptions: Invalid value passed for utcOffset, should be number representing minutes offset from UTC.");if(i.utcOffset<-870||i.utcOffset>870)throw Error("CronOptions: utcOffset out of bounds.");if(i.utcOffset!==void 0&&i.timezone)throw Error("CronOptions: Combining 'utcOffset' with 'timezone' is not allowed.")}if(i.unref!==!0&&i.unref!==!1)throw Error("CronOptions: Unref should be either true, false or undefined(false).");return i}function Qo(i){return Object.prototype.toString.call(i)==="[object Function]"||typeof i=="function"||i instanceof Function}function SVf(i){return Qo(i)}function jVf(i){typeof Deno<"u"&&typeof Deno.unrefTimer<"u"?Deno.unrefTimer(i):i&&typeof i.unref<"u"&&i.unref()}var Ccu=32,zo,zK0,WK0=class{pattern;timezone;second;minute;hour;day;month;dayOfWeek;lastDayOfMonth;starDOM;starDOW;constructor(i,u){this.pattern=i,this.timezone=u,this.second=Array(60).fill(0),this.minute=Array(60).fill(0),this.hour=Array(24).fill(0),this.day=Array(31).fill(0),this.month=Array(12).fill(0),this.dayOfWeek=Array(7).fill(0),this.lastDayOfMonth=!1,this.starDOM=!1,this.starDOW=!1,this.parse()}parse(){if(!(typeof this.pattern=="string"||this.pattern instanceof String))throw TypeError("CronPattern: Pattern has to be of type string.");this.pattern.indexOf("@")>=0&&(this.pattern=this.handleNicknames(this.pattern).trim());let i=this.pattern.replace(/\s+/g," ").split(" ");if(i.length<5||i.length>6)throw TypeError("CronPattern: invalid configuration format ('"+this.pattern+"'), exactly five or six space separated parts are required.");if(i.length===5&&i.unshift("0"),i[3].indexOf("L")>=0&&(i[3]=i[3].replace("L",""),this.lastDayOfMonth=!0),i[3]=="*"&&(this.starDOM=!0),i[4].length>=3&&(i[4]=this.replaceAlphaMonths(i[4])),i[5].length>=3&&(i[5]=this.replaceAlphaDays(i[5])),i[5]=="*"&&(this.starDOW=!0),this.pattern.indexOf("?")>=0){let u=new z3(new Date,this.timezone).getDate(!0);i[0]=i[0].replace("?",u.getSeconds().toString()),i[1]=i[1].replace("?",u.getMinutes().toString()),i[2]=i[2].replace("?",u.getHours().toString()),this.starDOM||(i[3]=i[3].replace("?",u.getDate().toString())),i[4]=i[4].replace("?",(u.getMonth()+1).toString()),this.starDOW||(i[5]=i[5].replace("?",u.getDay().toString()))}this.throwAtIllegalCharacters(i),this.partToArray("second",i[0],0,1),this.partToArray("minute",i[1],0,1),this.partToArray("hour",i[2],0,1),this.partToArray("day",i[3],-1,1),this.partToArray("month",i[4],-1,1),this.partToArray("dayOfWeek",i[5],0,zo),this.dayOfWeek[7]&&(this.dayOfWeek[0]=this.dayOfWeek[7])}partToArray(i,u,t,f){let l=this[i],c=i==="day"&&this.lastDayOfMonth;if(u===""&&!c)throw TypeError("CronPattern: configuration entry "+i+" ("+u+") is empty, check for trailing spaces.");if(u==="*")return l.fill(f);let E=u.split(",");if(E.length>1)for(let $=0;$<E.length;$++)this.partToArray(i,E[$],t,f);else u.indexOf("-")!==-1&&u.indexOf("/")!==-1?this.handleRangeWithStepping(u,i,t,f):u.indexOf("-")!==-1?this.handleRange(u,i,t,f):u.indexOf("/")!==-1?this.handleStepping(u,i,t,f):u!==""&&this.handleNumber(u,i,t,f)}throwAtIllegalCharacters(i){for(let u=0;u<i.length;u++)if((u===5?/[^/*0-9,\-#L]+/:/[^/*0-9,-]+/).test(i[u]))throw TypeError("CronPattern: configuration entry "+u+" ("+i[u]+") contains illegal characters.")}handleNumber(i,u,t,f){let l=this.extractNth(i,u),c=parseInt(l[0],10)+t;if(isNaN(c))throw TypeError("CronPattern: "+u+" is not a number: '"+i+"'");this.setPart(u,c,l[1]||f)}setPart(i,u,t){if(!Object.prototype.hasOwnProperty.call(this,i))throw TypeError("CronPattern: Invalid part specified: "+i);if(i==="dayOfWeek"){if(u===7&&(u=0),u<0||u>6)throw RangeError("CronPattern: Invalid value for dayOfWeek: "+u);this.setNthWeekdayOfMonth(u,t);return}if(i==="second"||i==="minute"){if(u<0||u>=60)throw RangeError("CronPattern: Invalid value for "+i+": "+u)}else if(i==="hour"){if(u<0||u>=24)throw RangeError("CronPattern: Invalid value for "+i+": "+u)}else if(i==="day"){if(u<0||u>=31)throw RangeError("CronPattern: Invalid value for "+i+": "+u)}else if(i==="month"&&(u<0||u>=12))throw RangeError("CronPattern: Invalid value for "+i+": "+u);this[i][u]=t}handleRangeWithStepping(i,u,t,f){let l=this.extractNth(i,u),c=l[0].match(/^(\d+)-(\d+)\/(\d+)$/);if(c===null)throw TypeError("CronPattern: Syntax error, illegal range with stepping: '"+i+"'");let[,E,$,w]=c,d=parseInt(E,10)+t,h=parseInt($,10)+t,_=parseInt(w,10);if(isNaN(d))throw TypeError("CronPattern: Syntax error, illegal lower range (NaN)");if(isNaN(h))throw TypeError("CronPattern: Syntax error, illegal upper range (NaN)");if(isNaN(_))throw TypeError("CronPattern: Syntax error, illegal stepping: (NaN)");if(_===0)throw TypeError("CronPattern: Syntax error, illegal stepping: 0");if(_>this[u].length)throw TypeError("CronPattern: Syntax error, steps cannot be greater than maximum value of part ("+this[u].length+")");if(d>h)throw TypeError("CronPattern: From value is larger than to value: '"+i+"'");for(let v=d;v<=h;v+=_)this.setPart(u,v,l[1]||f)}extractNth(i,u){let t=i,f;if(t.includes("#")){if(u!=="dayOfWeek")throw Error("CronPattern: nth (#) only allowed in day-of-week field");f=t.split("#")[1],t=t.split("#")[0]}return[t,f]}handleRange(i,u,t,f){let l=this.extractNth(i,u),c=l[0].split("-");if(c.length!==2)throw TypeError("CronPattern: Syntax error, illegal range: '"+i+"'");let E=parseInt(c[0],10)+t,$=parseInt(c[1],10)+t;if(isNaN(E))throw TypeError("CronPattern: Syntax error, illegal lower range (NaN)");if(isNaN($))throw TypeError("CronPattern: Syntax error, illegal upper range (NaN)");if(E>$)throw TypeError("CronPattern: From value is larger than to value: '"+i+"'");for(let w=E;w<=$;w++)this.setPart(u,w,l[1]||f)}handleStepping(i,u,t,f){let l=this.extractNth(i,u),c=l[0].split("/");if(c.length!==2)throw TypeError("CronPattern: Syntax error, illegal stepping: '"+i+"'");c[0]===""&&(c[0]="*");let E=0;c[0]!=="*"&&(E=parseInt(c[0],10)+t);let $=parseInt(c[1],10);if(isNaN($))throw TypeError("CronPattern: Syntax error, illegal stepping: (NaN)");if($===0)throw TypeError("CronPattern: Syntax error, illegal stepping: 0");if($>this[u].length)throw TypeError("CronPattern: Syntax error, max steps for part is ("+this[u].length+")");for(let w=E;w<this[u].length;w+=$)this.setPart(u,w,l[1]||f)}replaceAlphaDays(i){return i.replace(/-sun/gi,"-7").replace(/sun/gi,"0").replace(/mon/gi,"1").replace(/tue/gi,"2").replace(/wed/gi,"3").replace(/thu/gi,"4").replace(/fri/gi,"5").replace(/sat/gi,"6")}replaceAlphaMonths(i){return i.replace(/jan/gi,"1").replace(/feb/gi,"2").replace(/mar/gi,"3").replace(/apr/gi,"4").replace(/may/gi,"5").replace(/jun/gi,"6").replace(/jul/gi,"7").replace(/aug/gi,"8").replace(/sep/gi,"9").replace(/oct/gi,"10").replace(/nov/gi,"11").replace(/dec/gi,"12")}handleNicknames(i){let u=i.trim().toLowerCase();return u==="@yearly"||u==="@annually"?"0 0 1 1 *":u==="@monthly"?"0 0 1 * *":u==="@weekly"?"0 0 * * 0":u==="@daily"?"0 0 * * *":u==="@hourly"?"0 * * * *":i}setNthWeekdayOfMonth(i,u){if(typeof u!="number"&&u==="L")this.dayOfWeek[i]=this.dayOfWeek[i]|Ccu;else if(u===zo)this.dayOfWeek[i]=zo;else if(u<6&&u>0)this.dayOfWeek[i]=this.dayOfWeek[i]|zK0[u-1];else throw TypeError(`CronPattern: nth weekday out of range, should be 1-5 or L. Value: ${u}, Type: ${typeof u}`)}},YK0,z8,z3=class i{tz;ms;second;minute;hour;day;month;year;constructor(u,t){if(this.tz=t,u&&u instanceof Date)if(!isNaN(u))this.fromDate(u);else throw TypeError("CronDate: Invalid date passed to CronDate constructor");else if(u===void 0)this.fromDate(new Date);else if(u&&typeof u=="string")this.fromString(u);else if(u instanceof i)this.fromCronDate(u);else throw TypeError("CronDate: Invalid type ("+typeof u+") passed to CronDate constructor")}isNthWeekdayOfMonth(u,t,f,l){let c=new Date(Date.UTC(u,t,f)).getUTCDay(),E=0;for(let $=1;$<=f;$++)new Date(Date.UTC(u,t,$)).getUTCDay()===c&&E++;if(l&zo&&zK0[E-1]&l)return!0;if(l&Ccu){let $=new Date(Date.UTC(u,t+1,0)).getUTCDate();for(let w=f+1;w<=$;w++)if(new Date(Date.UTC(u,t,w)).getUTCDay()===c)return!1;return!0}return!1}fromDate(u){if(this.tz!==void 0)if(typeof this.tz=="number")this.ms=u.getUTCMilliseconds(),this.second=u.getUTCSeconds(),this.minute=u.getUTCMinutes()+this.tz,this.hour=u.getUTCHours(),this.day=u.getUTCDate(),this.month=u.getUTCMonth(),this.year=u.getUTCFullYear(),this.apply();else{let t=jE.toTZ(u,this.tz);this.ms=u.getMilliseconds(),this.second=t.s,this.minute=t.i,this.hour=t.h,this.day=t.d,this.month=t.m-1,this.year=t.y}else this.ms=u.getMilliseconds(),this.second=u.getSeconds(),this.minute=u.getMinutes(),this.hour=u.getHours(),this.day=u.getDate(),this.month=u.getMonth(),this.year=u.getFullYear()}fromCronDate(u){this.tz=u.tz,this.year=u.year,this.month=u.month,this.day=u.day,this.hour=u.hour,this.minute=u.minute,this.second=u.second,this.ms=u.ms}apply(){if(this.month>11||this.day>YK0[this.month]||this.hour>59||this.minute>59||this.second>59||this.hour<0||this.minute<0||this.second<0){let u=new Date(Date.UTC(this.year,this.month,this.day,this.hour,this.minute,this.second,this.ms));return this.ms=u.getUTCMilliseconds(),this.second=u.getUTCSeconds(),this.minute=u.getUTCMinutes(),this.hour=u.getUTCHours(),this.day=u.getUTCDate(),this.month=u.getUTCMonth(),this.year=u.getUTCFullYear(),!0}else return!1}fromString(u){if(typeof this.tz=="number"){let t=jE.fromTZISO(u);this.ms=t.getUTCMilliseconds(),this.second=t.getUTCSeconds(),this.minute=t.getUTCMinutes(),this.hour=t.getUTCHours(),this.day=t.getUTCDate(),this.month=t.getUTCMonth(),this.year=t.getUTCFullYear(),this.apply()}else return this.fromDate(jE.fromTZISO(u,this.tz))}findNext(u,t,f,l){let c=this[t],E;f.lastDayOfMonth&&(this.month!==1?E=YK0[this.month]:E=new Date(Date.UTC(this.year,this.month+1,0,0,0,0,0)).getUTCDate());let $=!f.starDOW&&t=="day"?new Date(Date.UTC(this.year,this.month,1,0,0,0,0)).getUTCDay():void 0;for(let w=this[t]+l;w<f[t].length;w++){let d=f[t][w];if(t==="day"&&f.lastDayOfMonth&&w-l==E&&(d=1),t==="day"&&!f.starDOW){let h=f.dayOfWeek[($+(w-l-1))%7];if(h&&h&zo)h=this.isNthWeekdayOfMonth(this.year,this.month,w-l,h)?1:0;else if(h)throw Error(`CronDate: Invalid value for dayOfWeek encountered. ${h}`);u.legacyMode&&!f.starDOM?d=d||h:d=d&&h}if(d)return this[t]=w-l,c!==this[t]?2:1}return 3}recurse(u,t,f){let l=this.findNext(t,z8[f][0],u,z8[f][2]);if(l>1){let c=f+1;for(;c<z8.length;)this[z8[c][0]]=-z8[c][2],c++;if(l===3)return this[z8[f][1]]++,this[z8[f][0]]=-z8[f][2],this.apply(),this.recurse(u,t,0);if(this.apply())return this.recurse(u,t,f-1)}return f+=1,f>=z8.length?this:this.year>=3000?null:this.recurse(u,t,f)}increment(u,t,f){return this.second+=t.interval!==void 0&&t.interval>1&&f?t.interval:1,this.ms=0,this.apply(),this.recurse(u,t,0)}getDate(u){return u||this.tz===void 0?new Date(this.year,this.month,this.day,this.hour,this.minute,this.second,this.ms):typeof this.tz=="number"?new Date(Date.UTC(this.year,this.month,this.day,this.hour,this.minute-this.tz,this.second,this.ms)):jE.fromTZ(jE.tp(this.year,this.month+1,this.day,this.hour,this.minute,this.second,this.tz),!1)}getTime(){return this.getDate(!1).getTime()}},QK0=30000,aTi,oTi=class{name;options;_states;fn;constructor(i,u,t){let f,l;if(Qo(u))l=u;else if(typeof u=="object")f=u;else if(u!==void 0)throw Error("Cron: Invalid argument passed for optionsIn. Should be one of function, or object (options).");if(Qo(t))l=t;else if(typeof t=="object")f=t;else if(t!==void 0)throw Error("Cron: Invalid argument passed for funcIn. Should be one of function, or object (options).");if(this.name=f?.name,this.options=GVf(f),this._states={kill:!1,blocking:!1,previousRun:void 0,currentRun:void 0,once:void 0,currentTimeout:void 0,maxRuns:f?f.maxRuns:void 0,paused:f?f.paused:!1,pattern:new WK0("* * * * *")},i&&(i instanceof Date||typeof i=="string"&&i.indexOf(":")>0)?this._states.once=new z3(i,this.options.timezone||this.options.utcOffset):this._states.pattern=new WK0(i,this.options.timezone),this.name){if(aTi.find((c)=>c.name===this.name))throw Error("Cron: Tried to initialize new named job '"+this.name+"', but name already taken.");aTi.push(this)}return l!==void 0&&SVf(l)&&(this.fn=l,this.schedule()),this}nextRun(i){let u=this._next(i);return u?u.getDate(!1):null}nextRuns(i,u){this._states.maxRuns!==void 0&&i>this._states.maxRuns&&(i=this._states.maxRuns);let t=[],f=u||this._states.currentRun||void 0;for(;i--&&(f=this.nextRun(f));)t.push(f);return t}getPattern(){return this._states.pattern?this._states.pattern.pattern:void 0}isRunning(){let i=this.nextRun(this._states.currentRun),u=!this._states.paused,t=this.fn!==void 0,f=!this._states.kill;return u&&t&&f&&i!==null}isStopped(){return this._states.kill}isBusy(){return this._states.blocking}currentRun(){return this._states.currentRun?this._states.currentRun.getDate():null}previousRun(){return this._states.previousRun?this._states.previousRun.getDate():null}msToNext(i){let u=this._next(i);return u?i instanceof z3||i instanceof Date?u.getTime()-i.getTime():u.getTime()-new z3(i).getTime():null}stop(){this._states.kill=!0,this._states.currentTimeout&&clearTimeout(this._states.currentTimeout);let i=aTi.indexOf(this);i>=0&&aTi.splice(i,1)}pause(){return this._states.paused=!0,!this._states.kill}resume(){return this._states.paused=!1,!this._states.kill}schedule(i){if(i&&this.fn)throw Error("Cron: It is not allowed to schedule two functions using the same Croner instance.");i&&(this.fn=i);let u=this.msToNext(),t=this.nextRun(this._states.currentRun);return u==null||isNaN(u)||t===null?this:(u>QK0&&(u=QK0),this._states.currentTimeout=setTimeout(()=>this._checkTrigger(t),u),this._states.currentTimeout&&this.options.unref&&jVf(this._states.currentTimeout),this)}async _trigger(i){if(this._states.blocking=!0,this._states.currentRun=new z3(void 0,this.options.timezone||this.options.utcOffset),this.options.catch)try{this.fn!==void 0&&await this.fn(this,this.options.context)}catch(u){Qo(this.options.catch)&&this.options.catch(u,this)}else this.fn!==void 0&&await this.fn(this,this.options.context);this._states.previousRun=new z3(i,this.options.timezone||this.options.utcOffset),this._states.blocking=!1}async trigger(){await this._trigger()}runsLeft(){return this._states.maxRuns}_checkTrigger(i){let u=new Date,t=!this._states.paused&&u.getTime()>=i.getTime(),f=this._states.blocking&&this.options.protect;t&&!f?(this._states.maxRuns!==void 0&&this._states.maxRuns--,this._trigger()):t&&f&&Qo(this.options.protect)&&setTimeout(()=>this.options.protect(this),0),this.schedule()}_next(i){let u=!!(i||this._states.currentRun),t=!1;!i&&this.options.startAt&&this.options.interval&&([i,u]=this._calculatePreviousRun(i,u),t=!i),i=new z3(i,this.options.timezone||this.options.utcOffset),this.options.startAt&&i&&i.getTime()<this.options.startAt.getTime()&&(i=this.options.startAt);let f=this._states.once||new z3(i,this.options.timezone||this.options.utcOffset);return!t&&f!==this._states.once&&(f=f.increment(this._states.pattern,this.options,u)),this._states.once&&this._states.once.getTime()<=i.getTime()||f===null||this._states.maxRuns!==void 0&&this._states.maxRuns<=0||this._states.kill||this.options.stopAt&&f.getTime()>=this.options.stopAt.getTime()?null:f}_calculatePreviousRun(i,u){let t=new z3(void 0,this.options.timezone||this.options.utcOffset),f=i;if(this.options.startAt.getTime()<=t.getTime()){f=this.options.startAt;let l=f.getTime()+this.options.interval*1000;for(;l<=t.getTime();)f=new z3(f,this.options.timezone||this.options.utcOffset).increment(this._states.pattern,this.options,!0),l=f.getTime()+this.options.interval*1000;u=!0}return f===null&&(f=void 0),[f,u]}};var Mcu=g(()=>{jE.fromTZISO=(i,u,t)=>jE.fromTZ(kVf(i,u),t);jE.fromTZ=function(i,u){let t=new Date(Date.UTC(i.y,i.m-1,i.d,i.h,i.i,i.s)),f=bcu(i.tz,t),l=new Date(t.getTime()-f),c=bcu(i.tz,l);if(c-f===0)return l;{let E=new Date(t.getTime()-c),$=bcu(i.tz,E);if($-c===0)return E;if(!u&&$-c>0)return E;if(u)throw Error("Invalid date passed to fromTZ()");return l}};jE.toTZ=function(i,u){let t=i.toLocaleString("en-US",{timeZone:u}).replace(/[\u202f]/," "),f=new Date(t);return{y:f.getFullYear(),m:f.getMonth()+1,d:f.getDate(),h:f.getHours(),i:f.getMinutes(),s:f.getSeconds(),tz:u}};jE.tp=(i,u,t,f,l,c,E)=>({y:i,m:u,d:t,h:f,i:l,s:c,tz:E});jE.minitz=jE;zo=31|Ccu,zK0=[1,2,4,8,16],YK0=[31,28,31,30,31,30,31,31,30,31,30,31],z8=[["month","year",0],["day","month",-1],["hour","day",0],["minute","hour",0],["second","minute",0]];aTi=[]});function sTi(i,u){try{return new oTi(i,{timezone:"UTC"}).nextRun(u)??null}catch{return null}}var qcu=g(()=>{Mcu()});import{DBOS as L6,SchedulerMode as KVf}from"@dbos-inc/dbos-sdk";async function acu(i){try{let{rows:u}=await i.query(`SELECT q.name FROM dbos.queues q
|
|
86958
|
+
Use this to continue with the user's request \u2014 do NOT call subtask again for this.`:`The background subtask you started completed but produced no usable output${t==="length"?" (it hit its step limit)":""}. Continue with the user's request without calling subtask again for this.`;return{models:f,reactionNudge:c}}}};qK.registerWorkflow(yVf,{name:"backgroundToolWorkflow"})});import{z as Z$}from"zod";var ZVf,TVf,BVf,Wcu;var kK0=g(()=>{nH();DZ();Eu();ZVf=Z$.object({prompt:Z$.string(),agent_id:Z$.string().optional()}),TVf=Z$.object({threadId:Z$.string(),fenceToken:Z$.string(),toolName:Z$.enum(["generate_image","subtask"]),input:Z$.unknown(),toolCallId:Z$.string(),agentId:Z$.string(),temperature:Z$.number(),toolApprovalLevel:Z$.enum(["auto","readonly"]),branch:Z$.string().nullable().optional()}),BVf=Z$.object({jobId:Z$.string()}),Wcu=ti({name:"THREAD_BACKGROUND_TOOL_START",description:"Enqueue a slow built-in tool (generate_image or subtask) as a durable background job on the active run's thread. Used by desktop daemons \u2014 not called by the model.",annotations:{title:"Start Background Tool",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!1},inputSchema:TVf,outputSchema:BVf,handler:async(i,u)=>{ki(u);let t=yi(u);await u.access.check();let f=await u.storage.threads.get(i.threadId);if(!f||f.organization_id!==t.id)throw Error("Thread not found in organization");let l=await u.storage.threads.getCancelRequestedAt(i.threadId);if(uU0(l))throw Error("Run cancelled");let c=await u.storage.threads.getRunFence(i.threadId);if(c===null||!khi(c,i.fenceToken))throw Error("Stale run fence");let E=i.toolName==="generate_image"?vZ.parse(i.input):ZVf.parse(i.input),$=mTi({threadId:i.threadId,orgId:t.id,userId:u.auth.user.id,agentId:i.agentId,temperature:i.temperature,toolApprovalLevel:i.toolApprovalLevel,branch:i.branch??null}),{jobId:w}=await $.start({toolName:i.toolName,input:E,toolCallId:i.toolCallId});return{jobId:w}}})});import{z as k_}from"zod";var FVf,UVf,Ycu;var GK0=g(()=>{nH();Eu();FVf=k_.object({threadId:k_.string(),fenceToken:k_.string(),jobId:k_.string(),report:k_.string(),agentId:k_.string(),temperature:k_.number(),toolApprovalLevel:k_.enum(["auto","readonly"]),branch:k_.string().nullable().optional()}),UVf=k_.object({ok:k_.literal(!0)}),Ycu=ti({name:"THREAD_SUBTASK_DELIVER",description:"Deliver a backgrounded subtask's report back to its thread (persist + react). Called by desktop daemons \u2014 not by the model.",annotations:{title:"Deliver Subtask Result",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!1},inputSchema:FVf,outputSchema:UVf,handler:async(i,u)=>{ki(u);let t=yi(u);await u.access.check();let f=await u.storage.threads.get(i.threadId);if(!f||f.organization_id!==t.id)throw Error("Thread not found in organization");let l=await u.storage.threads.getRunFence(i.threadId);if(l===null||!khi(l,i.fenceToken))throw Error("Stale run fence");return await IK0({snapshot:{threadId:i.threadId,orgId:t.id,userId:u.auth.user.id,agentId:i.agentId,temperature:i.temperature,toolApprovalLevel:i.toolApprovalLevel,branch:i.branch??null},jobId:i.jobId,report:i.report}),{ok:!0}}})});var SK0=g(()=>{oF0();I4u();x4u();sF0();pF0();j4u();kK0();GK0()});function AVf(i){return{type:"doc",content:[{type:"paragraph",content:[{type:"text",text:i}]}]}}function IVf(i){return i.map((u)=>{let t=u.metadata;if(t?.tiptapDoc)return u;let f=u.parts.find((l)=>l.type==="text"&&typeof l.text==="string");if(!f?.text||typeof f.text!=="string")return u;return{...u,metadata:{...t,tiptapDoc:AVf(f.text)}}})}function eTi(i){let u;if(typeof i==="string")try{let t=JSON.parse(i);if(Array.isArray(t)&&t.length>0&&t[0]?.role&&Array.isArray(t[0]?.parts))u=t;else u=[{role:"user",parts:[{type:"text",text:i}]}]}catch{u=[{role:"user",parts:[{type:"text",text:i}]}]}else u=i;return IVf(u)}import{z as ll}from"zod";var Qcu;var jK0=g(()=>{H4();Eu();T8();Qcu=ti({name:"AUTOMATION_CREATE",description:"Create an automation that runs an agent thread on trigger fire. Requires virtual_mcp_id + messages.",annotations:{title:"Create Automation",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!1},inputSchema:ll.object({name:ll.string().min(1).max(255),virtual_mcp_id:ll.string(),messages:ll.union([ll.string(),ll.array(ll.looseObject({id:ll.string().optional(),role:ll.enum(["user","assistant","system"]),parts:ll.array(ll.record(ll.string(),ll.unknown())),metadata:ll.unknown().optional()}))]),models:ll.object({tier:X3i,modelId:ll.string().optional(),credentialId:ll.string().optional()}).loose().default({tier:"smart"}),tools:ll.array(ll.string()).nullable().optional(),maxAgentSteps:ll.number().int().min(1).max(100).nullable().optional(),temperature:ll.number().default(0.5),active:ll.boolean().default(!0)}),outputSchema:ll.object({id:ll.string(),name:ll.string(),active:ll.boolean(),created_at:ll.string()}),handler:async(i,u)=>{ki(u);let t=yi(u);await u.access.check();let f=Hu(u);if(!f)throw Error("Unable to determine user identity");let l=eTi(i.messages),c=await u.storage.automations.create({organization_id:t.id,created_by:f,name:i.name,messages:JSON.stringify(l),models:JSON.stringify(i.models),tools:i.tools===void 0||i.tools===null?null:JSON.stringify(i.tools),max_agent_steps:i.maxAgentSteps??null,temperature:i.temperature,active:i.active,virtual_mcp_id:i.virtual_mcp_id});return mu.capture({distinctId:f,event:"automation_created",groups:{organization:t.id},properties:{organization_id:t.id,automation_id:c.id,virtual_mcp_id:i.virtual_mcp_id,active:c.active,tier:i.models.tier}}),{id:c.id,name:c.name,active:c.active,created_at:c.created_at}}})});import{z as r4}from"zod";var zcu;var KK0=g(()=>{Eu();zcu=ti({name:"AUTOMATION_GET",description:"Get an automation's full configuration and triggers by ID.",annotations:{title:"Get Automation",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:r4.object({id:r4.string()}),outputSchema:r4.object({automation:r4.object({id:r4.string(),name:r4.string(),active:r4.boolean(),created_by:r4.string(),created_at:r4.string(),updated_at:r4.string(),virtual_mcp_id:r4.string(),messages:r4.unknown(),models:r4.unknown(),tools:r4.array(r4.string()).nullable(),maxAgentSteps:r4.number().nullable(),temperature:r4.number(),triggers:r4.array(r4.object({id:r4.string(),type:r4.enum(["cron","event","webhook"]),cron_expression:r4.string().nullable(),connection_id:r4.string().nullable(),event_type:r4.string().nullable(),params:r4.unknown().nullable(),last_run_at:r4.string().nullable(),api_key_id:r4.string().nullable(),created_at:r4.string()}))}).nullable()}),handler:async(i,u)=>{ki(u);let t=yi(u);await u.access.check();let f=await u.storage.automations.findById(i.id,t.id);if(!f)return{automation:null};let l=await u.storage.automations.listTriggers(f.id);return{automation:{id:f.id,name:f.name,active:f.active,created_by:f.created_by,created_at:f.created_at,updated_at:f.updated_at,virtual_mcp_id:f.virtual_mcp_id,messages:JSON.parse(f.messages),models:JSON.parse(f.models),tools:f.tools?JSON.parse(f.tools):null,maxAgentSteps:f.max_agent_steps,temperature:f.temperature,triggers:l.map((c)=>({id:c.id,type:c.type,cron_expression:c.cron_expression,connection_id:c.connection_id,event_type:c.event_type,params:c.params?JSON.parse(c.params):null,last_run_at:c.last_run_at,api_key_id:c.api_key_id,created_at:c.created_at}))}}}})});import{z as xd}from"zod";var Hcu;var JK0=g(()=>{Eu();Hcu=ti({name:"AUTOMATION_LIST",description:"List automations with their status, triggers, and configuration.",annotations:{title:"List Automations",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:xd.object({virtual_mcp_id:xd.string().optional().nullable()}),outputSchema:xd.object({automations:xd.array(xd.object({id:xd.string(),name:xd.string(),active:xd.boolean(),created_by:xd.string(),created_at:xd.string(),trigger_count:xd.number(),nearest_next_run_at:xd.string().nullable(),virtual_mcp_id:xd.string()}))}),handler:async(i,u)=>{ki(u);let t=yi(u);return await u.access.check(),{automations:(await u.storage.automations.listWithTriggerCounts(t.id,i.virtual_mcp_id)).map((c)=>({id:c.id,name:c.name,active:c.active,created_by:c.created_by,created_at:c.created_at,trigger_count:c.trigger_count,nearest_next_run_at:c.nearest_next_run_at,virtual_mcp_id:c.virtual_mcp_id}))}}})});function XK0(i){return i instanceof Vg||typeof i==="object"&&i!==null&&i.permanent===!0}var Vg;var Rcu=g(()=>{Vg=class Vg extends Error{permanent=!0;code;constructor(i,u){super(u);this.name="PermanentRunError",this.code=i}}});function xVf(i){if(!i)return null;try{let u=JSON.parse(i);if(Array.isArray(u)&&u.every((t)=>typeof t==="string"))return u.length>0?u:null}catch{}return null}function LK0(i,u,t,f,l){return{messages:JSON.parse(i.messages).map((w,d)=>({...w,id:`${t}:${d}`})),models:{credentialId:f.credentialId,thinking:f.thinking,...f.image?{image:f.image}:{},...f.webSearch?{webSearch:f.webSearch}:{},...f.deepResearch?{deepResearch:f.deepResearch}:{}},agent:{id:i.virtual_mcp_id},toolAllowlist:xVf(i.tools),maxAgentSteps:i.max_agent_steps??void 0,temperature:i.temperature??0.5,toolApprovalLevel:"auto",mode:"default",organizationId:i.organization_id,userId:i.created_by,triggerId:u??void 0,...l?{runMetadata:l}:{},taskId:t}}function jE(i,u,t,f,l,c,E,$){return jE.fromTZ(jE.tp(i,u,t,f,l,c,E),$)}function bcu(i,u=new Date){let t=u.toLocaleString("en-US",{timeZone:i,timeZoneName:"shortOffset"}).split(" ").slice(-1)[0],f=u.toLocaleString("en-US").replace(/[\u202f]/," ");return Date.parse(`${f} GMT`)-Date.parse(`${f} ${t}`)}function kVf(i,u){let t=new Date(Date.parse(i));if(isNaN(t))throw Error("minitz: Invalid ISO8601 passed to parser.");let f=i.substring(9);return i.includes("Z")||f.includes("-")||f.includes("+")?jE.tp(t.getUTCFullYear(),t.getUTCMonth()+1,t.getUTCDate(),t.getUTCHours(),t.getUTCMinutes(),t.getUTCSeconds(),"Etc/UTC"):jE.tp(t.getFullYear(),t.getMonth()+1,t.getDate(),t.getHours(),t.getMinutes(),t.getSeconds(),u)}function GVf(i){if(i===void 0&&(i={}),delete i.name,i.legacyMode=i.legacyMode===void 0?!0:i.legacyMode,i.paused=i.paused===void 0?!1:i.paused,i.maxRuns=i.maxRuns===void 0?1/0:i.maxRuns,i.catch=i.catch===void 0?!1:i.catch,i.interval=i.interval===void 0?0:parseInt(i.interval.toString(),10),i.utcOffset=i.utcOffset===void 0?void 0:parseInt(i.utcOffset.toString(),10),i.unref=i.unref===void 0?!1:i.unref,i.startAt&&(i.startAt=new z3(i.startAt,i.timezone)),i.stopAt&&(i.stopAt=new z3(i.stopAt,i.timezone)),i.interval!==null){if(isNaN(i.interval))throw Error("CronOptions: Supplied value for interval is not a number");if(i.interval<0)throw Error("CronOptions: Supplied value for interval can not be negative")}if(i.utcOffset!==void 0){if(isNaN(i.utcOffset))throw Error("CronOptions: Invalid value passed for utcOffset, should be number representing minutes offset from UTC.");if(i.utcOffset<-870||i.utcOffset>870)throw Error("CronOptions: utcOffset out of bounds.");if(i.utcOffset!==void 0&&i.timezone)throw Error("CronOptions: Combining 'utcOffset' with 'timezone' is not allowed.")}if(i.unref!==!0&&i.unref!==!1)throw Error("CronOptions: Unref should be either true, false or undefined(false).");return i}function Qo(i){return Object.prototype.toString.call(i)==="[object Function]"||typeof i=="function"||i instanceof Function}function SVf(i){return Qo(i)}function jVf(i){typeof Deno<"u"&&typeof Deno.unrefTimer<"u"?Deno.unrefTimer(i):i&&typeof i.unref<"u"&&i.unref()}var Ccu=32,zo,zK0,WK0=class{pattern;timezone;second;minute;hour;day;month;dayOfWeek;lastDayOfMonth;starDOM;starDOW;constructor(i,u){this.pattern=i,this.timezone=u,this.second=Array(60).fill(0),this.minute=Array(60).fill(0),this.hour=Array(24).fill(0),this.day=Array(31).fill(0),this.month=Array(12).fill(0),this.dayOfWeek=Array(7).fill(0),this.lastDayOfMonth=!1,this.starDOM=!1,this.starDOW=!1,this.parse()}parse(){if(!(typeof this.pattern=="string"||this.pattern instanceof String))throw TypeError("CronPattern: Pattern has to be of type string.");this.pattern.indexOf("@")>=0&&(this.pattern=this.handleNicknames(this.pattern).trim());let i=this.pattern.replace(/\s+/g," ").split(" ");if(i.length<5||i.length>6)throw TypeError("CronPattern: invalid configuration format ('"+this.pattern+"'), exactly five or six space separated parts are required.");if(i.length===5&&i.unshift("0"),i[3].indexOf("L")>=0&&(i[3]=i[3].replace("L",""),this.lastDayOfMonth=!0),i[3]=="*"&&(this.starDOM=!0),i[4].length>=3&&(i[4]=this.replaceAlphaMonths(i[4])),i[5].length>=3&&(i[5]=this.replaceAlphaDays(i[5])),i[5]=="*"&&(this.starDOW=!0),this.pattern.indexOf("?")>=0){let u=new z3(new Date,this.timezone).getDate(!0);i[0]=i[0].replace("?",u.getSeconds().toString()),i[1]=i[1].replace("?",u.getMinutes().toString()),i[2]=i[2].replace("?",u.getHours().toString()),this.starDOM||(i[3]=i[3].replace("?",u.getDate().toString())),i[4]=i[4].replace("?",(u.getMonth()+1).toString()),this.starDOW||(i[5]=i[5].replace("?",u.getDay().toString()))}this.throwAtIllegalCharacters(i),this.partToArray("second",i[0],0,1),this.partToArray("minute",i[1],0,1),this.partToArray("hour",i[2],0,1),this.partToArray("day",i[3],-1,1),this.partToArray("month",i[4],-1,1),this.partToArray("dayOfWeek",i[5],0,zo),this.dayOfWeek[7]&&(this.dayOfWeek[0]=this.dayOfWeek[7])}partToArray(i,u,t,f){let l=this[i],c=i==="day"&&this.lastDayOfMonth;if(u===""&&!c)throw TypeError("CronPattern: configuration entry "+i+" ("+u+") is empty, check for trailing spaces.");if(u==="*")return l.fill(f);let E=u.split(",");if(E.length>1)for(let $=0;$<E.length;$++)this.partToArray(i,E[$],t,f);else u.indexOf("-")!==-1&&u.indexOf("/")!==-1?this.handleRangeWithStepping(u,i,t,f):u.indexOf("-")!==-1?this.handleRange(u,i,t,f):u.indexOf("/")!==-1?this.handleStepping(u,i,t,f):u!==""&&this.handleNumber(u,i,t,f)}throwAtIllegalCharacters(i){for(let u=0;u<i.length;u++)if((u===5?/[^/*0-9,\-#L]+/:/[^/*0-9,-]+/).test(i[u]))throw TypeError("CronPattern: configuration entry "+u+" ("+i[u]+") contains illegal characters.")}handleNumber(i,u,t,f){let l=this.extractNth(i,u),c=parseInt(l[0],10)+t;if(isNaN(c))throw TypeError("CronPattern: "+u+" is not a number: '"+i+"'");this.setPart(u,c,l[1]||f)}setPart(i,u,t){if(!Object.prototype.hasOwnProperty.call(this,i))throw TypeError("CronPattern: Invalid part specified: "+i);if(i==="dayOfWeek"){if(u===7&&(u=0),u<0||u>6)throw RangeError("CronPattern: Invalid value for dayOfWeek: "+u);this.setNthWeekdayOfMonth(u,t);return}if(i==="second"||i==="minute"){if(u<0||u>=60)throw RangeError("CronPattern: Invalid value for "+i+": "+u)}else if(i==="hour"){if(u<0||u>=24)throw RangeError("CronPattern: Invalid value for "+i+": "+u)}else if(i==="day"){if(u<0||u>=31)throw RangeError("CronPattern: Invalid value for "+i+": "+u)}else if(i==="month"&&(u<0||u>=12))throw RangeError("CronPattern: Invalid value for "+i+": "+u);this[i][u]=t}handleRangeWithStepping(i,u,t,f){let l=this.extractNth(i,u),c=l[0].match(/^(\d+)-(\d+)\/(\d+)$/);if(c===null)throw TypeError("CronPattern: Syntax error, illegal range with stepping: '"+i+"'");let[,E,$,w]=c,d=parseInt(E,10)+t,h=parseInt($,10)+t,_=parseInt(w,10);if(isNaN(d))throw TypeError("CronPattern: Syntax error, illegal lower range (NaN)");if(isNaN(h))throw TypeError("CronPattern: Syntax error, illegal upper range (NaN)");if(isNaN(_))throw TypeError("CronPattern: Syntax error, illegal stepping: (NaN)");if(_===0)throw TypeError("CronPattern: Syntax error, illegal stepping: 0");if(_>this[u].length)throw TypeError("CronPattern: Syntax error, steps cannot be greater than maximum value of part ("+this[u].length+")");if(d>h)throw TypeError("CronPattern: From value is larger than to value: '"+i+"'");for(let v=d;v<=h;v+=_)this.setPart(u,v,l[1]||f)}extractNth(i,u){let t=i,f;if(t.includes("#")){if(u!=="dayOfWeek")throw Error("CronPattern: nth (#) only allowed in day-of-week field");f=t.split("#")[1],t=t.split("#")[0]}return[t,f]}handleRange(i,u,t,f){let l=this.extractNth(i,u),c=l[0].split("-");if(c.length!==2)throw TypeError("CronPattern: Syntax error, illegal range: '"+i+"'");let E=parseInt(c[0],10)+t,$=parseInt(c[1],10)+t;if(isNaN(E))throw TypeError("CronPattern: Syntax error, illegal lower range (NaN)");if(isNaN($))throw TypeError("CronPattern: Syntax error, illegal upper range (NaN)");if(E>$)throw TypeError("CronPattern: From value is larger than to value: '"+i+"'");for(let w=E;w<=$;w++)this.setPart(u,w,l[1]||f)}handleStepping(i,u,t,f){let l=this.extractNth(i,u),c=l[0].split("/");if(c.length!==2)throw TypeError("CronPattern: Syntax error, illegal stepping: '"+i+"'");c[0]===""&&(c[0]="*");let E=0;c[0]!=="*"&&(E=parseInt(c[0],10)+t);let $=parseInt(c[1],10);if(isNaN($))throw TypeError("CronPattern: Syntax error, illegal stepping: (NaN)");if($===0)throw TypeError("CronPattern: Syntax error, illegal stepping: 0");if($>this[u].length)throw TypeError("CronPattern: Syntax error, max steps for part is ("+this[u].length+")");for(let w=E;w<this[u].length;w+=$)this.setPart(u,w,l[1]||f)}replaceAlphaDays(i){return i.replace(/-sun/gi,"-7").replace(/sun/gi,"0").replace(/mon/gi,"1").replace(/tue/gi,"2").replace(/wed/gi,"3").replace(/thu/gi,"4").replace(/fri/gi,"5").replace(/sat/gi,"6")}replaceAlphaMonths(i){return i.replace(/jan/gi,"1").replace(/feb/gi,"2").replace(/mar/gi,"3").replace(/apr/gi,"4").replace(/may/gi,"5").replace(/jun/gi,"6").replace(/jul/gi,"7").replace(/aug/gi,"8").replace(/sep/gi,"9").replace(/oct/gi,"10").replace(/nov/gi,"11").replace(/dec/gi,"12")}handleNicknames(i){let u=i.trim().toLowerCase();return u==="@yearly"||u==="@annually"?"0 0 1 1 *":u==="@monthly"?"0 0 1 * *":u==="@weekly"?"0 0 * * 0":u==="@daily"?"0 0 * * *":u==="@hourly"?"0 * * * *":i}setNthWeekdayOfMonth(i,u){if(typeof u!="number"&&u==="L")this.dayOfWeek[i]=this.dayOfWeek[i]|Ccu;else if(u===zo)this.dayOfWeek[i]=zo;else if(u<6&&u>0)this.dayOfWeek[i]=this.dayOfWeek[i]|zK0[u-1];else throw TypeError(`CronPattern: nth weekday out of range, should be 1-5 or L. Value: ${u}, Type: ${typeof u}`)}},YK0,z8,z3=class i{tz;ms;second;minute;hour;day;month;year;constructor(u,t){if(this.tz=t,u&&u instanceof Date)if(!isNaN(u))this.fromDate(u);else throw TypeError("CronDate: Invalid date passed to CronDate constructor");else if(u===void 0)this.fromDate(new Date);else if(u&&typeof u=="string")this.fromString(u);else if(u instanceof i)this.fromCronDate(u);else throw TypeError("CronDate: Invalid type ("+typeof u+") passed to CronDate constructor")}isNthWeekdayOfMonth(u,t,f,l){let c=new Date(Date.UTC(u,t,f)).getUTCDay(),E=0;for(let $=1;$<=f;$++)new Date(Date.UTC(u,t,$)).getUTCDay()===c&&E++;if(l&zo&&zK0[E-1]&l)return!0;if(l&Ccu){let $=new Date(Date.UTC(u,t+1,0)).getUTCDate();for(let w=f+1;w<=$;w++)if(new Date(Date.UTC(u,t,w)).getUTCDay()===c)return!1;return!0}return!1}fromDate(u){if(this.tz!==void 0)if(typeof this.tz=="number")this.ms=u.getUTCMilliseconds(),this.second=u.getUTCSeconds(),this.minute=u.getUTCMinutes()+this.tz,this.hour=u.getUTCHours(),this.day=u.getUTCDate(),this.month=u.getUTCMonth(),this.year=u.getUTCFullYear(),this.apply();else{let t=jE.toTZ(u,this.tz);this.ms=u.getMilliseconds(),this.second=t.s,this.minute=t.i,this.hour=t.h,this.day=t.d,this.month=t.m-1,this.year=t.y}else this.ms=u.getMilliseconds(),this.second=u.getSeconds(),this.minute=u.getMinutes(),this.hour=u.getHours(),this.day=u.getDate(),this.month=u.getMonth(),this.year=u.getFullYear()}fromCronDate(u){this.tz=u.tz,this.year=u.year,this.month=u.month,this.day=u.day,this.hour=u.hour,this.minute=u.minute,this.second=u.second,this.ms=u.ms}apply(){if(this.month>11||this.day>YK0[this.month]||this.hour>59||this.minute>59||this.second>59||this.hour<0||this.minute<0||this.second<0){let u=new Date(Date.UTC(this.year,this.month,this.day,this.hour,this.minute,this.second,this.ms));return this.ms=u.getUTCMilliseconds(),this.second=u.getUTCSeconds(),this.minute=u.getUTCMinutes(),this.hour=u.getUTCHours(),this.day=u.getUTCDate(),this.month=u.getUTCMonth(),this.year=u.getUTCFullYear(),!0}else return!1}fromString(u){if(typeof this.tz=="number"){let t=jE.fromTZISO(u);this.ms=t.getUTCMilliseconds(),this.second=t.getUTCSeconds(),this.minute=t.getUTCMinutes(),this.hour=t.getUTCHours(),this.day=t.getUTCDate(),this.month=t.getUTCMonth(),this.year=t.getUTCFullYear(),this.apply()}else return this.fromDate(jE.fromTZISO(u,this.tz))}findNext(u,t,f,l){let c=this[t],E;f.lastDayOfMonth&&(this.month!==1?E=YK0[this.month]:E=new Date(Date.UTC(this.year,this.month+1,0,0,0,0,0)).getUTCDate());let $=!f.starDOW&&t=="day"?new Date(Date.UTC(this.year,this.month,1,0,0,0,0)).getUTCDay():void 0;for(let w=this[t]+l;w<f[t].length;w++){let d=f[t][w];if(t==="day"&&f.lastDayOfMonth&&w-l==E&&(d=1),t==="day"&&!f.starDOW){let h=f.dayOfWeek[($+(w-l-1))%7];if(h&&h&zo)h=this.isNthWeekdayOfMonth(this.year,this.month,w-l,h)?1:0;else if(h)throw Error(`CronDate: Invalid value for dayOfWeek encountered. ${h}`);u.legacyMode&&!f.starDOM?d=d||h:d=d&&h}if(d)return this[t]=w-l,c!==this[t]?2:1}return 3}recurse(u,t,f){let l=this.findNext(t,z8[f][0],u,z8[f][2]);if(l>1){let c=f+1;for(;c<z8.length;)this[z8[c][0]]=-z8[c][2],c++;if(l===3)return this[z8[f][1]]++,this[z8[f][0]]=-z8[f][2],this.apply(),this.recurse(u,t,0);if(this.apply())return this.recurse(u,t,f-1)}return f+=1,f>=z8.length?this:this.year>=3000?null:this.recurse(u,t,f)}increment(u,t,f){return this.second+=t.interval!==void 0&&t.interval>1&&f?t.interval:1,this.ms=0,this.apply(),this.recurse(u,t,0)}getDate(u){return u||this.tz===void 0?new Date(this.year,this.month,this.day,this.hour,this.minute,this.second,this.ms):typeof this.tz=="number"?new Date(Date.UTC(this.year,this.month,this.day,this.hour,this.minute-this.tz,this.second,this.ms)):jE.fromTZ(jE.tp(this.year,this.month+1,this.day,this.hour,this.minute,this.second,this.tz),!1)}getTime(){return this.getDate(!1).getTime()}},QK0=30000,aTi,oTi=class{name;options;_states;fn;constructor(i,u,t){let f,l;if(Qo(u))l=u;else if(typeof u=="object")f=u;else if(u!==void 0)throw Error("Cron: Invalid argument passed for optionsIn. Should be one of function, or object (options).");if(Qo(t))l=t;else if(typeof t=="object")f=t;else if(t!==void 0)throw Error("Cron: Invalid argument passed for funcIn. Should be one of function, or object (options).");if(this.name=f?.name,this.options=GVf(f),this._states={kill:!1,blocking:!1,previousRun:void 0,currentRun:void 0,once:void 0,currentTimeout:void 0,maxRuns:f?f.maxRuns:void 0,paused:f?f.paused:!1,pattern:new WK0("* * * * *")},i&&(i instanceof Date||typeof i=="string"&&i.indexOf(":")>0)?this._states.once=new z3(i,this.options.timezone||this.options.utcOffset):this._states.pattern=new WK0(i,this.options.timezone),this.name){if(aTi.find((c)=>c.name===this.name))throw Error("Cron: Tried to initialize new named job '"+this.name+"', but name already taken.");aTi.push(this)}return l!==void 0&&SVf(l)&&(this.fn=l,this.schedule()),this}nextRun(i){let u=this._next(i);return u?u.getDate(!1):null}nextRuns(i,u){this._states.maxRuns!==void 0&&i>this._states.maxRuns&&(i=this._states.maxRuns);let t=[],f=u||this._states.currentRun||void 0;for(;i--&&(f=this.nextRun(f));)t.push(f);return t}getPattern(){return this._states.pattern?this._states.pattern.pattern:void 0}isRunning(){let i=this.nextRun(this._states.currentRun),u=!this._states.paused,t=this.fn!==void 0,f=!this._states.kill;return u&&t&&f&&i!==null}isStopped(){return this._states.kill}isBusy(){return this._states.blocking}currentRun(){return this._states.currentRun?this._states.currentRun.getDate():null}previousRun(){return this._states.previousRun?this._states.previousRun.getDate():null}msToNext(i){let u=this._next(i);return u?i instanceof z3||i instanceof Date?u.getTime()-i.getTime():u.getTime()-new z3(i).getTime():null}stop(){this._states.kill=!0,this._states.currentTimeout&&clearTimeout(this._states.currentTimeout);let i=aTi.indexOf(this);i>=0&&aTi.splice(i,1)}pause(){return this._states.paused=!0,!this._states.kill}resume(){return this._states.paused=!1,!this._states.kill}schedule(i){if(i&&this.fn)throw Error("Cron: It is not allowed to schedule two functions using the same Croner instance.");i&&(this.fn=i);let u=this.msToNext(),t=this.nextRun(this._states.currentRun);return u==null||isNaN(u)||t===null?this:(u>QK0&&(u=QK0),this._states.currentTimeout=setTimeout(()=>this._checkTrigger(t),u),this._states.currentTimeout&&this.options.unref&&jVf(this._states.currentTimeout),this)}async _trigger(i){if(this._states.blocking=!0,this._states.currentRun=new z3(void 0,this.options.timezone||this.options.utcOffset),this.options.catch)try{this.fn!==void 0&&await this.fn(this,this.options.context)}catch(u){Qo(this.options.catch)&&this.options.catch(u,this)}else this.fn!==void 0&&await this.fn(this,this.options.context);this._states.previousRun=new z3(i,this.options.timezone||this.options.utcOffset),this._states.blocking=!1}async trigger(){await this._trigger()}runsLeft(){return this._states.maxRuns}_checkTrigger(i){let u=new Date,t=!this._states.paused&&u.getTime()>=i.getTime(),f=this._states.blocking&&this.options.protect;t&&!f?(this._states.maxRuns!==void 0&&this._states.maxRuns--,this._trigger()):t&&f&&Qo(this.options.protect)&&setTimeout(()=>this.options.protect(this),0),this.schedule()}_next(i){let u=!!(i||this._states.currentRun),t=!1;!i&&this.options.startAt&&this.options.interval&&([i,u]=this._calculatePreviousRun(i,u),t=!i),i=new z3(i,this.options.timezone||this.options.utcOffset),this.options.startAt&&i&&i.getTime()<this.options.startAt.getTime()&&(i=this.options.startAt);let f=this._states.once||new z3(i,this.options.timezone||this.options.utcOffset);return!t&&f!==this._states.once&&(f=f.increment(this._states.pattern,this.options,u)),this._states.once&&this._states.once.getTime()<=i.getTime()||f===null||this._states.maxRuns!==void 0&&this._states.maxRuns<=0||this._states.kill||this.options.stopAt&&f.getTime()>=this.options.stopAt.getTime()?null:f}_calculatePreviousRun(i,u){let t=new z3(void 0,this.options.timezone||this.options.utcOffset),f=i;if(this.options.startAt.getTime()<=t.getTime()){f=this.options.startAt;let l=f.getTime()+this.options.interval*1000;for(;l<=t.getTime();)f=new z3(f,this.options.timezone||this.options.utcOffset).increment(this._states.pattern,this.options,!0),l=f.getTime()+this.options.interval*1000;u=!0}return f===null&&(f=void 0),[f,u]}};var Mcu=g(()=>{jE.fromTZISO=(i,u,t)=>jE.fromTZ(kVf(i,u),t);jE.fromTZ=function(i,u){let t=new Date(Date.UTC(i.y,i.m-1,i.d,i.h,i.i,i.s)),f=bcu(i.tz,t),l=new Date(t.getTime()-f),c=bcu(i.tz,l);if(c-f===0)return l;{let E=new Date(t.getTime()-c),$=bcu(i.tz,E);if($-c===0)return E;if(!u&&$-c>0)return E;if(u)throw Error("Invalid date passed to fromTZ()");return l}};jE.toTZ=function(i,u){let t=i.toLocaleString("en-US",{timeZone:u}).replace(/[\u202f]/," "),f=new Date(t);return{y:f.getFullYear(),m:f.getMonth()+1,d:f.getDate(),h:f.getHours(),i:f.getMinutes(),s:f.getSeconds(),tz:u}};jE.tp=(i,u,t,f,l,c,E)=>({y:i,m:u,d:t,h:f,i:l,s:c,tz:E});jE.minitz=jE;zo=31|Ccu,zK0=[1,2,4,8,16],YK0=[31,28,31,30,31,30,31,31,30,31,30,31],z8=[["month","year",0],["day","month",-1],["hour","day",0],["minute","hour",0],["second","minute",0]];aTi=[]});function sTi(i,u){try{return new oTi(i,{timezone:"UTC"}).nextRun(u)??null}catch{return null}}var qcu=g(()=>{Mcu()});import{DBOS as L6,SchedulerMode as KVf}from"@dbos-inc/dbos-sdk";async function acu(i){try{let{rows:u}=await i.query(`SELECT q.name FROM dbos.queues q
|
|
86959
86959
|
WHERE q.name LIKE $1
|
|
86960
86960
|
AND NOT EXISTS (
|
|
86961
86961
|
SELECT 1 FROM dbos.workflow_status w
|