decocms 4.4.0 → 4.5.1
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-CM6D9elR.js → AlertCircle-BhQrQkr4.js} +1 -1
- package/dist/client/assets/{ArrowUpRight-Kqa5fEjt.js → ArrowUpRight-C7gkPdu7.js} +1 -1
- package/dist/client/assets/{CheckCircle-8DKF8Yx5.js → CheckCircle-BqzYsc2T.js} +1 -1
- package/dist/client/assets/{ChevronDown-DGuR7uUZ.js → ChevronDown-BMTYAB4b.js} +1 -1
- package/dist/client/assets/{ChevronRight-BswIt99A.js → ChevronRight-CjtpnF2T.js} +1 -1
- package/dist/client/assets/{ChevronUp-DSdWQUoR.js → ChevronUp-Cxs8RGVp.js} +1 -1
- package/dist/client/assets/{DotsVertical-DSosYpI1.js → DotsVertical-D87w7phc.js} +1 -1
- package/dist/client/assets/{Eye-Dn1AISrx.js → Eye-C37nzQ5a.js} +1 -1
- package/dist/client/assets/{FilterLines-CmWI-8pG.js → FilterLines-DVdRq7ic.js} +1 -1
- package/dist/client/assets/{Globe01-CcXDI4W7.js → Globe01-DfpWQR0X.js} +1 -1
- package/dist/client/assets/{Globe04-B9Btoycr.js → Globe04-BzNgTTvC.js} +1 -1
- package/dist/client/assets/{HardDrive-BqXWgcmp.js → HardDrive-CNMk3pey.js} +1 -1
- package/dist/client/assets/{Key01-F6-x7vNY.js → Key01-wm1UCW_H.js} +1 -1
- package/dist/client/assets/{LayoutLeft-DpqtgcH3.js → LayoutLeft-Bv19ZvoF.js} +1 -1
- package/dist/client/assets/{LinkExternal01-DOU6-C1w.js → LinkExternal01-CJP1m-KY.js} +1 -1
- package/dist/client/assets/{Monitor01-SkSQUhmT.js → Monitor01-girLi5Vv.js} +1 -1
- package/dist/client/assets/{Palette-CnoObDqZ.js → Palette-C2zi5IFr.js} +1 -1
- package/dist/client/assets/{Play-DzGcMRv3.js → Play-Dkwy0xSW.js} +1 -1
- package/dist/client/assets/{Plus-DDlkoJBs.js → Plus-EFlT-uXX.js} +1 -1
- package/dist/client/assets/{SearchLg-CdT_y89m.js → SearchLg-DJBncnHa.js} +1 -1
- package/dist/client/assets/{SearchMd-UY2xUREv.js → SearchMd-DIVrPgjG.js} +1 -1
- package/dist/client/assets/{Settings02-QyYEyYyn.js → Settings02-DzKlLh9K.js} +1 -1
- package/dist/client/assets/{Shield01-V8b5EFFL.js → Shield01-DagGXeVM.js} +1 -1
- package/dist/client/assets/{Star01-GVe4t6O1.js → Star01-Ba6kwLaN.js} +1 -1
- package/dist/client/assets/{Stars01-BIVPeWqS.js → Stars01-DmmNn085.js} +1 -1
- package/dist/client/assets/{Stars02-DVZm69DV.js → Stars02-DkyDhQs4.js} +1 -1
- package/dist/client/assets/{Sun-B2ndPBZP.js → Sun-CdpSqjTU.js} +1 -1
- package/dist/client/assets/{SwitchHorizontal01-BL4xnvxO.js → SwitchHorizontal01-BqnocNkx.js} +1 -1
- package/dist/client/assets/{Tool01-Ci5EQ1tM.js → Tool01-DyZ7aWPR.js} +1 -1
- package/dist/client/assets/{Trash01-Cc007jho.js → Trash01-DX7Kc0rt.js} +1 -1
- package/dist/client/assets/{Upload01-DB9meUjO.js → Upload01-CdvY9F1U.js} +1 -1
- package/dist/client/assets/{User01-Dz-_mMMJ.js → User01-Cm2FjQEq.js} +1 -1
- package/dist/client/assets/{Users01-Ctg0iuAM.js → Users01-HpZdILo9.js} +1 -1
- package/dist/client/assets/{Users03-BazvU-rC.js → Users03-DmSD2OQ9.js} +1 -1
- package/dist/client/assets/{X-_dGiBqSn.js → X-QXND_Y1L.js} +1 -1
- package/dist/client/assets/{XCircle-CmN6DNsv.js → XCircle-B_FcKAjQ.js} +1 -1
- package/dist/client/assets/{XClose-BpreRuFP.js → XClose-BvYfLPH0.js} +1 -1
- package/dist/client/assets/{Zap-CWxLsQ6b.js → Zap-BugSw3la.js} +1 -1
- package/dist/client/assets/{ZapSquare-D5x1wm0t.js → ZapSquare-BLei9a9e.js} +1 -1
- package/dist/client/assets/{ZoomOut-C0bVPfpC.js → ZoomOut-C93pda8l.js} +1 -1
- package/dist/client/assets/{access-gate-CpQ3bOMg.js → access-gate-C5qfD2fM.js} +1 -1
- package/dist/client/assets/{add-section-modal-D22Rp_ry.js → add-section-modal-BUUpFcv8.js} +1 -1
- package/dist/client/assets/{agent-icon-BjxA8YR3.js → agent-icon-Bks_O0dW.js} +1 -1
- package/dist/client/assets/{agents-list-C17XwfcN.js → agents-list-CFGYF2AN.js} +1 -1
- package/dist/client/assets/{ai-providers-DNjwL7U0.js → ai-providers-DcT9MBkj.js} +1 -1
- package/dist/client/assets/{alert-CTzYtGwN.js → alert-C6lpuvYU.js} +1 -1
- package/dist/client/assets/{alert-dialog-DMWXmTGp.js → alert-dialog-BPgGqozU.js} +1 -1
- package/dist/client/assets/{app-editor-uAXMllzs.js → app-editor-BUqWj9eo.js} +1 -1
- package/dist/client/assets/{auth-DraSXrC6.js → auth-B1cz_TFt.js} +1 -1
- package/dist/client/assets/{auth-catchall--3ZAEbBd.js → auth-catchall-Dkmc87Ha.js} +1 -1
- package/dist/client/assets/{auth-entry-DRJ-aW15.js → auth-entry-BVVPWmYt.js} +1 -1
- package/dist/client/assets/{auth-split-layout-B77S9w6i.js → auth-split-layout-Dkh_XhKH.js} +1 -1
- package/dist/client/assets/{authenticate-and-persist-oauth-HBteAcVm.js → authenticate-and-persist-oauth-KKjwugoN.js} +1 -1
- package/dist/client/assets/{automation-list-row-NZNZGrlr.js → automation-list-row-DIZL1HAC.js} +1 -1
- package/dist/client/assets/{automation-runs-BoQeZ1gh.js → automation-runs-CibIfN_3.js} +1 -1
- package/dist/client/assets/{automations-bd5MK3eJ.js → automations-rpB8Salw.js} +1 -1
- package/dist/client/assets/{avatar-COMRxqae.js → avatar-DMur6Mtf.js} +1 -1
- package/dist/client/assets/{badge-B1dPfLuK.js → badge-D2jCAWlD.js} +1 -1
- package/dist/client/assets/{block-document-B6TgjyKW.js → block-document-0z1wR054.js} +1 -1
- package/dist/client/assets/{brand-context-DGv078pp.js → brand-context-BoDdvsWH.js} +1 -1
- package/dist/client/assets/{buckets-LnyV7EWC.js → buckets-CJuHEpqM.js} +1 -1
- package/dist/client/assets/{bulk-category-panel-BP0Mtj3P.js → bulk-category-panel-BBqNYPmb.js} +1 -1
- package/dist/client/assets/{capability-load-error-WTr85D-I.js → capability-load-error-BWTXNiaa.js} +1 -1
- package/dist/client/assets/{card-Bys-wDTW.js → card-DdgcycTS.js} +1 -1
- package/dist/client/assets/{category-editor-Cm1sAVk_.js → category-editor-BGXbKq2y.js} +1 -1
- package/dist/client/assets/{chat-context-huSCeR82.js → chat-context-BfyhYTuq.js} +1 -1
- package/dist/client/assets/{checkbox-BIDlFz_0.js → checkbox-DD7fNbEM.js} +1 -1
- package/dist/client/assets/{cli-auth-success-DJ5lbMQC.js → cli-auth-success-D7P5vV5Q.js} +1 -1
- package/dist/client/assets/{collection-detail-UTQtN0-J.js → collection-detail-C6i5GiX2.js} +1 -1
- package/dist/client/assets/{collection-display-button-Bnm_JutP.js → collection-display-button-BZ1FMhEr.js} +1 -1
- package/dist/client/assets/{collection-search-CKMDHnku.js → collection-search-ntizR1re.js} +1 -1
- package/dist/client/assets/{collection-tabs-CWrBkWhe.js → collection-tabs-BkS8PhSC.js} +1 -1
- package/dist/client/assets/{command-DrgMAh0a.js → command-kuHOXNOX.js} +1 -1
- package/dist/client/assets/{commerce-onboarding-B8pBrcvE.js → commerce-onboarding-J2qDilbA.js} +1 -1
- package/dist/client/assets/{connect-desktop-dialog-CvuFk-NY.js → connect-desktop-dialog-CZk53GbJ.js} +1 -1
- package/dist/client/assets/{connection-card-DIh-SIqT.js → connection-card-BbVteJJV.js} +1 -1
- package/dist/client/assets/{connection-detail-CWog7XFK.js → connection-detail-Chl143jB.js} +1 -1
- package/dist/client/assets/{connection-form-helpers-DV-bwjt7.js → connection-form-helpers-DpRKywzl.js} +1 -1
- package/dist/client/assets/{connections-BkvcH3F-.js → connections-BiRdj4Ix.js} +1 -1
- package/dist/client/assets/{context-menu-BPHfkJEs.js → context-menu-DkNiHWOi.js} +1 -1
- package/dist/client/assets/{decopilot-BxOK0Z8W.js → decopilot-Zhns3K6c.js} +1 -1
- package/dist/client/assets/{decopilot-sse-pool-Chmwc1_x.js → decopilot-sse-pool-pkmYbTGr.js} +1 -1
- package/dist/client/assets/{dialog-o7scRbG9.js → dialog-Cjgzv11A.js} +1 -1
- package/dist/client/assets/{domain-settings-DIv14WFm.js → domain-settings-DqMBS6xW.js} +1 -1
- package/dist/client/assets/{drawer-B-Vy7tMY.js → drawer-DPiYS4dB.js} +1 -1
- package/dist/client/assets/{dropdown-menu-D-VNET4I.js → dropdown-menu-CD0dvkvn.js} +1 -1
- package/dist/client/assets/{empty-state-1p_UpPHY.js → empty-state-TnMncFUb.js} +1 -1
- package/dist/client/assets/{extract-connection-data-BVX9Eneo.js → extract-connection-data-BZeEu4pN.js} +1 -1
- package/dist/client/assets/{file-explorer-Bh9kp1sm.js → file-explorer-DtAXxqkx.js} +1 -1
- package/dist/client/assets/{file-type-icon-LHBbJJTG.js → file-type-icon-BfAU2yuS.js} +1 -1
- package/dist/client/assets/{files-Bw3w16xX.js → files-D0_N4MiS.js} +1 -1
- package/dist/client/assets/{form-DX8cQ4SA.js → form-DH_54LIf.js} +1 -1
- package/dist/client/assets/{general-DzJAxzRR.js → general-BnLLceC8.js} +1 -1
- package/dist/client/assets/{github-repo-picker-ZmfhFTO6.js → github-repo-picker-deuJzSWb.js} +1 -1
- package/dist/client/assets/{hooks-BUt6AoQh.js → hooks-5n4Y7yuR.js} +1 -1
- package/dist/client/assets/{import-from-deco-dialog-DZhtwoRn.js → import-from-deco-dialog-BpslfdTA.js} +1 -1
- package/dist/client/assets/{index-VkScKLdP.js → index-BLGADRG0.js} +1 -1
- package/dist/client/assets/{index-CAV1BNai.js → index-Bho1n-N5.js} +1 -1
- package/dist/client/assets/{index-CpgVJVWB.js → index-Bi6Fmf-J.js} +5 -5
- package/dist/client/assets/{index-DCwPnlYH.js → index-Bj1hqh6C.js} +1 -1
- package/dist/client/assets/{index-BPD9Iyv5.js → index-BmgbzkR3.js} +1 -1
- package/dist/client/assets/{index-Cod7u1PQ.js → index-BrmBRrAx.js} +1 -1
- package/dist/client/assets/{index-CXy6rN6i.js → index-C0cta1LR.js} +3 -3
- package/dist/client/assets/{index-BBTFoidO.js → index-CjikCJkr.js} +1 -1
- package/dist/client/assets/{index-CjKis1yy.js → index-CrNMKC18.js} +1 -1
- package/dist/client/assets/{index-DvDkdoxH.js → index-DWbnMi2s.js} +1 -1
- package/dist/client/assets/{index-CL3KBg-D.js → index-Dk6PvT9K.js} +1 -1
- package/dist/client/assets/{index-DKs6HTlj.js → index-DlQhuun9.js} +1 -1
- package/dist/client/assets/{index-Db3cPjnW.js → index-DqCgMaff.js} +1 -1
- package/dist/client/assets/{index-NJ9aYDVC.js → index-Yg1vr_pb.js} +1 -1
- package/dist/client/assets/{index-redirect-B6MtHNAq.js → index-redirect-DEYE1wZ3.js} +1 -1
- package/dist/client/assets/{input-BlhkemhH.js → input-BbSI4Trj.js} +1 -1
- package/dist/client/assets/{integration-icon-BSHD1Ijr.js → integration-icon-DfdjZG9h.js} +1 -1
- package/dist/client/assets/{label-CL8Vh65B.js → label-Cx2ZB3fC.js} +1 -1
- package/dist/client/assets/{login-B4UwjrwL.js → login-D8654qc_.js} +1 -1
- package/dist/client/assets/{mcp-oauth-CXj7zg3h.js → mcp-oauth-CXgOO3_Z.js} +1 -1
- package/dist/client/assets/{members-CZJJNFCT.js → members-ZdmSn1Mf.js} +1 -1
- package/dist/client/assets/{monaco-editor-DBScTPL_.js → monaco-editor-4orEO7SA.js} +1 -1
- package/dist/client/assets/{monitoring-stats-row-DS-oLjL7.js → monitoring-stats-row-7fXoNWvA.js} +1 -1
- package/dist/client/assets/{oauth-callback-DmaJ1bda.js → oauth-callback-CjWbf0VV.js} +1 -1
- package/dist/client/assets/{oauth-callback-ai-provider-BQMnSXh3.js → oauth-callback-ai-provider-CGBwbVq8.js} +1 -1
- package/dist/client/assets/{onboarding-Byb6DxyK.js → onboarding-Dg3RaMXm.js} +1 -1
- package/dist/client/assets/{org-install-DE37K5KN.js → org-install-DajV5sDJ.js} +1 -1
- package/dist/client/assets/{org-layout-des0Y5a9.js → org-layout-CxCW3kPO.js} +1 -1
- package/dist/client/assets/{organization-choice-COkZ5W_o.js → organization-choice-_GRu4few.js} +1 -1
- package/dist/client/assets/{page-seo-form-BcrUATEU.js → page-seo-form-BR-XmjQb.js} +1 -1
- package/dist/client/assets/page-seo-sheet-2cB0PlLc.js +1 -0
- package/dist/client/assets/{popover-SD8gnUXm.js → popover--AA1ItdN.js} +1 -1
- package/dist/client/assets/{post-editor-BDlfII0z.js → post-editor-DVByencx.js} +1 -1
- package/dist/client/assets/{primitives-CVsZF3ex.js → primitives-CIl7BRPA.js} +1 -1
- package/dist/client/assets/{profile-DBUkydtR.js → profile-BqfqKn42.js} +1 -1
- package/dist/client/assets/project-app-view-CjV5yv0w.js +1 -0
- package/dist/client/assets/record-editor-XwPGbLIZ.js +1 -0
- package/dist/client/assets/registry-BW8eSMLp.js +2 -0
- package/dist/client/assets/{registry-layout-BL9jjFNp.js → registry-layout-DvJfqys4.js} +1 -1
- package/dist/client/assets/{require-capability-CLQ4GBGj.js → require-capability-BfGyWObM.js} +1 -1
- package/dist/client/assets/{required-auth-layout-BzYoSj-D.js → required-auth-layout-Byh2JrNF.js} +1 -1
- package/dist/client/assets/{reset-password-C3Zmx-Z-.js → reset-password-GJl-4i1U.js} +1 -1
- package/dist/client/assets/{roles-RwbAlbhC.js → roles-0xtoXa0l.js} +1 -1
- package/dist/client/assets/{scroll-area-DgIklajW.js → scroll-area-C-bKstvD.js} +1 -1
- package/dist/client/assets/{search-input-BwHA7yOt.js → search-input-l47QlyGo.js} +1 -1
- package/dist/client/assets/{secrets-Cu_Gp7gT.js → secrets-dELE3Jkm.js} +1 -1
- package/dist/client/assets/{sections-editor-CaNl1tLu.js → sections-editor-CA2v23xo.js} +1 -1
- package/dist/client/assets/{select-DM3pFFAV.js → select-DgGFHmpR.js} +1 -1
- package/dist/client/assets/{select-model-C1odlJ1X.js → select-model-D1f7tay-.js} +1 -1
- package/dist/client/assets/{seo-editor-C28ZayGa.js → seo-editor-C_jJwBk3.js} +1 -1
- package/dist/client/assets/{settings-layout-C_nc5y3_.js → settings-layout-BOQOyUE9.js} +1 -1
- package/dist/client/assets/{settings-section-6b9w_VoZ.js → settings-section-CDDm862i.js} +1 -1
- package/dist/client/assets/{sheet-BJF6qruz.js → sheet-Efrdgwxo.js} +1 -1
- package/dist/client/assets/{shell-controls-C9tE75mS.js → shell-controls-BE9sPbzh.js} +1 -1
- package/dist/client/assets/{shell-layout-gi6XYvgE.js → shell-layout-Ch_-aGrE.js} +1 -1
- package/dist/client/assets/{shell-route-loading-Agan4lHM.js → shell-route-loading-D3yTwLVb.js} +1 -1
- package/dist/client/assets/{sidebar-BD77ZDQ1.js → sidebar-9reoKGe0.js} +1 -1
- package/dist/client/assets/{skeleton-CuVDGSZE.js → skeleton-tEl5_zWy.js} +1 -1
- package/dist/client/assets/{sortable.esm-DpWg8tde.js → sortable.esm-BqVpKYcQ.js} +1 -1
- package/dist/client/assets/{sso-B9XBpXX9.js → sso-2cEarNfb.js} +1 -1
- package/dist/client/assets/{store-Il1Qjdpz.js → store-B54A--NL.js} +1 -1
- package/dist/client/assets/store-registry-CYf2ObdW.js +2 -0
- package/dist/client/assets/{studio-tools-C-Eel15b.js → studio-tools-DmIDp8Xx.js} +1 -1
- package/dist/client/assets/{switch-DWXEjjcR.js → switch-BSvqI1Md.js} +1 -1
- package/dist/client/assets/{table-sXVKQ5vt.js → table-DHm0k09o.js} +1 -1
- package/dist/client/assets/{tabs-BeXAqCdo.js → tabs-oCDGewqQ.js} +1 -1
- package/dist/client/assets/{task-status-CaQuE65s.js → task-status-DYu791Mi.js} +1 -1
- package/dist/client/assets/{textarea-C30KYfio.js → textarea-TiuOlhKG.js} +1 -1
- package/dist/client/assets/{toggle-group-B6oTaI1f.js → toggle-group-DWjnJKrz.js} +1 -1
- package/dist/client/assets/{toolbar-DuZrnshW.js → toolbar-ehpuGCB6.js} +1 -1
- package/dist/client/assets/{toolbar-icon-button-CG8gWMNZ.js → toolbar-icon-button-DQnKLeOy.js} +1 -1
- package/dist/client/assets/{tools-list-BSe55AC9.js → tools-list-D42HHMgS.js} +1 -1
- package/dist/client/assets/{tooltip-BRQCINXK.js → tooltip-BssP9Q_A.js} +1 -1
- package/dist/client/assets/{types-ywta9rZ4.js → types-L3ovcNLz.js} +1 -1
- package/dist/client/assets/{use-ai-providers-CpUPA2Pj.js → use-ai-providers-C5o3IFBQ.js} +1 -1
- package/dist/client/assets/{use-automations-BSn8_z4p.js → use-automations-C95O_sFa.js} +1 -1
- package/dist/client/assets/{use-capability-AkUZCu97.js → use-capability-BzptcJVy.js} +1 -1
- package/dist/client/assets/{use-clock-tick-7J301cSN.js → use-clock-tick-BSfjbXUU.js} +1 -1
- package/dist/client/assets/{use-collections-BhzLncHB.js → use-collections-BA1UJvYX.js} +1 -1
- package/dist/client/assets/{use-connection-CSQdDXlG.js → use-connection-DWfmGjG0.js} +1 -1
- package/dist/client/assets/{use-copy-3aLRhzTZ.js → use-copy-BckjJTzZ.js} +1 -1
- package/dist/client/assets/{use-create-virtual-mcp-ClyuqzV0.js → use-create-virtual-mcp-CfZZlRkq.js} +1 -1
- package/dist/client/assets/{use-debounced-autosave-DwyO4Yri.js → use-debounced-autosave-DN8RWv6w.js} +1 -1
- package/dist/client/assets/{use-debounced-value-BGsbVLHA.js → use-debounced-value-BuWZ7YTD.js} +1 -1
- package/dist/client/assets/{use-decopilot-events-B8-U5_6h.js → use-decopilot-events-p2paxdzL.js} +1 -1
- package/dist/client/assets/{use-delete-connection-yP5RphYi.js → use-delete-connection-CQZNTYNQ.js} +1 -1
- package/dist/client/assets/{use-file-configs-XF2AvMPs.js → use-file-configs-Dgl_6ivK.js} +1 -1
- package/dist/client/assets/{use-infinite-scroll-CkXtceVR.js → use-infinite-scroll-Dkk5Sajt.js} +1 -1
- package/dist/client/assets/{use-join-requests-mfteqXVe.js → use-join-requests-lhMEe0hS.js} +1 -1
- package/dist/client/assets/{use-mcp-client-CRWIqSWI.js → use-mcp-client-hzui5WTy.js} +1 -1
- package/dist/client/assets/{use-mcp-prompts-BV9cBymv.js → use-mcp-prompts-CHQDqQIQ.js} +1 -1
- package/dist/client/assets/{use-mcp-tools-Dgj65Z69.js → use-mcp-tools-BUB7GKyw.js} +1 -1
- package/dist/client/assets/{use-members-BZOJ4ncQ.js → use-members-Cdg-QtQJ.js} +1 -1
- package/dist/client/assets/{use-mobile-DgvzRDzB.js → use-mobile-DVB-vztE.js} +1 -1
- package/dist/client/assets/{use-navigate-to-agent-DTqeD3lq.js → use-navigate-to-agent-BtEUbCZ3.js} +1 -1
- package/dist/client/assets/{use-org-auth-client-Dx974y4u.js → use-org-auth-client-D-dyTlLK.js} +1 -1
- package/dist/client/assets/{use-org-fs-DI1Q1Ycz.js → use-org-fs-CIgFPfMD.js} +1 -1
- package/dist/client/assets/{use-org-sso-kfQLtl8D.js → use-org-sso-DzTvSuYN.js} +1 -1
- package/dist/client/assets/{use-organization-roles-B2GmBYYT.js → use-organization-roles-CGiYaQHk.js} +1 -1
- package/dist/client/assets/{use-organization-settings-ClL7mSbK.js → use-organization-settings-fWw_V4Y1.js} +1 -1
- package/dist/client/assets/{use-registry-connections-DzyhBLO8.js → use-registry-connections-B1bwO1sJ.js} +1 -1
- package/dist/client/assets/{use-secrets-BX0N_3N-.js → use-secrets-C5jjpFcv.js} +1 -1
- package/dist/client/assets/{use-status-sounds-BsVH7G2F.js → use-status-sounds-utdkttuv.js} +1 -1
- package/dist/client/assets/{use-view-mode-D4v-Vh_n.js → use-view-mode-CzxLa-TV.js} +1 -1
- package/dist/client/assets/{use-virtual-mcp-7AWl-thI.js → use-virtual-mcp-VFOn7DtV.js} +1 -1
- package/dist/client/assets/useInfiniteQuery-C7p8abeX.js +1 -0
- package/dist/client/assets/useSuspenseInfiniteQuery-BhXzTMMG.js +1 -0
- package/dist/client/assets/{useSuspenseQueries-D4Gfj0Tf.js → useSuspenseQueries-BV6_xUiw.js} +1 -1
- package/dist/client/assets/{variant-calendar-C9mxKuI5.js → variant-calendar-D9xpOMKW.js} +1 -1
- package/dist/client/assets/{view-mode-toggle-Dcs21C2T.js → view-mode-toggle-DFCa_ggD.js} +1 -1
- package/dist/client/index.html +1 -1
- package/dist/server/cli.js +2 -2
- package/dist/server/server.js +1 -1
- package/package.json +1 -1
- package/dist/client/assets/page-seo-sheet-D1Z6hzyV.js +0 -1
- package/dist/client/assets/project-app-view-Bk8oTYIF.js +0 -1
- package/dist/client/assets/record-editor-DL8IQ3xy.js +0 -1
- package/dist/client/assets/registry-Bd0JPSYO.js +0 -2
- package/dist/client/assets/store-registry-BN4Ygwm2.js +0 -2
- package/dist/client/assets/useInfiniteQuery-DbI8AV-k.js +0 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-DT-JxV4F.js +0 -1
package/dist/server/cli.js
CHANGED
|
@@ -81273,7 +81273,7 @@ ${$}`;_(Z);return}if(E(null,B),t.strategy==="count"){if(w--,w===0)_()}if(t.strat
|
|
|
81273
81273
|
SELECT * FROM link_sandboxes WHERE handle = $handle
|
|
81274
81274
|
`);function _(v){if(t===void 0)return!0;let h=gM(v),D=h&&gM(t)?fru(t):t,g=h?fru(v):lru(v),O=OHt(D,g);return O===""||!O.startsWith("..")&&!gHt(O)}return{upsert(v){f.run({$handle:v.handle,$status:v.status,$sandboxPath:v.sandboxPath,$port:v.port??null,$previewUrl:v.previewUrl??null,$repoCloneUrl:v.repoCloneUrl??null,$branch:v.branch??null,$projectName:v.projectName??null,$error:v.error??null,$now:Date.now()})},list(){return l.all().map(b1i)},reconcile(){let v=Date.now();for(let h of l.all().map(b1i)){if(!_(h.sandboxPath)){c.run({$handle:h.handle,$now:v});continue}if(!gM(h.sandboxPath)){E.run({$handle:h.handle,$now:v});continue}if(h.status==="spawning"||h.status==="ready"||h.status==="failed"||h.status==="missing")$.run({$handle:h.handle,$now:v})}return l.all().map(b1i)},prune(v){let h=[],D=[],g=this.reconcile();for(let O of g){if(!_(O.sandboxPath)){D.push({handle:O.handle,sandboxPath:O.sandboxPath,reason:"outside_root",deletedFiles:!1});continue}if(v.missing&&O.status==="missing"){w.run({$handle:O.handle}),h.push({handle:O.handle,sandboxPath:O.sandboxPath,reason:"missing",deletedFiles:!1});continue}if(!v.merged||!gM(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(!f7(O.sandboxPath,["rev-parse","--is-inside-work-tree"]).ok){D.push({handle:O.handle,sandboxPath:O.sandboxPath,reason:"git_unavailable",deletedFiles:!1});continue}let Z=f7(O.sandboxPath,["status","--porcelain"]);if(!Z.ok){D.push({handle:O.handle,sandboxPath:O.sandboxPath,reason:"git_unavailable",deletedFiles:!1});continue}if(Z.stdout.trim()!==""){D.push({handle:O.handle,sandboxPath:O.sandboxPath,reason:"dirty_worktree",deletedFiles:!1});continue}let B=Eru(O.sandboxPath,O.branch);if(B===null){D.push({handle:O.handle,sandboxPath:O.sandboxPath,reason:"git_unavailable",deletedFiles:!1});continue}if(!B){D.push({handle:O.handle,sandboxPath:O.sandboxPath,reason:"branch_not_merged",deletedFiles:!1});continue}hHt(O.sandboxPath,{recursive:!0,force:!0}),w.run({$handle:O.handle}),h.push({handle:O.handle,sandboxPath:O.sandboxPath,reason:"merged",deletedFiles:!0})}return{removed:h,skipped:D}},delete(v){w.run({$handle:v})},inspect(v){let h=d.get({$handle:v});if(h===null)return null;let D=b1i(h),g=0,O=null;if(gM(D.sandboxPath)&&f7(D.sandboxPath,["rev-parse","--is-inside-work-tree"]).ok){let Z=f7(D.sandboxPath,["status","--porcelain"]);if(Z.ok){let B=Z.stdout.trim();g=B===""?0:B.split(`
|
|
81275
81275
|
`).length}if(D.branch!==null&&D.branch.trim()!=="")O=Eru(D.sandboxPath,D.branch)}return{handle:D.handle,branch:D.branch,sandboxPath:D.sandboxPath,dirtyCount:g,merged:O}},close(){u.close()}}}var GHi=()=>{};function wru(i,u){let t=u?[["umount","-f",i]]:[["fusermount","-u",i],["umount",i]];for(let f of t)if(Bun.spawnSync(f,{stdout:"ignore",stderr:"ignore",timeout:5000}).exitCode===0)break}import{existsSync as FHt,readdirSync as THt}from"fs";import{rm as UHt}from"fs/promises";import{join as dru}from"path";async function _ru(i,u={}){let t=u.detach??PHt,f=u.exists??FHt,l=u.readdir??(($)=>THt($)),c=u.rm??(($)=>UHt($,{recursive:!0,force:!0})),E=dru(i,"org");if(f(E))for(let $ of l(E))t(dru(E,$));await c(i)}var PHt=(i)=>wru(i,process.platform==="darwin");var vru=()=>{};import{join as xHt}from"path";function hru(i){let u=i.purge??_ru;return{stopSandbox(t){return i.provider.deleteSandbox(t)},inspectSandbox(t){return i.registry.inspect(t)},async removeSandbox(t){try{return await u6(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??xHt(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 J6?f.cause:f;return{ok:!1,error:l instanceof Error?l.message:String(l)}}}}}var Dru=N(()=>{Q1();vru()});import{randomBytes as IHt}from"crypto";import{mkdir as AHt}from"fs/promises";import{createServer as nHt}from"net";import{join as GHt}from"path";function gru(i,u){return Error(`sandbox failed to start: ${i}`,{cause:u})}function kHt(i){if(!(i instanceof Error))return!1;return i.name==="TimeoutError"||/timed out|timeout|operation was aborted|aborted/i.test(i.message)}function Nru(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 jHt(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 XHt(i){return{repoCloneUrl:i.repo?.cloneUrl??null,branch:i.repo?.branch??null,projectName:jHt(i.repo?.cloneUrl)}}function Oru(i){let u=i.maxSandboxes??20,t=new Map,f=i.pickPort??JHt,l=i.fetchImpl??fetch,c=i.resolvePreviewUrl??((g,O)=>`http://127.0.0.1:${O}`),E=(g)=>GHt(i.dataDir,"sandboxes",g),$=(g)=>{try{i.registry?.upsert(g)}catch(O){console.warn(`[user-desktop] failed to persist sandbox lifecycle handle=${g.handle} status=${g.status}:`,O)}},w=(g)=>{try{i.onEvent?.(g)}catch{}},d=async(g)=>{let O=new AbortController,Z=setTimeout(()=>O.abort(),1500);try{let B=await l(`${g}/health`,{signal:O.signal});if(!B.ok)console.warn(`[user-desktop] probe ${g}/health \u2192 ${B.status} (treating as dead)`);return B.ok}catch(B){return console.warn(`[user-desktop] probe ${g}/health failed: ${B instanceof Error?B.message:String(B)} (treating as dead)`),!1}finally{clearTimeout(Z)}},_=(g)=>{console.warn(`[user-desktop] evicting dead daemon handle=${g.handle} port=${g.port}`);try{g.process.kill("SIGTERM")}catch{}if(t.get(g.handle)===g)t.delete(g.handle),$({handle:g.handle,status:"stopped",sandboxPath:E(g.handle),port:null,previewUrl:null,...g.registryMetadata,error:null}),w({handle:g.handle,phase:"evicted"})},v=new Map;function h(){if(t.size<u)return;let g=[...t.values()].filter((Z)=>Z.activeDispatchCount===0).sort((Z,B)=>Z.lastUsedAt-B.lastUsedAt);if(g.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=g[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(g)=>{let O=XHt(g),Z=E(g.handle);$({handle:g.handle,status:"spawning",sandboxPath:Z,port:null,previewUrl:null,...O,error:null}),w({handle:g.handle,phase:"spawning"}),h();let B,y=null,F;try{await AHt(Z,{recursive:!0}),console.log(`[user-desktop] ensure handle=${g.handle} repo=${g.repo?.cloneUrl??"(none)"} branch=${g.repo?.branch??"(none)"} runtime=${g.workload?.runtime??"(autodetect)"} pm=${g.workload?.packageManager??"(autodetect)"}`),F=IHt(24).toString("hex");let[j,A]=await Promise.all([f(),f()]);B=j,console.log(`[user-desktop] spawn handle=${g.handle} port=${B} devPort=${A} workdir=${Z}`),y=await Promise.resolve(i.spawnDaemon({workdir:Z,handle:g.handle,port:B,daemonToken:F,offloadAllowedHosts:g.offloadAllowedHosts??[],offloadAllowSameHostDev:g.offloadAllowSameHostDev??!1,orgFsConfigJson:g.orgFsConfigJson}));try{await i.waitForHealth(B)}catch(G){throw gru("the sandbox didn't come online in time",G)}console.log(`[user-desktop] healthy handle=${g.handle} port=${B} \u2014 posting config`);try{await i.postConfig(B,A,{repo:g.repo,workload:g.workload,operator:g.operator},F)}catch(G){throw gru(kHt(G)?"configuration timed out":"the sandbox rejected its configuration",G)}}catch(j){if(console.error(`[user-desktop] sandbox bring-up failed handle=${g.handle} port=${B??"(none)"}${y?" (killing daemon)":""}:`,j),y)try{y.kill("SIGKILL")}catch{}throw w({handle:g.handle,phase:"failed",error:Nru(j)}),$({handle:g.handle,status:"failed",sandboxPath:Z,port:null,previewUrl:null,...O,error:Nru(j)}),j}if(!y||B===void 0)throw Error("sandbox bring-up invariant violated");let T=`http://127.0.0.1:${B}`,U=c(g.handle,B);console.log(`[user-desktop] ready handle=${g.handle} port=${B} sandboxApiUrl=${T} previewUrl=${U}`);let I={handle:g.handle,port:B,process:y,sandboxApiUrl:T,previewUrl:U,lastUsedAt:Date.now(),activeDispatchCount:0,daemonToken:F,registryMetadata:O};if(t.set(g.handle,I),$({handle:g.handle,status:"ready",sandboxPath:Z,port:B,previewUrl:U,...O,error:null}),w({handle:g.handle,phase:"ready",port:B,previewUrl:U}),y.exited)y.exited.then(()=>{if(t.get(g.handle)===I)console.warn(`[user-desktop] daemon process exited unexpectedly handle=${g.handle} port=${B} \u2014 removing from cache`),t.delete(g.handle),$({handle:g.handle,status:"stopped",sandboxPath:Z,port:null,previewUrl:null,...O,error:null}),w({handle:g.handle,phase:"evicted"});else console.log(`[user-desktop] daemon process exited handle=${g.handle} port=${B} (already replaced/removed)`)});return{sandboxApiUrl:T,previewUrl:U,port:B}};return{async ensureSandbox(g){let O=t.get(g.handle);if(O){if(await d(O.sandboxApiUrl))return console.log(`[user-desktop] cache hit handle=${g.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=${g.handle} port=${O.port} \u2014 respawning`),_(O)}let Z=v.get(g.handle);if(Z)return console.log(`[user-desktop] joining in-flight ensure handle=${g.handle}`),Z;let B=D(g).finally(()=>{v.delete(g.handle)});return v.set(g.handle,B),B},proxyPort(g){let O=t.get(g);if(O)O.lastUsedAt=Date.now();return O?.port??null},getDaemonToken(g){return t.get(g)?.daemonToken??null},hasHandle(g){return t.has(g)||v.has(g)},recordHit(g){let O=t.get(g);if(O)O.lastUsedAt=Date.now()},acquireDispatch(g){let O=t.get(g);if(!O)return()=>{};O.activeDispatchCount+=1;let Z=!1;return()=>{if(Z)return;Z=!0;let B=t.get(g);if(B)B.activeDispatchCount=Math.max(0,B.activeDispatchCount-1)}},listSandboxes(){return[...t.values()]},async deleteSandbox(g){let O=t.get(g);if(!O){console.log(`[user-desktop] delete handle=${g} (not found, no-op)`);return}if(O.activeDispatchCount>0){console.warn(`[user-desktop] delete handle=${g} port=${O.port} REFUSED \u2014 ${O.activeDispatchCount} active dispatch(es) in flight`);return}console.log(`[user-desktop] delete handle=${g} port=${O.port}`);try{O.process.kill("SIGTERM")}catch{}t.delete(g),$({handle:g,status:"stopped",sandboxPath:E(g),port:null,previewUrl:null,repoCloneUrl:null,branch:null,projectName:null,error:null}),w({handle:g,phase:"deleted"})},async shutdown(){console.log(`[user-desktop] shutdown \u2014 killing ${t.size} sandbox(es)`);for(let g of t.values())try{g.process.kill("SIGTERM")}catch{}t.clear()}}}function JHt(){return new Promise((i,u)=>{let t=nHt();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 Zru=()=>{};import{randomUUID as KHt}from"crypto";import{hostname as SHt}from"os";async function Bru(i){let u=SHt()||void 0;i.monitor?.onMachine?.(u??"this machine");let t=pHu(i.dataDir,{outFd:i.logFd,perSandboxLog:i.perSandboxLogs,hotReload:i.hotReload}),f=C1i({path:R1i(i.dataDir),managedSandboxRoot:`${i.dataDir}/sandboxes`}),l=!1,c=()=>{if(l)return;l=!0;try{f.close()}catch{}};try{let E=0,$=Oru({dataDir:i.dataDir,registry:f,resolvePreviewUrl:(G,M)=>E>0?`http://${G}.localhost:${E}`:`http://127.0.0.1:${M}`,spawnDaemon:async(G)=>{let M={DAEMON_BOOT_ID:KHt(),APP_ROOT:G.workdir,PROXY_PORT:String(G.port),DAEMON_TOKEN:G.daemonToken,OFFLOAD_ALLOWED_HOSTS:G.offloadAllowedHosts.join(","),...G.offloadAllowSameHostDev?{OFFLOAD_ALLOW_SAME_HOST_DEV:"1"}:{}};if(G.orgFsConfigJson){let Y=await fbu(i.dataDir);if(Y)M.ORGFS_CONFIG=G.orgFsConfigJson,M.ORGFS_RCLONE_PATH=Y}let K=await t({workdir:G.workdir,env:M,daemonPort:G.port});return{port:G.port,kill:(Y)=>K.kill(Y),exited:K.exited.then(()=>{return})}},postConfig:async(G,M,K,Y)=>{let r={port:M};if(K.workload)r.runtime=K.workload.runtime,r.packageManager={name:K.workload.packageManager,...K.workload.packageManagerPath?{path:K.workload.packageManagerPath}:{}};let Q={application:r},di=i5(K.operator??null);if(di)Q.operator=di;if(K.repo)Q.git={repository:{cloneUrl:K.repo.cloneUrl,branch:K.repo.branch},...K.repo.userName&&K.repo.userEmail?{identity:{userName:K.repo.userName,userEmail:K.repo.userEmail}}:{}};await V2(`http://127.0.0.1:${G}`,Y,Q)},waitForHealth:async(G)=>{await R4i(`http://127.0.0.1:${G}`)},maxSandboxes:20,onEvent:i.monitor?.onEvent}),w=await qVu({port:i.port,lookupSandboxPort:(G)=>$.proxyPort(G)});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=cbu({provider:$}),_=async()=>{let G=await q2({dataDir:i.dataDir,target:i.clusterBaseUrl});if(!G)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 G.accessToken},v=await uru(i.dataDir),h=process.env.npm_package_version??"0.0.0",D=await nHi(),g=pVu(D,{onChange:(G)=>{console.log(`[link-daemon] capabilities detected: +${G.join(",")} (now: ${D.join(",")})`)}}),O=NQi({path:`${i.dataDir}/link/outbox.sqlite`});O.clear();let Z=()=>{},B=new AbortController,y={clusterBaseUrl:i.clusterBaseUrl,getAccessToken:_,provider:$,outbox:O,controlHandler:d,capabilities:D,machineId:v,cliVersion:h,previewPort:w.port,onConnected:()=>{i.monitor?.onCluster?.("linked"),console.log(`Linked to ${i.clusterBaseUrl}`)},onShutdown:()=>Z(),runLifetimeSignal:B.signal};console.log(`[link-daemon] transport=tunnel cluster=${i.clusterBaseUrl}`);let F=await KVu(y);console.log("[link-daemon] active transport=tunnel");let T,U=new Promise((G)=>{T=G}),I=!1,j=async()=>{if(I)return;I=!0,B.abort(),console.log(`
|
|
81276
|
-
Shutting down\u2026`),g();try{await F.close()}catch{}try{await w.stop()}catch{}try{await $.shutdown()}catch{}try{O.close()}catch{}c(),T(0)};process.on("SIGINT",()=>void j()),process.on("SIGTERM",()=>void j()),Z=()=>{console.log("Disconnect requested from the Studio web UI \u2014 shutting down. Run `bunx decocms@latest link` to reconnect."),j()},F.closed.then(()=>{if(i.monitor?.onCluster?.("closed"),!I)console.error("Cluster connection closed permanently; exiting."),j()});let A=hru({provider:$,registry:f,dataDir:i.dataDir});return{stopped:U,stop:j,stopSandbox:A.stopSandbox,removeSandbox:A.removeSandbox,inspectSandbox:A.inspectSandbox}}catch(E){throw c(),E}}var yru=N(()=>{wQi();LC();ibu();lbu();Ebu();OQi();SVu();VVu();iru();tru();WC();GHi();Dru();Zru()});function kHi(i){return i.map((u)=>typeof u==="string"?u:String(u)).join(" ")}var M1i;var jHi=N(()=>{M1i={name:"decocms",version:"4.4.0",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/mesh"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:'bun run migrate && concurrently "bun run dev:client" "bun run dev:server"',"dev:servers":'concurrently "bun run dev:client" "bun run dev:server"',"dev:client":"vite dev","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts","build:client":"bun --bun vite build","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","db:migrate":"bun run ./dist/server/migrate.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts",test:"bun test","test:ct":"playwright test -c playwright-ct.config.ts","test:ct:ui":"playwright test -c playwright-ct.config.ts --ui","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts","smoke:link":"bun run scripts/smoke-link.ts",prepublishOnly:"bun run build:client && bun run build:server"},optionalDependencies:{"@anthropic-ai/claude-agent-sdk":"^0.3.181","@duckdb/node-api":"^1.5.0-r.1","@openai/codex":"0.141.0","@openai/codex-darwin-arm64":"npm:@openai/codex@0.141.0-darwin-arm64","@openai/codex-darwin-x64":"npm:@openai/codex@0.141.0-darwin-x64","@openai/codex-linux-arm64":"npm:@openai/codex@0.141.0-linux-arm64","@openai/codex-linux-x64":"npm:@openai/codex@0.141.0-linux-x64","@openai/codex-win32-arm64":"npm:@openai/codex@0.141.0-win32-arm64","@openai/codex-win32-x64":"npm:@openai/codex@0.141.0-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","@xterm/addon-fit":"^0.11.0","@xterm/xterm":"^6.0.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 NM={};Li(NM,{printBanner:()=>LHt,bannerLines:()=>Fru,BANNER_LINES:()=>q1i,BANNER_GRADIENT:()=>V1i});function WHt(i){let u=Number.parseInt(i.slice(1),16);return[u>>16&255,u>>8&255,u&255]}function Fru(i){let u=q1i.map((t,f)=>{let[l,c,E]=WHt(V1i[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 LHt(i){console.log("");for(let u of Fru(i))console.log(u);console.log("")}var q1i,V1i;var xY=N(()=>{q1i=[" \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 "],V1i=["#00ff64","#00ee5e","#00dc56","#00c84e","#00b444","#00a03c","#008832","#006e28"]});import{Box as QHt,Text as Tru}from"ink";import{jsx as zHt,jsxs as Uru}from"react/jsx-runtime";function r1i({version:i}){return Uru(QHt,{flexDirection:"column",marginTop:1,children:[q1i.map((u,t)=>zHt(Tru,{color:V1i[t],children:u},t)),Uru(Tru,{dimColor:!0,children:[" v",i]})]})}var XHi=N(()=>{xY()});function Pru(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 IY(i){return[...i.values()].map((u)=>u.handle).sort((u,t)=>u.localeCompare(t))}function xru(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 Iru(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 YHi={};Li(YHi,{subscribeLinkState:()=>JHi,setSelectedHandle:()=>KHi,setRemoving:()=>a1i,setPersistedSandboxes:()=>eHt,setPendingConfirm:()=>ZM,setMachine:()=>qHt,setLogPath:()=>rHt,setLinkActions:()=>mHt,setIngress:()=>MHt,setDaemonError:()=>VHt,setClusterUrl:()=>CHt,setCluster:()=>RHt,setActionError:()=>e1i,resetLinkStateForTests:()=>oHt,removeSandboxRow:()=>SHi,pushSandboxEvent:()=>aHt,getLinkState:()=>OM,applySandboxEvent:()=>Aru});function bHt(i){return i==="spawning"||i==="ready"||i==="failed"}function Aru(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:f?.projectName??null,branch:f?.branch??null,sandboxPath:f?.sandboxPath??null}),t}function nru(){return{cluster:"connecting",clusterUrl:null,ingressUrl:null,ingressPort:null,machine:null,cap:HHt,sandboxes:new Map,daemonError:null,logPath:null,selectedHandle:null,pendingConfirm:null,removingHandles:new Set,actionError:null,actions:null}}function X$(){for(let i of m1i)i()}function OM(){return tf}function JHi(i){return m1i.add(i),()=>m1i.delete(i)}function RHt(i){tf={...tf,cluster:i},X$()}function CHt(i){tf={...tf,clusterUrl:i},X$()}function MHt(i,u){tf={...tf,ingressPort:i,ingressUrl:u},X$()}function qHt(i){tf={...tf,machine:i},X$()}function VHt(i){tf={...tf,daemonError:i},X$()}function rHt(i){tf={...tf,logPath:i},X$()}function KHi(i){tf={...tf,selectedHandle:i},X$()}function ZM(i){tf={...tf,pendingConfirm:i},X$()}function e1i(i){tf={...tf,actionError:i},X$()}function a1i(i,u){if(tf.removingHandles.has(i)===u)return;let t=new Set(tf.removingHandles);if(u)t.add(i);else t.delete(i);tf={...tf,removingHandles:t},X$()}function mHt(i){tf={...tf,actions:i},X$()}function SHi(i){let u=IY(tf.sandboxes),t=Iru(u,i,tf.selectedHandle),f=new Map(tf.sandboxes);f.delete(i);let l=new Set(tf.removingHandles);l.delete(i),tf={...tf,sandboxes:f,selectedHandle:t,pendingConfirm:null,removingHandles:l},X$()}function eHt(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 tf.sandboxes)if(bHt(f.status))u.set(t,f);tf={...tf,sandboxes:u},X$()}function aHt(i){tf={...tf,sandboxes:Aru(tf.sandboxes,i)},X$()}function oHt(){tf=nru(),m1i.clear()}var HHt=20,tf,m1i;var BM=N(()=>{tf=nru(),m1i=new Set});import{spawn as sHt}from"child_process";function pHt(i){if(i==="darwin")return"open";if(i==="win32")return"start";return"xdg-open"}function Gru(i,u=process.platform){let t=pHt(u);try{sHt(t,[i],{stdio:"ignore",detached:!0}).unref()}catch{}}var kru=()=>{};function jru(i,u={}){let t=u.openUrl??Gru,f=OM(),l=IY(f.sandboxes),c=f.selectedHandle!==null&&l.includes(f.selectedHandle)?f.selectedHandle:l[0]??null,E=f.actions;switch(i.type){case"move":KHi(xru(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);e1i(null),ZM({handle:c,branch:$?.branch??w?.branch??null,dirtyCount:$?.dirtyCount??0,merged:$?.merged??null});return}case"confirmYes":{let $=f.pendingConfirm;if(ZM(null),$===null||!E)return;a1i($.handle,!0),E.removeSandbox($.handle).then((w)=>{if(w.ok)SHi($.handle);else a1i($.handle,!1),e1i(w.error)});return}case"confirmNo":ZM(null);return;case"quit":if(E)E.quit();return}}var Xru=N(()=>{BM();kru()});function Jru(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 Kru={};Li(Kru,{LinkApp:()=>fbt});import{Box as b1,Text as El,useInput as ibt}from"ink";import{useSyncExternalStore as ubt}from"react";import{jsx as xf,jsxs as v5}from"react/jsx-runtime";function tbt(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 fbt(){let i=ubt(JHi,OM),u=[...i.sandboxes.values()].sort((l,c)=>l.handle.localeCompare(c.handle)),t=IY(i.sandboxes),f=i.selectedHandle!==null&&t.includes(i.selectedHandle)?i.selectedHandle:t[0]??null;return ibt((l,c)=>{let E=Jru(l,c,i.pendingConfirm!==null);if(E!==null)jru(E)}),v5(b1,{flexDirection:"column",children:[xf(r1i,{version:M1i.version}),xf(b1,{marginBottom:1,children:xf(El,{dimColor:!0,children:"\u2500".repeat(80)})}),xf(b1,{children:i.cluster==="linked"?v5(El,{color:"green",children:["\u2713 Connected to ",i.clusterUrl??"deco"]}):i.cluster==="connecting"?v5(El,{color:"yellow",children:["\u25CC Connecting to ",i.clusterUrl??"deco","\u2026"]}):v5(El,{color:"red",children:["\u2717 Disconnected from ",i.clusterUrl??"deco"]})}),xf(b1,{children:i.ingressUrl?v5(El,{color:"green",children:["\u2713 Serving at ",i.ingressUrl]}):xf(El,{dimColor:!0,children:"\u25CC Starting local server\u2026"})}),xf(b1,{marginBottom:1,children:xf(El,{dimColor:!0,children:`${"Computer".padEnd(16)}${i.machine??"this computer"} \xB7 ${u.length} of ${i.cap} previews`})}),u.length===0?xf(El,{dimColor:!0,children:"No previews running yet."}):v5(b1,{flexDirection:"column",children:[v5(b1,{children:[xf(b1,{width:2,flexShrink:0}),xf(b1,{width:AY.project,flexShrink:0,marginRight:1,children:xf(El,{dimColor:!0,wrap:"truncate-end",children:"PROJECT"})}),xf(b1,{width:AY.branch,flexShrink:0,marginRight:1,children:xf(El,{dimColor:!0,wrap:"truncate-end",children:"BRANCH"})}),xf(b1,{width:AY.status,flexShrink:0,marginRight:1,children:xf(El,{dimColor:!0,wrap:"truncate-end",children:"STATUS"})}),xf(b1,{flexGrow:1,children:xf(El,{dimColor:!0,wrap:"truncate-end",children:"PREVIEW URL"})})]}),u.map((l)=>{let c=tbt(l,i.removingHandles.has(l.handle)),E=l.handle===f;return v5(b1,{children:[xf(b1,{width:2,flexShrink:0,children:xf(El,{color:"cyan",children:E?"\u203A":" "})}),xf(b1,{width:AY.project,flexShrink:0,marginRight:1,children:xf(El,{bold:E,wrap:"truncate-end",children:l.projectName??l.handle})}),xf(b1,{width:AY.branch,flexShrink:0,marginRight:1,children:xf(El,{bold:E,wrap:"truncate-end",children:l.branch??"\u2014"})}),xf(b1,{width:AY.status,flexShrink:0,marginRight:1,children:xf(El,{color:c.color,bold:E,wrap:"truncate-end",children:c.text})}),xf(b1,{flexGrow:1,children:xf(El,{dimColor:!0,wrap:"truncate-end",children:l.previewUrl??"\u2014"})})]},l.handle)})]}),i.daemonError?xf(b1,{marginTop:1,children:v5(El,{color:"red",children:["\u26A0 ",i.daemonError]})}):null,i.logPath?xf(b1,{marginTop:1,children:v5(El,{dimColor:!0,children:["Logs: ",i.logPath]})}):null,i.pendingConfirm?xf(b1,{marginTop:1,children:xf(El,{color:"yellow",children:Pru(i.pendingConfirm)})}):null,i.actionError?xf(b1,{marginTop:1,children:v5(El,{color:"red",children:["\u2717 ",i.actionError]})}):null,xf(b1,{marginTop:1,children:xf(El,{dimColor:!0,children:"\u2191\u2193 move \xB7 s stop \xB7 d delete \xB7 o open \xB7 q quit"})})]})}var AY;var Sru=N(()=>{jHi();XHi();Xru();BM();AY={project:18,branch:22,status:14}});var Yru={};Li(Yru,{runLinkCommand:()=>vbt});import{closeSync as lbt,mkdirSync as cbt,openSync as Ebt,writeSync as $bt}from"fs";import{homedir as wbt}from"os";import{join as WHi}from"path";function dbt(i,u){let t={log:console.log,warn:console.warn,error:console.error},f=(l)=>{if(u===void 0)return;try{$bt(u,`${kHi(l)}
|
|
81276
|
+
Shutting down\u2026`),g();try{await F.close()}catch{}try{await w.stop()}catch{}try{await $.shutdown()}catch{}try{O.close()}catch{}c(),T(0)};process.on("SIGINT",()=>void j()),process.on("SIGTERM",()=>void j()),Z=()=>{console.log("Disconnect requested from the Studio web UI \u2014 shutting down. Run `bunx decocms@latest link` to reconnect."),j()},F.closed.then(()=>{if(i.monitor?.onCluster?.("closed"),!I)console.error("Cluster connection closed permanently; exiting."),j()});let A=hru({provider:$,registry:f,dataDir:i.dataDir});return{stopped:U,stop:j,stopSandbox:A.stopSandbox,removeSandbox:A.removeSandbox,inspectSandbox:A.inspectSandbox}}catch(E){throw c(),E}}var yru=N(()=>{wQi();LC();ibu();lbu();Ebu();OQi();SVu();VVu();iru();tru();WC();GHi();Dru();Zru()});function kHi(i){return i.map((u)=>typeof u==="string"?u:String(u)).join(" ")}var M1i;var jHi=N(()=>{M1i={name:"decocms",version:"4.5.1",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.141.0","@openai/codex-darwin-arm64":"npm:@openai/codex@0.141.0-darwin-arm64","@openai/codex-darwin-x64":"npm:@openai/codex@0.141.0-darwin-x64","@openai/codex-linux-arm64":"npm:@openai/codex@0.141.0-linux-arm64","@openai/codex-linux-x64":"npm:@openai/codex@0.141.0-linux-x64","@openai/codex-win32-arm64":"npm:@openai/codex@0.141.0-win32-arm64","@openai/codex-win32-x64":"npm:@openai/codex@0.141.0-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","@xterm/addon-fit":"^0.11.0","@xterm/xterm":"^6.0.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 NM={};Li(NM,{printBanner:()=>LHt,bannerLines:()=>Fru,BANNER_LINES:()=>q1i,BANNER_GRADIENT:()=>V1i});function WHt(i){let u=Number.parseInt(i.slice(1),16);return[u>>16&255,u>>8&255,u&255]}function Fru(i){let u=q1i.map((t,f)=>{let[l,c,E]=WHt(V1i[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 LHt(i){console.log("");for(let u of Fru(i))console.log(u);console.log("")}var q1i,V1i;var xY=N(()=>{q1i=[" \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 "],V1i=["#00ff64","#00ee5e","#00dc56","#00c84e","#00b444","#00a03c","#008832","#006e28"]});import{Box as QHt,Text as Tru}from"ink";import{jsx as zHt,jsxs as Uru}from"react/jsx-runtime";function r1i({version:i}){return Uru(QHt,{flexDirection:"column",marginTop:1,children:[q1i.map((u,t)=>zHt(Tru,{color:V1i[t],children:u},t)),Uru(Tru,{dimColor:!0,children:[" v",i]})]})}var XHi=N(()=>{xY()});function Pru(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 IY(i){return[...i.values()].map((u)=>u.handle).sort((u,t)=>u.localeCompare(t))}function xru(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 Iru(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 YHi={};Li(YHi,{subscribeLinkState:()=>JHi,setSelectedHandle:()=>KHi,setRemoving:()=>a1i,setPersistedSandboxes:()=>eHt,setPendingConfirm:()=>ZM,setMachine:()=>qHt,setLogPath:()=>rHt,setLinkActions:()=>mHt,setIngress:()=>MHt,setDaemonError:()=>VHt,setClusterUrl:()=>CHt,setCluster:()=>RHt,setActionError:()=>e1i,resetLinkStateForTests:()=>oHt,removeSandboxRow:()=>SHi,pushSandboxEvent:()=>aHt,getLinkState:()=>OM,applySandboxEvent:()=>Aru});function bHt(i){return i==="spawning"||i==="ready"||i==="failed"}function Aru(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:f?.projectName??null,branch:f?.branch??null,sandboxPath:f?.sandboxPath??null}),t}function nru(){return{cluster:"connecting",clusterUrl:null,ingressUrl:null,ingressPort:null,machine:null,cap:HHt,sandboxes:new Map,daemonError:null,logPath:null,selectedHandle:null,pendingConfirm:null,removingHandles:new Set,actionError:null,actions:null}}function X$(){for(let i of m1i)i()}function OM(){return tf}function JHi(i){return m1i.add(i),()=>m1i.delete(i)}function RHt(i){tf={...tf,cluster:i},X$()}function CHt(i){tf={...tf,clusterUrl:i},X$()}function MHt(i,u){tf={...tf,ingressPort:i,ingressUrl:u},X$()}function qHt(i){tf={...tf,machine:i},X$()}function VHt(i){tf={...tf,daemonError:i},X$()}function rHt(i){tf={...tf,logPath:i},X$()}function KHi(i){tf={...tf,selectedHandle:i},X$()}function ZM(i){tf={...tf,pendingConfirm:i},X$()}function e1i(i){tf={...tf,actionError:i},X$()}function a1i(i,u){if(tf.removingHandles.has(i)===u)return;let t=new Set(tf.removingHandles);if(u)t.add(i);else t.delete(i);tf={...tf,removingHandles:t},X$()}function mHt(i){tf={...tf,actions:i},X$()}function SHi(i){let u=IY(tf.sandboxes),t=Iru(u,i,tf.selectedHandle),f=new Map(tf.sandboxes);f.delete(i);let l=new Set(tf.removingHandles);l.delete(i),tf={...tf,sandboxes:f,selectedHandle:t,pendingConfirm:null,removingHandles:l},X$()}function eHt(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 tf.sandboxes)if(bHt(f.status))u.set(t,f);tf={...tf,sandboxes:u},X$()}function aHt(i){tf={...tf,sandboxes:Aru(tf.sandboxes,i)},X$()}function oHt(){tf=nru(),m1i.clear()}var HHt=20,tf,m1i;var BM=N(()=>{tf=nru(),m1i=new Set});import{spawn as sHt}from"child_process";function pHt(i){if(i==="darwin")return"open";if(i==="win32")return"start";return"xdg-open"}function Gru(i,u=process.platform){let t=pHt(u);try{sHt(t,[i],{stdio:"ignore",detached:!0}).unref()}catch{}}var kru=()=>{};function jru(i,u={}){let t=u.openUrl??Gru,f=OM(),l=IY(f.sandboxes),c=f.selectedHandle!==null&&l.includes(f.selectedHandle)?f.selectedHandle:l[0]??null,E=f.actions;switch(i.type){case"move":KHi(xru(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);e1i(null),ZM({handle:c,branch:$?.branch??w?.branch??null,dirtyCount:$?.dirtyCount??0,merged:$?.merged??null});return}case"confirmYes":{let $=f.pendingConfirm;if(ZM(null),$===null||!E)return;a1i($.handle,!0),E.removeSandbox($.handle).then((w)=>{if(w.ok)SHi($.handle);else a1i($.handle,!1),e1i(w.error)});return}case"confirmNo":ZM(null);return;case"quit":if(E)E.quit();return}}var Xru=N(()=>{BM();kru()});function Jru(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 Kru={};Li(Kru,{LinkApp:()=>fbt});import{Box as b1,Text as El,useInput as ibt}from"ink";import{useSyncExternalStore as ubt}from"react";import{jsx as xf,jsxs as v5}from"react/jsx-runtime";function tbt(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 fbt(){let i=ubt(JHi,OM),u=[...i.sandboxes.values()].sort((l,c)=>l.handle.localeCompare(c.handle)),t=IY(i.sandboxes),f=i.selectedHandle!==null&&t.includes(i.selectedHandle)?i.selectedHandle:t[0]??null;return ibt((l,c)=>{let E=Jru(l,c,i.pendingConfirm!==null);if(E!==null)jru(E)}),v5(b1,{flexDirection:"column",children:[xf(r1i,{version:M1i.version}),xf(b1,{marginBottom:1,children:xf(El,{dimColor:!0,children:"\u2500".repeat(80)})}),xf(b1,{children:i.cluster==="linked"?v5(El,{color:"green",children:["\u2713 Connected to ",i.clusterUrl??"deco"]}):i.cluster==="connecting"?v5(El,{color:"yellow",children:["\u25CC Connecting to ",i.clusterUrl??"deco","\u2026"]}):v5(El,{color:"red",children:["\u2717 Disconnected from ",i.clusterUrl??"deco"]})}),xf(b1,{children:i.ingressUrl?v5(El,{color:"green",children:["\u2713 Serving at ",i.ingressUrl]}):xf(El,{dimColor:!0,children:"\u25CC Starting local server\u2026"})}),xf(b1,{marginBottom:1,children:xf(El,{dimColor:!0,children:`${"Computer".padEnd(16)}${i.machine??"this computer"} \xB7 ${u.length} of ${i.cap} previews`})}),u.length===0?xf(El,{dimColor:!0,children:"No previews running yet."}):v5(b1,{flexDirection:"column",children:[v5(b1,{children:[xf(b1,{width:2,flexShrink:0}),xf(b1,{width:AY.project,flexShrink:0,marginRight:1,children:xf(El,{dimColor:!0,wrap:"truncate-end",children:"PROJECT"})}),xf(b1,{width:AY.branch,flexShrink:0,marginRight:1,children:xf(El,{dimColor:!0,wrap:"truncate-end",children:"BRANCH"})}),xf(b1,{width:AY.status,flexShrink:0,marginRight:1,children:xf(El,{dimColor:!0,wrap:"truncate-end",children:"STATUS"})}),xf(b1,{flexGrow:1,children:xf(El,{dimColor:!0,wrap:"truncate-end",children:"PREVIEW URL"})})]}),u.map((l)=>{let c=tbt(l,i.removingHandles.has(l.handle)),E=l.handle===f;return v5(b1,{children:[xf(b1,{width:2,flexShrink:0,children:xf(El,{color:"cyan",children:E?"\u203A":" "})}),xf(b1,{width:AY.project,flexShrink:0,marginRight:1,children:xf(El,{bold:E,wrap:"truncate-end",children:l.projectName??l.handle})}),xf(b1,{width:AY.branch,flexShrink:0,marginRight:1,children:xf(El,{bold:E,wrap:"truncate-end",children:l.branch??"\u2014"})}),xf(b1,{width:AY.status,flexShrink:0,marginRight:1,children:xf(El,{color:c.color,bold:E,wrap:"truncate-end",children:c.text})}),xf(b1,{flexGrow:1,children:xf(El,{dimColor:!0,wrap:"truncate-end",children:l.previewUrl??"\u2014"})})]},l.handle)})]}),i.daemonError?xf(b1,{marginTop:1,children:v5(El,{color:"red",children:["\u26A0 ",i.daemonError]})}):null,i.logPath?xf(b1,{marginTop:1,children:v5(El,{dimColor:!0,children:["Logs: ",i.logPath]})}):null,i.pendingConfirm?xf(b1,{marginTop:1,children:xf(El,{color:"yellow",children:Pru(i.pendingConfirm)})}):null,i.actionError?xf(b1,{marginTop:1,children:v5(El,{color:"red",children:["\u2717 ",i.actionError]})}):null,xf(b1,{marginTop:1,children:xf(El,{dimColor:!0,children:"\u2191\u2193 move \xB7 s stop \xB7 d delete \xB7 o open \xB7 q quit"})})]})}var AY;var Sru=N(()=>{jHi();XHi();Xru();BM();AY={project:18,branch:22,status:14}});var Yru={};Li(Yru,{runLinkCommand:()=>vbt});import{closeSync as lbt,mkdirSync as cbt,openSync as Ebt,writeSync as $bt}from"fs";import{homedir as wbt}from"os";import{join as WHi}from"path";function dbt(i,u){let t={log:console.log,warn:console.warn,error:console.error},f=(l)=>{if(u===void 0)return;try{$bt(u,`${kHi(l)}
|
|
81277
81277
|
`)}catch{}};return console.log=(...l)=>f(l),console.warn=(...l)=>f(l),console.error=(...l)=>{f(l),i(kHi(l))},()=>{console.log=t.log,console.warn=t.warn,console.error=t.error}}async function _bt(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 vbt(i={}){let u=i.port??5174,t=i.dataDir??process.env.DATA_DIR??process.env.DECOCMS_HOME??WHi(wbt(),"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{let w=WHi(t,"sandboxes");E=C1i({path:R1i(t),managedSandboxRoot:w});let d=await Q4i({dataDir:t,intent:"Link",target:f});if(process.env.DECOCMS_LINK_MANAGED!=="1")await _bt(f,d.accessToken);let _=E.reconcile();if(i.prune){let g=E.prune({missing:!0,merged:!0});if(!i.tui)console.log(`Pruned local sandboxes: removed ${g.removed.length}, skipped ${g.skipped.length}.`);_=E.reconcile()}let v;if(i.tui){let{render:g}=await import("ink"),{createElement:O}=await import("react"),{LinkApp:Z}=await Promise.resolve().then(() => (Sru(),Kru)),{pushSandboxEvent:B,setCluster:y,setClusterUrl:F,setDaemonError:T,setIngress:U,setLogPath:I,setMachine:j,setPersistedSandboxes:A}=await Promise.resolve().then(() => (BM(),YHi));cbt(t,{recursive:!0});let G=WHi(t,"link.log");c=Ebt(G,"w"),I(G),A(_),F(f),y("connecting"),v={onEvent:(M)=>B(M),onIngress:(M)=>U(M,`http://127.0.0.1:${M}`),onCluster:(M)=>y(M),onMachine:(M)=>j(M)},l=dbt(T,c),g(O(Z),{patchConsole:!1})}else if(i.banner!==!1){let{printBanner:g}=await Promise.resolve().then(() => (xY(),NM));g(i.version??"0.0.0")}$();let h=process.env.DECOCMS_LINK_MANAGED!=="1",D=await Bru({port:u,clusterBaseUrl:f,dataDir:t,session:d,monitor:v,logFd:c,perSandboxLogs:h,hotReload:i.hotReload});if(i.tui){let{setLinkActions:g}=await Promise.resolve().then(() => (BM(),YHi));g({stopSandbox:D.stopSandbox,removeSandbox:D.removeSandbox,inspectSandbox:D.inspectSandbox,quit:D.stop})}return await D.stopped}catch(w){return l?.(),console.error(w instanceof Error?w.message:String(w)),1}finally{if(l?.(),c!==void 0)try{lbt(c)}catch{}$()}}var Wru=N(()=>{$Qi();yru();GHi()});var RHi={};Li(RHi,{resolveDevLinkClusterUrl:()=>Nbt,populateDevLinkToxiProxy:()=>Rru,isDevLinkToxiProxyEnabled:()=>gbt,ensureDevLinkToxiProxy:()=>Fbt,buildDevLinkToxiProxyConfig:()=>Hru,DEV_LINK_TOXIPROXY_SERVICE_NAME:()=>Qru,DEV_LINK_TOXIPROXY_PROXY_NAME:()=>zru});function gbt(i=process.env){return i.DECO_DEV_LINK_TOXIPROXY==="1"}function LHi(i,u){if(!Number.isInteger(i)||i<1||i>65535)throw Error(`${u} must be an integer port in 1..65535`);return i}function Hru(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=LHi(i.apiPort,"apiPort"),f=LHi(i.listenPort,"listenPort");if(u.port.length===0)throw Error("serverUrl must include an explicit valid port");let l=LHi(Number.parseInt(u.port,10),"upstreamPort"),c=`http://127.0.0.1:${l}`,E=`http://127.0.0.1:${f}`;return{serviceName:Qru,proxyName:zru,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 Nbt(i){return i.toxiproxy?.clusterUrl??i.serverUrl}async function QHi(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 bHi(i){if(i instanceof Error)return i.name==="Error"?i.message:`${i.name}: ${i.message}`;return String(i)}function bru(i){if(!(i instanceof Error))return!1;if(i.name==="TimeoutError")return!0;return bru(i.cause)}async function zHi(i,u,t,f){try{return await i(t,f)}catch(l){throw Error(`ToxiProxy ${u} failed for ${t}: ${bHi(l)}`,{cause:l})}}async function Rru(i,u=fetch){let t=`${i.apiUrl}/reset`,f=await zHi(u,"reset",t,{method:"POST"});await QHi(f,"reset",t);let l=`${i.apiUrl}/populate`,c=await zHi(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 QHi(c,"populate",l)}async function Obt(i,u){let t=`${i.apiUrl}/version`;try{await u6(async()=>{let f=await zHi(u,"readiness check",t,{method:"GET",signal:AbortSignal.timeout(Dbt)});await QHi(f,"readiness check",t)},{maxAttempts:hbt,minTimeout:Lru,maxTimeout:Lru,multiplier:1,jitter:0,isRetriable:(f)=>!bru(f)})}catch(f){let l=f instanceof J6?f.cause:f;throw Error(`ToxiProxy API did not become ready at ${t}: ${bHi(l)}`,{cause:l})}}async function Zbt(i){if(i===null)return"";return await new Response(i).text()}async function HHi(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}): ${bHi($)}`,{cause:$})}})(),[l,c]=await Promise.all([f.exited,Zbt(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 Bbt(i,u){let t=`deco-dev-link-toxiproxy-${i}`;await HHi(["rm","-f",t],{ignoreFailure:!0}),await HHi(["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 ybt(i,u){let t=`deco-dev-link-toxiproxy-${i}`;await HHi(["rm","-f",t],{ignoreFailure:!0})}async function Fbt(i){let u=Hru(i),t=i.startDaemon??Bbt,f=i.stopDaemon??(i.startDaemon===void 0?ybt:void 0);await t(i.apiPort,i.listenPort);let l=i.fetchImpl??fetch;try{await Obt(u,l),await Rru(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 Qru="ToxiProxy",zru="dev_link_studio",hbt=20,Lru=100,Dbt=100;var CHi=N(()=>{Q1()});var Cru={};Li(Cru,{migrateBetterAuth:()=>MHi});import{getMigrations as Tbt}from"better-auth/db";import{sso as Ubt}from"@better-auth/sso";import{organization as Pbt}from"@decocms/better-auth/plugins";import{admin as xbt,apiKey as Ibt,jwt as Abt,magicLink as nbt,mcp as Gbt,openAPI as kbt}from"better-auth/plugins";import{emailOTP as jbt}from"better-auth/plugins/email-otp";async function MHi(i){let t={database:jC(i||b2()),plugins:[Pbt({dynamicAccessControl:{enabled:!0,enableCustomResources:!0}}),xbt(),Ibt(),Abt(),kbt(),Gbt({loginPage:"/login"}),Ubt(),nbt({sendMagicLink:async()=>{}}),jbt({sendVerificationOTP:async()=>{}})]},{toBeAdded:f,toBeCreated:l,runMigrations:c}=await Tbt(t);if(!f.length&&!l.length)return"up to date";return await c(),`${l.length+f.length} table(s) migrated`}var qHi=N(()=>{QE()});var VHi={};Li(VHi,{up:()=>Xbt,down:()=>Jbt});import{sql as a_}from"kysely";async function Xbt(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(a_`CURRENT_TIMESTAMP`)).addColumn("updatedAt","text",(u)=>u.notNull().defaultTo(a_`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(a_`CURRENT_TIMESTAMP`)).addColumn("updatedAt","text",(u)=>u.notNull().defaultTo(a_`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(a_`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(a_`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(a_`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(a_`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(a_`CURRENT_TIMESTAMP`)).addColumn("updatedAt","text",(u)=>u.notNull().defaultTo(a_`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 Jbt(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 Mru=()=>{};var rHi={};Li(rHi,{up:()=>Kbt,down:()=>Sbt});import{sql as qru}from"kysely";async function Kbt(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(qru`CURRENT_TIMESTAMP`)).addColumn("updatedAt","text",(u)=>u.notNull().defaultTo(qru`CURRENT_TIMESTAMP`)).execute()}async function Sbt(i){await i.schema.dropTable("organization_settings").execute()}var Vru=()=>{};var mHi={};Li(mHi,{up:()=>Ybt,down:()=>Wbt});async function Ybt(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 Wbt(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 eHi={};Li(eHi,{up:()=>Lbt,down:()=>Qbt});async function Lbt(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 Qbt(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 aHi={};Li(aHi,{up:()=>zbt,down:()=>Hbt});async function zbt(i){await i.schema.alterTable("connections").addColumn("configuration_state","text").execute(),await i.schema.alterTable("connections").addColumn("configuration_scopes","text").execute()}async function Hbt(i){await i.schema.alterTable("connections").dropColumn("configuration_state").execute(),await i.schema.alterTable("connections").dropColumn("configuration_scopes").execute()}var oHi={};Li(oHi,{up:()=>Rbt,down:()=>Cbt});import{sql as bbt}from"kysely";async function Rbt(i){await i.schema.alterTable("organization_settings").addColumn("sidebar_items",bbt`text`).execute()}async function Cbt(i){await i.schema.alterTable("organization_settings").dropColumn("sidebar_items").execute()}var rru=()=>{};var sHi={};Li(sHi,{up:()=>Mbt,down:()=>qbt});async function Mbt(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 qbt(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 pHi={};Li(pHi,{up:()=>Vbt,down:()=>rbt});import{sql as yM}from"kysely";async function Vbt(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(yM`CURRENT_TIMESTAMP`)).addColumn("updated_at","text",(u)=>u.notNull().defaultTo(yM`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(yM`CURRENT_TIMESTAMP`)).addColumn("updated_at","text",(u)=>u.notNull().defaultTo(yM`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(yM`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 rbt(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 mru=()=>{};var ibi={};Li(ibi,{up:()=>ebt,down:()=>abt});import{sql as mbt}from"kysely";async function ebt(i){await i.schema.dropTable("audit_logs").ifExists().execute()}async function abt(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(mbt`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 eru=()=>{};var ubi={};Li(ubi,{up:()=>obt,down:()=>sbt});import{sql as o1i}from"kysely";async function obt(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(o1i`CURRENT_TIMESTAMP`)).addColumn("updated_at","text",(u)=>u.notNull().defaultTo(o1i`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(o1i`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 o1i`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 sbt(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 aru=()=>{};var tbi={};Li(tbi,{up:()=>pbt,down:()=>iRt});async function pbt(i){await i.schema.alterTable("gateways").addColumn("icon","text").execute()}async function iRt(i){await i.schema.alterTable("gateways").dropColumn("icon").execute()}var fbi={};Li(fbi,{up:()=>uRt,down:()=>tRt});import{sql as s1i}from"kysely";async function uRt(i){await i.schema.alterTable("gateways").addColumn("tool_selection_mode","text",(u)=>u.notNull().defaultTo("inclusion")).execute(),await s1i`
|
|
81278
81278
|
UPDATE gateways
|
|
81279
81279
|
SET tool_selection_mode = CASE
|
|
@@ -83293,7 +83293,7 @@ ${d}`:d;return{...E,description:_,inputExamples:t?void 0:E.inputExamples}});retu
|
|
|
83293
83293
|
|
|
83294
83294
|
`)},flush(i){i.enqueue(`data: [DONE]
|
|
83295
83295
|
|
|
83296
|
-
`)}})}},Ztu={"content-type":"text/event-stream","cache-control":"no-cache",connection:"keep-alive","x-vercel-ai-ui-message-stream":"v1","x-accel-buffering":"no"};fa=Nu.record(Nu.string(),kB.optional()),Btu=Si(()=>Ni(Nu.union([Nu.strictObject({type:Nu.literal("text-start"),id:Nu.string(),providerMetadata:O0.optional()}),Nu.strictObject({type:Nu.literal("text-delta"),id:Nu.string(),delta:Nu.string(),providerMetadata:O0.optional()}),Nu.strictObject({type:Nu.literal("text-end"),id:Nu.string(),providerMetadata:O0.optional()}),Nu.strictObject({type:Nu.literal("error"),errorText:Nu.string()}),Nu.strictObject({type:Nu.literal("tool-input-start"),toolCallId:Nu.string(),toolName:Nu.string(),providerExecuted:Nu.boolean().optional(),providerMetadata:O0.optional(),toolMetadata:fa.optional(),dynamic:Nu.boolean().optional(),title:Nu.string().optional()}),Nu.strictObject({type:Nu.literal("tool-input-delta"),toolCallId:Nu.string(),inputTextDelta:Nu.string()}),Nu.strictObject({type:Nu.literal("tool-input-available"),toolCallId:Nu.string(),toolName:Nu.string(),input:Nu.unknown(),providerExecuted:Nu.boolean().optional(),providerMetadata:O0.optional(),toolMetadata:fa.optional(),dynamic:Nu.boolean().optional(),title:Nu.string().optional()}),Nu.strictObject({type:Nu.literal("tool-input-error"),toolCallId:Nu.string(),toolName:Nu.string(),input:Nu.unknown(),providerExecuted:Nu.boolean().optional(),providerMetadata:O0.optional(),toolMetadata:fa.optional(),dynamic:Nu.boolean().optional(),errorText:Nu.string(),title:Nu.string().optional()}),Nu.strictObject({type:Nu.literal("tool-approval-request"),approvalId:Nu.string(),toolCallId:Nu.string(),signature:Nu.string().optional()}),Nu.strictObject({type:Nu.literal("tool-output-available"),toolCallId:Nu.string(),output:Nu.unknown(),providerExecuted:Nu.boolean().optional(),providerMetadata:O0.optional(),toolMetadata:fa.optional(),dynamic:Nu.boolean().optional(),preliminary:Nu.boolean().optional()}),Nu.strictObject({type:Nu.literal("tool-output-error"),toolCallId:Nu.string(),errorText:Nu.string(),providerExecuted:Nu.boolean().optional(),providerMetadata:O0.optional(),toolMetadata:fa.optional(),dynamic:Nu.boolean().optional()}),Nu.strictObject({type:Nu.literal("tool-output-denied"),toolCallId:Nu.string()}),Nu.strictObject({type:Nu.literal("reasoning-start"),id:Nu.string(),providerMetadata:O0.optional()}),Nu.strictObject({type:Nu.literal("reasoning-delta"),id:Nu.string(),delta:Nu.string(),providerMetadata:O0.optional()}),Nu.strictObject({type:Nu.literal("reasoning-end"),id:Nu.string(),providerMetadata:O0.optional()}),Nu.strictObject({type:Nu.literal("source-url"),sourceId:Nu.string(),url:Nu.string(),title:Nu.string().optional(),providerMetadata:O0.optional()}),Nu.strictObject({type:Nu.literal("source-document"),sourceId:Nu.string(),mediaType:Nu.string(),title:Nu.string(),filename:Nu.string().optional(),providerMetadata:O0.optional()}),Nu.strictObject({type:Nu.literal("file"),url:Nu.string(),mediaType:Nu.string(),providerMetadata:O0.optional()}),Nu.strictObject({type:Nu.custom((i)=>typeof i==="string"&&i.startsWith("data-"),{message:'Type must start with "data-"'}),id:Nu.string().optional(),data:Nu.unknown(),transient:Nu.boolean().optional()}),Nu.strictObject({type:Nu.literal("start-step")}),Nu.strictObject({type:Nu.literal("finish-step")}),Nu.strictObject({type:Nu.literal("start"),messageId:Nu.string().optional(),messageMetadata:Nu.unknown().optional()}),Nu.strictObject({type:Nu.literal("finish"),finishReason:Nu.enum(["stop","length","content-filter","tool-calls","error","other"]).optional(),messageMetadata:Nu.unknown().optional()}),Nu.strictObject({type:Nu.literal("abort"),reason:Nu.string().optional()}),Nu.strictObject({type:Nu.literal("message-metadata"),messageMetadata:Nu.unknown()})])));hGf=Ud;DGf=Ea;NGf=V5({prefix:"aitxt",size:24}),OGf={file:!0,source:!0,"text-start":!0,"text-end":!0,"text-delta":!0,"reasoning-start":!0,"reasoning-end":!0,"reasoning-delta":!0,"tool-input-start":!0,"tool-input-end":!0,"tool-input-delta":!0,"tool-approval-request":!0,"tool-call":!0,"tool-result":!0,"tool-error":!0,"stream-start":!1,"response-metadata":!1,finish:!1,error:!1,raw:!1};lw=yi.record(yi.string(),kB.optional()),TGf=Si(()=>Ni(yi.array(yi.object({id:yi.string(),role:yi.enum(["system","user","assistant"]),metadata:yi.unknown().optional(),parts:yi.array(yi.union([yi.object({type:yi.literal("text"),text:yi.string(),state:yi.enum(["streaming","done"]).optional(),providerMetadata:O0.optional()}),yi.object({type:yi.literal("reasoning"),text:yi.string(),state:yi.enum(["streaming","done"]).optional(),providerMetadata:O0.optional()}),yi.object({type:yi.literal("source-url"),sourceId:yi.string(),url:yi.string(),title:yi.string().optional(),providerMetadata:O0.optional()}),yi.object({type:yi.literal("source-document"),sourceId:yi.string(),mediaType:yi.string(),title:yi.string(),filename:yi.string().optional(),providerMetadata:O0.optional()}),yi.object({type:yi.literal("file"),mediaType:yi.string(),filename:yi.string().optional(),url:yi.string(),providerMetadata:O0.optional()}),yi.object({type:yi.literal("step-start")}),yi.object({type:yi.string().startsWith("data-"),id:yi.string().optional(),data:yi.unknown()}),yi.object({type:yi.literal("dynamic-tool"),toolName:yi.string(),toolCallId:yi.string(),toolMetadata:lw.optional(),state:yi.literal("input-streaming"),input:yi.unknown().optional(),providerExecuted:yi.boolean().optional(),callProviderMetadata:O0.optional(),output:yi.never().optional(),errorText:yi.never().optional(),approval:yi.never().optional()}),yi.object({type:yi.literal("dynamic-tool"),toolName:yi.string(),toolCallId:yi.string(),toolMetadata:lw.optional(),state:yi.literal("input-available"),input:yi.unknown(),providerExecuted:yi.boolean().optional(),output:yi.never().optional(),errorText:yi.never().optional(),callProviderMetadata:O0.optional(),approval:yi.never().optional()}),yi.object({type:yi.literal("dynamic-tool"),toolName:yi.string(),toolCallId:yi.string(),toolMetadata:lw.optional(),state:yi.literal("approval-requested"),input:yi.unknown(),providerExecuted:yi.boolean().optional(),output:yi.never().optional(),errorText:yi.never().optional(),callProviderMetadata:O0.optional(),approval:yi.object({id:yi.string(),approved:yi.never().optional(),reason:yi.never().optional(),signature:yi.string().optional()})}),yi.object({type:yi.literal("dynamic-tool"),toolName:yi.string(),toolCallId:yi.string(),toolMetadata:lw.optional(),state:yi.literal("approval-responded"),input:yi.unknown(),providerExecuted:yi.boolean().optional(),output:yi.never().optional(),errorText:yi.never().optional(),callProviderMetadata:O0.optional(),approval:yi.object({id:yi.string(),approved:yi.boolean(),reason:yi.string().optional(),signature:yi.string().optional()})}),yi.object({type:yi.literal("dynamic-tool"),toolName:yi.string(),toolCallId:yi.string(),toolMetadata:lw.optional(),state:yi.literal("output-available"),input:yi.unknown(),providerExecuted:yi.boolean().optional(),output:yi.unknown(),errorText:yi.never().optional(),callProviderMetadata:O0.optional(),resultProviderMetadata:O0.optional(),preliminary:yi.boolean().optional(),approval:yi.object({id:yi.string(),approved:yi.literal(!0),reason:yi.string().optional(),signature:yi.string().optional()}).optional()}),yi.object({type:yi.literal("dynamic-tool"),toolName:yi.string(),toolCallId:yi.string(),toolMetadata:lw.optional(),state:yi.literal("output-error"),input:yi.unknown().optional(),rawInput:yi.unknown().optional(),providerExecuted:yi.boolean().optional(),output:yi.never().optional(),errorText:yi.string(),callProviderMetadata:O0.optional(),resultProviderMetadata:O0.optional(),approval:yi.object({id:yi.string(),approved:yi.literal(!0),reason:yi.string().optional(),signature:yi.string().optional()}).optional()}),yi.object({type:yi.literal("dynamic-tool"),toolName:yi.string(),toolCallId:yi.string(),toolMetadata:lw.optional(),state:yi.literal("output-denied"),input:yi.unknown(),providerExecuted:yi.boolean().optional(),output:yi.never().optional(),errorText:yi.never().optional(),callProviderMetadata:O0.optional(),approval:yi.object({id:yi.string(),approved:yi.literal(!1),reason:yi.string().optional(),signature:yi.string().optional()})}),yi.object({type:yi.string().startsWith("tool-"),toolCallId:yi.string(),toolMetadata:lw.optional(),state:yi.literal("input-streaming"),providerExecuted:yi.boolean().optional(),callProviderMetadata:O0.optional(),input:yi.unknown().optional(),output:yi.never().optional(),errorText:yi.never().optional(),approval:yi.never().optional()}),yi.object({type:yi.string().startsWith("tool-"),toolCallId:yi.string(),toolMetadata:lw.optional(),state:yi.literal("input-available"),providerExecuted:yi.boolean().optional(),input:yi.unknown(),output:yi.never().optional(),errorText:yi.never().optional(),callProviderMetadata:O0.optional(),approval:yi.never().optional()}),yi.object({type:yi.string().startsWith("tool-"),toolCallId:yi.string(),toolMetadata:lw.optional(),state:yi.literal("approval-requested"),input:yi.unknown(),providerExecuted:yi.boolean().optional(),output:yi.never().optional(),errorText:yi.never().optional(),callProviderMetadata:O0.optional(),approval:yi.object({id:yi.string(),approved:yi.never().optional(),reason:yi.never().optional(),signature:yi.string().optional()})}),yi.object({type:yi.string().startsWith("tool-"),toolCallId:yi.string(),toolMetadata:lw.optional(),state:yi.literal("approval-responded"),input:yi.unknown(),providerExecuted:yi.boolean().optional(),output:yi.never().optional(),errorText:yi.never().optional(),callProviderMetadata:O0.optional(),approval:yi.object({id:yi.string(),approved:yi.boolean(),reason:yi.string().optional(),signature:yi.string().optional()})}),yi.object({type:yi.string().startsWith("tool-"),toolCallId:yi.string(),toolMetadata:lw.optional(),state:yi.literal("output-available"),providerExecuted:yi.boolean().optional(),input:yi.unknown(),output:yi.unknown(),errorText:yi.never().optional(),callProviderMetadata:O0.optional(),resultProviderMetadata:O0.optional(),preliminary:yi.boolean().optional(),approval:yi.object({id:yi.string(),approved:yi.literal(!0),reason:yi.string().optional(),signature:yi.string().optional()}).optional()}),yi.object({type:yi.string().startsWith("tool-"),toolCallId:yi.string(),toolMetadata:lw.optional(),state:yi.literal("output-error"),providerExecuted:yi.boolean().optional(),input:yi.unknown().optional(),rawInput:yi.unknown().optional(),output:yi.never().optional(),errorText:yi.string(),callProviderMetadata:O0.optional(),resultProviderMetadata:O0.optional(),approval:yi.object({id:yi.string(),approved:yi.literal(!0),reason:yi.string().optional(),signature:yi.string().optional()}).optional()}),yi.object({type:yi.string().startsWith("tool-"),toolCallId:yi.string(),toolMetadata:lw.optional(),state:yi.literal("output-denied"),providerExecuted:yi.boolean().optional(),input:yi.unknown(),output:yi.never().optional(),errorText:yi.never().optional(),callProviderMetadata:O0.optional(),approval:yi.object({id:yi.string(),approved:yi.literal(!1),reason:yi.string().optional(),signature:yi.string().optional()})})])).nonempty("Message must contain at least one part")})).nonempty("Messages array must not be empty")));jGf=Tdi,XGf={type:"no-schema",jsonSchema:async()=>{return},async validatePartialResult({value:i,textDelta:u}){return{success:!0,value:{partial:i,textDelta:u}}},async validateFinalResult(i,u){return i===void 0?{success:!1,error:new Ew({message:"No object generated: response did not match schema.",text:u.text,response:u.response,usage:u.usage,finishReason:u.finishReason})}:{success:!0,value:i}},createElementStream(){throw new yf({functionality:"element streams in no-schema mode"})}};YGf=V5({prefix:"aiobj",size:24});HGf=V5({prefix:"aiobj",size:24});CGf=class extends p9{constructor({data:i,mediaType:u}){super({data:i,mediaType:u});let t="mp3";if(u){let f=u.split("/");if(f.length===2){if(u!=="audio/mpeg")t=f[1]}}if(!t)throw Error("Audio format must be provided or determinable from media type");this.format=t}};VGf={word:/\S+\s+/m,line:/\n+/m};mGf=Itu();hkf=Hy0,Ry0=`vercel.ai.error.${by0}`,Dkf=Symbol.for(Ry0),My0=class extends kf{constructor({modelId:i,modelType:u,providerId:t,availableProviders:f,message:l=`No such provider: ${t} (available providers: ${f.join()})`}){super({errorName:by0,modelId:i,modelType:u,message:l});this[Cy0]=!0,this.providerId=t,this.availableProviders=f}static isInstance(i){return yu.hasMarker(i,Ry0)}};Cy0=Dkf;gkf=qy0;Zkf=Itu();ry0=class extends Gtu{constructor(i={}){super(i)}processResponseStream(i){return mD({stream:i,schema:Btu}).pipeThrough(new TransformStream({async transform(u,t){if(!u.success)throw u.error;t.enqueue(u.value)}}))}};Gkf=class extends Gtu{constructor(i={}){super(i)}processResponseStream(i){return nkf({stream:i.pipeThrough(new TextDecoderStream)})}}});function Udi(i){return{type:"data-title-result",data:{title:i},transient:!0}}function jtu(i){return i.type==="data-title-input"}function Xtu(i){return i.type==="data-title-result"}async function*my0(i,u){let t=u.persistTitle??((l,c)=>u.ctx.storage.threads.update(l,{title:c}).then(()=>{})),f=!1;for await(let l of i){if(jtu(l)){console.warn("[title-interceptor] harness emitted deprecated data-title-input chunk; ignoring");continue}if(Xtu(l)){if(f){console.warn("[title-interceptor] harness emitted multiple data-title-result chunks; ignoring extra");continue}if(f=!0,u.currentThreadTitle!==qD)continue;let c=l.data.title;if(!c)continue;await t(u.threadId,c).catch((E)=>{console.error("[title-interceptor] persist failed for thread",u.threadId,E)});try{await u.onTitleUpdated?.(c)}catch(E){console.error("[title-interceptor] onTitleUpdated callback failed",E)}if(!u.isStreamFinished())try{u.writer.write({type:"data-thread-title",data:{title:c},transient:!0})}catch(E){console.error("[title-interceptor] writer.write failed",E)}continue}yield l}}function ey0(i,u){let t=u.persistTitle??((l,c)=>u.ctx.storage.threads.update(l,{title:c}).then(()=>{})),f=!1;return i.pipeThrough(new TransformStream({async transform(l,c){if(jtu(l)){console.warn("[title-interceptor] harness emitted deprecated data-title-input chunk; ignoring");return}if(Xtu(l)){if(f){console.warn("[title-interceptor] harness emitted multiple data-title-result chunks; ignoring extra");return}if(f=!0,u.currentThreadTitle!==qD)return;let E=l.data.title;if(!E)return;await t(u.threadId,E).catch(($)=>{console.error("[title-interceptor] persist failed for thread",u.threadId,$)});try{await u.onTitleUpdated?.(E)}catch($){console.error("[title-interceptor] onTitleUpdated callback failed",$)}if(!u.isStreamFinished())try{u.writer.write({type:"data-thread-title",data:{title:E},transient:!0})}catch($){console.error("[title-interceptor] writer.write failed",$)}return}c.enqueue(l)}}))}var ay0=N(()=>{U9()});function kkf(i){let u=i[Symbol.asyncIterator]();return new ReadableStream({async pull(t){try{let{value:f,done:l}=await u.next();if(l)t.close();else t.enqueue(f)}catch(f){t.error(f)}},async cancel(t){await u.return?.(t)}})}function jkf(i,u){let t=i.getReader(),f=!1,l=()=>{if(f)return;f=!0,t.releaseLock()};return new ReadableStream({async pull(c){try{let{done:E,value:$}=await t.read();if(E)l(),c.close();else c.enqueue($)}catch(E){u(),l(),c.error(E)}},async cancel(c){await t.cancel(c),l()}})}function Xkf(i){let u=i.metadata?.usage;if(!u||typeof u!=="object"||Array.isArray(u))return null;let t=u,f=(l)=>typeof l==="number"?l:0;return{...t,inputTokens:f(t.inputTokens),outputTokens:f(t.outputTokens),totalTokens:f(t.totalTokens)}}function Pdi(i){let u=[],t=!1,f=!1,l=!1,c=!0,E=i.errorMessageId??crypto.randomUUID(),$,w=new Promise((y)=>{$=y});if(!i.chunks&&!i.chunkStream)throw Error("consumeHarnessStream requires chunks or chunkStream");let d=i.chunks?async function*(){try{yield*i.chunks}catch(y){throw l=!0,y}}():null,_=i.chunkStream?jkf(i.chunkStream,()=>{l=!0}):null,v=i.originalMessages?.at(-1),h=!i.generateMessageId&&v?.role==="assistant"?v.id:void 0,D=new Map,g=null,O=(y)=>{if(i.generateMessageId){let F=D.get(y);if(F===void 0)F=i.generateMessageId(),D.set(y,F);return F}if(g===null)g=y;return h&&y===g?h:y},Z=(y)=>({...y,id:O(y.id)});return{uiStream:Utu({originalMessages:i.originalMessages,execute:({writer:y})=>{let F={ctx:null,isStreamFinished:()=>t,currentThreadTitle:i.title.currentThreadTitle,threadId:i.title.threadId,writer:y,onTitleUpdated:i.title.onTitleUpdated,persistTitle:i.title.persistTitle};if(_){y.merge(ey0(_,F));return}let T=my0(d,F);y.merge(kkf(T))},onStepFinish:({responseMessage:y})=>{let F=Z(y);u.push(i.persistence.emitStepParts(F).catch((T)=>{c=!1,console.error("[consume-harness-stream] emitStepParts failed",T)})),u.push(Promise.resolve(i.hooks?.onStep?.(F)).catch((T)=>console.error("[consume-harness-stream] onStep hook failed",T)))},onFinish:async({responseMessage:y,finishReason:F})=>{t=!0,await Promise.allSettled(u);let T=Z(y);if(!f){if(F)T.metadata={...T.metadata??{},finishReason:F};await i.persistence.emitFinal(T).catch((I)=>{c=!1,console.error("[consume-harness-stream] emitFinal failed",I)})}let U=Xkf(T);if(U)await Promise.resolve(i.hooks?.onUsage?.(U)).catch((I)=>console.error("[consume-harness-stream] onUsage hook failed",I));if(!l)await Promise.resolve(i.hooks?.onFinish?.(T,F,{persistenceOk:c})).catch((I)=>console.error("[consume-harness-stream] onFinish hook failed",I));$()},onError:(y)=>{t=!0;let F=y instanceof Error?y.message:String(y);if(!f)f=!0,u.push(i.persistence.emitError(E,F).catch((T)=>{c=!1,console.error("[consume-harness-stream] emitError failed",T)})),u.push(Promise.resolve(i.hooks?.onError?.(y)).catch((T)=>console.error("[consume-harness-stream] onError hook failed",T)));return i.sanitizeErrorText?i.sanitizeErrorText(y):F}}),whenComplete:w,isStreamFinished:()=>t}}var Jtu=N(()=>{Cf();ay0()});async function Jkf(i){let u=i.getReader();try{while(!0){let{done:t}=await u.read();if(t)break}}finally{u.releaseLock()}}function Kkf(i,u){let t=i.getReader(),f=!1,l=()=>{if(f)return;f=!0,t.releaseLock()};return new ReadableStream({async pull(c){try{let{done:E,value:$}=await t.read();if(E)l(),c.close();else c.enqueue($)}catch(E){u(E),l(),c.error(E)}},async cancel(c){await t.cancel(c),l()}})}async function oy0(i){if(!i.chunks&&!i.chunkStream)throw Error("projectChunks requires chunks or chunkStream");let u=null,t=!1,f=void 0,l={inputTokens:0,outputTokens:0,totalTokens:0},c=[],E=null,$=(g)=>{if(E===null)E=g;throw g},w=i.chunks?async function*(){try{for await(let g of i.chunks){if(X0u(g))continue;yield g}}catch(g){throw u=g,g}}():void 0,d=i.chunkStream?Kkf(i.chunkStream,(g)=>{u=g}).pipeThrough(new TransformStream({transform(g,O){if(!X0u(g))O.enqueue(g)}})):void 0,_={emitStepParts:(g)=>i.persistence.emitStepParts(g).catch($),emitFinal:(g)=>i.persistence.emitFinal(g).catch($),emitError:(g,O)=>i.persistence.emitError(g,O).catch($)},{uiStream:v,whenComplete:h}=Pdi({chunks:w,chunkStream:d,originalMessages:i.originalMessages??[],title:i.title?{currentThreadTitle:i.title.currentThreadTitle,threadId:i.title.threadId,persistTitle:i.title.persistTitle}:{currentThreadTitle:void 0,threadId:"projector",persistTitle:async()=>{}},persistence:_,sanitizeErrorText:i.sanitizeErrorText,errorMessageId:i.errorMessageId,generateMessageId:i.generateMessageId,hooks:{onUsage:(g)=>{l={inputTokens:g.inputTokens,outputTokens:g.outputTokens,totalTokens:g.totalTokens}},onError:()=>{t=!0},onFinish:(g,O)=>{f=O,c=Array.isArray(g.parts)?g.parts.filter((Z)=>Z!=null&&typeof Z==="object"&&("type"in Z)):[]}}});if(await Jkf(v).catch(()=>{}),await h,E!==null)throw E;if(u!==null)throw u;return{failed:t&&f===void 0,finishReason:f,usage:l,finalParts:c}}var sy0=N(()=>{Jtu();ee()});var D8="DECOPILOT_STREAMS";var Ktu=()=>{};function py0(i,u){return new TransformStream({transform(t,f){if(t.runId!==i||t.fenceToken!==u)return;f.enqueue(t)}})}function iF0(){let i=1;return new TransformStream({transform(u,t){if(u.kind==="done"){t.enqueue(u);return}if(u.seq===null){t.error(Error("projector chunk missing seq"));return}if(u.seq<i)return;if(u.seq>i){t.error(Error(`missing seq ${i}`));return}i++,t.enqueue(u)}})}function uF0(i){let u=i.getReader(),t=!1,f=0,l=()=>{if(t)return;t=!0,u.releaseLock()};return new ReadableStream({async pull(c){for(;;){let{done:E,value:$}=await u.read();if(E){await u.cancel(),l(),c.error(Error("reader stopped before done"));return}let w=$;if(w.kind==="done"){if(!(w.envelopeFinalSeq!=null&&w.envelopeFinalSeq===w.msgIdFinalSeq))continue;if(w.envelopeFinalSeq!==f){await u.cancel(),l(),c.error(Error(`missing seq ${f+1}`));return}await u.cancel(),l(),c.close();return}if(f=w.seq??f,c.enqueue(w.chunk),w.chunk.type==="finish")await u.cancel(),l(),c.close();return}},async cancel(c){await u.cancel(c),l()}})}function Skf(i){if(Symbol.asyncIterator in i)return i[Symbol.asyncIterator]();let u=i[Symbol.iterator]();return{next:async()=>u.next(),return:async(t)=>u.return?u.return(t):{done:!0,value:t}}}function Idi(i){let u=Skf(i.messages),t=i.idleTimeoutMs,f=!1,l=(c)=>{if(f)return;f=!0,u.return?.(c).catch(()=>{}),i.onCancel?.()};return new ReadableStream({async pull(c){if(t===void 0){let{done:_,value:v}=await u.next();if(_){c.close();return}c.enqueue(v);return}let E=new AbortController,$=u.next().then((_)=>{return E.abort(),_}),w=q0(t,{signal:E.signal}).then(()=>"idle").catch(()=>"cancelled"),d=await Promise.race([$,w]);if(d==="idle"){c.error(new xdi(t));return}if(d==="cancelled")return;if(d.done){c.close();return}c.enqueue(d.value)},async cancel(c){l(c)}})}var xdi;var Adi=N(()=>{Q1();xdi=class xdi extends Error{idleTimeoutMs;constructor(i){super("producer produced no output before timeout");this.idleTimeoutMs=i;this.name="StreamIdleTimeoutError"}}});function Ykf(i){let t=Idi({messages:i.messages,idleTimeoutMs:i.idleTimeoutMs,onCancel:i.onDone}).pipeThrough(L1i()).pipeThrough(Q1i()).pipeThrough(py0(i.runId,i.fenceToken)).pipeThrough(iF0());return uF0(t)}async function fF0(i){let t=await(await i.js.consumers.get(D8,{filter_subjects:t7(i.runId),deliver_policy:tF0.DeliverPolicy.All})).consume();async function*f(){try{for await(let l of t)yield{subject:l.subject,data:l.data,headers:l.headers}}finally{t.stop()}}return Ykf({messages:f(),runId:i.runId,fenceToken:i.fenceToken,idleTimeoutMs:i.idleTimeoutMs,onDone:()=>t.stop()})}var tF0;var lF0=N(()=>{Ktu();Adi();z1i();tF0=k(u7(),1)});function Ytu(i){let u=i.type;if(typeof u!=="string")return!1;if(u==="text"||u==="reasoning")return i.state!=="streaming";if(u==="step-start")return!1;if(u.startsWith("tool-")||u==="dynamic-tool")return i.state==="approval-requested"||u==="tool-user_ask"&&i.state==="input-available"||i.state==="output-available"||i.state==="output-error"||i.state==="output-denied";return!0}function Stu(i){let u=i.type??"";if(u==="reasoning")return"reasoning";if(u==="file")return"file";if(u.startsWith("tool-")||u==="dynamic-tool")return i.state==="output-available"||i.state==="output-error"||i.state==="output-denied"?"tool_result":"tool_call";return"text"}class Wtu{ctx;base;seqByPart=new Map;emitted=new Set;finished=new Set;partKeyByRowId=new Map;finishMessageIdByRowId=new Map;nextSeq=0;constructor(i){this.ctx=i;this.base=i.baseTimeMs??Date.now()}hasEmittedContentFor(i){let u=`${i}#`;for(let t of this.emitted)if(t.startsWith(u))return!0;return!1}seqFor(i){let u=this.seqByPart.get(i);if(u!==void 0)return u;let t=this.nextSeq++;return this.seqByPart.set(i,t),t}row(i,u,t,f,l,c=null){return{id:`${this.ctx.runId}:${i}:${t}`,seq:t,org_id:this.ctx.orgId,thread_id:this.ctx.threadId,run_id:this.ctx.runId,message_id:i,role:u,kind:f,payload:l,payload_ref:null,metadata:c,created_at:new Date(this.base+t).toISOString()}}emitMessageParts(i){let u=i.parts??[],t=[];for(let f=0;f<u.length;f++){let l=u[f];if(!Ytu(l))continue;let c=`${i.id}#${f}`;if(this.emitted.has(c))continue;let E=this.seqFor(c),$=this.row(i.id,i.role,E,Stu(l),l);this.partKeyByRowId.set($.id,c),t.push($)}return t}emitRequestMessageParts(i){let u=i.parts??[],t=[];for(let f=0;f<u.length;f++){let l=u[f],c=`${i.id}#${f}`,E=this.seqFor(c),$=this.row(i.id,i.role,E,Stu(l),l);this.partKeyByRowId.set($.id,c),t.push($)}return t}markFinished(i,u,t=null){if(this.finished.has(i))return[];let f=this.seqFor(`${i}#finish`),l=this.row(i,u,f,"finish",{},t);return this.finishMessageIdByRowId.set(l.id,i),[l]}markRequestFinished(i,u,t=null){let f=this.seqFor(`${i}#finish`),l=this.row(i,u,f,"finish",{},t);return this.finishMessageIdByRowId.set(l.id,i),[l]}acknowledge(i){for(let u of i){let t=this.partKeyByRowId.get(u.id);if(t!==void 0)this.emitted.add(t);let f=this.finishMessageIdByRowId.get(u.id);if(f!==void 0)this.finished.add(f)}}emitUserMessage(i){return[...this.emitMessageParts(i),...this.markFinished(i.id,i.role,i.metadata??null)]}emitRequestMessage(i){return[...this.emitRequestMessageParts(i),...this.markRequestFinished(i.id,i.role,i.metadata??null)]}emitStepParts(i){return this.emitMessageParts(i)}emitFinal(i){let u=this.emitMessageParts(i);if(u.length===0&&!this.hasEmittedContentFor(i.id))return u;return[...u,...this.markFinished(i.id,i.role,i.metadata??null)]}emitFinalSnapshot(i){let u=i.parts??[],t=[];for(let c=0;c<u.length;c++){let E=u[c];if(!Ytu(E))continue;let $=`${i.id}#${c}`,w=this.seqFor($),d=this.row(i.id,i.role,w,Stu(E),E);this.partKeyByRowId.set(d.id,$),t.push(d)}if(t.length===0&&!this.hasEmittedContentFor(i.id))return t;let f=this.seqFor(`${i.id}#finish`),l=this.row(i.id,i.role,f,"finish",{},i.metadata??null);return this.finishMessageIdByRowId.set(l.id,i.id),[...t,l]}emitError(i,u){let t=`${i}#error`,f=[];if(!this.emitted.has(t)){let l=this.seqFor(t),c=this.row(i,"assistant",l,"error",{type:"text",text:`Error: ${u}`});this.partKeyByRowId.set(c.id,t),f.push(c)}return[...f,...this.markFinished(i,"assistant")]}}class __{ctx;builder;constructor(i){this.ctx=i;this.builder=new Wtu(i)}async appendBuiltRows(i){await this.ctx.storage.appendParts(i),this.builder.acknowledge(i)}async emitUserMessage(i){await this.appendBuiltRows(this.builder.emitUserMessage(i))}async emitRequestMessage(i){let u=this.builder.emitRequestMessage(i);await this.ctx.storage.replaceMessageParts(this.ctx.threadId,i.id,u),this.builder.acknowledge(u)}async emitStepParts(i){await this.appendBuiltRows(this.builder.emitStepParts(i))}async emitFinal(i){await this.appendBuiltRows(this.builder.emitFinal(i))}async replaceFinal(i){let u=this.builder.emitFinalSnapshot(i);await this.ctx.storage.replaceMessageParts(this.ctx.threadId,i.id,u),this.builder.acknowledge(u)}async emitError(i,u){await this.appendBuiltRows(this.builder.emitError(i,u))}}var ha=()=>{};async function Wkf(i){let t=(i.requestMessageId?await i.messageParts.maxCreatedAtMsForMessage(i.runId,i.requestMessageId):null)??await i.messageParts.maxCreatedAtMsForRun(i.runId);return new __({storage:i.messageParts,orgId:i.orgId,threadId:i.runId,runId:i.runId,baseTimeMs:(t??Date.now())+1})}async function cF0(i){let u=await Wkf(i),t=i.replaceFinal?(f)=>u.replaceFinal(f):(f)=>u.emitFinal(f);return{emitStepParts:(f)=>u.emitStepParts(f),emitFinal:t,emitError:(f,l)=>u.emitError(f,l)}}var EF0=N(()=>{ha()});function Ltu(i,u){Lkf.add(1,{"org.id":u??"unknown"})}var Lkf;var $F0=N(()=>{H1();Lkf=Mt.createCounter("decopilot.projector.poison_runs",{description:"Number of decopilot runs that exhausted retries and were sent to the DLQ",unit:"{runs}"})});class Qtu{intervalMs;lastBumpMs=new Map;constructor(i=3000){this.intervalMs=i}shouldBump(i,u=Date.now()){let t=this.lastBumpMs.get(i);if(t!==void 0&&u-t<this.intervalMs)return!1;return this.lastBumpMs.set(i,u),!0}clear(i){this.lastBumpMs.delete(i)}}function wF0(i,u,t,f){return i.pipeThrough(new TransformStream({transform(l,c){if(t.shouldBump(u))f();c.enqueue(l)},flush(){t.clear(u)}}))}function ndi(i,u=[]){if(i==="stop")return u.filter((l)=>l.type==="text"&&l.text).map((l)=>l.text).join(`
|
|
83296
|
+
`)}})}},Ztu={"content-type":"text/event-stream","cache-control":"no-cache",connection:"keep-alive","x-vercel-ai-ui-message-stream":"v1","x-accel-buffering":"no"};fa=Nu.record(Nu.string(),kB.optional()),Btu=Si(()=>Ni(Nu.union([Nu.strictObject({type:Nu.literal("text-start"),id:Nu.string(),providerMetadata:O0.optional()}),Nu.strictObject({type:Nu.literal("text-delta"),id:Nu.string(),delta:Nu.string(),providerMetadata:O0.optional()}),Nu.strictObject({type:Nu.literal("text-end"),id:Nu.string(),providerMetadata:O0.optional()}),Nu.strictObject({type:Nu.literal("error"),errorText:Nu.string()}),Nu.strictObject({type:Nu.literal("tool-input-start"),toolCallId:Nu.string(),toolName:Nu.string(),providerExecuted:Nu.boolean().optional(),providerMetadata:O0.optional(),toolMetadata:fa.optional(),dynamic:Nu.boolean().optional(),title:Nu.string().optional()}),Nu.strictObject({type:Nu.literal("tool-input-delta"),toolCallId:Nu.string(),inputTextDelta:Nu.string()}),Nu.strictObject({type:Nu.literal("tool-input-available"),toolCallId:Nu.string(),toolName:Nu.string(),input:Nu.unknown(),providerExecuted:Nu.boolean().optional(),providerMetadata:O0.optional(),toolMetadata:fa.optional(),dynamic:Nu.boolean().optional(),title:Nu.string().optional()}),Nu.strictObject({type:Nu.literal("tool-input-error"),toolCallId:Nu.string(),toolName:Nu.string(),input:Nu.unknown(),providerExecuted:Nu.boolean().optional(),providerMetadata:O0.optional(),toolMetadata:fa.optional(),dynamic:Nu.boolean().optional(),errorText:Nu.string(),title:Nu.string().optional()}),Nu.strictObject({type:Nu.literal("tool-approval-request"),approvalId:Nu.string(),toolCallId:Nu.string(),signature:Nu.string().optional()}),Nu.strictObject({type:Nu.literal("tool-output-available"),toolCallId:Nu.string(),output:Nu.unknown(),providerExecuted:Nu.boolean().optional(),providerMetadata:O0.optional(),toolMetadata:fa.optional(),dynamic:Nu.boolean().optional(),preliminary:Nu.boolean().optional()}),Nu.strictObject({type:Nu.literal("tool-output-error"),toolCallId:Nu.string(),errorText:Nu.string(),providerExecuted:Nu.boolean().optional(),providerMetadata:O0.optional(),toolMetadata:fa.optional(),dynamic:Nu.boolean().optional()}),Nu.strictObject({type:Nu.literal("tool-output-denied"),toolCallId:Nu.string()}),Nu.strictObject({type:Nu.literal("reasoning-start"),id:Nu.string(),providerMetadata:O0.optional()}),Nu.strictObject({type:Nu.literal("reasoning-delta"),id:Nu.string(),delta:Nu.string(),providerMetadata:O0.optional()}),Nu.strictObject({type:Nu.literal("reasoning-end"),id:Nu.string(),providerMetadata:O0.optional()}),Nu.strictObject({type:Nu.literal("source-url"),sourceId:Nu.string(),url:Nu.string(),title:Nu.string().optional(),providerMetadata:O0.optional()}),Nu.strictObject({type:Nu.literal("source-document"),sourceId:Nu.string(),mediaType:Nu.string(),title:Nu.string(),filename:Nu.string().optional(),providerMetadata:O0.optional()}),Nu.strictObject({type:Nu.literal("file"),url:Nu.string(),mediaType:Nu.string(),providerMetadata:O0.optional()}),Nu.strictObject({type:Nu.custom((i)=>typeof i==="string"&&i.startsWith("data-"),{message:'Type must start with "data-"'}),id:Nu.string().optional(),data:Nu.unknown(),transient:Nu.boolean().optional()}),Nu.strictObject({type:Nu.literal("start-step")}),Nu.strictObject({type:Nu.literal("finish-step")}),Nu.strictObject({type:Nu.literal("start"),messageId:Nu.string().optional(),messageMetadata:Nu.unknown().optional()}),Nu.strictObject({type:Nu.literal("finish"),finishReason:Nu.enum(["stop","length","content-filter","tool-calls","error","other"]).optional(),messageMetadata:Nu.unknown().optional()}),Nu.strictObject({type:Nu.literal("abort"),reason:Nu.string().optional()}),Nu.strictObject({type:Nu.literal("message-metadata"),messageMetadata:Nu.unknown()})])));hGf=Ud;DGf=Ea;NGf=V5({prefix:"aitxt",size:24}),OGf={file:!0,source:!0,"text-start":!0,"text-end":!0,"text-delta":!0,"reasoning-start":!0,"reasoning-end":!0,"reasoning-delta":!0,"tool-input-start":!0,"tool-input-end":!0,"tool-input-delta":!0,"tool-approval-request":!0,"tool-call":!0,"tool-result":!0,"tool-error":!0,"stream-start":!1,"response-metadata":!1,finish:!1,error:!1,raw:!1};lw=yi.record(yi.string(),kB.optional()),TGf=Si(()=>Ni(yi.array(yi.object({id:yi.string(),role:yi.enum(["system","user","assistant"]),metadata:yi.unknown().optional(),parts:yi.array(yi.union([yi.object({type:yi.literal("text"),text:yi.string(),state:yi.enum(["streaming","done"]).optional(),providerMetadata:O0.optional()}),yi.object({type:yi.literal("reasoning"),text:yi.string(),state:yi.enum(["streaming","done"]).optional(),providerMetadata:O0.optional()}),yi.object({type:yi.literal("source-url"),sourceId:yi.string(),url:yi.string(),title:yi.string().optional(),providerMetadata:O0.optional()}),yi.object({type:yi.literal("source-document"),sourceId:yi.string(),mediaType:yi.string(),title:yi.string(),filename:yi.string().optional(),providerMetadata:O0.optional()}),yi.object({type:yi.literal("file"),mediaType:yi.string(),filename:yi.string().optional(),url:yi.string(),providerMetadata:O0.optional()}),yi.object({type:yi.literal("step-start")}),yi.object({type:yi.string().startsWith("data-"),id:yi.string().optional(),data:yi.unknown()}),yi.object({type:yi.literal("dynamic-tool"),toolName:yi.string(),toolCallId:yi.string(),toolMetadata:lw.optional(),state:yi.literal("input-streaming"),input:yi.unknown().optional(),providerExecuted:yi.boolean().optional(),callProviderMetadata:O0.optional(),output:yi.never().optional(),errorText:yi.never().optional(),approval:yi.never().optional()}),yi.object({type:yi.literal("dynamic-tool"),toolName:yi.string(),toolCallId:yi.string(),toolMetadata:lw.optional(),state:yi.literal("input-available"),input:yi.unknown(),providerExecuted:yi.boolean().optional(),output:yi.never().optional(),errorText:yi.never().optional(),callProviderMetadata:O0.optional(),approval:yi.never().optional()}),yi.object({type:yi.literal("dynamic-tool"),toolName:yi.string(),toolCallId:yi.string(),toolMetadata:lw.optional(),state:yi.literal("approval-requested"),input:yi.unknown(),providerExecuted:yi.boolean().optional(),output:yi.never().optional(),errorText:yi.never().optional(),callProviderMetadata:O0.optional(),approval:yi.object({id:yi.string(),approved:yi.never().optional(),reason:yi.never().optional(),signature:yi.string().optional()})}),yi.object({type:yi.literal("dynamic-tool"),toolName:yi.string(),toolCallId:yi.string(),toolMetadata:lw.optional(),state:yi.literal("approval-responded"),input:yi.unknown(),providerExecuted:yi.boolean().optional(),output:yi.never().optional(),errorText:yi.never().optional(),callProviderMetadata:O0.optional(),approval:yi.object({id:yi.string(),approved:yi.boolean(),reason:yi.string().optional(),signature:yi.string().optional()})}),yi.object({type:yi.literal("dynamic-tool"),toolName:yi.string(),toolCallId:yi.string(),toolMetadata:lw.optional(),state:yi.literal("output-available"),input:yi.unknown(),providerExecuted:yi.boolean().optional(),output:yi.unknown(),errorText:yi.never().optional(),callProviderMetadata:O0.optional(),resultProviderMetadata:O0.optional(),preliminary:yi.boolean().optional(),approval:yi.object({id:yi.string(),approved:yi.literal(!0),reason:yi.string().optional(),signature:yi.string().optional()}).optional()}),yi.object({type:yi.literal("dynamic-tool"),toolName:yi.string(),toolCallId:yi.string(),toolMetadata:lw.optional(),state:yi.literal("output-error"),input:yi.unknown().optional(),rawInput:yi.unknown().optional(),providerExecuted:yi.boolean().optional(),output:yi.never().optional(),errorText:yi.string(),callProviderMetadata:O0.optional(),resultProviderMetadata:O0.optional(),approval:yi.object({id:yi.string(),approved:yi.literal(!0),reason:yi.string().optional(),signature:yi.string().optional()}).optional()}),yi.object({type:yi.literal("dynamic-tool"),toolName:yi.string(),toolCallId:yi.string(),toolMetadata:lw.optional(),state:yi.literal("output-denied"),input:yi.unknown(),providerExecuted:yi.boolean().optional(),output:yi.never().optional(),errorText:yi.never().optional(),callProviderMetadata:O0.optional(),approval:yi.object({id:yi.string(),approved:yi.literal(!1),reason:yi.string().optional(),signature:yi.string().optional()})}),yi.object({type:yi.string().startsWith("tool-"),toolCallId:yi.string(),toolMetadata:lw.optional(),state:yi.literal("input-streaming"),providerExecuted:yi.boolean().optional(),callProviderMetadata:O0.optional(),input:yi.unknown().optional(),output:yi.never().optional(),errorText:yi.never().optional(),approval:yi.never().optional()}),yi.object({type:yi.string().startsWith("tool-"),toolCallId:yi.string(),toolMetadata:lw.optional(),state:yi.literal("input-available"),providerExecuted:yi.boolean().optional(),input:yi.unknown(),output:yi.never().optional(),errorText:yi.never().optional(),callProviderMetadata:O0.optional(),approval:yi.never().optional()}),yi.object({type:yi.string().startsWith("tool-"),toolCallId:yi.string(),toolMetadata:lw.optional(),state:yi.literal("approval-requested"),input:yi.unknown(),providerExecuted:yi.boolean().optional(),output:yi.never().optional(),errorText:yi.never().optional(),callProviderMetadata:O0.optional(),approval:yi.object({id:yi.string(),approved:yi.never().optional(),reason:yi.never().optional(),signature:yi.string().optional()})}),yi.object({type:yi.string().startsWith("tool-"),toolCallId:yi.string(),toolMetadata:lw.optional(),state:yi.literal("approval-responded"),input:yi.unknown(),providerExecuted:yi.boolean().optional(),output:yi.never().optional(),errorText:yi.never().optional(),callProviderMetadata:O0.optional(),approval:yi.object({id:yi.string(),approved:yi.boolean(),reason:yi.string().optional(),signature:yi.string().optional()})}),yi.object({type:yi.string().startsWith("tool-"),toolCallId:yi.string(),toolMetadata:lw.optional(),state:yi.literal("output-available"),providerExecuted:yi.boolean().optional(),input:yi.unknown(),output:yi.unknown(),errorText:yi.never().optional(),callProviderMetadata:O0.optional(),resultProviderMetadata:O0.optional(),preliminary:yi.boolean().optional(),approval:yi.object({id:yi.string(),approved:yi.literal(!0),reason:yi.string().optional(),signature:yi.string().optional()}).optional()}),yi.object({type:yi.string().startsWith("tool-"),toolCallId:yi.string(),toolMetadata:lw.optional(),state:yi.literal("output-error"),providerExecuted:yi.boolean().optional(),input:yi.unknown().optional(),rawInput:yi.unknown().optional(),output:yi.never().optional(),errorText:yi.string(),callProviderMetadata:O0.optional(),resultProviderMetadata:O0.optional(),approval:yi.object({id:yi.string(),approved:yi.literal(!0),reason:yi.string().optional(),signature:yi.string().optional()}).optional()}),yi.object({type:yi.string().startsWith("tool-"),toolCallId:yi.string(),toolMetadata:lw.optional(),state:yi.literal("output-denied"),providerExecuted:yi.boolean().optional(),input:yi.unknown(),output:yi.never().optional(),errorText:yi.never().optional(),callProviderMetadata:O0.optional(),approval:yi.object({id:yi.string(),approved:yi.literal(!1),reason:yi.string().optional(),signature:yi.string().optional()})})])).nonempty("Message must contain at least one part")})).nonempty("Messages array must not be empty")));jGf=Tdi,XGf={type:"no-schema",jsonSchema:async()=>{return},async validatePartialResult({value:i,textDelta:u}){return{success:!0,value:{partial:i,textDelta:u}}},async validateFinalResult(i,u){return i===void 0?{success:!1,error:new Ew({message:"No object generated: response did not match schema.",text:u.text,response:u.response,usage:u.usage,finishReason:u.finishReason})}:{success:!0,value:i}},createElementStream(){throw new yf({functionality:"element streams in no-schema mode"})}};YGf=V5({prefix:"aiobj",size:24});HGf=V5({prefix:"aiobj",size:24});CGf=class extends p9{constructor({data:i,mediaType:u}){super({data:i,mediaType:u});let t="mp3";if(u){let f=u.split("/");if(f.length===2){if(u!=="audio/mpeg")t=f[1]}}if(!t)throw Error("Audio format must be provided or determinable from media type");this.format=t}};VGf={word:/\S+\s+/m,line:/\n+/m};mGf=Itu();hkf=Hy0,Ry0=`vercel.ai.error.${by0}`,Dkf=Symbol.for(Ry0),My0=class extends kf{constructor({modelId:i,modelType:u,providerId:t,availableProviders:f,message:l=`No such provider: ${t} (available providers: ${f.join()})`}){super({errorName:by0,modelId:i,modelType:u,message:l});this[Cy0]=!0,this.providerId=t,this.availableProviders=f}static isInstance(i){return yu.hasMarker(i,Ry0)}};Cy0=Dkf;gkf=qy0;Zkf=Itu();ry0=class extends Gtu{constructor(i={}){super(i)}processResponseStream(i){return mD({stream:i,schema:Btu}).pipeThrough(new TransformStream({async transform(u,t){if(!u.success)throw u.error;t.enqueue(u.value)}}))}};Gkf=class extends Gtu{constructor(i={}){super(i)}processResponseStream(i){return nkf({stream:i.pipeThrough(new TextDecoderStream)})}}});function Udi(i){return{type:"data-title-result",data:{title:i},transient:!0}}function jtu(i){return i.type==="data-title-input"}function Xtu(i){return i.type==="data-title-result"}async function*my0(i,u){let t=u.persistTitle??((l,c)=>u.ctx.storage.threads.update(l,{title:c}).then(()=>{})),f=!1;for await(let l of i){if(jtu(l)){console.warn("[title-interceptor] harness emitted deprecated data-title-input chunk; ignoring");continue}if(Xtu(l)){if(f){console.warn("[title-interceptor] harness emitted multiple data-title-result chunks; ignoring extra");continue}if(f=!0,u.currentThreadTitle!==qD)continue;let c=l.data.title;if(!c)continue;await t(u.threadId,c).catch((E)=>{console.error("[title-interceptor] persist failed for thread",u.threadId,E)});try{await u.onTitleUpdated?.(c)}catch(E){console.error("[title-interceptor] onTitleUpdated callback failed",E)}if(!u.isStreamFinished())try{u.writer.write({type:"data-thread-title",data:{title:c},transient:!0})}catch(E){console.error("[title-interceptor] writer.write failed",E)}continue}yield l}}function ey0(i,u){let t=u.persistTitle??((l,c)=>u.ctx.storage.threads.update(l,{title:c}).then(()=>{})),f=!1;return i.pipeThrough(new TransformStream({async transform(l,c){if(jtu(l)){console.warn("[title-interceptor] harness emitted deprecated data-title-input chunk; ignoring");return}if(Xtu(l)){if(f){console.warn("[title-interceptor] harness emitted multiple data-title-result chunks; ignoring extra");return}if(f=!0,u.currentThreadTitle!==qD)return;let E=l.data.title;if(!E)return;await t(u.threadId,E).catch(($)=>{console.error("[title-interceptor] persist failed for thread",u.threadId,$)});try{await u.onTitleUpdated?.(E)}catch($){console.error("[title-interceptor] onTitleUpdated callback failed",$)}if(!u.isStreamFinished())try{u.writer.write({type:"data-thread-title",data:{title:E},transient:!0})}catch($){console.error("[title-interceptor] writer.write failed",$)}return}c.enqueue(l)}}))}var ay0=N(()=>{U9()});function kkf(i){let u=i[Symbol.asyncIterator]();return new ReadableStream({async pull(t){try{let{value:f,done:l}=await u.next();if(l)t.close();else t.enqueue(f)}catch(f){t.error(f)}},async cancel(t){await u.return?.(t)}})}function jkf(i,u){let t=i.getReader(),f=!1,l=()=>{if(f)return;f=!0,t.releaseLock()};return new ReadableStream({async pull(c){try{let{done:E,value:$}=await t.read();if(E)l(),c.close();else c.enqueue($)}catch(E){u(),l(),c.error(E)}},async cancel(c){await t.cancel(c),l()}})}function Xkf(i){let u=i.metadata?.usage;if(!u||typeof u!=="object"||Array.isArray(u))return null;let t=u,f=(l)=>typeof l==="number"?l:0;return{...t,inputTokens:f(t.inputTokens),outputTokens:f(t.outputTokens),totalTokens:f(t.totalTokens)}}function Pdi(i){let u=[],t=!1,f=!1,l=!1,c=!0,E=i.errorMessageId??crypto.randomUUID(),$,w=new Promise((y)=>{$=y});if(!i.chunks&&!i.chunkStream)throw Error("consumeHarnessStream requires chunks or chunkStream");let d=i.chunks?async function*(){try{yield*i.chunks}catch(y){throw l=!0,y}}():null,_=i.chunkStream?jkf(i.chunkStream,()=>{l=!0}):null,v=i.originalMessages?.at(-1),h=!i.generateMessageId&&v?.role==="assistant"?v.id:void 0,D=new Map,g=null,O=(y)=>{if(i.generateMessageId){let F=D.get(y);if(F===void 0)F=i.generateMessageId(),D.set(y,F);return F}if(g===null)g=y;return h&&y===g?h:y},Z=(y)=>({...y,id:O(y.id)});return{uiStream:Utu({originalMessages:i.originalMessages,execute:({writer:y})=>{let F={ctx:null,isStreamFinished:()=>t,currentThreadTitle:i.title.currentThreadTitle,threadId:i.title.threadId,writer:y,onTitleUpdated:i.title.onTitleUpdated,persistTitle:i.title.persistTitle};if(_){y.merge(ey0(_,F));return}let T=my0(d,F);y.merge(kkf(T))},onStepFinish:({responseMessage:y})=>{let F=Z(y);u.push(i.persistence.emitStepParts(F).catch((T)=>{c=!1,console.error("[consume-harness-stream] emitStepParts failed",T)})),u.push(Promise.resolve(i.hooks?.onStep?.(F)).catch((T)=>console.error("[consume-harness-stream] onStep hook failed",T)))},onFinish:async({responseMessage:y,finishReason:F})=>{t=!0,await Promise.allSettled(u);let T=Z(y);if(!f){if(F)T.metadata={...T.metadata??{},finishReason:F};await i.persistence.emitFinal(T).catch((I)=>{c=!1,console.error("[consume-harness-stream] emitFinal failed",I)})}let U=Xkf(T);if(U)await Promise.resolve(i.hooks?.onUsage?.(U)).catch((I)=>console.error("[consume-harness-stream] onUsage hook failed",I));if(!l)await Promise.resolve(i.hooks?.onFinish?.(T,F,{persistenceOk:c})).catch((I)=>console.error("[consume-harness-stream] onFinish hook failed",I));$()},onError:(y)=>{t=!0;let F=y instanceof Error?y.message:String(y);if(!f)f=!0,u.push(i.persistence.emitError(E,F).catch((T)=>{c=!1,console.error("[consume-harness-stream] emitError failed",T)})),u.push(Promise.resolve(i.hooks?.onError?.(y)).catch((T)=>console.error("[consume-harness-stream] onError hook failed",T)));return i.sanitizeErrorText?i.sanitizeErrorText(y):F}}),whenComplete:w,isStreamFinished:()=>t}}var Jtu=N(()=>{Cf();ay0()});async function Jkf(i){let u=i.getReader();try{while(!0){let{done:t}=await u.read();if(t)break}}finally{u.releaseLock()}}function Kkf(i,u){let t=i.getReader(),f=!1,l=()=>{if(f)return;f=!0,t.releaseLock()};return new ReadableStream({async pull(c){try{let{done:E,value:$}=await t.read();if(E)l(),c.close();else c.enqueue($)}catch(E){u(E),l(),c.error(E)}},async cancel(c){await t.cancel(c),l()}})}async function oy0(i){if(!i.chunks&&!i.chunkStream)throw Error("projectChunks requires chunks or chunkStream");let u=null,t=!1,f=void 0,l={inputTokens:0,outputTokens:0,totalTokens:0},c=[],E=null,$=(g)=>{if(E===null)E=g;throw g},w=i.chunks?async function*(){try{for await(let g of i.chunks){if(X0u(g))continue;yield g}}catch(g){throw u=g,g}}():void 0,d=i.chunkStream?Kkf(i.chunkStream,(g)=>{u=g}).pipeThrough(new TransformStream({transform(g,O){if(!X0u(g))O.enqueue(g)}})):void 0,_={emitStepParts:(g)=>i.persistence.emitStepParts(g).catch($),emitFinal:(g)=>i.persistence.emitFinal(g).catch($),emitError:(g,O)=>i.persistence.emitError(g,O).catch($)},{uiStream:v,whenComplete:h}=Pdi({chunks:w,chunkStream:d,originalMessages:i.originalMessages??[],title:i.title?{currentThreadTitle:i.title.currentThreadTitle,threadId:i.title.threadId,persistTitle:i.title.persistTitle}:{currentThreadTitle:void 0,threadId:"projector",persistTitle:async()=>{}},persistence:_,sanitizeErrorText:i.sanitizeErrorText,errorMessageId:i.errorMessageId,generateMessageId:i.generateMessageId,hooks:{onUsage:(g)=>{l={inputTokens:g.inputTokens,outputTokens:g.outputTokens,totalTokens:g.totalTokens}},onError:()=>{t=!0},onFinish:(g,O)=>{f=O,c=Array.isArray(g.parts)?g.parts.filter((Z)=>Z!=null&&typeof Z==="object"&&("type"in Z)):[]}}});if(await Jkf(v).catch(()=>{}),await h,E!==null)throw E;if(u!==null)throw u;return{failed:t&&f===void 0,finishReason:f,usage:l,finalParts:c}}var sy0=N(()=>{Jtu();ee()});var D8="DECOPILOT_STREAMS";var Ktu=()=>{};function py0(i,u){return new TransformStream({transform(t,f){if(t.runId!==i||t.fenceToken!==u)return;f.enqueue(t)}})}function iF0(){let i=1;return new TransformStream({transform(u,t){if(u.kind==="done"){t.enqueue(u);return}if(u.seq===null){t.error(Error("projector chunk missing seq"));return}if(u.seq<i)return;if(u.seq>i){t.error(Error(`missing seq ${i}`));return}i++,t.enqueue(u)}})}function uF0(i){let u=i.getReader(),t=!1,f=0,l=()=>{if(t)return;t=!0,u.releaseLock()};return new ReadableStream({async pull(c){for(;;){let{done:E,value:$}=await u.read();if(E){await u.cancel(),l(),c.error(Error("reader stopped before done"));return}let w=$;if(w.kind==="done"){if(!(w.envelopeFinalSeq!=null&&w.envelopeFinalSeq===w.msgIdFinalSeq))continue;if(w.envelopeFinalSeq!==f){await u.cancel(),l(),c.error(Error(`missing seq ${f+1}`));return}await u.cancel(),l(),c.close();return}f=w.seq??f,c.enqueue(w.chunk);return}},async cancel(c){await u.cancel(c),l()}})}function Skf(i){if(Symbol.asyncIterator in i)return i[Symbol.asyncIterator]();let u=i[Symbol.iterator]();return{next:async()=>u.next(),return:async(t)=>u.return?u.return(t):{done:!0,value:t}}}function Idi(i){let u=Skf(i.messages),t=i.idleTimeoutMs,f=!1,l=(c)=>{if(f)return;f=!0,u.return?.(c).catch(()=>{}),i.onCancel?.()};return new ReadableStream({async pull(c){if(t===void 0){let{done:_,value:v}=await u.next();if(_){c.close();return}c.enqueue(v);return}let E=new AbortController,$=u.next().then((_)=>{return E.abort(),_}),w=q0(t,{signal:E.signal}).then(()=>"idle").catch(()=>"cancelled"),d=await Promise.race([$,w]);if(d==="idle"){c.error(new xdi(t));return}if(d==="cancelled")return;if(d.done){c.close();return}c.enqueue(d.value)},async cancel(c){l(c)}})}var xdi;var Adi=N(()=>{Q1();xdi=class xdi extends Error{idleTimeoutMs;constructor(i){super("producer produced no output before timeout");this.idleTimeoutMs=i;this.name="StreamIdleTimeoutError"}}});function Ykf(i){let t=Idi({messages:i.messages,idleTimeoutMs:i.idleTimeoutMs,onCancel:i.onDone}).pipeThrough(L1i()).pipeThrough(Q1i()).pipeThrough(py0(i.runId,i.fenceToken)).pipeThrough(iF0());return uF0(t)}async function fF0(i){let t=await(await i.js.consumers.get(D8,{filter_subjects:t7(i.runId),deliver_policy:tF0.DeliverPolicy.All})).consume();async function*f(){try{for await(let l of t)yield{subject:l.subject,data:l.data,headers:l.headers}}finally{t.stop()}}return Ykf({messages:f(),runId:i.runId,fenceToken:i.fenceToken,idleTimeoutMs:i.idleTimeoutMs,onDone:()=>t.stop()})}var tF0;var lF0=N(()=>{Ktu();Adi();z1i();tF0=k(u7(),1)});function Ytu(i){let u=i.type;if(typeof u!=="string")return!1;if(u==="text"||u==="reasoning")return i.state!=="streaming";if(u==="step-start")return!1;if(u.startsWith("tool-")||u==="dynamic-tool")return i.state==="approval-requested"||u==="tool-user_ask"&&i.state==="input-available"||i.state==="output-available"||i.state==="output-error"||i.state==="output-denied";return!0}function Stu(i){let u=i.type??"";if(u==="reasoning")return"reasoning";if(u==="file")return"file";if(u.startsWith("tool-")||u==="dynamic-tool")return i.state==="output-available"||i.state==="output-error"||i.state==="output-denied"?"tool_result":"tool_call";return"text"}class Wtu{ctx;base;seqByPart=new Map;emitted=new Set;finished=new Set;partKeyByRowId=new Map;finishMessageIdByRowId=new Map;nextSeq=0;constructor(i){this.ctx=i;this.base=i.baseTimeMs??Date.now()}hasEmittedContentFor(i){let u=`${i}#`;for(let t of this.emitted)if(t.startsWith(u))return!0;return!1}seqFor(i){let u=this.seqByPart.get(i);if(u!==void 0)return u;let t=this.nextSeq++;return this.seqByPart.set(i,t),t}row(i,u,t,f,l,c=null){return{id:`${this.ctx.runId}:${i}:${t}`,seq:t,org_id:this.ctx.orgId,thread_id:this.ctx.threadId,run_id:this.ctx.runId,message_id:i,role:u,kind:f,payload:l,payload_ref:null,metadata:c,created_at:new Date(this.base+t).toISOString()}}emitMessageParts(i){let u=i.parts??[],t=[];for(let f=0;f<u.length;f++){let l=u[f];if(!Ytu(l))continue;let c=`${i.id}#${f}`;if(this.emitted.has(c))continue;let E=this.seqFor(c),$=this.row(i.id,i.role,E,Stu(l),l);this.partKeyByRowId.set($.id,c),t.push($)}return t}emitRequestMessageParts(i){let u=i.parts??[],t=[];for(let f=0;f<u.length;f++){let l=u[f],c=`${i.id}#${f}`,E=this.seqFor(c),$=this.row(i.id,i.role,E,Stu(l),l);this.partKeyByRowId.set($.id,c),t.push($)}return t}markFinished(i,u,t=null){if(this.finished.has(i))return[];let f=this.seqFor(`${i}#finish`),l=this.row(i,u,f,"finish",{},t);return this.finishMessageIdByRowId.set(l.id,i),[l]}markRequestFinished(i,u,t=null){let f=this.seqFor(`${i}#finish`),l=this.row(i,u,f,"finish",{},t);return this.finishMessageIdByRowId.set(l.id,i),[l]}acknowledge(i){for(let u of i){let t=this.partKeyByRowId.get(u.id);if(t!==void 0)this.emitted.add(t);let f=this.finishMessageIdByRowId.get(u.id);if(f!==void 0)this.finished.add(f)}}emitUserMessage(i){return[...this.emitMessageParts(i),...this.markFinished(i.id,i.role,i.metadata??null)]}emitRequestMessage(i){return[...this.emitRequestMessageParts(i),...this.markRequestFinished(i.id,i.role,i.metadata??null)]}emitStepParts(i){return this.emitMessageParts(i)}emitFinal(i){let u=this.emitMessageParts(i);if(u.length===0&&!this.hasEmittedContentFor(i.id))return u;return[...u,...this.markFinished(i.id,i.role,i.metadata??null)]}emitFinalSnapshot(i){let u=i.parts??[],t=[];for(let c=0;c<u.length;c++){let E=u[c];if(!Ytu(E))continue;let $=`${i.id}#${c}`,w=this.seqFor($),d=this.row(i.id,i.role,w,Stu(E),E);this.partKeyByRowId.set(d.id,$),t.push(d)}if(t.length===0&&!this.hasEmittedContentFor(i.id))return t;let f=this.seqFor(`${i.id}#finish`),l=this.row(i.id,i.role,f,"finish",{},i.metadata??null);return this.finishMessageIdByRowId.set(l.id,i.id),[...t,l]}emitError(i,u){let t=`${i}#error`,f=[];if(!this.emitted.has(t)){let l=this.seqFor(t),c=this.row(i,"assistant",l,"error",{type:"text",text:`Error: ${u}`});this.partKeyByRowId.set(c.id,t),f.push(c)}return[...f,...this.markFinished(i,"assistant")]}}class __{ctx;builder;constructor(i){this.ctx=i;this.builder=new Wtu(i)}async appendBuiltRows(i){await this.ctx.storage.appendParts(i),this.builder.acknowledge(i)}async emitUserMessage(i){await this.appendBuiltRows(this.builder.emitUserMessage(i))}async emitRequestMessage(i){let u=this.builder.emitRequestMessage(i);await this.ctx.storage.replaceMessageParts(this.ctx.threadId,i.id,u),this.builder.acknowledge(u)}async emitStepParts(i){await this.appendBuiltRows(this.builder.emitStepParts(i))}async emitFinal(i){await this.appendBuiltRows(this.builder.emitFinal(i))}async replaceFinal(i){let u=this.builder.emitFinalSnapshot(i);await this.ctx.storage.replaceMessageParts(this.ctx.threadId,i.id,u),this.builder.acknowledge(u)}async emitError(i,u){await this.appendBuiltRows(this.builder.emitError(i,u))}}var ha=()=>{};async function Wkf(i){let t=(i.requestMessageId?await i.messageParts.maxCreatedAtMsForMessage(i.runId,i.requestMessageId):null)??await i.messageParts.maxCreatedAtMsForRun(i.runId);return new __({storage:i.messageParts,orgId:i.orgId,threadId:i.runId,runId:i.runId,baseTimeMs:(t??Date.now())+1})}async function cF0(i){let u=await Wkf(i),t=i.replaceFinal?(f)=>u.replaceFinal(f):(f)=>u.emitFinal(f);return{emitStepParts:(f)=>u.emitStepParts(f),emitFinal:t,emitError:(f,l)=>u.emitError(f,l)}}var EF0=N(()=>{ha()});function Ltu(i,u){Lkf.add(1,{"org.id":u??"unknown"})}var Lkf;var $F0=N(()=>{H1();Lkf=Mt.createCounter("decopilot.projector.poison_runs",{description:"Number of decopilot runs that exhausted retries and were sent to the DLQ",unit:"{runs}"})});class Qtu{intervalMs;lastBumpMs=new Map;constructor(i=3000){this.intervalMs=i}shouldBump(i,u=Date.now()){let t=this.lastBumpMs.get(i);if(t!==void 0&&u-t<this.intervalMs)return!1;return this.lastBumpMs.set(i,u),!0}clear(i){this.lastBumpMs.delete(i)}}function wF0(i,u,t,f){return i.pipeThrough(new TransformStream({transform(l,c){if(t.shouldBump(u))f();c.enqueue(l)},flush(){t.clear(u)}}))}function ndi(i,u=[]){if(i==="stop")return u.filter((l)=>l.type==="text"&&l.text).map((l)=>l.text).join(`
|
|
83297
83297
|
`).replace(/https?:\/\/[^\s)>\]]+/g,"").includes("?")?"requires_action":"completed";if(i==="tool-calls"){let t=u.some((l)=>l.type==="tool-user_ask"&&l.state==="input-available"),f=u.some((l)=>l.state==="approval-requested");return t||f?"requires_action":"completed"}return"failed"}function uz(i,u){return`error-${i}:${u}`}function Gdi(i){return{id:i.id,role:i.role,parts:i.parts,metadata:i.metadata??void 0}}var ztu=()=>{};function Qkf(i){return`liveness: no stream events for ${Math.round(i/60000)}m`}function btu(i){return i.runFenceToken!==null&&i.runFenceToken!==i.fenceToken}function dF0(i){Htu=i}function _F0(){if(!Htu)throw Error("[projector-workflow] runtime not initialized \u2014 setProjectorWorkflowRuntime() must run before workflows fire");return Htu}function vF0(){return _F0()}async function hF0(i,u,t){let f=_F0(),l=f.getJetStream();if(!l)throw Error("JetStream unavailable");let c=(await f.messageParts.loadWindow(i.runId,{limit:500})).messages.map(Gdi);return{chunkCount:0,attempts:1,outcome:await oy0({chunkStream:wF0(await fF0({js:l,runId:i.runId,fenceToken:i.fenceToken,idleTimeoutMs:i.idleTimeoutMs}),i.runId,zkf,()=>{f.bumpProgress({runId:i.runId,orgId:u}).catch(()=>{})}),persistence:await cF0({messageParts:f.messageParts,orgId:u,runId:i.runId,requestMessageId:i.messageId,replaceFinal:!0}),originalMessages:c,errorMessageId:uz(i.runId,i.fenceToken),title:{threadId:i.runId,currentThreadTitle:t,persistTitle:async($,w)=>{await f.persistTitle(i.runId,u,w),await f.onTitleUpdated({runId:i.runId,orgId:u,title:w})}}})}}async function DF0(i,u,t){let f=await Hkf(i,u);if("skip"in f)return;let l=f.row.orgId,c=f.row.createdBy??i.runId,E=f.row.title;try{let{outcome:$}=await t(i,l,E),w=$?.failed?"failed":$?.finishReason==null?"completed":ndi($.finishReason,$.finalParts);if(w==="failed"){let d=$?.finishReason?`harness reported an error: ${$.finishReason}`:"harness reported an error";if(Ltu(i.runId,l),await u.markRunFailed(i.runId,l,d,"harness"))await u.recordFailed({runId:i.runId,orgId:l,distinctId:c,reason:d,kind:"harness"})}else if(w==="requires_action")await u.markRunRequiresAction(i.runId,l);else if(await u.completeRunIfNotCompleted(i.runId,l))await u.recordCompleted({runId:i.runId,orgId:l,distinctId:c,usage:$?.usage??{inputTokens:0,outputTokens:0,totalTokens:0}});await u.purgeRun(i.runId,i.fenceToken)}catch($){let w=$ instanceof xdi,d=w?Qkf($.idleTimeoutMs):$ instanceof Error?$.message:String($),_=w?"liveness":"projection";if(Ltu(i.runId,l),await u.markRunFailed(i.runId,l,d,_))await u.recordFailed({runId:i.runId,orgId:l,distinctId:c,reason:d,kind:_});throw $}}async function Hkf(i,u){let t=await u.resolveRun(i.runId);if(!t)return{skip:"missing"};if(btu({status:t.status,runFenceToken:t.runFenceToken,fenceToken:i.fenceToken}))return{skip:"stale",row:t};if(t.version!==2)return{skip:"legacy-v1",row:t};return{row:t}}var Htu=null,zkf;var Rtu=N(()=>{sy0();lF0();Adi();EF0();$F0();ztu();zkf=new Qtu});function gF0(i,u){switch(i.type){case"START":{let t={type:"RUN_STARTED",taskId:i.taskId,orgId:i.orgId,userId:i.userId,abortController:i.abortController,runConfig:i.runConfig,podId:i.podId,messageId:i.messageId};if(u?.status.tag==="running")return[{type:"PREVIOUS_RUN_ABORTED",taskId:i.taskId,orgId:u.orgId},t];return[t]}case"STEP_DONE":{if(u?.status.tag!=="running")return[];return[{type:"STEP_COMPLETED",taskId:i.taskId,orgId:u.orgId,stepCount:u.status.stepCount+1}]}case"FINISH":{if(u==null||u.status.tag!=="running")return[];let{stepCount:t}=u.status;if(i.threadStatus==="completed")return[{type:"RUN_COMPLETED",taskId:i.taskId,orgId:u.orgId,stepCount:t}];if(i.threadStatus==="requires_action")return[{type:"RUN_REQUIRES_ACTION",taskId:i.taskId,orgId:u.orgId,stepCount:t}];return[{type:"RUN_FAILED",taskId:i.taskId,orgId:u.orgId,reason:"error"}]}case"CANCEL":{if(u?.status.tag!=="running")return[];return[{type:"RUN_FAILED",taskId:i.taskId,orgId:u.orgId,reason:"cancelled"}]}case"RESUME":{if(u?.status.tag==="running")return[];return[{type:"RUN_RESUMED",taskId:i.taskId,orgId:i.orgId,userId:i.userId,abortController:i.abortController,podId:i.podId}]}case"FORCE_FAIL":{if(i.reason==="ghost")return[{type:"RUN_FAILED",taskId:i.taskId,orgId:u?.orgId??i.orgId,reason:i.reason}];if(u?.status.tag!=="running")return[];return[{type:"RUN_FAILED",taskId:i.taskId,orgId:u.orgId,reason:i.reason}]}}}function NF0(i,u,t=new Date){switch(u.type){case"RUN_STARTED":return{taskId:u.taskId,orgId:u.orgId,userId:u.userId,status:{tag:"running",abortController:u.abortController,stepCount:0,startedAt:t}};case"RUN_RESUMED":return{taskId:u.taskId,orgId:u.orgId,userId:u.userId,status:{tag:"running",abortController:u.abortController,stepCount:0,startedAt:t}};case"STEP_COMPLETED":if(i?.status.tag!=="running")return i;return{...i,status:{...i.status,stepCount:u.stepCount}};case"RUN_COMPLETED":return;case"RUN_REQUIRES_ACTION":return;case"RUN_FAILED":return;case"PREVIOUS_RUN_ABORTED":return}}async function OF0(i,u,t,f){let{storage:l,sseHub:c}=f,E=await l.get(i,u);c.emit(u,j5(i,t,{virtualMcpId:E?.virtual_mcp_id??void 0,createdBy:E?.created_by,triggerId:E?.trigger_id,title:E?.title,branch:E?.branch??null,createdAt:E?.created_at,updatedAt:E?.updated_at})),c.emit(u,Kq(i,t))}async function Rkf(i,u){let{storage:t,sseHub:f}=u;switch(i.type){case"RUN_STARTED":{await t.update(i.taskId,i.orgId,{status:"in_progress",run_config:i.runConfig??null,run_started_at:new Date().toISOString(),last_progress_at:null,failure_reason:null,failure_kind:null});let l=await t.get(i.taskId,i.orgId);f.emit(i.orgId,j5(i.taskId,"in_progress",{virtualMcpId:l?.virtual_mcp_id??void 0,createdBy:l?.created_by,triggerId:l?.trigger_id,title:l?.title,branch:l?.branch??null,createdAt:l?.created_at,updatedAt:l?.updated_at,messageId:i.messageId}));return}case"RUN_RESUMED":{await t.update(i.taskId,i.orgId,{run_started_at:new Date().toISOString()});let l=await t.get(i.taskId,i.orgId);f.emit(i.orgId,j5(i.taskId,"in_progress",{virtualMcpId:l?.virtual_mcp_id??void 0,createdBy:l?.created_by,triggerId:l?.trigger_id,title:l?.title,branch:l?.branch??null,createdAt:l?.created_at,updatedAt:l?.updated_at}));return}case"STEP_COMPLETED":f.emit(i.orgId,cci(i.taskId,i.stepCount));return;case"RUN_COMPLETED":await OF0(i.taskId,i.orgId,"completed",u);return;case"RUN_REQUIRES_ACTION":await OF0(i.taskId,i.orgId,"requires_action",u);return;case"RUN_FAILED":{if(i.reason==="ghost"){if(!await t.forceFailIfInProgress(i.taskId,i.orgId))return;await t.update(i.taskId,i.orgId,{run_config:null,run_started_at:null})}else await t.update(i.taskId,i.orgId,{status:"failed",run_config:null,run_started_at:null,...i.reason==="reaped"?{failure_reason:bkf,failure_kind:"stall"}:{}});let l=await t.get(i.taskId,i.orgId);f.emit(i.orgId,j5(i.taskId,"failed",{virtualMcpId:l?.virtual_mcp_id??void 0,createdBy:l?.created_by,triggerId:l?.trigger_id,title:l?.title,branch:l?.branch??null,createdAt:l?.created_at,updatedAt:l?.updated_at})),f.emit(i.orgId,Kq(i.taskId,"failed"));return}case"PREVIOUS_RUN_ABORTED":return}}async function ZF0(i,u){for(let{event:t}of i)await Rkf(t,u)}var bkf="Run stalled \u2014 no progress within the idle timeout window";var BF0=N(()=>{wf()});function yF0(i){return i.now-i.lastProgressAt>i.idleTimeoutMs}function FF0(i){return Math.max(i.persistedLastProgressAt??Number.NEGATIVE_INFINITY,i.currentRunStartedAt)}class Mtu{deps;clock;states=new Map;reaperTimer=null;constructor(i,u=()=>new Date){this.deps=i;this.clock=u;this.reaperTimer=setInterval(()=>{this.reapStaleRuns().catch((t)=>{console.error("[RunRegistry] Reaper sweep failed",t)})},Ckf)}async execute(i){let u=this.dispatch(i);return await this.react(u),u}dispatch(i){let u=this.states.get(i.taskId),t=gF0(i,u),f=[];for(let l of t){let c=this.states.get(l.taskId);if(l.type==="PREVIOUS_RUN_ABORTED"||l.type==="RUN_FAILED"){if(c?.status.tag==="running")c.status.abortController.abort()}let E=NF0(c,l,this.clock());if(E===void 0)this.states.delete(l.taskId);else this.states.set(l.taskId,E);if(f.push({event:l,state:E}),Mkf.has(l.type))TF0().add(1,{"org.id":l.orgId});else if(qkf.has(l.type)&&c?.status.tag==="running")TF0().add(-1,{"org.id":l.orgId})}return f}react(i){return ZF0(i,this.deps)}getAbortSignal(i){let u=this.states.get(i);if(u?.status.tag==="running")return u.status.abortController.signal;return null}isRunning(i){return this.states.get(i)?.status.tag==="running"}async stopAll(){for(let[,i]of this.states)if(i.status.tag==="running")i.status.abortController.abort();this.states.clear()}dispose(){if(this.reaperTimer)clearInterval(this.reaperTimer),this.reaperTimer=null}async reapStaleRuns(){let i=this.clock().getTime(),u=[...this.states].filter(([,t])=>t.status.tag==="running");for(let[t,f]of u){if(this.states.get(t)?.status.tag!=="running")continue;let c;try{let $=await this.deps.storage.getProgress(t,f.orgId);c=FF0({persistedLastProgressAt:$?.lastProgressAt??null,currentRunStartedAt:f.status.startedAt.getTime()})}catch($){console.warn(`[RunRegistry] Reaper progress read failed for ${t}; skipping`,$);continue}if(!yF0({lastProgressAt:c,now:i,idleTimeoutMs:kdi}))continue;let E=await this.deps.storage.get(t,f.orgId).catch(()=>null);if(E&&E.status!=="in_progress"){let $=this.states.get(t);if($?.status.tag==="running")$.status.abortController.abort();this.states.delete(t);continue}console.warn(`[RunRegistry] Reaping stuck run for thread ${t} (idle > ${kdi/60000}m) ...`),Vkf().add(1,{"org.id":f.orgId,reason:"idle_timeout"}),await this.execute({type:"FORCE_FAIL",taskId:t,reason:"reaped"}).catch(($)=>{console.error("[RunRegistry] Reaper execute failed",$)})}}}var Ckf=300000,Ctu,kdi,Mkf,qkf,UF0=(i)=>{let u;return()=>u??=i()},TF0,Vkf;var qtu=N(()=>{BF0();H1();Ctu=Number(process.env.RUN_IDLE_TIMEOUT_MS),kdi=Number.isFinite(Ctu)&&Ctu>0?Ctu:600000,Mkf=new Set(["RUN_STARTED","RUN_RESUMED"]),qkf=new Set(["RUN_COMPLETED","RUN_FAILED","RUN_REQUIRES_ACTION","PREVIOUS_RUN_ABORTED"]),TF0=UF0(()=>Mt.createUpDownCounter("decopilot.stream.inflight",{description:"Number of in-flight decopilot stream requests",unit:"{requests}"})),Vkf=UF0(()=>Mt.createCounter("decopilot.run.reaped",{description:"Number of decopilot runs force-failed by the progress-based reaper",unit:"{runs}"}))});async function PF0(i){let{runId:u}=i,t=vF0(),f=await t.resolveRun(u),l=i.fenceToken??f?.runFenceToken;if(!f||f.version!==2||l==null)return;if(btu({status:f.status,runFenceToken:f.runFenceToken,fenceToken:l}))return;if(!t.getJetStream())throw Error("JetStream unavailable for consume step");await DF0({runId:u,fenceToken:l,messageId:i.messageId,idleTimeoutMs:i.idleTimeoutMs??kdi},t,hF0)}var xF0=N(()=>{Rtu();qtu()});import{DBOS as Da}from"@dbos-inc/dbos-sdk";function mtu(i){Vtu=i}function IF0(){if(!Vtu)throw Error("[hostedHarness] runtime not initialized \u2014 setHostedHarnessRuntime() must run before workflows fire");return Vtu}async function rkf(i,u){let t=IF0(),{request:f}=i,l=u??await t.meshContextFactory(f.organizationId,f.userId);if(!l)throw Error("user membership lost mid-dispatch");if(f.runMetadata)l.metadata.runMetadata=f.runMetadata;let c=new AbortController;await t.dispatchRunFn({...f,abortSignal:c.signal},l,t.deps)}function mkf(i,u,t,f=1){let l=t instanceof Error?t.message:String(t);return{messageId:uz(i,u),errorChunk:{type:"error",errorText:l},seq:f,finalSeq:f}}function ekf(i){if(!(i instanceof Error))return;let u=i.lastAckSeq;return typeof u==="number"?u+1:void 0}async function akf(i,u){let t=IF0(),{streamBuffer:f}=t.deps,{messageId:l,errorChunk:c,seq:E,finalSeq:$}=mkf(i.runId,i.fenceToken,u,ekf(u));if(!f){console.error(`[hostedHarness] no streamBuffer configured; dropping terminal error for run=${i.runId} fence=${i.fenceToken} messageId=${l}`);return}if(!await f.publishRawChunk(i.runId,c,{fenceToken:i.fenceToken,seq:E})){console.error(`[hostedHarness] failed to publish terminal error chunk for run=${i.runId} fence=${i.fenceToken} messageId=${l}`);return}await f.publishDone(i.runId,i.fenceToken,$)}async function okf(i){try{await Da.runStep(()=>rkf(i),{name:"runHostedHarness",retriesAllowed:!1})}catch(u){await Da.runStep(()=>akf(i,u),{name:"publishHostedHarnessFailure",retriesAllowed:!0}).catch((t)=>{console.error(`[hostedHarness] could not publish terminal error for run=${i.runId} fence=${i.fenceToken}`,t)})}}function AF0(i,u){return`decopilot-hosted:${i}:${u}`}async function nF0(i){return{workflowID:(await Da.startWorkflow(skf,{workflowID:AF0(i.runId,i.fenceToken),queueName:$7,enqueueOptions:{queuePartitionKey:i.threadId}})(i)).workflowID}}async function etu(i,u){await Da.cancelWorkflow(AF0(i,u))}var rtu=1,Vtu=null,skf;var atu=N(()=>{skf=Da.registerWorkflow(okf,{name:"hostedHarnessWorkflow",maxRecoveryAttempts:1000})});import{DBOS as tz}from"@dbos-inc/dbos-sdk";function pkf(i){if(i.harnessId==="decopilot")return"cluster";if(i.isLinkCapable&&i.sandboxProviderKind==="user-desktop")return"sandbox";if((i.harnessId==="claude-code"||i.harnessId==="codex")&&i.sandboxProviderKind==="agent-sandbox")throw Error(`not implemented: CLI harness "${i.harnessId}" on an agent-sandbox (cloud-CLI is a planned follow-up)`);return"cluster"}function ptu(i){otu=i}function ijf(){if(!otu)throw Error("[threadGate] runtime not initialized \u2014 setThreadGateRuntime() must run before workflows fire");return otu}function ujf(i,u=s3i){let t=i.runFenceToken;if(t)return{runFenceToken:t,claimedRequest:i,shouldPersistFence:!1};let f=u();return{runFenceToken:f,claimedRequest:{...i,runFenceToken:f},shouldPersistFence:!0}}async function tjf(i){let u=ijf(),{request:t}=i,f=t.taskId??i.threadId;if(YN0({harnessId:t.harnessId,sandboxProviderKind:t.target?.sandboxProviderKind}))await _8(u.deps.streamBuffer,f,"starting-run");let l=await u.meshContextFactory(t.organizationId,t.userId);if(!l)throw Error("user membership lost mid-dispatch");let c=u.workPublisher,E=u.prepareLinkWorkFn!=null&&c!=null,$=pkf({isLinkCapable:E,sandboxProviderKind:t.target?.sandboxProviderKind,harnessId:t.harnessId}),w=t.taskId??i.threadId,{runFenceToken:d,claimedRequest:_,shouldPersistFence:v}=ujf(t);if(v)await l.storage.threads.setRunFence(w,d);if($==="cluster")return{runFenceToken:d,hostedEnqueue:{runId:f,fenceToken:d,threadId:i.threadId,request:_}};let h=i.timeoutMs??u.runTimeoutMs,D=new AbortController,g=h!=null?setTimeout(()=>D.abort(),h):null;try{let{taskId:O,runFenceToken:Z,harnessInput:B,messagesRef:y,sandboxConfig:F,orgSlug:T}=await u.prepareLinkWorkFn({..._,abortSignal:D.signal},l,u.deps);if(Z!==d)throw Error(`prepareLinkWorkFn returned fence ${Z}; expected ${d}`);let U={runId:O,threadId:t.taskId??i.threadId,orgId:t.organizationId,userId:t.userId,runFenceToken:Z,harnessInput:B,...F?{sandbox:F}:{},orgSlug:T,...y?{messagesRef:y}:{}};try{await c.publish(t.userId,U,{signal:D.signal})}catch(I){return console.error(`[thread-gate] link work publish failed for run=${O}; marking failed`,I),await l.storage.threads.forceFailIfInProgress(O),{runFenceToken:d}}}finally{if(g!==null)clearTimeout(g)}return{runFenceToken:d}}async function fjf(i){if(i.source!=="user-message")return;let{request:u}=i;su.capture({distinctId:u.userId,event:"chat_message_started",groups:{organization:u.organizationId},properties:{organization_id:u.organizationId,agent_id:u.agent,mode:u.mode,thread_id:u.taskId??i.threadId,credential_id:u.models.credentialId}})}async function ljf(i,u){if(i.source!=="user-message")return;let{request:t}=i;su.capture({distinctId:t.userId,event:"chat_message_failed",groups:{organization:t.organizationId},properties:{organization_id:t.organizationId,thread_id:t.taskId??i.threadId,agent_id:t.agent,model_id:t.models.thinking.id,mode:t.mode,error_category:"setup",error_message:u}})}async function jdi(i){await tz.runStep(()=>fjf(i),{name:"trackMessageStarted"});let u;try{let l=i.request.target?.sandboxProviderKind!=="user-desktop";if(u=await tz.runStep(()=>tjf(i),{name:"dispatchRunAndWait",retriesAllowed:l}),u.hostedEnqueue)await nF0(u.hostedEnqueue)}catch(l){let c=l instanceof Error?l.message:String(l);throw await tz.runStep(()=>ljf(i,c),{name:"trackMessageFailed"}),l}let t=i.request.taskId??i.threadId,f="messages"in i.request?void 0:i.request.messageId;return await tz.runStep(()=>PF0({runId:t,fenceToken:u.runFenceToken,messageId:f}),{name:"consumeRunProjection"}),{taskId:i.request.taskId??i.threadId}}async function cjf(i){return jdi(i)}async function fz(i,u){return{workflowID:(await tz.startWorkflow(Ejf,{queueName:tv,enqueueOptions:{queuePartitionKey:i.threadId},workflowID:u?.workflowID})(i)).workflowID}}var stu=1,otu=null,Ejf;var GF0=N(()=>{e4();ee();xF0();atu();Ejf=tz.registerWorkflow(cjf,{name:"threadGateWorkflow",maxRecoveryAttempts:1000})});var ga=N(()=>{GF0();atu()});async function ifu(i,u,t){let f;try{return await Promise.race([i.aiProviders.listModels(u,t),new Promise((c,E)=>{f=setTimeout(()=>E(Error("listModels timeout")),$jf)})])}finally{if(f)clearTimeout(f)}}function wjf(i,u){switch(i){case"fast":return u.chat.fast;case"smart":return u.chat.smart;case"thinking":return u.chat.thinking;case"image":return u.image;case"web_search":return u.webSearch;case"deep_research":return u.deepResearch}}function ufu(i,u,t){let f=i.find((l)=>l.modelId===u);return{title:f?.title??t??u,providerId:f?.providerId,capabilities:f?.capabilities,limits:f?.limits??null}}async function g8(i,u){let t=i.organization?.id;if(!t)throw Error("resolveTier called without an organization");let l=(await i.storage.organizationSettings.get(t))?.simple_mode?.tiers?.[u]??null,c=await i.storage.aiProviderKeys.list({organizationId:t});if(l&&c.some((_)=>_.id===l.keyId)){let _=await ifu(i,l.keyId,t).catch(()=>[]);return{credentialId:l.keyId,modelId:l.modelId,modelMeta:ufu(_,l.modelId,l.title)}}if(c.length===0)throw new lz(u);let E={};await Promise.all(c.map(async(_)=>{E[_.id]=await ifu(i,_.id,t).catch(()=>[])}));let $=c.map((_)=>({id:_.id,providerId:_.providerId,label:_.label,presetId:_.presetId,createdBy:_.createdBy,createdAt:_.createdAt})),w=lri($,E),d=wjf(u,w);if(!d)throw new lz(u);return{credentialId:d.keyId,modelId:d.modelId,modelMeta:ufu(E[d.keyId]??[],d.modelId,d.title)}}async function kF0(i,u,t){let f=i.organization?.id;if(!f)throw Error("resolveSpecificModel called without an organization");let l=await ifu(i,u,f).catch(()=>[]);return{credentialId:u,modelId:t,modelMeta:ufu(l,t)}}async function xd(i,u){try{return await g8(i,u)}catch(t){if(t instanceof lz)return null;return console.warn(`[resolveTier] tier "${u}" resolution failed:`,t),null}}var lz,$jf=5000;var Na=N(()=>{wf();lz=class lz extends Error{tier;constructor(i){super(`No model available for tier "${i}". Connect a provider or configure the tier in organization settings.`);this.tier=i;this.name="TierUnavailableError"}}});import{z as djf}from"zod";function N8(i){return i==="cluster"?"agent-sandbox":i}function tfu(i){return`${i.userId}:${i.projectRef}`}var _jf;var Xdi=N(()=>{_jf=djf.enum(["agent-sandbox","user-desktop"])});class Jdi{map=new Map;async run(i,u){let t=this.map.get(i);if(t)return t;let f=u();this.map.set(i,f);try{return await f}finally{this.map.delete(i)}}}function Kdi(i,u,t,f){if(!i)return f(null);if(!i.withLock)return f(i);return i.withLock(u,t,f)}import{createHash as vjf}from"crypto";function Djf(i,u=16){return vjf("sha256").update(tfu(i)).digest("hex").slice(0,u)}function lg(i,u){let t=Djf(i),f=gjf(u);return f?`${f}-${t}`:`s-${t}`}function gjf(i){if(!i)return"";return(i.split("/").pop()??"").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,hjf).replace(/-+$/g,"")}var hjf=24;var jF0=N(()=>{Xdi()});function Sdi(i,u){let t=i.replace(/\/+$/,"");if(t.includes("{handle}"))return`${t.replace("{handle}",u)}/`;try{let f=new URL(t);return f.hostname=`${u}.${f.hostname}`,`${f.toString()}/`}catch{return`${t}/${u}/`}}function ffu(i){let u=i.repo,t=u?{repository:{cloneUrl:u.cloneUrl,repoName:u.displayName??Njf(u.cloneUrl),...u.branch?{branch:u.branch}:{}},identity:{userName:u.userName,userEmail:u.userEmail}}:void 0,f=i.tenant,l=i5({userName:f?.userName,userEmail:f?.userEmail})??void 0,c=i.packageManager?{name:i.packageManager.name,...i.packageManager.path?{path:i.packageManager.path}:{}}:void 0,E=c?{packageManager:c,runtime:i.runtime,...i.port!==void 0?{port:i.port}:{}}:void 0;if(!t&&!E&&!l)return null;return{...t?{git:t}:{},...l?{operator:l}:{},...E?{application:E}:{}}}function Njf(i){try{let u=new URL(i);return u.pathname.replace(/^\/+/,"").replace(/\.git$/,"")||u.hostname}catch{return i}}var XF0=N(()=>{z4i()});function Ojf(i){try{return new URL(i).username.length>0}catch{return!1}}function lfu(i){let u=i.repo?.cloneUrl;if(!u||!Ojf(u))return null;return{git:{repository:{cloneUrl:u}}}}var Ydi=N(()=>{jF0();XF0()});function O8(i){if("threadId"in i){if(!i.threadId)throw Error("composeSandboxRef: threadId required");return`thread:${i.threadId}`}if(!i.orgId||!i.virtualMcpId||!i.branch)throw Error("composeSandboxRef: orgId, virtualMcpId and branch are all required for agent refs");return`agent:${i.orgId}:${i.virtualMcpId}:${i.branch}`}function Zjf(i){return(typeof i.timeout==="number"&&i.timeout>0?Math.min(i.timeout,120000):30000)+15000}function Bjf(i,u){if(i.aborted)return u.catch(()=>{}),Promise.reject(i.reason??Error("aborted"));return new Promise((t,f)=>{let l=()=>{u.catch(()=>{}),f(i.reason??Error("aborted"))};i.addEventListener("abort",l,{once:!0}),u.then(t,f).finally(()=>{i.removeEventListener("abort",l)})})}async function yjf(i,u,t,f,l="POST",c){let E=c?.timeoutMs??Zjf(f??{}),$=AbortSignal.timeout(E),w=c?.signal?AbortSignal.any([c.signal,$]):$,d,_;try{let h={method:l,headers:new Headers({"content-type":"application/json"}),body:null,signal:w};if(l!=="GET"&&f!==null)h.body=JSON.stringify(f);({res:d,rawText:_}=await Bjf(w,(async()=>{let D=await i.proxyDaemonRequest(u,t,h);return{res:D,rawText:await D.text()}})()))}catch(h){if(c?.signal?.aborted)throw h;if($.aborted)throw Error(`Sandbox ${l} ${t} timed out after ${Math.round(E/1000)}s \u2014 the sandbox may be overloaded or its filesystem stalled. Retry, or use a smaller operation.`);throw new cz(h)}let v;try{v=JSON.parse(_)}catch{console.error("[sandbox-fs-hooks] Failed to parse JSON response runner=%s path=%s status=%d rawText=%s",i.kind,t,d.status,_.slice(0,2000));let h=d.status>=500?" (server error)":d.status===0?" (no response)":"";throw Error(`Daemon ${t} returned invalid JSON (HTTP ${d.status}${h}): ${_.slice(0,800)}`)}if(!d.ok){console.error("[sandbox-fs-hooks] Non-OK response runner=%s path=%s status=%d body=%s",i.kind,t,d.status,_.slice(0,2000));let h=v.error??`Daemon ${t} failed (${d.status})`;if(d.status===404&&h==="sandbox not found")throw new cz(Error(h));throw Error(h)}return v}function Fjf(i){let u=[];for(let t of i.split(`
|
|
83298
83298
|
`)){if(!t)continue;let f=t.indexOf(":");if(f<0)continue;let l=t.indexOf(":",f+1);if(l<0)continue;let c=t.slice(0,f),E=Number.parseInt(t.slice(f+1,l),10);if(!Number.isFinite(E))continue;u.push({file:c,line:E,text:t.slice(l+1)})}return u}function cfu(i,u){let{ensureHandle:t,invalidateHandle:f,canAutoRestart:l}=u,c=($)=>{let w=$ instanceof Error?$.message:String($);return l?`Sandbox is unreachable and auto-restart did not recover it: ${w}`:"The sandbox is not running. Ask the user to start it by clicking the server button (left side of the header bar)."},E=async($,w,d="POST",_)=>{let v=async(D)=>yjf(i,D,$,w,d,{signal:_,timeoutMs:u.opTimeoutMs}),h=await t();try{return await v(h)}catch(D){if(!(D instanceof cz)||!l){if(D instanceof cz)throw Error(c(D.cause??D));throw D}console.warn(`[sandbox-fs-hooks] daemon ${$} unreachable \u2014 reaping sandbox and retrying once`,D.cause??D);try{await f()}catch(O){console.warn("[sandbox-fs-hooks] invalidateHandle failed",O)}let g;try{g=await t()}catch(O){throw Error(`Failed to restart sandbox: ${O instanceof Error?O.message:String(O)}`)}try{return await v(g)}catch(O){if(O instanceof cz)throw Error(c(O.cause??O));throw O}}};return{onProxy:($,w,d,_)=>E($,w,d,_),onRead:async($)=>{return(await E("/_sandbox/read",{path:$})).content},onWrite:async($,w)=>{await E("/_sandbox/write",{path:$,content:w})},onEdit:async($,w)=>{for(let d of w)await E("/_sandbox/edit",{path:$,old_string:d.oldText,new_string:d.newText,replace_all:d.replaceAll===!0})},onBash:async($,w)=>{return await E("/_sandbox/bash",{command:$,...w?.cwd!==void 0?{cwd:w.cwd}:{},...w?.timeoutMs!==void 0?{timeout:w.timeoutMs}:{}})},onGlob:async($)=>{return(await E("/_sandbox/glob",{pattern:$})).files},onGrep:async($,w)=>{let d=await E("/_sandbox/grep",{pattern:$,output_mode:"content",...w?.path!==void 0?{path:w.path}:{},...w?.glob!==void 0?{glob:w.glob}:{},...w?.caseInsensitive?{ignore_case:!0}:{}});return Fjf(d.results)}}}var cz;var JF0=N(()=>{cz=class cz extends Error{code="DAEMON_UNREACHABLE";constructor(i){super(i instanceof Error?i.message:"Daemon proxy failed");if(i instanceof Error)this.cause=i}}});function Tjf(i){return i==="agent-sandbox"||i==="cluster"||i==="user-desktop"}function Z8(){let i=process.env.STUDIO_SANDBOX_PROVIDER,u=i&&i.length>0?i:"user-desktop";if(!Tjf(u))throw Error(`Unknown STUDIO_SANDBOX_PROVIDER="${i}" \u2014 expected "agent-sandbox", "cluster", or "user-desktop".`);return N8(u)}var v3=N(()=>{Xdi();Xdi();Ydi();JF0()});function Wdi(i){return N8(i.sandboxProviderKind)==="user-desktop"?{sandboxProviderKind:"user-desktop"}:{sandboxProviderKind:"agent-sandbox"}}var Efu=N(()=>{v3()});function $fu(i){let u=new AbortController,t=Ez.get(i);if(!t)t=new Set,Ez.set(i,t);return t.add(u),u}function wfu(i,u){let t=Ez.get(i);if(!t)return;if(t.delete(u),t.size===0)Ez.delete(i)}function Ldi(i){let u=Ez.get(i);if(!u)return;for(let t of u)t.abort();Ez.delete(i)}var Ez;var Qdi=N(()=>{Ez=new Map});function jc(i){return`mesh-storage://${i}`}function Oa(i){if(!i.startsWith("mesh-storage://"))return null;return i.slice(15)}function dfu(){return/mesh-storage:\/\/([^\s"'<>[\]]+)/g}var WB="https://chrome.browserless.io",LB=32000;import{z as ih}from"zod";function zdi(i){if(i>KF0){let u=(i/1048576).toFixed(1),t=KF0/1048576;throw Error(`Reference image too large: ${u} MB (max ${t} MB). Use a smaller image.`)}}function njf(i,u){let t;try{t=new URL(i)}catch{throw Error("Invalid image URL")}if(t.protocol!=="https:"&&!(u&&t.protocol==="http:"))throw Error("Image URL must use HTTPS");for(let f of Ajf)if(f.test(t.hostname))throw Error("Image URL must not point to a private network address")}async function SF0(i,u){if(!u?.getBytes)throw Error("Object storage read is not available");if(u.head){let{size:f}=await u.head(i);zdi(f)}let t=await u.getBytes(i);return zdi(t.byteLength),t}async function Gjf(i,u){let t=Oa(i);if(t!==null)return SF0(t,u.objectStorage);let f=i.match(Ujf);if(f)return SF0(f[1],u.objectStorage);if(i.startsWith("data:")){let E=i.match(/^data:[^;]+;base64,(.+)$/s);if(!E)throw Error("Invalid data: URI");let $=Buffer.from(E[1],"base64");return zdi($.byteLength),$}njf(i,u.allowHttpExternalUrls===!0);let l=await fetch(i,{signal:u.abortSignal});if(!l.ok)throw Error(`Failed to fetch image from ${i}: ${l.status}`);let c=new Uint8Array(await l.arrayBuffer());return zdi(c.byteLength),c}async function _fu(i,u){let{provider:t,imageModelInfo:f,objectStorage:l}=u,c=t.aiSdk.imageModel(f.id),E=i.referenceImages&&i.referenceImages.length>0,$=E?await Promise.all(i.referenceImages.map((D)=>{let g=D.uri??D.url;if(!g)throw Error("Reference image missing uri");return Gjf(g,u)})):[],w=E?{text:i.prompt,images:$}:i.prompt,d=await Tdi({model:c,prompt:w,n:i.n??1,...i.aspectRatio?{aspectRatio:i.aspectRatio}:{},...u.abortSignal?{abortSignal:u.abortSignal}:{}});if(!l)throw Error("Object storage is unavailable; cannot persist the generated image.");let _=i.n??1,v=d.images.length>_?d.images.slice(-_):d.images;return{success:!0,images:await Promise.all(v.map(async(D)=>{let g=D.mediaType??"image/png",O=g.split("/")[1]??"png",Z=`generated-images/${crypto.randomUUID()}.${O}`,B=Uint8Array.from(atob(D.base64),(y)=>y.charCodeAt(0));return await l.put(Z,B,{contentType:g}),{uri:jc(Z),mediaType:g}})),prompt:i.prompt,model:f.id,usage:{inputTokens:d.usage.inputTokens??0,outputTokens:d.usage.outputTokens??0},usedReferenceImages:E?i.referenceImages.length:0}}function Hdi(i,u){return lt({description:"Generate an image from a text description, optionally using reference images. Use this when the user asks you to create, generate, draw, or design an image. If the user has attached images and wants to modify or use them as a reference, pass them as referenceImages. "+"The image is displayed automatically by the UI \u2014 do NOT include image URLs or markdown images in your response.",inputSchema:Ni(QB),execute:async(t,f)=>{let l=performance.now();try{return await _fu(t,u)}finally{i.write({type:"data-tool-metadata",id:f.toolCallId,data:{latencyMs:performance.now()-l}})}}})}function bdi(i,u){let{objectStorage:t,toolOutputMap:f,pendingImages:l}=u;return lt({description:"Take a screenshot of a web page. Use this when you need to visually see a website, check its layout, verify a deployment, or inspect a page's appearance. "+"The screenshot is displayed automatically by the UI \u2014 do NOT include image URLs or markdown images in your response.",inputSchema:Ni(Ijf),execute:async(c,E)=>{let $=performance.now();try{let w=u.browserlessToken??process.env.BROWSERLESS_TOKEN;if(!w)return{success:!1,error:"BROWSERLESS_TOKEN is not configured."};let d=await fetch(`${WB}/screenshot?token=${encodeURIComponent(w)}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({url:c.url,options:{fullPage:c.fullPage??!1,type:"jpeg",quality:xjf},viewport:Pjf})});if(!d.ok){let O=await d.text().catch(()=>"Unknown error");return{success:!1,error:`Browserless screenshot failed (${d.status}): ${O}`,url:c.url}}let _=new Uint8Array(await d.arrayBuffer()),v="image/jpeg",h=`screenshots/${crypto.randomUUID()}.jpg`,D,g=null;if(t)try{await t.put(h,_,{contentType:v}),D=jc(h),g=await t.presignedGetUrl?.(h,600)??null}catch(O){console.error("[take-screenshot] Failed to upload, using data: URI fallback",O),D=`data:${v};base64,${Buffer.from(_).toString("base64")}`}else D=`data:${v};base64,${Buffer.from(_).toString("base64")}`;if(!g)g=D.startsWith("data:")?D:`data:${v};base64,${Buffer.from(_).toString("base64")}`;return l.push({url:g,mediaType:v,pageUrl:c.url}),f.set(E.toolCallId,`Screenshot of ${c.url} stored at ${D}`),{success:!0,image:{uri:D,mediaType:v},url:c.url}}finally{i.write({type:"data-tool-metadata",id:E.toolCallId,data:{latencyMs:performance.now()-$}})}},toModelOutput({output:c}){if(!c.success)return{type:"text",value:c.error??"Screenshot failed"};return{type:"text",value:`Screenshot of ${c.url} captured successfully. The image is attached below.`}}})}var Ujf,KF0=20971520,Pjf,xjf=80,QB,Ijf,Ajf;var zB=N(()=>{Cf();Cf();Ujf=/\/api\/[^/]+\/files\/([^?#]+)/,Pjf={width:1280,height:800},QB=ih.object({prompt:ih.string().max(1e4).describe("Detailed description of the image to generate. Be specific about style, composition, colors, and subject matter."),referenceImages:ih.array(ih.object({uri:ih.string().describe("URI of the reference image (e.g. mesh-storage://generated-images/uuid.png).")})).optional().describe("Reference images to use as input for image-to-image generation. Pass the URI of any image from the conversation (uploaded files, previously generated images, etc.) when the user wants to modify, transform, or use an existing image as a starting point."),aspectRatio:ih.enum(["1:1","16:9","9:16","4:3","3:4","3:2","2:3"]).optional().describe("Aspect ratio for the generated image. Defaults to 1:1."),n:ih.number().int().min(1).max(4).optional().describe("Number of images to generate. Defaults to 1.")}),Ijf=ih.object({url:ih.string().url().describe("The URL of the web page to screenshot."),fullPage:ih.boolean().optional().describe("When true, captures the full scrollable page instead of just the viewport. Defaults to false.")}),Ajf=[/^127\./,/^10\./,/^172\.(1[6-9]|2\d|3[01])\./,/^192\.168\./,/^169\.254\./,/^0\./,/^\[::1\]$/,/^\[fd/,/^\[fe80:/,/^\[::ffff:/i,/^localhost$/i]});function h3(i){if(i instanceof Error)return i.message;if(typeof i==="object"&&i!==null)try{return JSON.stringify(i)}catch{return"[unserializable object]"}return String(i)}function YF0(i){let t=i.split(/\.\s+/).filter((l)=>!/https?:\/\//i.test(l)&&!/openrouter/i.test(l));if(t.length===0)return i;let f=t.join(". ").trim();return f.endsWith(".")?f:`${f}.`}function WF0(i){if(i instanceof Error)return{message:i.message,statusCode:i.statusCode};if(typeof i==="object"&&i!==null){let u=i,t=typeof u.message==="string"?u.message:h3(i),f=typeof u.statusCode==="number"?u.statusCode:typeof u.code==="number"?u.code:void 0;return{message:t,statusCode:f}}return{message:String(i)}}function Rdi(i){let{message:u,statusCode:t}=WF0(i),f=u.toLowerCase();return t===402||f.includes("credit")||f.includes("insufficient funds")||f.includes("insufficient balance")||f.includes("billing")||f.includes("quota exceeded")||f.includes("key limit")||f.includes("payment required")}function LF0(i){let{message:u}=WF0(i);if(Rdi(i))return`[CREDITS] ${YF0(u)}`;return YF0(u)}function QF0(i){let u=i.indexOf(vfu);if(u===-1)return{baseId:i,signature:null};return{baseId:i.slice(0,u),signature:i.slice(u+vfu.length)}}function kjf(i,u){return`${i}${vfu}${u}`}function jjf(i,u){return{...i,google:{...i?.google??{},thoughtSignature:u}}}function Xjf(i){let u=i?.google?.thoughtSignature;return typeof u==="string"?u:null}function zF0(i){let{baseId:u,signature:t}=QF0(i.toolCallId);if(t===null)return i;return{...i,toolCallId:u,providerMetadata:jjf(i.providerMetadata,t)}}function Jjf(i){switch(i.type){case"tool-input-start":case"tool-input-delta":case"tool-input-end":{let{baseId:u,signature:t}=QF0(i.id);return t===null?i:{...i,id:u}}case"tool-call":return zF0(i);default:return i}}function Kjf(i){let u=new Map;for(let f of i.prompt){if(f.role!=="assistant")continue;for(let l of f.content){if(l.type!=="tool-call")continue;let c=Xjf(l.providerOptions);if(c)u.set(l.toolCallId,c)}}if(u.size===0)return i;let t=i.prompt.map((f)=>{if(f.role!=="assistant"&&f.role!=="tool")return f;let l=f.content.map((c)=>{if(c.type!=="tool-call"&&c.type!=="tool-result")return c;let E=u.get(c.toolCallId);return E?{...c,toolCallId:kjf(c.toolCallId,E)}:c});return{...f,content:l}});return{...i,prompt:t}}function Sjf(){return{specificationVersion:"v3",transformParams:async({params:i})=>Kjf(i),wrapStream:async({doStream:i})=>{let{stream:u,...t}=await i();return{...t,stream:u.pipeThrough(new TransformStream({transform(f,l){l.enqueue(Jjf(f))}}))}},wrapGenerate:async({doGenerate:i})=>{let u=await i(),t=u.content.map((f)=>f.type==="tool-call"?zF0(f):f);return{...u,content:t}}}}function HF0(i){return YB({model:i,middleware:Sjf()})}var vfu="__thought__";var bF0=N(()=>{Cf()});function Wjf(i,u){return YB({model:i,middleware:{specificationVersion:"v3",wrapStream:async({doStream:f,params:l})=>{try{return await f()}catch(c){if(!Rdi(c))throw c;return u.doStream(l)}},wrapGenerate:async({doGenerate:f,params:l})=>{try{return await f()}catch(c){if(!Rdi(c))throw c;return u.doGenerate(l)}}}})}function Cdi(i,u){let t={};if(u.capabilities?.reasoning!==!1)t.reasoning={enabled:!0,effort:"medium"};let f=i.info?.id==="openrouter"&&u.id!==hfu;if(f)t.models=[u.id,hfu];let l=($,w)=>w&&Object.keys(w).length>0?i.aiSdk.languageModel($,w):i.aiSdk.languageModel($),c=l(u.id,t),E=f?Wjf(c,l(hfu)):c;return i.info?.id&&Yjf.has(i.info.id)?HF0(E):E}var hfu="openrouter/free",Yjf;var Dfu=N(()=>{Cf();bF0();Yjf=new Set(["openai-compatible","openrouter","deco","llmapi"])});function RF0(i,u){let t=i?.maxOutputTokens??32768,f=i?.contextWindow;if(!f)return t;let l=f-u*2;return Math.max(1024,Math.min(t,l))}var Mdi=300000;import{z as gfu}from"zod";function qdi(i){let{toolOutputMap:u}=i;return lt({description:"Filter a tool output that was too large to display inline. Returns all lines matching the given regular expression pattern (grep-like). You may call this tool multiple times with different patterns to extract different pieces of information.",inputExamples:[{input:{tool_call_id:"id_1",pattern:"error|warning"}},{input:{tool_call_id:"id_2",pattern:'"status":\\s*"failed"'}}],inputSchema:Ni(gfu.object({tool_call_id:gfu.string(),pattern:gfu.string().min(1).describe("Regular expression pattern to filter tool output lines. Returns all matching lines.")})),execute:async({tool_call_id:t,pattern:f})=>{if(!u.has(t))return{result:`Tool output not found for tool call id: ${t}. Available ids: ${[...u.keys()].join(", ")||"(none)"}`,matchCount:0,totalLines:0};let l=u.get(t),c;try{c=new RegExp(f)}catch{return{result:`Invalid regex pattern: ${f}`,matchCount:0,totalLines:0}}let E=l.split(`
|
|
83299
83299
|
`),$=E.filter((_)=>c.test(_)),w=$.join(`
|