decocms 4.278.4 → 4.278.5
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-DfFE6Es-.js → AlertCircle-d0P556G4.js} +1 -1
- package/dist/client/assets/{AreaChart-CANmdxCS.js → AreaChart-CzFUG37n.js} +1 -1
- package/dist/client/assets/{ArrowLeft-C33fglFn.js → ArrowLeft-DDNXnaLT.js} +1 -1
- package/dist/client/assets/{ArrowUp-COKpRPBd.js → ArrowUp-D5yytQnx.js} +1 -1
- package/dist/client/assets/{Check-CCmZiW5p.js → Check-DUrfO6FE.js} +1 -1
- package/dist/client/assets/{CheckCircle-kztBIWXX.js → CheckCircle-p4iGNxQ2.js} +1 -1
- package/dist/client/assets/{ChevronDown-Cxn7ZtQ2.js → ChevronDown-Ca5QZ0Qx.js} +1 -1
- package/dist/client/assets/{ChevronRight-DOQXpaBD.js → ChevronRight-CX7GjCcR.js} +1 -1
- package/dist/client/assets/{ChevronSelectorVertical-ZBkPJ7jk.js → ChevronSelectorVertical-DwrTJdKd.js} +1 -1
- package/dist/client/assets/{ChevronUp-CqFOoxLh.js → ChevronUp-D5MwLH5U.js} +1 -1
- package/dist/client/assets/{Copy01-B0F8k-kQ.js → Copy01-Bng_taT0.js} +1 -1
- package/dist/client/assets/{CreditCard01-CSvxwGhV.js → CreditCard01-SOyh1jvm.js} +1 -1
- package/dist/client/assets/{DotsVertical-BexGJ7nH.js → DotsVertical-Czk0fAw4.js} +1 -1
- package/dist/client/assets/{Download01-D3_xFR2_.js → Download01-Bvs1EP6j.js} +1 -1
- package/dist/client/assets/{Eye-_sdkp0QD.js → Eye-F1cmz6fm.js} +1 -1
- package/dist/client/assets/{FilterLines-kwG3Ja0u.js → FilterLines-CBZHGpbH.js} +1 -1
- package/dist/client/assets/{Globe01-L38zDWSb.js → Globe01-DvOQlXmP.js} +1 -1
- package/dist/client/assets/{Globe04-CDwgHLwb.js → Globe04-WHCKW_N4.js} +1 -1
- package/dist/client/assets/{HardDrive-DHvu1c5Z.js → HardDrive-B2cwYBPL.js} +1 -1
- package/dist/client/assets/{Key01-3oYr8UFi.js → Key01-D7P02SKe.js} +1 -1
- package/dist/client/assets/{LinkExternal01-CN9IXAcj.js → LinkExternal01-XDCSPquq.js} +1 -1
- package/dist/client/assets/{LockUnlocked01-vXo5w-gx.js → LockUnlocked01-BeLyGjsB.js} +1 -1
- package/dist/client/assets/{LogOut01-B3b6usop.js → LogOut01-CiiRqEra.js} +1 -1
- package/dist/client/assets/{Monitor01-BGlVg-0A.js → Monitor01-ClVpCjIs.js} +1 -1
- package/dist/client/assets/{Palette-DsZJkD5K.js → Palette-GLQj5meX.js} +1 -1
- package/dist/client/assets/{Play-DsASfwqd.js → Play-DrJd9Kpw.js} +1 -1
- package/dist/client/assets/{Plus-DvdXY0Is.js → Plus-BsbFC_BU.js} +1 -1
- package/dist/client/assets/{SearchLg-BnZm-ZF2.js → SearchLg-zA4IjLLq.js} +1 -1
- package/dist/client/assets/{SearchMd-CITZ7cFI.js → SearchMd-DhRh2OzZ.js} +1 -1
- package/dist/client/assets/{Settings02-AcY5OeSR.js → Settings02-DuBcOJBY.js} +1 -1
- package/dist/client/assets/{Share07-DKdlZUCJ.js → Share07-DXzWJkiC.js} +1 -1
- package/dist/client/assets/{Shield01-CNfl0Wvq.js → Shield01-CqhKYZ2p.js} +1 -1
- package/dist/client/assets/{Stars01-Cxls6RX9.js → Stars01-BR0HBSL0.js} +1 -1
- package/dist/client/assets/{Stars02-COEwl97b.js → Stars02-DMQ7oAZR.js} +1 -1
- package/dist/client/assets/{Sun-YYd6VxOf.js → Sun-DS7wVCkS.js} +1 -1
- package/dist/client/assets/{SwitchHorizontal01-BhPVnkd8.js → SwitchHorizontal01-Benj6KHo.js} +1 -1
- package/dist/client/assets/{Tool01-DFHThZZd.js → Tool01-C4AchPuG.js} +1 -1
- package/dist/client/assets/{Tool02-89yKiQv8.js → Tool02-B8DcSwk7.js} +1 -1
- package/dist/client/assets/{Trash01-DMH00izD.js → Trash01-DwOegRUA.js} +1 -1
- package/dist/client/assets/{TrendUp01-Bb53eubn.js → TrendUp01-Iyhwalyr.js} +1 -1
- package/dist/client/assets/{Upload01-B9VJ_5xh.js → Upload01-C6xH5Mi_.js} +1 -1
- package/dist/client/assets/{User01-B_Pu52Lk.js → User01-NFHqLK_9.js} +1 -1
- package/dist/client/assets/{UserSquare-TgXepBVi.js → UserSquare-BD41RNT2.js} +1 -1
- package/dist/client/assets/{Users01-Tf1C8K9i.js → Users01-BTyH798v.js} +1 -1
- package/dist/client/assets/{Users03-Dv5XG-lH.js → Users03-BXhMQVM_.js} +1 -1
- package/dist/client/assets/{XCircle-Ck08Ifel.js → XCircle-B44kFYT2.js} +1 -1
- package/dist/client/assets/{XClose-h9SGAJV3.js → XClose-202c-jez.js} +1 -1
- package/dist/client/assets/{YAxis-OgkqzVxM.js → YAxis-Bes8xG-r.js} +1 -1
- package/dist/client/assets/{Zap-CZUbPQtW.js → Zap-BH3s015k.js} +1 -1
- package/dist/client/assets/{ZapSquare-CxnAhqdS.js → ZapSquare-4HqzTr7W.js} +1 -1
- package/dist/client/assets/{access-gate-DJbHHt85.js → access-gate-DrUTEDMQ.js} +1 -1
- package/dist/client/assets/{agent-icon-GXppXIpj.js → agent-icon-CtfANkPW.js} +1 -1
- package/dist/client/assets/{agents-list-CxtrMCRM.js → agents-list-HW9yWL5x.js} +1 -1
- package/dist/client/assets/{ai-providers-BLlJ3RBV.js → ai-providers-vhavjrTh.js} +1 -1
- package/dist/client/assets/{alert-dialog-CZDeFSfw.js → alert-dialog-mcii_JAT.js} +1 -1
- package/dist/client/assets/{alert-BzrIjl9L.js → alert-t-AYH28J.js} +1 -1
- package/dist/client/assets/{api-keys-IFsRmnJa.js → api-keys-ekScLupv.js} +1 -1
- package/dist/client/assets/{app-editor-DYYW7c8Q.js → app-editor-Qe_f1ha_.js} +1 -1
- package/dist/client/assets/{auth-P7g2VajE.js → auth-BT-YETux.js} +1 -1
- package/dist/client/assets/{auth-catchall-Dng6yJhn.js → auth-catchall-BHCq0ZXv.js} +1 -1
- package/dist/client/assets/{auth-entry-DkX3iPX4.js → auth-entry-kDSYLdsT.js} +1 -1
- package/dist/client/assets/{auth-split-layout-CIuNnohI.js → auth-split-layout-DfRfcWDv.js} +1 -1
- package/dist/client/assets/{authenticate-and-persist-oauth-Dm6WETsF.js → authenticate-and-persist-oauth-Db2zgJ7g.js} +1 -1
- package/dist/client/assets/{automation-list-row-CmtR0qRT.js → automation-list-row-CuDR--Ol.js} +1 -1
- package/dist/client/assets/{automation-runs-CkJnXK_o.js → automation-runs-FKt7ra6_.js} +1 -1
- package/dist/client/assets/{automations-DJzYvK7w.js → automations-B-VJIxpW.js} +1 -1
- package/dist/client/assets/{avatar-DXVR4jwZ.js → avatar-EGd_BabQ.js} +1 -1
- package/dist/client/assets/{badge-B74tx_TY.js → badge-DkRXaIGM.js} +1 -1
- package/dist/client/assets/{block-document-DF32ZmZA.js → block-document-Bav54uy7.js} +1 -1
- package/dist/client/assets/{buckets-B1II4uWc.js → buckets-C-7NzwnE.js} +1 -1
- package/dist/client/assets/{bulk-category-panel-UPMkMrXw.js → bulk-category-panel-D4uVMP8J.js} +1 -1
- package/dist/client/assets/{capability-load-error--Pr_rF_i.js → capability-load-error-BO003eMo.js} +1 -1
- package/dist/client/assets/{cards-DO_SLrNr.js → cards-DfCm8Dfq.js} +1 -1
- package/dist/client/assets/{category-editor-lzq3jjK7.js → category-editor-DyRfQS1c.js} +1 -1
- package/dist/client/assets/{chart-Cnnt7O9X.js → chart-CamCfGxe.js} +1 -1
- package/dist/client/assets/{chat-context-amWbuNW6.js → chat-context-GMK3XW6m.js} +1 -1
- package/dist/client/assets/{checkbox-BXvFTMpY.js → checkbox-Dqullfmc.js} +1 -1
- package/dist/client/assets/{choose-editor-D2XuoPft.js → choose-editor-Ddtb9j1h.js} +1 -1
- package/dist/client/assets/{cli-auth-success-Ca7XJoJf.js → cli-auth-success-D65Qs0yM.js} +1 -1
- package/dist/client/assets/{collection-detail-CWYGGuoX.js → collection-detail-BQEcYUTT.js} +1 -1
- package/dist/client/assets/{collection-display-button-prsrGFYG.js → collection-display-button-BRiaj2KT.js} +1 -1
- package/dist/client/assets/{collection-search-DWnHRx3B.js → collection-search-BE731Jl8.js} +1 -1
- package/dist/client/assets/{collection-table-wrapper-CAo12qJ2.js → collection-table-wrapper-BZVkqkle.js} +1 -1
- package/dist/client/assets/{collection-tabs-Bndu1d5Z.js → collection-tabs-DnS-jbie.js} +1 -1
- package/dist/client/assets/{command-4Vd-P348.js → command-BEan4oyi.js} +1 -1
- package/dist/client/assets/{commerce-onboarding-axAYbTFw.js → commerce-onboarding-Bg333p8l.js} +1 -1
- package/dist/client/assets/{connect-CMe3fw3z.js → connect-kFZ4uBEc.js} +1 -1
- package/dist/client/assets/{connection-D327p6nq.js → connection-D7tuzhD7.js} +1 -1
- package/dist/client/assets/{connection-card-CvzgfzXe.js → connection-card-B9aaxsO5.js} +1 -1
- package/dist/client/assets/{connection-detail-gb7PfuND.js → connection-detail-DVkta_Og.js} +1 -1
- package/dist/client/assets/{connection-form-helpers-_2vKVQBz.js → connection-form-helpers-DU9iCQsl.js} +1 -1
- package/dist/client/assets/{connections-CI97F2dz.js → connections-CKhvlJY_.js} +1 -1
- package/dist/client/assets/{decopilot-sse-pool-D0iaAH1L.js → decopilot-sse-pool-P49z94jh.js} +1 -1
- package/dist/client/assets/{dialog-BkipwoDS.js → dialog-C9AMpg31.js} +1 -1
- package/dist/client/assets/{domain-settings-CZQBprz1.js → domain-settings-B79wePW4.js} +1 -1
- package/dist/client/assets/{drawer-Cxn-9hNu.js → drawer-CKXIxBTF.js} +1 -1
- package/dist/client/assets/{dropdown-menu-DH3vTkpv.js → dropdown-menu-BR7hJVus.js} +1 -1
- package/dist/client/assets/{empty-state-D4quvhvm.js → empty-state-CDOnlLRy.js} +1 -1
- package/dist/client/assets/{extract-connection-data-D0j-7nxe.js → extract-connection-data-CZxz_z27.js} +1 -1
- package/dist/client/assets/{file-explorer-nuwqZUdL.js → file-explorer-BMet4mDI.js} +1 -1
- package/dist/client/assets/{file-type-icon-BWGCDFeS.js → file-type-icon-DR7LmcnJ.js} +1 -1
- package/dist/client/assets/{form-_SoAxhrI.js → form-C9rMFmjT.js} +1 -1
- package/dist/client/assets/{general-B5f-fdZQ.js → general-D8lPZiYi.js} +1 -1
- package/dist/client/assets/{github-repo-picker-DDKOPJhQ.js → github-repo-picker-vR00RnJu.js} +1 -1
- package/dist/client/assets/{hooks-C3cCIlD5.js → hooks-CIDnHA2F.js} +2 -2
- package/dist/client/assets/{index-BIhC4I0A.js → index-Bihs7sb-.js} +1 -1
- package/dist/client/assets/{index-i7BgmHnf.js → index-C3enf8Yg.js} +3 -3
- package/dist/client/assets/{index-zxFAA-g1.js → index-COJmK30a.js} +1 -1
- package/dist/client/assets/{index-MSNGIbVC.js → index-DEKGnAdl.js} +1 -1
- package/dist/client/assets/{index-D8hvTP3q.js → index-DTMIxvlv.js} +1 -1
- package/dist/client/assets/{index-BSvH6_Zl.js → index-DTbaOulI.js} +1 -1
- package/dist/client/assets/{index-CYg12GoM.js → index-Da016G34.js} +5 -5
- package/dist/client/assets/{index-B_kYA2wU.js → index-DajWNr61.js} +1 -1
- package/dist/client/assets/{index-BYoQ22B6.js → index-DfhAtsLv.js} +1 -1
- package/dist/client/assets/{index-ehuKzYr7.js → index-SdJngfPO.js} +1 -1
- package/dist/client/assets/{index-redirect-DwMX97z3.js → index-redirect-D3ygKGiU.js} +1 -1
- package/dist/client/assets/{infra-billing-Deo8kk43.js → infra-billing-DnVemwh3.js} +1 -1
- package/dist/client/assets/{input-DKbTDQqT.js → input-MEzrwBhL.js} +1 -1
- package/dist/client/assets/{integration-icon-DvK0mMUg.js → integration-icon-CNwpmqbh.js} +1 -1
- package/dist/client/assets/{invite-member-dialog-DH7zOyoe.js → invite-member-dialog-CrYZSk7S.js} +1 -1
- package/dist/client/assets/{label-3gJJeKHL.js → label-B4588N4-.js} +1 -1
- package/dist/client/assets/{layout-COPq4v3J.js → layout-43NkWPEr.js} +1 -1
- package/dist/client/assets/{login-DsWiWEUs.js → login-DZ6VvblM.js} +1 -1
- package/dist/client/assets/{mcp-oauth-BALc9IF5.js → mcp-oauth-BPKDNwe_.js} +1 -1
- package/dist/client/assets/{members-ekStfRi1.js → members-D0rmMUys.js} +1 -1
- package/dist/client/assets/{monaco-editor-BVGilmKC.js → monaco-editor-CjB2yPh0.js} +1 -1
- package/dist/client/assets/{monitoring-stats-row-DVMqyhPq.js → monitoring-stats-row-ChAOh4sr.js} +1 -1
- package/dist/client/assets/{multi-select-iU5A9RE-.js → multi-select-DudiQXyh.js} +1 -1
- package/dist/client/assets/{oauth-callback-CuJYH9k0.js → oauth-callback-CB7_3iCZ.js} +1 -1
- package/dist/client/assets/{oauth-callback-ai-provider-hOBcM0sm.js → oauth-callback-ai-provider-7gJWI4N9.js} +1 -1
- package/dist/client/assets/{onboarding-BJQuJvBG.js → onboarding-Db_z8fTJ.js} +1 -1
- package/dist/client/assets/{org-layout-BBgvIhb1.js → org-layout-CpT9w52w.js} +1 -1
- package/dist/client/assets/{organization-choice-B3t24x7j.js → organization-choice-DEuf-VR4.js} +1 -1
- package/dist/client/assets/{orgs-yLSpSsOO.js → orgs-7TBr4Hgn.js} +1 -1
- package/dist/client/assets/{page-seo-form-BquOE1TW.js → page-seo-form-DkZEgvnX.js} +1 -1
- package/dist/client/assets/{popover-Ctud97oP.js → popover-Bb9Ij_pk.js} +1 -1
- package/dist/client/assets/{post-calendar-xhKrZ_eo.js → post-calendar-De_J2x_K.js} +1 -1
- package/dist/client/assets/{post-editor-C9rG6mtk.js → post-editor-ZhDEOe1n.js} +1 -1
- package/dist/client/assets/{primitives-nN-8Ohhy.js → primitives-DjHJt8Ng.js} +1 -1
- package/dist/client/assets/{profile-DxYq2DLi.js → profile-CyB6R9R3.js} +1 -1
- package/dist/client/assets/{project-app-view-Ivm1QSCM.js → project-app-view-xZOMG_8O.js} +1 -1
- package/dist/client/assets/{prompts-DLjEcr22.js → prompts-eHDkwdjp.js} +1 -1
- package/dist/client/assets/record-editor-CrCkHbb0.js +1 -0
- package/dist/client/assets/{redirect-editor-ryRJu8Xm.js → redirect-editor-B7CZ5oip.js} +1 -1
- package/dist/client/assets/registry-CU9PxVCM.js +2 -0
- package/dist/client/assets/{registry-layout-C5DROEYW.js → registry-layout-B0JNwEwR.js} +1 -1
- package/dist/client/assets/{reports-kFnaqTk2.js → reports-BPrJ0ioa.js} +1 -1
- package/dist/client/assets/{require-capability-W_3o0pop.js → require-capability-BaerWfRL.js} +1 -1
- package/dist/client/assets/{required-auth-layout-CQAVlhpd.js → required-auth-layout-B4OUDR9C.js} +1 -1
- package/dist/client/assets/{reset-password-Ckr4fIsZ.js → reset-password-Hr0bE5yK.js} +1 -1
- package/dist/client/assets/{review-settings-BCFJtG9L.js → review-settings-B6mSpO2L.js} +1 -1
- package/dist/client/assets/{roles-CLHkV_dR.js → roles-l1qj4y9H.js} +1 -1
- package/dist/client/assets/{search-input-CLQjsjgz.js → search-input-C-V9DfYK.js} +1 -1
- package/dist/client/assets/{secrets-xQTLTywE.js → secrets-BqWMsjf8.js} +1 -1
- package/dist/client/assets/{sections-editor-D_v4Zx41.js → sections-editor-Djpe7K_r.js} +1 -1
- package/dist/client/assets/{select-DZ5jRX2m.js → select-DKcLm0TE.js} +1 -1
- package/dist/client/assets/{select-model-VtbPLBn3.js → select-model-Cbv72OmQ.js} +1 -1
- package/dist/client/assets/{self-tool-result-DDO4JkD7.js → self-tool-result-OXwsoTv0.js} +1 -1
- package/dist/client/assets/{seo-editor-B9O-e5Jr.js → seo-editor-n6TusAOR.js} +1 -1
- package/dist/client/assets/{settings-layout-DJklyLwN.js → settings-layout-C0ZJ6296.js} +1 -1
- package/dist/client/assets/{shell-controls-JQQrYDZJ.js → shell-controls-BTijWfhD.js} +1 -1
- package/dist/client/assets/{shell-layout-BzTXHl4r.js → shell-layout-D9mdkJOL.js} +1 -1
- package/dist/client/assets/{spinner-C8vMfHgd.js → spinner-CQ6MXl7M.js} +1 -1
- package/dist/client/assets/{sso-D60o5Cz2.js → sso-B-fedkqf.js} +1 -1
- package/dist/client/assets/{store-AEPjfGWn.js → store-Cq_qRMgr.js} +1 -1
- package/dist/client/assets/store-registry-DLTQIJRj.js +2 -0
- package/dist/client/assets/{switch-DdNnAMKn.js → switch-CarPOfHW.js} +1 -1
- package/dist/client/assets/{synced-repos-Dt7bkh8a.js → synced-repos-dF29JHS5.js} +1 -1
- package/dist/client/assets/{tab-id-Cx8DDoGD.js → tab-id-B1ryM3J1.js} +1 -1
- package/dist/client/assets/{table-BgZC7ZiL.js → table-MxDBt0Tl.js} +1 -1
- package/dist/client/assets/{tabs-YQ2Im0eZ.js → tabs-DxAX0PCA.js} +1 -1
- package/dist/client/assets/{tasks-DrjU4G4y.js → tasks-BptQr61J.js} +1 -1
- package/dist/client/assets/{textarea-DX1uNZAA.js → textarea-TwEc45VN.js} +1 -1
- package/dist/client/assets/{toggle-group-RUkZS1w5.js → toggle-group-ChcpYi9A.js} +1 -1
- package/dist/client/assets/{toolbar-DuEwfAg5.js → toolbar-CV9snPXz.js} +1 -1
- package/dist/client/assets/{track-DAMALRWq.js → track-CSCO_8QI.js} +1 -1
- package/dist/client/assets/{types-ywfblMhJ.js → types-BE5g4oCg.js} +1 -1
- package/dist/client/assets/{use-ai-providers-Bz5NIrnv.js → use-ai-providers-CDU63xLb.js} +1 -1
- package/dist/client/assets/{use-api-keys-wZxvCd_g.js → use-api-keys-BqFlBozZ.js} +1 -1
- package/dist/client/assets/{use-automations-ChRcQ8sJ.js → use-automations-Di8AwVje.js} +1 -1
- package/dist/client/assets/{use-autosave-CFDxCyAU.js → use-autosave-Cva5kIVm.js} +1 -1
- package/dist/client/assets/{use-clock-tick-uvIK9zxW.js → use-clock-tick-ia9gJzzX.js} +1 -1
- package/dist/client/assets/{use-commerce-diagnostic-DDxupUH-.js → use-commerce-diagnostic-iNeW7Lhs.js} +1 -1
- package/dist/client/assets/{use-connection-CqNwaqjB.js → use-connection-Bzl7mC0a.js} +1 -1
- package/dist/client/assets/{use-copy-C_ITP2w0.js → use-copy-DqTjs1wv.js} +1 -1
- package/dist/client/assets/{use-create-virtual-mcp-BPm-XtmL.js → use-create-virtual-mcp-DxudGwvw.js} +1 -1
- package/dist/client/assets/{use-debounced-autosave-t-AKKkL2.js → use-debounced-autosave-BGbJ6lix.js} +1 -1
- package/dist/client/assets/{use-debounced-value-B5i9a8MI.js → use-debounced-value-Bk0873vs.js} +1 -1
- package/dist/client/assets/{use-decopilot-events-BdjkPT5k.js → use-decopilot-events-BSYrw5J1.js} +1 -1
- package/dist/client/assets/{use-delete-connection-BxOF9ID5.js → use-delete-connection-C-es-l1K.js} +1 -1
- package/dist/client/assets/{use-deployment-admin-C8NV1uM5.js → use-deployment-admin-CZOxPgks.js} +1 -1
- package/dist/client/assets/{use-file-configs-DOVIMFy4.js → use-file-configs-CjoKSfYq.js} +1 -1
- package/dist/client/assets/{use-infinite-scroll-Dg7gJRtA.js → use-infinite-scroll-BBcy1SF5.js} +1 -1
- package/dist/client/assets/{use-join-requests-B8D-U_Ot.js → use-join-requests-7wy1fnsZ.js} +1 -1
- package/dist/client/assets/{use-mcp-auth-status-BZvnfUbh.js → use-mcp-auth-status-C8TN1TKE.js} +1 -1
- package/dist/client/assets/{use-mcp-client-COL3iztV.js → use-mcp-client-BLVHmSwJ.js} +1 -1
- package/dist/client/assets/{use-mcp-tools-DJkrd0uR.js → use-mcp-tools-LKZZrxUi.js} +1 -1
- package/dist/client/assets/{use-members-CAOHLini.js → use-members-B84JbtZ-.js} +1 -1
- package/dist/client/assets/{use-navigate-to-agent-DHPM9Tq5.js → use-navigate-to-agent-mZLxfM6e.js} +1 -1
- package/dist/client/assets/{use-org-auth-client-BbndTmRD.js → use-org-auth-client-D4mei6He.js} +1 -1
- package/dist/client/assets/{use-org-repo-syncs-Bgqc-76q.js → use-org-repo-syncs-Bfo1j01N.js} +1 -1
- package/dist/client/assets/{use-org-sso-BMLlHQBD.js → use-org-sso-CziVVdp_.js} +1 -1
- package/dist/client/assets/{use-organization-roles-CtsRD6rz.js → use-organization-roles-Ch72_FrE.js} +1 -1
- package/dist/client/assets/{use-organization-settings-DL1E01gZ.js → use-organization-settings-BvXc7O-R.js} +1 -1
- package/dist/client/assets/{use-registry-connections-BDAR63kI.js → use-registry-connections-KyWY2MCa.js} +1 -1
- package/dist/client/assets/{use-secrets-D6Vp_B1o.js → use-secrets-Dt8vHDh9.js} +1 -1
- package/dist/client/assets/{use-section-preview-base-CMEyAlnc.js → use-section-preview-base-C11l-Rjn.js} +1 -1
- package/dist/client/assets/{use-status-sounds-CNN3yY4g.js → use-status-sounds-DVVEVyLz.js} +1 -1
- package/dist/client/assets/{use-tags-D8LKu8OM.js → use-tags-DrT9mRvM.js} +1 -1
- package/dist/client/assets/{use-task-board-items-FayZqwaX.js → use-task-board-items-Dqpd0Nku.js} +1 -1
- package/dist/client/assets/{use-view-mode-iVndLiLY.js → use-view-mode-uGQVa15s.js} +1 -1
- package/dist/client/assets/{use-virtual-mcp-BXk0NorZ.js → use-virtual-mcp-CY5kjh9a.js} +1 -1
- package/dist/client/assets/useInfiniteQuery-DsZZ4Eti.js +1 -0
- package/dist/client/assets/useSuspenseInfiniteQuery-DJGvrRyT.js +1 -0
- package/dist/client/assets/{users-DbuIDSwW.js → users-B9RFyFRQ.js} +1 -1
- package/dist/client/assets/{variant-calendar-BPDGzK_d.js → variant-calendar--gumAysQ.js} +1 -1
- package/dist/client/assets/{view-mode-toggle-BARjyj4P.js → view-mode-toggle-DoVoKwkF.js} +1 -1
- package/dist/client/index.html +1 -1
- package/dist/server/cli.js +3 -3
- package/dist/server/server.js +3 -3
- package/package.json +1 -1
- package/dist/client/assets/record-editor-GJHq8lC-.js +0 -1
- package/dist/client/assets/registry-DjMX8Y5G.js +0 -2
- package/dist/client/assets/store-registry-BLx5WSem.js +0 -2
- package/dist/client/assets/useInfiniteQuery-CfIVv9W9.js +0 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-2aHmeoxo.js +0 -1
package/dist/server/cli.js
CHANGED
|
@@ -1441,7 +1441,7 @@ Usage: deco services <up|down|status>`),process.exit(1)}}var Lp1=L(()=>{xf()});f
|
|
|
1441
1441
|
`.execute($);if(Number(W.rows[0]?.cnt)===0){console.warn(`Failed to migrate ${J}/${K}, keeping in old table`);continue}}await Jy`
|
|
1442
1442
|
DELETE FROM kysely_migration WHERE name = ${X}
|
|
1443
1443
|
`.execute($)}}async function Za1($){await Pa8($),await Aa8($);let Z=new er1({db:$,provider:{getMigrations:()=>Promise.resolve(Ap0)}}),{error:X,results:Q}=await Z.migrateToLatest(),Y=0;if(Q?.forEach((G)=>{if(G.status==="Success")Y++;else if(G.status==="Error")console.error(`Failed to execute migration "${G.migrationName}"`)}),X)throw console.error("Failed to migrate"),console.error(X),X;return Y}async function Ta8($){let{keepOpen:Z=!1,database:X,skipBetterAuth:Q=!1}=$??{},Y="skipped";if(!Q&&!X)Y=await Il0();let G=X??Y8(),J=async()=>{if(!Z&&!X)await mB(G).catch((K)=>{console.warn("Warning: Error closing database:",K)})};try{let K=await Za1(G.db);return await J(),{betterAuth:Y,kysely:K}}catch(K){throw await J(),K}}async function Ra8(){let $=Y8(),Z=new er1({db:$.db,provider:{getMigrations:()=>Promise.resolve(Ap0)}}),{error:X,results:Q}=await Z.migrateDown();if(Q?.forEach((Y)=>{if(Y.status==="Success")console.log(`\u2705 Migration "${Y.migrationName}" rolled back successfully`);else if(Y.status==="Error")console.error(`\u274C Failed to rollback migration "${Y.migrationName}"`)}),X)throw console.error("Failed to rollback migration"),console.error(X),X}var Qa1=L(()=>{sr1();ql0();XX()});async function Q70($){let Z={...process.env},X=s$0($,Z);console.log(ww1(X.settings.encryptionKey));let Q=X.settings.betterAuthSecret||(X.settings.localMode?pn1(X.settings.dataDir):""),{ensureServices:Y}=await Promise.resolve().then(() => (FZ0(),HZ0)),{outputs:G,services:J}=await Y({home:X.settings.dataDir,externalDatabaseUrl:X.externalDatabaseUrl,externalNatsUrl:X.externalNatsUrl});if(!X.skipMigrations){let{migrateBetterAuth:W}=await Promise.resolve().then(() => (ql0(),tn1));await W(G.databaseUrl);let{createDatabase:H}=await Promise.resolve().then(() => (XX(),Fn1)),{migrateToLatest:F}=await Promise.resolve().then(() => (Qa1(),Xa1)),N=H(G.databaseUrl);await F({keepOpen:!0,database:N,skipBetterAuth:!0})}let K={...X.settings,betterAuthSecret:Q,databaseUrl:G.databaseUrl,natsUrls:G.natsUrls,...G.s3?{s3Endpoint:G.s3.endpoint,s3Bucket:G.s3.bucket,s3AccessKeyId:G.s3.accessKeyId,s3SecretAccessKey:G.s3.secretAccessKey,s3ForcePathStyle:G.s3.forcePathStyle}:{}};return Dp1(K),{settings:K,services:J.map((W)=>({name:W.name==="PostgreSQL"?"Postgres":W.name,port:W.port})),managedServiceNames:J.filter((W)=>W.owner==="managed").map((W)=>W.name)}}var Tp0=L(()=>{xf();nn1();R$()});var Ka1={};Q0(Ka1,{updateService:()=>_E,subscribeCliState:()=>qp0,setTuiConsoleIntercepted:()=>Y70,setServerUrl:()=>Wp,setMigrationsDone:()=>Kp,setDevMode:()=>qa8,resetCliStateForTests:()=>Ia8,isTuiConsoleIntercepted:()=>G70,getCliState:()=>Ip0,addLogEntry:()=>aB});function Ya1(){return[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}]}function Ga1(){return{services:Ya1(),migrationsStatus:"pending",serverUrl:null,logs:[]}}function Ia8(){lQ=Ga1()}function Jp(){for(let $ of Rp0)$()}function Ip0(){return lQ}function qp0($){return Rp0.add($),()=>Rp0.delete($)}function _E($){lQ={...lQ,services:lQ.services.map((Z)=>Z.name===$.name?$:Z)},Jp()}function Kp(){lQ={...lQ,migrationsStatus:"done"},Jp()}function Wp($){lQ={...lQ,serverUrl:$},Jp()}function aB($){let Z=[...lQ.logs,$];lQ={...lQ,logs:Z.length>500?Z.slice(-500):Z},Jp()}function qa8(){lQ={...lQ,services:[...Ya1(),{name:"API",status:"pending",port:0},{name:"Vite",status:"pending",port:0}]},Jp()}function Y70($){Ja1=$}function G70(){return Ja1}var lQ,Rp0,Ja1=!1;var vE=L(()=>{lQ=Ga1();Rp0=new Set});import{createServer as Wa1}from"net";function Ma8($){return new Promise((Z)=>{let X=Wa1();X.once("error",()=>Z(!1)),X.listen($,"0.0.0.0",()=>{X.close(()=>Z(!0))})})}async function Hp($){if(await Ma8($))return $;let Z=await new Promise((X,Q)=>{let Y=Wa1();Y.once("error",Q),Y.listen(0,"0.0.0.0",()=>{let G=Y.address(),J=typeof G==="object"&&G?G.port:0;Y.close(()=>X(J))})});return console.warn(`Port ${$} is in use, using port ${Z} instead.`),Z}var Mp0=()=>{};var kp0={};Q0(kp0,{startDevServer:()=>ka8,pipeToLogStore:()=>Vp0});import{join as Va8}from"path";function Vp0($){let Z=$.getReader(),X=new TextDecoder,Q="";function Y(){let G=Q.split(`
|
|
1444
|
-
`);Q=G.pop()??"";for(let J of G){let K=Bun.stripANSI(J).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;aB({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:K})}}(async()=>{try{for(;;){let{done:G,value:J}=await Z.read();if(G)break;Q+=X.decode(J,{stream:!0}),Y()}}catch{}if(Q.trim()){let G=Bun.stripANSI(Q).replace(/^\[\d+\]\s*/,"").trim();if(G)aB({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:G})}})()}async function ka8($){let{baseUrl:Z,noTui:X}=$,Q=process.env.HOST==="0.0.0.0"&&Boolean(process.env.PORT),Y=Q?process.env.PORT:$.vitePort,G=Z||`http://localhost:${Y}`,J=Q?await Hp(Number(Y)+1):await Hp(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await Q70({port:String(J),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let D of W)_E({name:D.name,status:"ready",port:D.port});Kp();let F=Va8(import.meta.dir,"..","..","..","..",".."),N=X===!0,U=Bun.spawn(["bun","run","dev:servers"],{cwd:F,env:{...process.env,PORT:String(K.port),VITE_PORT:String(Y),DATABASE_URL:K.databaseUrl,NATS_URL:K.natsUrls.join(","),NODE_ENV:K.nodeEnv,BASE_URL:G,DECOCMS_LOCAL_MODE:String(K.localMode),DECOCMS_HOME:K.dataDir,DATA_DIR:K.dataDir,DECO_CLI:"1",...K.betterAuthSecret?{BETTER_AUTH_SECRET:K.betterAuthSecret}:{},...K.s3Endpoint?{S3_ENDPOINT:K.s3Endpoint,S3_BUCKET:K.s3Bucket??"",S3_ACCESS_KEY_ID:K.s3AccessKeyId??"",S3_SECRET_ACCESS_KEY:K.s3SecretAccessKey??"",S3_FORCE_PATH_STYLE:String(K.s3ForcePathStyle)}:{},...K.natsCredsPath?{NATS_CREDS:K.natsCredsPath}:{}},stdio:["inherit",N?"inherit":"pipe",N?"inherit":"pipe"]});if(!N)Vp0(U.stdout),Vp0(U.stderr);Wp(G),_E({name:"Vite",status:"ready",port:Number(Y)}),_E({name:"API",status:"ready",port:Number(K.port)});let O=async(D)=>{if(U.kill(D),await U.exited,H.length>0){let{stopServices:w}=await Promise.resolve().then(() => (FZ0(),HZ0));await w(K.dataDir)}};return process.on("SIGINT",()=>O("SIGINT")),process.on("SIGTERM",()=>O("SIGTERM")),{port:Number(Y),process:U}}var Sp0=L(()=>{Tp0();vE();Mp0()});var J70;var Cp0=L(()=>{J70={name:"decocms",version:"4.278.4",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});import{Box as Ca8,Text as Ha1}from"ink";import{jsx as _a8,jsxs as Fa1}from"react/jsx-runtime";function Na1({version:$}){return Fa1(Ca8,{flexDirection:"column",marginTop:1,children:[vZ0.map((Z,X)=>_a8(Ha1,{color:xZ0[X],children:Z},X)),Fa1(Ha1,{dimColor:!0,children:[" v",$]})]})}var Ua1=L(()=>{oi()});import{Box as xE,Text as sB}from"ink";import{Spinner as va8}from"@inkjs/ui";import{jsx as eY,jsxs as Ky}from"react/jsx-runtime";function Ba1({status:$}){if($==="pending")return eY(va8,{label:""});return eY(sB,{color:"green",children:"\u2713"})}function xa8($){return`${$.name}: ${$.port||"...."}`}function Oa1({services:$,migrationsStatus:Z,home:X,serverUrl:Q}){return Ky(xE,{flexDirection:"column",paddingBottom:1,children:[eY(Na1,{version:J70.version}),eY(xE,{marginBottom:1,children:eY(sB,{dimColor:!0,children:"\u2500".repeat(80)})}),eY(xE,{children:Ky(sB,{dimColor:!0,children:["Home: ",X]})}),Ky(xE,{gap:2,children:[$.map((Y)=>Ky(xE,{gap:1,children:[eY(sB,{children:xa8(Y)}),eY(Ba1,{status:Y.status})]},Y.name)),Ky(xE,{gap:1,children:[eY(sB,{children:"Migrations"}),eY(Ba1,{status:Z})]})]}),eY(xE,{children:Q?Ky(sB,{children:["Open in browser: ",eY(sB,{color:"cyan",children:Q})]}):eY(sB,{dimColor:!0,children:"Starting..."})})]})}var La1=L(()=>{Cp0();Ua1()});import{Box as fa8,Text as Fp}from"ink";import{jsx as _p0,jsxs as vp0}from"react/jsx-runtime";function ba8($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function Da1({logs:$}){return _p0(fa8,{flexDirection:"column",children:$.map((Z,X)=>{if(Z.rawLine)return _p0(Fp,{dimColor:!0,children:Z.rawLine},X);let Q=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return vp0(Fp,{children:[vp0(Fp,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),_p0(Fp,{color:ba8(Z.status),children:Z.status}),vp0(Fp,{dimColor:!0,children:[" ",Q.padStart(8)]})]},X)})})}var wa1=()=>{};var xp0={};Q0(xp0,{App:()=>ha8});import{Box as ya8}from"ink";import{useSyncExternalStore as ga8}from"react";import{jsx as Ea1,jsxs as ua8}from"react/jsx-runtime";function ha8({home:$}){let Z=ga8(qp0,Ip0);return ua8(ya8,{flexDirection:"column",children:[Ea1(Oa1,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),Ea1(Da1,{logs:Z.logs})]})}var fp0=L(()=>{La1();wa1();vE()});var h3="thread-gate",GN="decopilot-hosted-harness",JN="decopilot-hosted-harness-sandboxed",OJ="automations",eB="background-tools",fE="task-board-github-reads",bE="jira-push";var ja1="9";function za1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:ja1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var Pa1=()=>{};import ca8 from"pg";async function Ta1($,Z){let{databaseUrl:X,lockTimeoutMs:Q=la8}=$,Y=$.log??((W)=>console.log(W)),G=new ca8.Client({connectionString:X});await G.connect();let J=Date.now(),K=!1;try{while(!K){if(K=(await G.query("SELECT pg_try_advisory_lock($1) AS locked",[Aa1.toString()])).rows[0]?.locked===!0,K)break;if(Date.now()-J>=Q)throw Error(`Timed out after ${Q}ms waiting for the DBOS migration lock. Another process is still migrating the dbos schema; this pod will restart and retry.`);await W$(da8)}let W=Date.now()-J;if(W>1000)Y(`[dbos] waited ${W}ms for the migration lock; another process migrated first`);return await Z()}finally{if(K)try{await G.query("SELECT pg_advisory_unlock($1)",[Aa1.toString()])}catch{}await G.end().catch(()=>{})}}var Aa1=8314027461559302n,la8=600000,da8=500;var Ra1=L(()=>{J4()});function ma8(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function bp0($,Z){for(let X=0;X<$.length;X++){let Q=$[X];if(Q===void 0)continue;if(Q===Z)return $[X+1];if(Q.startsWith(`${Z}=`))return Q.slice(Z.length+1)}return}function Ia1(){let $=ma8();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:bp0($,"--cpu-prof-dir")??process.cwd(),name:bp0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(bp0($,"--cpu-prof-interval")??1000),note:"profile is written on process exit"}));return}if(process.env.CPU_PROFILE)console.warn(JSON.stringify({msg:"cpu-profiling-requested-but-inactive",hint:'CPU profiling is a Bun launch flag. Set BUN_OPTIONS="--cpu-prof --cpu-prof-md --cpu-prof-dir=/tmp" before starting the process.'}))}function qa1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let X=VE();if(!X)return;let Q={};try{let{heapStats:Y}=await import("bun:jsc"),G=Y(),J=Object.entries(G.objectTypeCounts).sort((K,W)=>W[1]-K[1]).slice(0,20);Q={objectCount:G.objectCount,heapSize:G.heapSize,top:Object.fromEntries(J)}}catch{}console.log(JSON.stringify({msg:"heap-watch",ts:new Date().toISOString(),uptimeS:Math.round(process.uptime()),rss:X.rss,heapUsed:X.heapUsed,heapTotal:X.heapTotal,external:X.external,arrayBuffers:X.arrayBuffers,...Q}))};return Z().catch(()=>{}),K70=setInterval(()=>void Z().catch(()=>{}),$),K70.unref?.(),process.on("SIGUSR2",()=>{try{let X=Bun.generateHeapSnapshot("v8"),Q=typeof X==="string"?X:JSON.stringify(X),Y=`/tmp/heap-${process.pid}-${Date.now()}.heapsnapshot`;Bun.write(Y,Q),console.log(JSON.stringify({msg:"heap-snapshot-written",path:Y}))}catch(X){console.error("[heap-watch] snapshot failed:",X)}}),()=>{if(K70)clearInterval(K70)}}var K70;var Ma1=()=>{};import*as ia8 from"bun:jsc";function Va1(){if(process.env.STALL_WATCHDOG!=="1")return()=>{};let $=Number(process.env.STALL_WATCHDOG_MS??100),Z=Number(process.env.STALL_WATCHDOG_TICK_MS??50);try{pa8()}catch(G){return console.error("[stall-watchdog] failed to start sampling profiler:",G),()=>{}}let X,Q=performance.now()+Z,Y=()=>{let G=performance.now(),J=G-Q;Q=G+Z;let K=[];try{K=na8()?.traces??[]}catch{}if(J>$&&K.length>0){let W=new Map;for(let F of K){let N=F.frames.find((O)=>O.sourceURL&&!/Unknown Executable/.test(O.category??""))??F.frames[0];if(!N)continue;let U=(N.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),B=`${N.name??"?"} @ ${U}:${N.line??"?"}`;W.set(B,(W.get(B)??0)+1)}let H=[...W.entries()].sort((F,N)=>N[1]-F[1]).slice(0,8).map(([F,N])=>({frame:F,count:N}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(J),samplesInWindow:K.length,top:H}))}X=setTimeout(Y,Z),X.unref?.()};return X=setTimeout(Y,Z),X.unref?.(),()=>{if(X)clearTimeout(X)}}var pa8,na8;var ka1=L(()=>{({startSamplingProfiler:pa8,samplingProfilerStackTraces:na8}=ia8)});function Sa1(){Ia1();let $=[qa1(),Xn1(),Va1()];return()=>{for(let Z of $)Z()}}var Ca1=L(()=>{Dl0();Ma1();ka1()});var yE=v((_a1)=>{Object.defineProperty(_a1,"__esModule",{value:!0});_a1.RepublishHeaders=_a1.DirectMsgHeaders=_a1.JsHeaders=_a1.AdvisoryKind=void 0;_a1.isOrderedPushConsumerOptions=ta8;_a1.isPullConsumer=oa8;_a1.isPushConsumer=ra8;_a1.isBoundPushConsumerOptions=aa8;function ta8($){if($&&typeof $==="object")return"name_prefix"in $||"deliver_subject_prefix"in $||"filter_subjects"in $||"filter_subject"in $||"deliver_policy"in $||"opt_start_seq"in $||"opt_start_time"in $||"replay_policy"in $||"inactive_threshold"in $||"headers_only"in $||"deliver_prefix"in $;return!1}function oa8($){return $.isPullConsumer()}function ra8($){return $.isPushConsumer()}function aa8($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}_a1.AdvisoryKind={API:"api_audit",StreamAction:"stream_action",ConsumerAction:"consumer_action",SnapshotCreate:"snapshot_create",SnapshotComplete:"snapshot_complete",RestoreCreate:"restore_create",RestoreComplete:"restore_complete",MaxDeliver:"max_deliver",Terminated:"terminated",Ack:"consumer_ack",StreamLeaderElected:"stream_leader_elected",StreamQuorumLost:"stream_quorum_lost",ConsumerLeaderElected:"consumer_leader_elected",ConsumerQuorumLost:"consumer_quorum_lost"};_a1.JsHeaders={StreamSourceHdr:"Nats-Stream-Source",LastConsumerSeqHdr:"Nats-Last-Consumer",LastStreamSeqHdr:"Nats-Last-Stream",ConsumerStalledHdr:"Nats-Consumer-Stalled",MessageSizeHdr:"Nats-Msg-Size",RollupHdr:"Nats-Rollup",RollupValueSubject:"sub",RollupValueAll:"all",PendingMessagesHdr:"Nats-Pending-Messages",PendingBytesHdr:"Nats-Pending-Bytes",RequiredApiLevel:"Nats-Required-Api-Level"};_a1.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};_a1.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var $G=v((xa1)=>{Object.defineProperty(xa1,"__esModule",{value:!0});xa1.TD=xa1.TE=xa1.Empty=void 0;xa1.encode=Js8;xa1.decode=Ks8;xa1.Empty=new Uint8Array(0);xa1.TE=new TextEncoder;xa1.TD=new TextDecoder;function Gs8(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}function Js8(...$){let Z=[];for(let X=0;X<$.length;X++)Z.push(xa1.TE.encode($[X]));if(Z.length===0)return xa1.Empty;if(Z.length===1)return Z[0];return Gs8(...Z)}function Ks8($){if(!$||$.length===0)return"";return xa1.TD.decode($)}});var ZG=v((ya1)=>{Object.defineProperty(ya1,"__esModule",{value:!0});ya1.errors=ya1.PermissionViolationError=ya1.NoRespondersError=ya1.TimeoutError=ya1.RequestError=ya1.ProtocolError=ya1.ConnectionError=ya1.DrainingConnectionError=ya1.ClosedConnectionError=ya1.AuthorizationError=ya1.UserAuthenticationExpiredError=ya1.InvalidOperationError=ya1.InvalidArgumentError=ya1.InvalidSubjectError=void 0;class gp0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}ya1.InvalidSubjectError=gp0;class W70 extends Error{constructor($,Z){super($,Z);this.name="InvalidArgumentError"}static format($,Z,X){if(Array.isArray(Z)&&Z.length>1)Z=Z[0];if(Array.isArray($))$=$.map((Q)=>`'${Q}'`),$=$.join(",");else $=`'${$}'`;return new W70(`${$} ${Z}`,X)}}ya1.InvalidArgumentError=W70;class hp0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}ya1.InvalidOperationError=hp0;class H70 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new H70($);return null}}ya1.UserAuthenticationExpiredError=H70;class F70 extends Error{constructor($,Z){super($,Z);this.name="AuthorizationError"}static parse($){let Z=["authorization violation","account authentication expired","authentication timeout"],X=$.toLowerCase();for(let Q=0;Q<Z.length;Q++)if(X.indexOf(Z[Q])!==-1)return new F70($);return null}}ya1.AuthorizationError=F70;class up0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}ya1.ClosedConnectionError=up0;class cp0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}ya1.DrainingConnectionError=cp0;class lp0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}ya1.ConnectionError=lp0;class dp0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}ya1.ProtocolError=dp0;class mp0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof N70}}ya1.RequestError=mp0;class ip0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}ya1.TimeoutError=ip0;class N70 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}ya1.NoRespondersError=N70;class U70 extends Error{operation;subject;queue;constructor($,Z,X,Q,Y){super($,Y);this.name="PermissionViolationError",this.operation=Z,this.subject=X,this.queue=Q}static parse($){if(($?$.toLowerCase():"").indexOf("permissions violation")===-1)return null;let X="publish",Q="",Y=void 0,G=$.match(/(Publish|Subscription) to "(\S+)"/);if(G){if(X=G[1].toLowerCase(),Q=G[2],X==="subscription"){let J=$.match(/using queue "(\S+)"/);if(J)Y=J[1]}}return new U70($,X,Q,Y)}}ya1.PermissionViolationError=U70;ya1.errors={AuthorizationError:F70,ClosedConnectionError:up0,ConnectionError:lp0,DrainingConnectionError:cp0,InvalidArgumentError:W70,InvalidOperationError:hp0,InvalidSubjectError:gp0,NoRespondersError:N70,PermissionViolationError:U70,ProtocolError:dp0,RequestError:mp0,TimeoutError:ip0,UserAuthenticationExpiredError:H70}});var u3=v((la1)=>{Object.defineProperty(la1,"__esModule",{value:!0});la1.SimpleMutex=la1.Perf=void 0;la1.extend=Rs8;la1.render=Is8;la1.timeout=qs8;la1.delay=Ms8;la1.deadline=Vs8;la1.deferred=np0;la1.debugDeferred=ks8;la1.shuffle=Ss8;la1.collect=Cs8;la1.jitter=ca1;la1.backoff=_s8;la1.nanos=vs8;la1.millis=xs8;la1.randomToken=ys8;var Ts8=$G(),pp0=ZG();function Rs8($,...Z){for(let X=0;X<Z.length;X++){let Q=Z[X];Object.keys(Q).forEach(function(Y){$[Y]=Q[Y]})}return $}function Is8($){return Ts8.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function qs8($,Z=!0){let X=Z?new pp0.TimeoutError:null,Q,Y,G=new Promise((J,K)=>{Q={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(X===null)K(new pp0.TimeoutError);else K(X)},$)});return Object.assign(G,Q)}function Ms8($=0){let Z,X=new Promise((Q)=>{let Y=setTimeout(()=>{Q()},$);Z={cancel:()=>{if(Y)clearTimeout(Y),Q()}}});return Object.assign(X,Z)}async function Vs8($,Z=1000){let X=np0(),Q=setTimeout(()=>{X.reject(new pp0.TimeoutError)},Z);try{return await Promise.race([$,X])}finally{clearTimeout(Q)}}function np0(){let $={},Z=new Promise((X,Q)=>{$={resolve:X,reject:Q}});return Object.assign(Z,$)}function ks8(){let $={},Z=new Promise((X,Q)=>{$={resolve:(Y)=>{console.trace("resolve",Y),X(Y)},reject:(Y)=>{console.trace("reject"),Q(Y)}}});return Object.assign(Z,$)}function Ss8($){for(let Z=$.length-1;Z>0;Z--){let X=Math.floor(Math.random()*(Z+1));[$[Z],$[X]]=[$[X],$[Z]]}return $}async function Cs8($){let Z=[];for await(let X of $)Z.push(X);return Z}class ha1{timers;measures;constructor(){this.timers=new Map,this.measures=new Map}mark($){this.timers.set($,performance.now())}measure($,Z,X){let Q=this.timers.get(Z);if(Q===void 0)throw Error(`${Z} is not defined`);let Y=this.timers.get(X);if(Y===void 0)throw Error(`${X} is not defined`);this.measures.set($,Y-Q)}getEntries(){let $=[];return this.measures.forEach((Z,X)=>{$.push({name:X,duration:Z})}),$}}la1.Perf=ha1;class ua1{max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=np0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}la1.SimpleMutex=ua1;function ca1($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function _s8($=[0,250,250,500,500,3000,5000]){if(!Array.isArray($))$=[0,250,250,500,500,3000,5000];let Z=$.length-1;return{backoff(X){return ca1(X>Z?$[Z]:$[X])}}}function vs8($){return $*1e6}function xs8($){return Math.floor($/1e6)}var fs8="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",KN=new Uint8Array(62);for(let $=0;$<62;$++)KN[$]=fs8.charCodeAt($);var bs8=218340105584896;function ys8(){let $=Math.floor(Math.random()*bs8),Z=$%62,X=KN[Z];$=($-Z)/62,Z=$%62;let Q=KN[Z];$=($-Z)/62,Z=$%62;let Y=KN[Z];$=($-Z)/62,Z=$%62;let G=KN[Z];$=($-Z)/62,Z=$%62;let J=KN[Z];$=($-Z)/62,Z=$%62;let K=KN[Z];$=($-Z)/62,Z=$%62;let W=KN[Z];$=($-Z)/62;let H=KN[$];return String.fromCharCode(X,Q,Y,G,J,K,W,H)}});var ra1=v((ta1)=>{Object.defineProperty(ta1,"__esModule",{value:!0});ta1.nuid=ta1.NuidImpl=void 0;var es8="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",$O=62,O70=12,pa1=10,ma1=33,$e8=333,ia1=O70+pa1,op0=new Uint8Array($O);for(let $=0;$<$O;$++)op0[$]=es8.charCodeAt($);var B70=4294967296,na1=BigInt($O)**BigInt(pa1),Np=Number(na1/(1n<<32n)),tp0=Number(na1%(1n<<32n));function Ze8($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function Xe8($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else Ze8($)}class rp0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(ia1),this.cbuf=new Uint8Array(O70),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(Np+1)),this.seqLo=Math.floor(Math.random()*B70);while($++<8&&this.seqHi===Np&&this.seqLo>=tp0);if(this.seqHi===Np&&this.seqLo>=tp0)this.seqLo=0;this.inc=Math.random()*($e8-ma1)+ma1|0}setPre(){Xe8(this.cbuf);for(let $=0;$<O70;$++)this.buf[$]=op0[this.cbuf[$]%$O]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let X=ia1-1;X>=O70;X--){let Q=Math.floor($/$O),G=($-Q*$O)*B70+Z,J=Math.floor(G/$O),K=G-J*$O;this.buf[X]=op0[K],$=Q,Z=J}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=B70)this.seqLo-=B70,this.seqHi+=1;if(this.seqHi>Np||this.seqHi===Np&&this.seqLo>=tp0)this.setPre(),this.initSeqAndInc();this.fillSeq();let $=this.buf;return String.fromCharCode($[0],$[1],$[2],$[3],$[4],$[5],$[6],$[7],$[8],$[9],$[10],$[11],$[12],$[13],$[14],$[15],$[16],$[17],$[18],$[19],$[20],$[21])}reset(){this.init()}}ta1.NuidImpl=rp0;ta1.nuid=new rp0});var $s1=v((sa1)=>{Object.defineProperty(sa1,"__esModule",{value:!0});sa1.nuid=sa1.Nuid=void 0;var aa1=ra1();sa1.Nuid=aa1.NuidImpl;sa1.nuid=aa1.nuid});var D70=v((L70)=>{Object.defineProperty(L70,"__esModule",{value:!0});L70.nuid=L70.Nuid=void 0;var Zs1=$s1();Object.defineProperty(L70,"Nuid",{enumerable:!0,get:function(){return Zs1.Nuid}});Object.defineProperty(L70,"nuid",{enumerable:!0,get:function(){return Zs1.nuid}})});var ZO=v((Xs1)=>{Object.defineProperty(Xs1,"__esModule",{value:!0});Xs1.DEFAULT_HOST=Xs1.DEFAULT_PORT=Xs1.Match=void 0;Xs1.syncIterator=We8;Xs1.createInbox=He8;var Je8=D70(),Ke8=ZG();Xs1.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function We8($){let Z=$[Symbol.asyncIterator]();return{async next(){let X=await Z.next();if(X.done)return Promise.resolve(null);return Promise.resolve(X.value)}}}function He8($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw Ke8.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${Je8.nuid.next()}`}Xs1.DEFAULT_PORT=4222;Xs1.DEFAULT_HOST="127.0.0.1"});var Up=v((Js1)=>{Object.defineProperty(Js1,"__esModule",{value:!0});Js1.DataBuffer=void 0;var Ys1=$G();class Gs1{buffers;byteLength;constructor(){this.buffers=[],this.byteLength=0}static concat(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}static fromAscii($){if(!$)$="";return Ys1.TE.encode($)}static toAscii($){return Ys1.TD.decode($)}reset(){this.buffers.length=0,this.byteLength=0}pack(){if(this.buffers.length>1){let $=new Uint8Array(this.byteLength),Z=0;for(let X=0;X<this.buffers.length;X++)$.set(this.buffers[X],Z),Z+=this.buffers[X].length;this.buffers.length=0,this.buffers.push($)}}shift(){if(this.buffers.length){let $=this.buffers.shift();if($)return this.byteLength-=$.length,$}return new Uint8Array(0)}drain($){if(this.buffers.length){this.pack();let Z=this.buffers.pop();if(Z){let X=this.byteLength;if($===void 0||$>X)$=X;let Q=Z.subarray(0,$);if(X>$)this.buffers.push(Z.subarray($));return this.byteLength=X-$,Q}}return new Uint8Array(0)}fill($,...Z){if($)this.buffers.push($),this.byteLength+=$.length;for(let X=0;X<Z.length;X++)if(Z[X]&&Z[X].length)this.buffers.push(Z[X]),this.byteLength+=Z[X].length}peek(){if(this.buffers.length)return this.pack(),this.buffers[0];return new Uint8Array(0)}size(){return this.byteLength}length(){return this.buffers.length}}Js1.DataBuffer=Gs1});var gE=v((Hs1)=>{Object.defineProperty(Hs1,"__esModule",{value:!0});Hs1.LF=Hs1.CR=Hs1.CRLF=Hs1.CR_LF_LEN=Hs1.CR_LF=void 0;Hs1.setTransportFactory=we8;Hs1.defaultPort=Ee8;Hs1.getUrlParseFn=je8;Hs1.newTransport=ze8;Hs1.getResolveFn=Pe8;Hs1.protoLen=Ws1;Hs1.extractProtocolMessage=Ae8;var Oe8=$G(),Le8=ZO(),De8=Up(),XG;function we8($){XG=$}function Ee8(){return XG!==void 0&&XG.defaultPort!==void 0?XG.defaultPort:Le8.DEFAULT_PORT}function je8(){return XG!==void 0&&XG.urlParseFn?XG.urlParseFn:void 0}function ze8(){if(!XG||typeof XG.factory!=="function")throw Error("transport fn is not set");return XG.factory()}function Pe8(){return XG!==void 0&&XG.dnsResolveFn?XG.dnsResolveFn:void 0}Hs1.CR_LF=`\r
|
|
1444
|
+
`);Q=G.pop()??"";for(let J of G){let K=Bun.stripANSI(J).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;aB({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:K})}}(async()=>{try{for(;;){let{done:G,value:J}=await Z.read();if(G)break;Q+=X.decode(J,{stream:!0}),Y()}}catch{}if(Q.trim()){let G=Bun.stripANSI(Q).replace(/^\[\d+\]\s*/,"").trim();if(G)aB({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:G})}})()}async function ka8($){let{baseUrl:Z,noTui:X}=$,Q=process.env.HOST==="0.0.0.0"&&Boolean(process.env.PORT),Y=Q?process.env.PORT:$.vitePort,G=Z||`http://localhost:${Y}`,J=Q?await Hp(Number(Y)+1):await Hp(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await Q70({port:String(J),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let D of W)_E({name:D.name,status:"ready",port:D.port});Kp();let F=Va8(import.meta.dir,"..","..","..","..",".."),N=X===!0,U=Bun.spawn(["bun","run","dev:servers"],{cwd:F,env:{...process.env,PORT:String(K.port),VITE_PORT:String(Y),DATABASE_URL:K.databaseUrl,NATS_URL:K.natsUrls.join(","),NODE_ENV:K.nodeEnv,BASE_URL:G,DECOCMS_LOCAL_MODE:String(K.localMode),DECOCMS_HOME:K.dataDir,DATA_DIR:K.dataDir,DECO_CLI:"1",...K.betterAuthSecret?{BETTER_AUTH_SECRET:K.betterAuthSecret}:{},...K.s3Endpoint?{S3_ENDPOINT:K.s3Endpoint,S3_BUCKET:K.s3Bucket??"",S3_ACCESS_KEY_ID:K.s3AccessKeyId??"",S3_SECRET_ACCESS_KEY:K.s3SecretAccessKey??"",S3_FORCE_PATH_STYLE:String(K.s3ForcePathStyle)}:{},...K.natsCredsPath?{NATS_CREDS:K.natsCredsPath}:{}},stdio:["inherit",N?"inherit":"pipe",N?"inherit":"pipe"]});if(!N)Vp0(U.stdout),Vp0(U.stderr);Wp(G),_E({name:"Vite",status:"ready",port:Number(Y)}),_E({name:"API",status:"ready",port:Number(K.port)});let O=async(D)=>{if(U.kill(D),await U.exited,H.length>0){let{stopServices:w}=await Promise.resolve().then(() => (FZ0(),HZ0));await w(K.dataDir)}};return process.on("SIGINT",()=>O("SIGINT")),process.on("SIGTERM",()=>O("SIGTERM")),{port:Number(Y),process:U}}var Sp0=L(()=>{Tp0();vE();Mp0()});var J70;var Cp0=L(()=>{J70={name:"decocms",version:"4.278.5",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});import{Box as Ca8,Text as Ha1}from"ink";import{jsx as _a8,jsxs as Fa1}from"react/jsx-runtime";function Na1({version:$}){return Fa1(Ca8,{flexDirection:"column",marginTop:1,children:[vZ0.map((Z,X)=>_a8(Ha1,{color:xZ0[X],children:Z},X)),Fa1(Ha1,{dimColor:!0,children:[" v",$]})]})}var Ua1=L(()=>{oi()});import{Box as xE,Text as sB}from"ink";import{Spinner as va8}from"@inkjs/ui";import{jsx as eY,jsxs as Ky}from"react/jsx-runtime";function Ba1({status:$}){if($==="pending")return eY(va8,{label:""});return eY(sB,{color:"green",children:"\u2713"})}function xa8($){return`${$.name}: ${$.port||"...."}`}function Oa1({services:$,migrationsStatus:Z,home:X,serverUrl:Q}){return Ky(xE,{flexDirection:"column",paddingBottom:1,children:[eY(Na1,{version:J70.version}),eY(xE,{marginBottom:1,children:eY(sB,{dimColor:!0,children:"\u2500".repeat(80)})}),eY(xE,{children:Ky(sB,{dimColor:!0,children:["Home: ",X]})}),Ky(xE,{gap:2,children:[$.map((Y)=>Ky(xE,{gap:1,children:[eY(sB,{children:xa8(Y)}),eY(Ba1,{status:Y.status})]},Y.name)),Ky(xE,{gap:1,children:[eY(sB,{children:"Migrations"}),eY(Ba1,{status:Z})]})]}),eY(xE,{children:Q?Ky(sB,{children:["Open in browser: ",eY(sB,{color:"cyan",children:Q})]}):eY(sB,{dimColor:!0,children:"Starting..."})})]})}var La1=L(()=>{Cp0();Ua1()});import{Box as fa8,Text as Fp}from"ink";import{jsx as _p0,jsxs as vp0}from"react/jsx-runtime";function ba8($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function Da1({logs:$}){return _p0(fa8,{flexDirection:"column",children:$.map((Z,X)=>{if(Z.rawLine)return _p0(Fp,{dimColor:!0,children:Z.rawLine},X);let Q=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return vp0(Fp,{children:[vp0(Fp,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),_p0(Fp,{color:ba8(Z.status),children:Z.status}),vp0(Fp,{dimColor:!0,children:[" ",Q.padStart(8)]})]},X)})})}var wa1=()=>{};var xp0={};Q0(xp0,{App:()=>ha8});import{Box as ya8}from"ink";import{useSyncExternalStore as ga8}from"react";import{jsx as Ea1,jsxs as ua8}from"react/jsx-runtime";function ha8({home:$}){let Z=ga8(qp0,Ip0);return ua8(ya8,{flexDirection:"column",children:[Ea1(Oa1,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),Ea1(Da1,{logs:Z.logs})]})}var fp0=L(()=>{La1();wa1();vE()});var h3="thread-gate",GN="decopilot-hosted-harness",JN="decopilot-hosted-harness-sandboxed",OJ="automations",eB="background-tools",fE="task-board-github-reads",bE="jira-push";var ja1="9";function za1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:ja1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var Pa1=()=>{};import ca8 from"pg";async function Ta1($,Z){let{databaseUrl:X,lockTimeoutMs:Q=la8}=$,Y=$.log??((W)=>console.log(W)),G=new ca8.Client({connectionString:X});await G.connect();let J=Date.now(),K=!1;try{while(!K){if(K=(await G.query("SELECT pg_try_advisory_lock($1) AS locked",[Aa1.toString()])).rows[0]?.locked===!0,K)break;if(Date.now()-J>=Q)throw Error(`Timed out after ${Q}ms waiting for the DBOS migration lock. Another process is still migrating the dbos schema; this pod will restart and retry.`);await W$(da8)}let W=Date.now()-J;if(W>1000)Y(`[dbos] waited ${W}ms for the migration lock; another process migrated first`);return await Z()}finally{if(K)try{await G.query("SELECT pg_advisory_unlock($1)",[Aa1.toString()])}catch{}await G.end().catch(()=>{})}}var Aa1=8314027461559302n,la8=600000,da8=500;var Ra1=L(()=>{J4()});function ma8(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function bp0($,Z){for(let X=0;X<$.length;X++){let Q=$[X];if(Q===void 0)continue;if(Q===Z)return $[X+1];if(Q.startsWith(`${Z}=`))return Q.slice(Z.length+1)}return}function Ia1(){let $=ma8();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:bp0($,"--cpu-prof-dir")??process.cwd(),name:bp0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(bp0($,"--cpu-prof-interval")??1000),note:"profile is written on process exit"}));return}if(process.env.CPU_PROFILE)console.warn(JSON.stringify({msg:"cpu-profiling-requested-but-inactive",hint:'CPU profiling is a Bun launch flag. Set BUN_OPTIONS="--cpu-prof --cpu-prof-md --cpu-prof-dir=/tmp" before starting the process.'}))}function qa1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let X=VE();if(!X)return;let Q={};try{let{heapStats:Y}=await import("bun:jsc"),G=Y(),J=Object.entries(G.objectTypeCounts).sort((K,W)=>W[1]-K[1]).slice(0,20);Q={objectCount:G.objectCount,heapSize:G.heapSize,top:Object.fromEntries(J)}}catch{}console.log(JSON.stringify({msg:"heap-watch",ts:new Date().toISOString(),uptimeS:Math.round(process.uptime()),rss:X.rss,heapUsed:X.heapUsed,heapTotal:X.heapTotal,external:X.external,arrayBuffers:X.arrayBuffers,...Q}))};return Z().catch(()=>{}),K70=setInterval(()=>void Z().catch(()=>{}),$),K70.unref?.(),process.on("SIGUSR2",()=>{try{let X=Bun.generateHeapSnapshot("v8"),Q=typeof X==="string"?X:JSON.stringify(X),Y=`/tmp/heap-${process.pid}-${Date.now()}.heapsnapshot`;Bun.write(Y,Q),console.log(JSON.stringify({msg:"heap-snapshot-written",path:Y}))}catch(X){console.error("[heap-watch] snapshot failed:",X)}}),()=>{if(K70)clearInterval(K70)}}var K70;var Ma1=()=>{};import*as ia8 from"bun:jsc";function Va1(){if(process.env.STALL_WATCHDOG!=="1")return()=>{};let $=Number(process.env.STALL_WATCHDOG_MS??100),Z=Number(process.env.STALL_WATCHDOG_TICK_MS??50);try{pa8()}catch(G){return console.error("[stall-watchdog] failed to start sampling profiler:",G),()=>{}}let X,Q=performance.now()+Z,Y=()=>{let G=performance.now(),J=G-Q;Q=G+Z;let K=[];try{K=na8()?.traces??[]}catch{}if(J>$&&K.length>0){let W=new Map;for(let F of K){let N=F.frames.find((O)=>O.sourceURL&&!/Unknown Executable/.test(O.category??""))??F.frames[0];if(!N)continue;let U=(N.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),B=`${N.name??"?"} @ ${U}:${N.line??"?"}`;W.set(B,(W.get(B)??0)+1)}let H=[...W.entries()].sort((F,N)=>N[1]-F[1]).slice(0,8).map(([F,N])=>({frame:F,count:N}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(J),samplesInWindow:K.length,top:H}))}X=setTimeout(Y,Z),X.unref?.()};return X=setTimeout(Y,Z),X.unref?.(),()=>{if(X)clearTimeout(X)}}var pa8,na8;var ka1=L(()=>{({startSamplingProfiler:pa8,samplingProfilerStackTraces:na8}=ia8)});function Sa1(){Ia1();let $=[qa1(),Xn1(),Va1()];return()=>{for(let Z of $)Z()}}var Ca1=L(()=>{Dl0();Ma1();ka1()});var yE=v((_a1)=>{Object.defineProperty(_a1,"__esModule",{value:!0});_a1.RepublishHeaders=_a1.DirectMsgHeaders=_a1.JsHeaders=_a1.AdvisoryKind=void 0;_a1.isOrderedPushConsumerOptions=ta8;_a1.isPullConsumer=oa8;_a1.isPushConsumer=ra8;_a1.isBoundPushConsumerOptions=aa8;function ta8($){if($&&typeof $==="object")return"name_prefix"in $||"deliver_subject_prefix"in $||"filter_subjects"in $||"filter_subject"in $||"deliver_policy"in $||"opt_start_seq"in $||"opt_start_time"in $||"replay_policy"in $||"inactive_threshold"in $||"headers_only"in $||"deliver_prefix"in $;return!1}function oa8($){return $.isPullConsumer()}function ra8($){return $.isPushConsumer()}function aa8($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}_a1.AdvisoryKind={API:"api_audit",StreamAction:"stream_action",ConsumerAction:"consumer_action",SnapshotCreate:"snapshot_create",SnapshotComplete:"snapshot_complete",RestoreCreate:"restore_create",RestoreComplete:"restore_complete",MaxDeliver:"max_deliver",Terminated:"terminated",Ack:"consumer_ack",StreamLeaderElected:"stream_leader_elected",StreamQuorumLost:"stream_quorum_lost",ConsumerLeaderElected:"consumer_leader_elected",ConsumerQuorumLost:"consumer_quorum_lost"};_a1.JsHeaders={StreamSourceHdr:"Nats-Stream-Source",LastConsumerSeqHdr:"Nats-Last-Consumer",LastStreamSeqHdr:"Nats-Last-Stream",ConsumerStalledHdr:"Nats-Consumer-Stalled",MessageSizeHdr:"Nats-Msg-Size",RollupHdr:"Nats-Rollup",RollupValueSubject:"sub",RollupValueAll:"all",PendingMessagesHdr:"Nats-Pending-Messages",PendingBytesHdr:"Nats-Pending-Bytes",RequiredApiLevel:"Nats-Required-Api-Level"};_a1.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};_a1.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var $G=v((xa1)=>{Object.defineProperty(xa1,"__esModule",{value:!0});xa1.TD=xa1.TE=xa1.Empty=void 0;xa1.encode=Js8;xa1.decode=Ks8;xa1.Empty=new Uint8Array(0);xa1.TE=new TextEncoder;xa1.TD=new TextDecoder;function Gs8(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}function Js8(...$){let Z=[];for(let X=0;X<$.length;X++)Z.push(xa1.TE.encode($[X]));if(Z.length===0)return xa1.Empty;if(Z.length===1)return Z[0];return Gs8(...Z)}function Ks8($){if(!$||$.length===0)return"";return xa1.TD.decode($)}});var ZG=v((ya1)=>{Object.defineProperty(ya1,"__esModule",{value:!0});ya1.errors=ya1.PermissionViolationError=ya1.NoRespondersError=ya1.TimeoutError=ya1.RequestError=ya1.ProtocolError=ya1.ConnectionError=ya1.DrainingConnectionError=ya1.ClosedConnectionError=ya1.AuthorizationError=ya1.UserAuthenticationExpiredError=ya1.InvalidOperationError=ya1.InvalidArgumentError=ya1.InvalidSubjectError=void 0;class gp0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}ya1.InvalidSubjectError=gp0;class W70 extends Error{constructor($,Z){super($,Z);this.name="InvalidArgumentError"}static format($,Z,X){if(Array.isArray(Z)&&Z.length>1)Z=Z[0];if(Array.isArray($))$=$.map((Q)=>`'${Q}'`),$=$.join(",");else $=`'${$}'`;return new W70(`${$} ${Z}`,X)}}ya1.InvalidArgumentError=W70;class hp0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}ya1.InvalidOperationError=hp0;class H70 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new H70($);return null}}ya1.UserAuthenticationExpiredError=H70;class F70 extends Error{constructor($,Z){super($,Z);this.name="AuthorizationError"}static parse($){let Z=["authorization violation","account authentication expired","authentication timeout"],X=$.toLowerCase();for(let Q=0;Q<Z.length;Q++)if(X.indexOf(Z[Q])!==-1)return new F70($);return null}}ya1.AuthorizationError=F70;class up0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}ya1.ClosedConnectionError=up0;class cp0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}ya1.DrainingConnectionError=cp0;class lp0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}ya1.ConnectionError=lp0;class dp0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}ya1.ProtocolError=dp0;class mp0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof N70}}ya1.RequestError=mp0;class ip0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}ya1.TimeoutError=ip0;class N70 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}ya1.NoRespondersError=N70;class U70 extends Error{operation;subject;queue;constructor($,Z,X,Q,Y){super($,Y);this.name="PermissionViolationError",this.operation=Z,this.subject=X,this.queue=Q}static parse($){if(($?$.toLowerCase():"").indexOf("permissions violation")===-1)return null;let X="publish",Q="",Y=void 0,G=$.match(/(Publish|Subscription) to "(\S+)"/);if(G){if(X=G[1].toLowerCase(),Q=G[2],X==="subscription"){let J=$.match(/using queue "(\S+)"/);if(J)Y=J[1]}}return new U70($,X,Q,Y)}}ya1.PermissionViolationError=U70;ya1.errors={AuthorizationError:F70,ClosedConnectionError:up0,ConnectionError:lp0,DrainingConnectionError:cp0,InvalidArgumentError:W70,InvalidOperationError:hp0,InvalidSubjectError:gp0,NoRespondersError:N70,PermissionViolationError:U70,ProtocolError:dp0,RequestError:mp0,TimeoutError:ip0,UserAuthenticationExpiredError:H70}});var u3=v((la1)=>{Object.defineProperty(la1,"__esModule",{value:!0});la1.SimpleMutex=la1.Perf=void 0;la1.extend=Rs8;la1.render=Is8;la1.timeout=qs8;la1.delay=Ms8;la1.deadline=Vs8;la1.deferred=np0;la1.debugDeferred=ks8;la1.shuffle=Ss8;la1.collect=Cs8;la1.jitter=ca1;la1.backoff=_s8;la1.nanos=vs8;la1.millis=xs8;la1.randomToken=ys8;var Ts8=$G(),pp0=ZG();function Rs8($,...Z){for(let X=0;X<Z.length;X++){let Q=Z[X];Object.keys(Q).forEach(function(Y){$[Y]=Q[Y]})}return $}function Is8($){return Ts8.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function qs8($,Z=!0){let X=Z?new pp0.TimeoutError:null,Q,Y,G=new Promise((J,K)=>{Q={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(X===null)K(new pp0.TimeoutError);else K(X)},$)});return Object.assign(G,Q)}function Ms8($=0){let Z,X=new Promise((Q)=>{let Y=setTimeout(()=>{Q()},$);Z={cancel:()=>{if(Y)clearTimeout(Y),Q()}}});return Object.assign(X,Z)}async function Vs8($,Z=1000){let X=np0(),Q=setTimeout(()=>{X.reject(new pp0.TimeoutError)},Z);try{return await Promise.race([$,X])}finally{clearTimeout(Q)}}function np0(){let $={},Z=new Promise((X,Q)=>{$={resolve:X,reject:Q}});return Object.assign(Z,$)}function ks8(){let $={},Z=new Promise((X,Q)=>{$={resolve:(Y)=>{console.trace("resolve",Y),X(Y)},reject:(Y)=>{console.trace("reject"),Q(Y)}}});return Object.assign(Z,$)}function Ss8($){for(let Z=$.length-1;Z>0;Z--){let X=Math.floor(Math.random()*(Z+1));[$[Z],$[X]]=[$[X],$[Z]]}return $}async function Cs8($){let Z=[];for await(let X of $)Z.push(X);return Z}class ha1{timers;measures;constructor(){this.timers=new Map,this.measures=new Map}mark($){this.timers.set($,performance.now())}measure($,Z,X){let Q=this.timers.get(Z);if(Q===void 0)throw Error(`${Z} is not defined`);let Y=this.timers.get(X);if(Y===void 0)throw Error(`${X} is not defined`);this.measures.set($,Y-Q)}getEntries(){let $=[];return this.measures.forEach((Z,X)=>{$.push({name:X,duration:Z})}),$}}la1.Perf=ha1;class ua1{max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=np0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}la1.SimpleMutex=ua1;function ca1($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function _s8($=[0,250,250,500,500,3000,5000]){if(!Array.isArray($))$=[0,250,250,500,500,3000,5000];let Z=$.length-1;return{backoff(X){return ca1(X>Z?$[Z]:$[X])}}}function vs8($){return $*1e6}function xs8($){return Math.floor($/1e6)}var fs8="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",KN=new Uint8Array(62);for(let $=0;$<62;$++)KN[$]=fs8.charCodeAt($);var bs8=218340105584896;function ys8(){let $=Math.floor(Math.random()*bs8),Z=$%62,X=KN[Z];$=($-Z)/62,Z=$%62;let Q=KN[Z];$=($-Z)/62,Z=$%62;let Y=KN[Z];$=($-Z)/62,Z=$%62;let G=KN[Z];$=($-Z)/62,Z=$%62;let J=KN[Z];$=($-Z)/62,Z=$%62;let K=KN[Z];$=($-Z)/62,Z=$%62;let W=KN[Z];$=($-Z)/62;let H=KN[$];return String.fromCharCode(X,Q,Y,G,J,K,W,H)}});var ra1=v((ta1)=>{Object.defineProperty(ta1,"__esModule",{value:!0});ta1.nuid=ta1.NuidImpl=void 0;var es8="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",$O=62,O70=12,pa1=10,ma1=33,$e8=333,ia1=O70+pa1,op0=new Uint8Array($O);for(let $=0;$<$O;$++)op0[$]=es8.charCodeAt($);var B70=4294967296,na1=BigInt($O)**BigInt(pa1),Np=Number(na1/(1n<<32n)),tp0=Number(na1%(1n<<32n));function Ze8($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function Xe8($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else Ze8($)}class rp0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(ia1),this.cbuf=new Uint8Array(O70),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(Np+1)),this.seqLo=Math.floor(Math.random()*B70);while($++<8&&this.seqHi===Np&&this.seqLo>=tp0);if(this.seqHi===Np&&this.seqLo>=tp0)this.seqLo=0;this.inc=Math.random()*($e8-ma1)+ma1|0}setPre(){Xe8(this.cbuf);for(let $=0;$<O70;$++)this.buf[$]=op0[this.cbuf[$]%$O]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let X=ia1-1;X>=O70;X--){let Q=Math.floor($/$O),G=($-Q*$O)*B70+Z,J=Math.floor(G/$O),K=G-J*$O;this.buf[X]=op0[K],$=Q,Z=J}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=B70)this.seqLo-=B70,this.seqHi+=1;if(this.seqHi>Np||this.seqHi===Np&&this.seqLo>=tp0)this.setPre(),this.initSeqAndInc();this.fillSeq();let $=this.buf;return String.fromCharCode($[0],$[1],$[2],$[3],$[4],$[5],$[6],$[7],$[8],$[9],$[10],$[11],$[12],$[13],$[14],$[15],$[16],$[17],$[18],$[19],$[20],$[21])}reset(){this.init()}}ta1.NuidImpl=rp0;ta1.nuid=new rp0});var $s1=v((sa1)=>{Object.defineProperty(sa1,"__esModule",{value:!0});sa1.nuid=sa1.Nuid=void 0;var aa1=ra1();sa1.Nuid=aa1.NuidImpl;sa1.nuid=aa1.nuid});var D70=v((L70)=>{Object.defineProperty(L70,"__esModule",{value:!0});L70.nuid=L70.Nuid=void 0;var Zs1=$s1();Object.defineProperty(L70,"Nuid",{enumerable:!0,get:function(){return Zs1.Nuid}});Object.defineProperty(L70,"nuid",{enumerable:!0,get:function(){return Zs1.nuid}})});var ZO=v((Xs1)=>{Object.defineProperty(Xs1,"__esModule",{value:!0});Xs1.DEFAULT_HOST=Xs1.DEFAULT_PORT=Xs1.Match=void 0;Xs1.syncIterator=We8;Xs1.createInbox=He8;var Je8=D70(),Ke8=ZG();Xs1.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function We8($){let Z=$[Symbol.asyncIterator]();return{async next(){let X=await Z.next();if(X.done)return Promise.resolve(null);return Promise.resolve(X.value)}}}function He8($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw Ke8.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${Je8.nuid.next()}`}Xs1.DEFAULT_PORT=4222;Xs1.DEFAULT_HOST="127.0.0.1"});var Up=v((Js1)=>{Object.defineProperty(Js1,"__esModule",{value:!0});Js1.DataBuffer=void 0;var Ys1=$G();class Gs1{buffers;byteLength;constructor(){this.buffers=[],this.byteLength=0}static concat(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}static fromAscii($){if(!$)$="";return Ys1.TE.encode($)}static toAscii($){return Ys1.TD.decode($)}reset(){this.buffers.length=0,this.byteLength=0}pack(){if(this.buffers.length>1){let $=new Uint8Array(this.byteLength),Z=0;for(let X=0;X<this.buffers.length;X++)$.set(this.buffers[X],Z),Z+=this.buffers[X].length;this.buffers.length=0,this.buffers.push($)}}shift(){if(this.buffers.length){let $=this.buffers.shift();if($)return this.byteLength-=$.length,$}return new Uint8Array(0)}drain($){if(this.buffers.length){this.pack();let Z=this.buffers.pop();if(Z){let X=this.byteLength;if($===void 0||$>X)$=X;let Q=Z.subarray(0,$);if(X>$)this.buffers.push(Z.subarray($));return this.byteLength=X-$,Q}}return new Uint8Array(0)}fill($,...Z){if($)this.buffers.push($),this.byteLength+=$.length;for(let X=0;X<Z.length;X++)if(Z[X]&&Z[X].length)this.buffers.push(Z[X]),this.byteLength+=Z[X].length}peek(){if(this.buffers.length)return this.pack(),this.buffers[0];return new Uint8Array(0)}size(){return this.byteLength}length(){return this.buffers.length}}Js1.DataBuffer=Gs1});var gE=v((Hs1)=>{Object.defineProperty(Hs1,"__esModule",{value:!0});Hs1.LF=Hs1.CR=Hs1.CRLF=Hs1.CR_LF_LEN=Hs1.CR_LF=void 0;Hs1.setTransportFactory=we8;Hs1.defaultPort=Ee8;Hs1.getUrlParseFn=je8;Hs1.newTransport=ze8;Hs1.getResolveFn=Pe8;Hs1.protoLen=Ws1;Hs1.extractProtocolMessage=Ae8;var Oe8=$G(),Le8=ZO(),De8=Up(),XG;function we8($){XG=$}function Ee8(){return XG!==void 0&&XG.defaultPort!==void 0?XG.defaultPort:Le8.DEFAULT_PORT}function je8(){return XG!==void 0&&XG.urlParseFn?XG.urlParseFn:void 0}function ze8(){if(!XG||typeof XG.factory!=="function")throw Error("transport fn is not set");return XG.factory()}function Pe8(){return XG!==void 0&&XG.dnsResolveFn?XG.dnsResolveFn:void 0}Hs1.CR_LF=`\r
|
|
1445
1445
|
`;Hs1.CR_LF_LEN=Hs1.CR_LF.length;Hs1.CRLF=De8.DataBuffer.fromAscii(Hs1.CR_LF);Hs1.CR=new Uint8Array(Hs1.CRLF)[0];Hs1.LF=new Uint8Array(Hs1.CRLF)[1];function Ws1($){for(let Z=0;Z<$.length;Z++){let X=Z+1;if($.byteLength>X&&$[Z]===Hs1.CR&&$[X]===Hs1.LF)return X+1}return 0}function Ae8($){let Z=Ws1($);if(Z>0){let Q=new Uint8Array($).slice(0,Z);return Oe8.TD.decode(Q)}return""}});var Zn0=v((ws1)=>{Object.defineProperty(ws1,"__esModule",{value:!0});ws1.ipV4=Os1;ws1.isIP=ve8;ws1.parseIP=Ls1;var Bp=4,hE=16,w70=48,Bs1=57,Ns1=65,Ce8=70,Us1=97,_e8=102,$n0=16777215;function Os1($,Z,X,Q){let Y=new Uint8Array(hE);return[0,0,0,0,0,0,0,0,0,0,255,255].forEach((J,K)=>{Y[K]=J}),Y[12]=$,Y[13]=Z,Y[14]=X,Y[15]=Q,Y}function ve8($){return Ls1($)!==void 0}function Ls1($){for(let Z=0;Z<$.length;Z++)switch($[Z]){case".":return Ds1($);case":":return xe8($)}return}function Ds1($){let Z=new Uint8Array(Bp);for(let X=0;X<Bp;X++){if($.length===0)return;if(X>0){if($[0]!==".")return;$=$.substring(1)}let{n:Q,c:Y,ok:G}=fe8($);if(!G||Q>255)return;$=$.substring(Y),Z[X]=Q}return Os1(Z[0],Z[1],Z[2],Z[3])}function xe8($){let Z=new Uint8Array(hE),X=-1;if($.length>=2&&$[0]===":"&&$[1]===":"){if(X=0,$=$.substring(2),$.length===0)return Z}let Q=0;while(Q<hE){let{n:Y,c:G,ok:J}=be8($);if(!J||Y>65535)return;if(G<$.length&&$[G]==="."){if(X<0&&Q!=hE-Bp)return;if(Q+Bp>hE)return;let K=Ds1($);if(K===void 0)return;Z[Q]=K[12],Z[Q+1]=K[13],Z[Q+2]=K[14],Z[Q+3]=K[15],$="",Q+=Bp;break}if(Z[Q]=Y>>8,Z[Q+1]=Y,Q+=2,$=$.substring(G),$.length===0)break;if($[0]!==":"||$.length==1)return;if($=$.substring(1),$[0]===":"){if(X>=0)return;if(X=Q,$=$.substring(1),$.length===0)break}}if($.length!==0)return;if(Q<hE){if(X<0)return;let Y=hE-Q;for(let G=Q-1;G>=X;G--)Z[G+Y]=Z[G];for(let G=X+Y-1;G>=X;G--)Z[G]=0}else if(X>=0)return;return Z}function fe8($){let Z=0,X=0;for(Z=0;Z<$.length&&w70<=$.charCodeAt(Z)&&$.charCodeAt(Z)<=Bs1;Z++)if(X=X*10+($.charCodeAt(Z)-w70),X>=$n0)return{n:$n0,c:Z,ok:!1};if(Z===0)return{n:0,c:0,ok:!1};return{n:X,c:Z,ok:!0}}function be8($){let Z=0,X=0;for(X=0;X<$.length;X++){if(w70<=$.charCodeAt(X)&&$.charCodeAt(X)<=Bs1)Z*=16,Z+=$.charCodeAt(X)-w70;else if(Us1<=$.charCodeAt(X)&&$.charCodeAt(X)<=_e8)Z*=16,Z+=$.charCodeAt(X)-Us1+10;else if(Ns1<=$.charCodeAt(X)&&$.charCodeAt(X)<=Ce8)Z*=16,Z+=$.charCodeAt(X)-Ns1+10;else break;if(Z>=$n0)return{n:0,c:X,ok:!1}}if(X===0)return{n:0,c:X,ok:!1};return{n:Z,c:X,ok:!0}}});var Kn0=v((js1)=>{Object.defineProperty(js1,"__esModule",{value:!0});js1.Servers=js1.ServerImpl=void 0;js1.isIPV4OrHostname=Es1;js1.hostPort=Jn0;var Xn0=gE(),Qn0=u3(),Yn0=Zn0(),ue8=ZO(),ce8=ZG();function Es1($){if($.indexOf("[")!==-1||$.indexOf("::")!==-1)return!1;if($.indexOf(".")!==-1)return!0;if($.split(":").length<=2)return!0;return!1}function Gn0($){return!Es1($)}function le8($){let X=$.toUpperCase().indexOf("::FFFF:");if(X!==-1&&$.indexOf(".")!==-1){let Q=$.substring(X+7);return Q=Q.replace("[",""),Q.replace("]","")}return $}function Jn0($){if($=$.trim(),$.match(/^(.*:\/\/)(.*)/m))$=$.replace(/^(.*:\/\/)(.*)/gm,"$2");if($=le8($),Gn0($)&&$.indexOf("[")===-1)$=`[${$}]`;let Z=Gn0($)?$.match(/(]:)(\d+)/):$.match(/(:)(\d+)/),X=Z&&Z.length===3&&Z[1]&&Z[2]?parseInt(Z[2]):ue8.DEFAULT_PORT,Y=new URL(`${X===80?"https":"http"}://${$}`);Y.port=`${X}`;let G=Y.hostname;if(G.charAt(0)==="[")G=G.substring(1,G.length-1);return{listen:Y.host,hostname:G,port:X}}class Wy{src;listen;hostname;port;didConnect;reconnects;lastConnect;gossiped;tlsName;resolves;constructor($,Z=!1){this.src=$,this.tlsName="";let X=Jn0($);this.listen=X.listen,this.hostname=X.hostname,this.port=X.port,this.didConnect=!1,this.reconnects=0,this.lastConnect=0,this.gossiped=Z}toString(){return this.listen}async resolve($){if(!$.fn||$.resolve===!1)return[this];let Z=[];if((0,Yn0.isIP)(this.hostname))return[this];else{let X=await $.fn(this.hostname);if($.debug)console.log(`resolve ${this.hostname} = ${X.join(",")}`);for(let Q of X){let Y=this.port===80?"https":"http",G=new URL(`${Y}://${Gn0(Q)?"["+Q+"]":Q}`);G.port=`${this.port}`;let J=new Wy(G.host,!1);J.tlsName=this.hostname,Z.push(J)}}if($.randomize)(0,Qn0.shuffle)(Z);return this.resolves=Z,Z}}js1.ServerImpl=Wy;class E70{firstSelect;servers;currentServer;tlsName;randomize;constructor($={}){this.firstSelect=!0,this.servers=[],this.tlsName="",this.randomize=$.randomize||!1}setServers($){if(!Array.isArray($)||$.length===0)throw ce8.InvalidArgumentError.format("servers","cannot be empty");let Z=(0,Xn0.getUrlParseFn)(),X=new Map;for(let Y of this.servers)X.set(Y.listen,Y);let Q=[];for(let Y of $){Y=Z?Z(Y):Y;let{listen:G}=Jn0(Y),J=X.get(G);if(J)J.gossiped=!1,Q.push(J);else Q.push(new Wy(Y))}if(this.randomize)(0,Qn0.shuffle)(Q);if(this.servers=Q,this.currentServer===void 0||!Q.includes(this.currentServer))this.currentServer=Q[0],this.firstSelect=!0}clear(){this.servers.length=0}updateTLSName(){let $=this.getCurrentServer();if(!(0,Yn0.isIP)($.hostname))this.tlsName=$.hostname,this.servers.forEach((Z)=>{if(Z.gossiped)Z.tlsName=this.tlsName})}getCurrentServer(){return this.currentServer}addServer($,Z=!1){let X=(0,Xn0.getUrlParseFn)();$=X?X($):$;let Q=new Wy($,Z);if((0,Yn0.isIP)(Q.hostname))Q.tlsName=this.tlsName;this.servers.push(Q)}selectServer(){if(this.firstSelect)return this.firstSelect=!1,this.currentServer;let $=this.servers.shift();if($)this.servers.push($),this.currentServer=$;return $}removeCurrentServer(){this.removeServer(this.currentServer)}removeServer($){if($){let Z=this.servers.indexOf($);this.servers.splice(Z,1)}}snapshot(){return E70.freezeAll(this.servers)}snapshotForHandler(){let $=this.currentServer;if(!$)return this.snapshot();let Z=this.servers.indexOf($);if(Z<=0)return this.snapshot();return E70.freezeAll([$,...this.servers.slice(0,Z),...this.servers.slice(Z+1)])}static freezeAll($){return $.map((Z)=>Object.freeze({hostname:Z.hostname,port:Z.port,listen:Z.listen,src:Z.src,tlsName:Z.tlsName,reconnects:Z.reconnects,lastConnect:Z.lastConnect,gossiped:Z.gossiped,didConnect:Z.didConnect}))}find($){return this.servers.find((Z)=>Z.listen===$.listen)}setCurrent($){this.currentServer=$}length(){return this.servers.length}next(){return this.servers.length?this.servers[0]:void 0}getServers(){return this.servers}update($,Z){let X=[],Q=[],Y=(0,Xn0.getUrlParseFn)(),G=new Map;if($.connect_urls&&$.connect_urls.length>0)$.connect_urls.forEach((K)=>{K=Y?Y(K,Z):K;let W=new Wy(K,!0);G.set(K,W)});let J=[];if(this.servers.forEach((K,W)=>{let H=K.listen;if(K.gossiped&&this.currentServer.listen!==H&&G.get(H)===void 0)J.push(W);G.delete(H)}),J.reverse(),J.forEach((K)=>{let W=this.servers.splice(K,1);Q=Q.concat(W[0].listen)}),G.forEach((K,W)=>{this.servers.push(K),X.push(W)}),this.randomize&&X.length>0){let K=this.currentServer,W=this.servers.filter((H)=>H!==K);(0,Qn0.shuffle)(W),this.servers=K?[K,...W]:W}return{added:X,deleted:Q}}}js1.Servers=E70});var j70=v((Ts1)=>{Object.defineProperty(Ts1,"__esModule",{value:!0});Ts1.QueuedIteratorImpl=void 0;var Wn0=u3(),Ps1=ZG();class As1{inflight;processed;received;noIterator;iterClosed;done;signal;yields;filtered;pendingFiltered;ctx;_data;err;time;profile;yielding;didBreak;constructor(){this.inflight=0,this.filtered=0,this.pendingFiltered=0,this.processed=0,this.received=0,this.noIterator=!1,this.done=!1,this.signal=(0,Wn0.deferred)(),this.yields=[],this.iterClosed=(0,Wn0.deferred)(),this.time=0,this.yielding=!1,this.didBreak=!1,this.profile=!1}[Symbol.asyncIterator](){return this.iterate()}push($){if(this.done)return;if(this.didBreak){if(typeof $==="function"){let Z=$;try{Z()}catch(X){}}return}if(typeof $==="function")this.pendingFiltered++;this.yields.push($),this.signal.resolve()}async*iterate(){if(this.noIterator)throw new Ps1.InvalidOperationError("iterator cannot be used when a callback is registered");if(this.yielding)throw new Ps1.InvalidOperationError("iterator is already yielding");this.yielding=!0;try{while(!0){if(this.yields.length===0)await this.signal;if(this.err)throw this.err;let $=this.yields;this.inflight=$.length,this.yields=[];for(let Z=0;Z<$.length;Z++){if(typeof $[Z]==="function"){this.pendingFiltered--;let Q=$[Z];try{Q()}catch(Y){throw Y}if(this.err)throw this.err;continue}this.processed++,this.inflight--;let X=this.profile?Date.now():0;yield $[Z],this.time=this.profile?Date.now()-X:0}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,Wn0.deferred)()}}finally{this.didBreak=!0,this.stop()}}stop($){if(this.done)return;this.err=$,this.done=!0,this.signal.resolve(),this.iterClosed.resolve($)}getProcessed(){return this.noIterator?this.received:this.processed}getPending(){return this.yields.length+this.inflight-this.pendingFiltered}getReceived(){return this.received-this.filtered}}Ts1.QueuedIteratorImpl=As1});var Hn0=v((Ms1)=>{Object.defineProperty(Ms1,"__esModule",{value:!0});Ms1.MuxSubscription=void 0;var pe8=ZO(),Is1=ZG();class qs1{baseInbox;reqs;constructor(){this.reqs=new Map}size(){return this.reqs.size}init($){return this.baseInbox=`${(0,pe8.createInbox)($)}.`,this.baseInbox}add($){if(!isNaN($.received))$.received=0;this.reqs.set($.token,$)}get($){return this.reqs.get($)}cancel($){this.reqs.delete($.token)}getToken($){let Z=$.subject||"";if(Z.indexOf(this.baseInbox)===0)return Z.substring(this.baseInbox.length);return null}all(){return Array.from(this.reqs.values())}handleError($,Z){if($)return this.all().forEach((X)=>{X.resolver(Z,{})}),!0;if(Z.operation==="publish"){let X=this.all().find((Q)=>{return Q.requestSubject===Z.subject});if(X)return X.resolver(Z,{}),!0}return!1}dispatcher(){return($,Z)=>{let X=this.getToken(Z);if(X){let Q=this.get(X);if(Q){if($===null)$=Z?.data?.length===0&&Z.headers?.code===503?new Is1.NoRespondersError(Q.requestSubject):null;Q.resolver($,Z)}}}}close(){let $=new Is1.RequestError("connection closed");this.reqs.forEach((Z)=>{Z.resolver($,{})})}}Ms1.MuxSubscription=qs1});var Fn0=v((Ss1)=>{Object.defineProperty(Ss1,"__esModule",{value:!0});Ss1.Heartbeat=void 0;var ne8=u3();class ks1{ph;interval;maxOut;timer;pendings;constructor($,Z,X){this.ph=$,this.interval=Z,this.maxOut=X,this.pendings=[]}start(){this.cancel(),this._schedule()}cancel($){if(this.timer)clearTimeout(this.timer),this.timer=void 0;if(this._reset(),$)this.ph.disconnect()}_schedule(){this.timer=setTimeout(()=>{if(this.ph.dispatchStatus({type:"ping",pendingPings:this.pendings.length+1}),this.pendings.length===this.maxOut){this.cancel(!0);return}let $=(0,ne8.deferred)();this.ph.flush($).then(()=>{this._reset()}).catch(()=>{this.cancel()}),this.pendings.push($),this._schedule()},this.interval)}_reset(){this.pendings=this.pendings.filter(($)=>{return $.resolve(),!1})}}Ss1.Heartbeat=ks1});var Bn0=v((fs1)=>{Object.defineProperty(fs1,"__esModule",{value:!0});fs1.DenoBuffer=fs1.MAX_SIZE=fs1.AssertionError=void 0;fs1.assert=vs1;fs1.concat=xs1;fs1.append=oe8;fs1.readAll=re8;fs1.writeAll=ae8;var te8=$G();class Nn0 extends Error{constructor($){super($);this.name="AssertionError"}}fs1.AssertionError=Nn0;function vs1($,Z="Assertion failed."){if(!$)throw new Nn0(Z)}var _s1=32768;fs1.MAX_SIZE=4294967294;function z70($,Z,X=0){let Q=Z.byteLength-X;if($.byteLength>Q)$=$.subarray(0,Q);return Z.set($,X),$.byteLength}function xs1($,Z){if($===void 0&&Z===void 0)return new Uint8Array(0);if($===void 0)return Z;if(Z===void 0)return $;let X=new Uint8Array($.length+Z.length);return X.set($,0),X.set(Z,$.length),X}function oe8($,Z){return xs1($,Uint8Array.of(Z))}class Un0{_buf;_off;constructor($){if(this._off=0,$==null){this._buf=new Uint8Array(0);return}this._buf=new Uint8Array($)}bytes($={copy:!0}){if($.copy===!1)return this._buf.subarray(this._off);return this._buf.slice(this._off)}empty(){return this._buf.byteLength<=this._off}get length(){return this._buf.byteLength-this._off}get capacity(){return this._buf.buffer.byteLength}truncate($){if($===0){this.reset();return}if($<0||$>this.length)throw Error("bytes.Buffer: truncation out of range");this._reslice(this._off+$)}reset(){this._reslice(0),this._off=0}_tryGrowByReslice($){let Z=this._buf.byteLength;if($<=this.capacity-Z)return this._reslice(Z+$),Z;return-1}_reslice($){vs1($<=this._buf.buffer.byteLength),this._buf=new Uint8Array(this._buf.buffer,0,$)}readByte(){let $=new Uint8Array(1);if(this.read($))return $[0];return null}read($){if(this.empty()){if(this.reset(),$.byteLength===0)return 0;return null}let Z=z70(this._buf.subarray(this._off),$);return this._off+=Z,Z}writeByte($){return this.write(Uint8Array.of($))}writeString($){return this.write(te8.TE.encode($))}write($){let Z=this._grow($.byteLength);return z70($,this._buf,Z)}_grow($){let Z=this.length;if(Z===0&&this._off!==0)this.reset();let X=this._tryGrowByReslice($);if(X>=0)return X;let Q=this.capacity;if($<=Math.floor(Q/2)-Z)z70(this._buf.subarray(this._off),this._buf);else if(Q+$>fs1.MAX_SIZE)throw Error("The buffer cannot be grown beyond the maximum size.");else{let Y=new Uint8Array(Math.min(2*Q+$,fs1.MAX_SIZE));z70(this._buf.subarray(this._off),Y),this._buf=Y}return this._off=0,this._reslice(Math.min(Z+$,fs1.MAX_SIZE)),Z}grow($){if($<0)throw Error("Buffer._grow: negative count");let Z=this._grow($);this._reslice(Z)}readFrom($){let Z=0,X=new Uint8Array(_s1);while(!0){let Q=this.capacity-this.length<_s1,Y=Q?X:new Uint8Array(this._buf.buffer,this.length),G=$.read(Y);if(G===null)return Z;if(Q)this.write(Y.subarray(0,G));else this._reslice(this.length+G);Z+=G}}}fs1.DenoBuffer=Un0;function re8($){let Z=new Un0;return Z.readFrom($),Z.bytes()}function ae8($,Z){let X=0;while(X<Z.length)X+=$.write(Z.subarray(X))}});var Dn0=v((us1)=>{Object.defineProperty(us1,"__esModule",{value:!0});us1.cc=us1.State=us1.Parser=us1.Kind=void 0;us1.describe=Y04;var On0=Bn0(),Ln0=$G();us1.Kind={OK:0,ERR:1,MSG:2,INFO:3,PING:4,PONG:5};function Y04($){let Z,X="";switch($.kind){case us1.Kind.MSG:Z="MSG";break;case us1.Kind.OK:Z="OK";break;case us1.Kind.ERR:Z="ERR",X=Ln0.TD.decode($.data);break;case us1.Kind.PING:Z="PING";break;case us1.Kind.PONG:Z="PONG";break;case us1.Kind.INFO:Z="INFO",X=Ln0.TD.decode($.data)}return`${Z}: ${X}`}function ys1(){let $={};return $.sid=-1,$.hdr=-1,$.size=-1,$}var gs1=48,G04=57,Hy=67108864;class hs1{dispatcher;state;as;drop;hdr;ma;argBuf;msgBuf;constructor($){this.dispatcher=$,this.state=us1.State.OP_START,this.as=0,this.drop=0,this.hdr=0}parse($){let Z;for(Z=0;Z<$.length;Z++){let X=$[Z];switch(this.state){case us1.State.OP_START:switch(X){case us1.cc.M:case us1.cc.m:this.state=us1.State.OP_M,this.hdr=-1,this.ma=ys1();break;case us1.cc.H:case us1.cc.h:this.state=us1.State.OP_H,this.hdr=0,this.ma=ys1();break;case us1.cc.P:case us1.cc.p:this.state=us1.State.OP_P;break;case us1.cc.PLUS:this.state=us1.State.OP_PLUS;break;case us1.cc.MINUS:this.state=us1.State.OP_MINUS;break;case us1.cc.I:case us1.cc.i:this.state=us1.State.OP_I;break;default:throw this.fail($.subarray(Z))}break;case us1.State.OP_H:switch(X){case us1.cc.M:case us1.cc.m:this.state=us1.State.OP_M;break;default:throw this.fail($.subarray(Z))}break;case us1.State.OP_M:switch(X){case us1.cc.S:case us1.cc.s:this.state=us1.State.OP_MS;break;default:throw this.fail($.subarray(Z))}break;case us1.State.OP_MS:switch(X){case us1.cc.G:case us1.cc.g:this.state=us1.State.OP_MSG;break;default:throw this.fail($.subarray(Z))}break;case us1.State.OP_MSG:switch(X){case us1.cc.SPACE:case us1.cc.TAB:this.state=us1.State.OP_MSG_SPC;break;default:throw this.fail($.subarray(Z))}break;case us1.State.OP_MSG_SPC:switch(X){case us1.cc.SPACE:case us1.cc.TAB:continue;default:this.state=us1.State.MSG_ARG,this.as=Z}break;case us1.State.MSG_ARG:switch(X){case us1.cc.CR:this.drop=1;break;case us1.cc.NL:{let Q=this.argBuf?this.argBuf.bytes():$.subarray(this.as,Z-this.drop);this.processMsgArgs(Q),this.drop=0,this.as=Z+1,this.state=us1.State.MSG_PAYLOAD,Z=this.as+this.ma.size-1;break}default:if(this.argBuf)this.argBuf.writeByte(X)}break;case us1.State.MSG_PAYLOAD:if(this.msgBuf)if(this.msgBuf.length>=this.ma.size){let Q=this.msgBuf.bytes({copy:!1});this.dispatcher.push({kind:us1.Kind.MSG,msg:this.ma,data:Q}),this.argBuf=void 0,this.msgBuf=void 0,this.state=us1.State.MSG_END}else{let Q=this.ma.size-this.msgBuf.length,Y=$.length-Z;if(Y<Q)Q=Y;if(Q>0)this.msgBuf.write($.subarray(Z,Z+Q)),Z=Z+Q-1;else this.msgBuf.writeByte(X)}else if(Z-this.as>=this.ma.size)this.dispatcher.push({kind:us1.Kind.MSG,msg:this.ma,data:$.subarray(this.as,Z)}),this.argBuf=void 0,this.msgBuf=void 0,this.state=us1.State.MSG_END;break;case us1.State.MSG_END:switch(X){case us1.cc.NL:this.drop=0,this.as=Z+1,this.state=us1.State.OP_START;break;default:continue}break;case us1.State.OP_PLUS:switch(X){case us1.cc.O:case us1.cc.o:this.state=us1.State.OP_PLUS_O;break;default:throw this.fail($.subarray(Z))}break;case us1.State.OP_PLUS_O:switch(X){case us1.cc.K:case us1.cc.k:this.state=us1.State.OP_PLUS_OK;break;default:throw this.fail($.subarray(Z))}break;case us1.State.OP_PLUS_OK:switch(X){case us1.cc.NL:this.dispatcher.push({kind:us1.Kind.OK}),this.drop=0,this.state=us1.State.OP_START;break}break;case us1.State.OP_MINUS:switch(X){case us1.cc.E:case us1.cc.e:this.state=us1.State.OP_MINUS_E;break;default:throw this.fail($.subarray(Z))}break;case us1.State.OP_MINUS_E:switch(X){case us1.cc.R:case us1.cc.r:this.state=us1.State.OP_MINUS_ER;break;default:throw this.fail($.subarray(Z))}break;case us1.State.OP_MINUS_ER:switch(X){case us1.cc.R:case us1.cc.r:this.state=us1.State.OP_MINUS_ERR;break;default:throw this.fail($.subarray(Z))}break;case us1.State.OP_MINUS_ERR:switch(X){case us1.cc.SPACE:case us1.cc.TAB:this.state=us1.State.OP_MINUS_ERR_SPC;break;default:throw this.fail($.subarray(Z))}break;case us1.State.OP_MINUS_ERR_SPC:switch(X){case us1.cc.SPACE:case us1.cc.TAB:continue;default:this.state=us1.State.MINUS_ERR_ARG,this.as=Z}break;case us1.State.MINUS_ERR_ARG:switch(X){case us1.cc.CR:this.drop=1;break;case us1.cc.NL:{let Q;if(this.argBuf)Q=this.argBuf.bytes(),this.argBuf=void 0;else Q=$.subarray(this.as,Z-this.drop);this.dispatcher.push({kind:us1.Kind.ERR,data:Q}),this.drop=0,this.as=Z+1,this.state=us1.State.OP_START;break}default:if(this.argBuf)this.argBuf.write(Uint8Array.of(X))}break;case us1.State.OP_P:switch(X){case us1.cc.I:case us1.cc.i:this.state=us1.State.OP_PI;break;case us1.cc.O:case us1.cc.o:this.state=us1.State.OP_PO;break;default:throw this.fail($.subarray(Z))}break;case us1.State.OP_PO:switch(X){case us1.cc.N:case us1.cc.n:this.state=us1.State.OP_PON;break;default:throw this.fail($.subarray(Z))}break;case us1.State.OP_PON:switch(X){case us1.cc.G:case us1.cc.g:this.state=us1.State.OP_PONG;break;default:throw this.fail($.subarray(Z))}break;case us1.State.OP_PONG:switch(X){case us1.cc.NL:this.dispatcher.push({kind:us1.Kind.PONG}),this.drop=0,this.state=us1.State.OP_START;break}break;case us1.State.OP_PI:switch(X){case us1.cc.N:case us1.cc.n:this.state=us1.State.OP_PIN;break;default:throw this.fail($.subarray(Z))}break;case us1.State.OP_PIN:switch(X){case us1.cc.G:case us1.cc.g:this.state=us1.State.OP_PING;break;default:throw this.fail($.subarray(Z))}break;case us1.State.OP_PING:switch(X){case us1.cc.NL:this.dispatcher.push({kind:us1.Kind.PING}),this.drop=0,this.state=us1.State.OP_START;break}break;case us1.State.OP_I:switch(X){case us1.cc.N:case us1.cc.n:this.state=us1.State.OP_IN;break;default:throw this.fail($.subarray(Z))}break;case us1.State.OP_IN:switch(X){case us1.cc.F:case us1.cc.f:this.state=us1.State.OP_INF;break;default:throw this.fail($.subarray(Z))}break;case us1.State.OP_INF:switch(X){case us1.cc.O:case us1.cc.o:this.state=us1.State.OP_INFO;break;default:throw this.fail($.subarray(Z))}break;case us1.State.OP_INFO:switch(X){case us1.cc.SPACE:case us1.cc.TAB:this.state=us1.State.OP_INFO_SPC;break;default:throw this.fail($.subarray(Z))}break;case us1.State.OP_INFO_SPC:switch(X){case us1.cc.SPACE:case us1.cc.TAB:continue;default:this.state=us1.State.INFO_ARG,this.as=Z}break;case us1.State.INFO_ARG:switch(X){case us1.cc.CR:this.drop=1;break;case us1.cc.NL:{let Q;if(this.argBuf)Q=this.argBuf.bytes(),this.argBuf=void 0;else Q=$.subarray(this.as,Z-this.drop);this.dispatcher.push({kind:us1.Kind.INFO,data:Q}),this.drop=0,this.as=Z+1,this.state=us1.State.OP_START;break}default:if(this.argBuf)this.argBuf.writeByte(X)}break;default:throw this.fail($.subarray(Z))}}if((this.state===us1.State.MSG_ARG||this.state===us1.State.MINUS_ERR_ARG||this.state===us1.State.INFO_ARG)&&!this.argBuf)this.argBuf=new On0.DenoBuffer($.subarray(this.as,Z-this.drop));if(this.state===us1.State.MSG_PAYLOAD&&!this.msgBuf){if(!this.argBuf)this.cloneMsgArg();this.msgBuf=new On0.DenoBuffer($.subarray(this.as))}}cloneMsgArg(){let $=this.ma.subject.length,Z=this.ma.reply?this.ma.reply.length:0,X=new Uint8Array($+Z);if(X.set(this.ma.subject),this.ma.reply)X.set(this.ma.reply,$);if(this.argBuf=new On0.DenoBuffer(X),this.ma.subject=X.subarray(0,$),this.ma.reply)this.ma.reply=X.subarray($)}processMsgArgs($){if(this.hdr>=0)return this.processHeaderMsgArgs($);let Z=[],X=-1;for(let Q=0;Q<$.length;Q++)switch($[Q]){case us1.cc.SPACE:case us1.cc.TAB:case us1.cc.CR:case us1.cc.NL:if(X>=0)Z.push($.subarray(X,Q)),X=-1;break;default:if(X<0)X=Q}if(X>=0)Z.push($.subarray(X));switch(Z.length){case 3:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=void 0,this.ma.size=this.protoParseInt(Z[2],Hy);break;case 4:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=Z[2],this.ma.size=this.protoParseInt(Z[3],Hy);break;default:throw this.fail($,"processMsgArgs Parse Error")}if(this.ma.sid<0)throw this.fail($,"processMsgArgs Bad or Missing Sid Error");if(this.ma.size<0)throw this.fail($,"processMsgArgs Bad or Missing Size Error")}fail($,Z=""){if(!Z)Z=`parse error [${this.state}]`;else Z=`${Z} [${this.state}]`;return Error(`${Z}: ${Ln0.TD.decode($)}`)}processHeaderMsgArgs($){let Z=[],X=-1;for(let Q=0;Q<$.length;Q++)switch($[Q]){case us1.cc.SPACE:case us1.cc.TAB:case us1.cc.CR:case us1.cc.NL:if(X>=0)Z.push($.subarray(X,Q)),X=-1;break;default:if(X<0)X=Q}if(X>=0)Z.push($.subarray(X));switch(Z.length){case 4:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=void 0,this.ma.hdr=this.protoParseInt(Z[2],Hy),this.ma.size=this.protoParseInt(Z[3],Hy);break;case 5:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=Z[2],this.ma.hdr=this.protoParseInt(Z[3],Hy),this.ma.size=this.protoParseInt(Z[4],Hy);break;default:throw this.fail($,"processHeaderMsgArgs Parse Error")}if(this.ma.sid<0)throw this.fail($,"processHeaderMsgArgs Bad or Missing Sid Error");if(this.ma.hdr<0||this.ma.hdr>this.ma.size)throw this.fail($,"processHeaderMsgArgs Bad or Missing Header Size Error");if(this.ma.size<0)throw this.fail($,"processHeaderMsgArgs Bad or Missing Size Error")}protoParseInt($,Z){if($.length===0||$.length>15)return-1;let X=0;for(let Q=0;Q<$.length;Q++){if($[Q]<gs1||$[Q]>G04)return-1;X=X*10+($[Q]-gs1)}return Z!==void 0&&X>Z?-1:X}}us1.Parser=hs1;us1.State={OP_START:0,OP_PLUS:1,OP_PLUS_O:2,OP_PLUS_OK:3,OP_MINUS:4,OP_MINUS_E:5,OP_MINUS_ER:6,OP_MINUS_ERR:7,OP_MINUS_ERR_SPC:8,MINUS_ERR_ARG:9,OP_M:10,OP_MS:11,OP_MSG:12,OP_MSG_SPC:13,MSG_ARG:14,MSG_PAYLOAD:15,MSG_END:16,OP_H:17,OP_P:18,OP_PI:19,OP_PIN:20,OP_PING:21,OP_PO:22,OP_PON:23,OP_PONG:24,OP_I:25,OP_IN:26,OP_INF:27,OP_INFO:28,OP_INFO_SPC:29,INFO_ARG:30};us1.cc={CR:13,E:69,e:101,F:70,f:102,G:71,g:103,H:72,h:104,I:73,i:105,K:75,k:107,M:77,m:109,MINUS:45,N:78,n:110,NL:10,O:79,o:111,P:80,p:112,PLUS:43,R:82,r:114,S:83,s:115,SPACE:32,TAB:9}});var T70=v((ls1)=>{Object.defineProperty(ls1,"__esModule",{value:!0});ls1.MsgHdrsImpl=void 0;ls1.canonicalMIMEHeaderKey=En0;ls1.headers=W04;var cs1=$G(),c3=ZO(),A70=ZG();function En0($){let F=!0,N=Array($.length);for(let U=0;U<$.length;U++){let B=$.charCodeAt(U);if(B===58||B<33||B>126)throw A70.InvalidArgumentError.format("header",`'${$[U]}' is not a valid character in a header name`);if(F&&97<=B&&B<=122)B-=32;else if(!F&&65<=B&&B<=90)B+=32;N[U]=B,F=B==45}return String.fromCharCode(...N)}function W04($=0,Z=""){if($===0&&Z!=="")throw A70.InvalidArgumentError.format("code","is required");else if($>0&&Z==="")throw A70.InvalidArgumentError.format("description","is required");return new Fy($,Z)}var wn0="NATS/1.0";class Fy{_code;headers;_description;constructor($=0,Z=""){this._code=$,this._description=Z,this.headers=new Map}[Symbol.iterator](){return this.headers.entries()}size(){return this.headers.size}equals($){if($&&this.headers.size===$.headers.size&&this._code===$._code){for(let[Z,X]of this.headers){let Q=$.values(Z);if(X.length!==Q.length)return!1;let Y=[...X].sort(),G=[...Q].sort();for(let J=0;J<Y.length;J++)if(Y[J]!==G[J])return!1}return!0}return!1}static decode($){let Z=new Fy,Q=cs1.TD.decode($).split(`\r
|
|
1446
1446
|
`),Y=Q[0];if(Y!==wn0){let G=Y.replace(wn0,"").trim();if(G.length>0){if(Z._code=parseInt(G,10),isNaN(Z._code))Z._code=0;let J=Z._code.toString();G=G.replace(J,""),Z._description=G.trim()}}if(Q.length>=1)Q.slice(1).map((G)=>{if(G){let J=G.indexOf(":");if(J>-1){let K=G.slice(0,J),W=G.slice(J+1).trim();Z.append(K,W)}}});return Z}toString(){if(this.headers.size===0&&this._code===0)return"";let $=wn0;if(this._code>0&&this._description!=="")$+=` ${this._code} ${this._description}`;for(let[Z,X]of this.headers)for(let Q=0;Q<X.length;Q++)$=`${$}\r
|
|
1447
1447
|
${Z}: ${X[Q]}`;return`${$}\r
|
|
@@ -2740,7 +2740,7 @@ Guidelines:
|
|
|
2740
2740
|
}
|
|
2741
2741
|
return { consoleLogs, errors, evaluateResult };
|
|
2742
2742
|
}
|
|
2743
|
-
`,O=await Uv("Browserless function call",`${Hv}/function?token=${encodeURIComponent(H)}`,{method:"POST",headers:{"Content-Type":"application/javascript"},body:B});if(!O.ok)return{success:!1,error:O.error,url:F.url};let D=O.response;if(!D.ok){let z=await D.text().catch(()=>"Unknown error");return{success:!1,error:`Browserless function call failed (${D.status}): ${z}`,url:F.url}}let w=await D.json().catch(async()=>{return{error:`Browserless returned non-JSON response: ${(await D.text().catch(()=>"")).slice(0,200)}`}}),E=JSON.stringify(w,null,2);X.set(K.toolCallId,E);let j=RX(E);if(!("error"in w)&&j>UD&&Q){let z=`inspect-pages/${crypto.randomUUID()}.json`;return await Q.put(z,new TextEncoder().encode(E),{contentType:"application/json"}),{success:!0,uri:TQ(z),preview:nJ(E),url:F.url,tokenCount:j,consoleLogCount:w.consoleLogs?.length??0,errorCount:w.errors?.length??0,hasEvaluateResult:w.evaluateResult!=null}}return{success:!("error"in w),...w,url:F.url,tokenCount:j}}finally{$.write({type:"data-tool-metadata",id:K.toolCallId,data:{latencyMs:performance.now()-W}})}}})}function PS$($){let{writer:Z,toolOutputMap:X,objectStorage:Q,pendingImages:Y,imageTool:G}=$,J={user_ask:BA0,todo_write:OA0,propose_plan:DA0,read_tool_output:HA0({toolOutputMap:X})};if(G)J.generate_image=Ca("generate_image",Sa,jA0(Z,{...G,objectStorage:Q}),null);if(process.env.BROWSERLESS_TOKEN){if(J.scrape_url=zS$(Z,{toolOutputMap:X,objectStorage:Q,kind:"scrape"}),J.inspect_page=zS$(Z,{toolOutputMap:X,objectStorage:Q,kind:"inspect"}),Y)J.take_screenshot=zA0(Z,{objectStorage:Q,toolOutputMap:X,pendingImages:Y})}return J}var AS$=L(()=>{j4();n91();t91();o91();yK();TA0();xu();yu();s91()});async function RA0($,Z,X){let Q=await $.findById(Z,X);if(!Q||Q.organization_id!==X)throw Error(`Virtual MCP not found: ${Z}`);return Q}function va($,Z=Date.now()){let X=new Date($.updated_at).getTime(),Q=$.last_progress_at?new Date($.last_progress_at).getTime():Number.NaN,Y=Math.max(Number.isFinite(X)?X:Number.NEGATIVE_INFINITY,Number.isFinite(Q)?Q:Number.NEGATIVE_INFINITY);return!Number.isFinite(Y)||Z-Y>GZ1}function oJ($,Z=Date.now()){let X=$.status;if(X==="in_progress"&&va($,Z))X="expired";return{id:$.id,organization_id:$.organization_id,title:$.title,description:$.description,created_at:$.created_at,updated_at:$.updated_at,created_by:$.created_by,updated_by:$.updated_by,hidden:$.hidden??!1,status:X,virtual_mcp_id:$.virtual_mcp_id||void 0,trigger_id:$.trigger_id,branch:$.branch,harness_id:$.harness_id,metadata:$.metadata&&Object.keys($.metadata).length>0?$.metadata:void 0,run_config:$.run_config}}var GZ1=1800000;var JZ1,xa;var IA0=L(()=>{JZ1=["in_progress","requires_action","failed","completed"],xa=["ended_after_delivery","superseded"]});import{z as S$}from"zod";var TS$,um4,RS$,_H,IS$,qS$;var Bv=L(()=>{IA0();Iu();TS$=S$.object({id:S$.string().describe("Unique message ID"),thread_id:S$.string().describe("ID of the parent thread"),metadata:S$.unknown().optional().describe("Optional message metadata"),parts:S$.array(S$.record(S$.string(),S$.unknown())).describe("Message content parts (AI SDK UIMessagePart format)"),role:S$.enum(["user","assistant","system"]).describe("Message role"),created_at:S$.string().datetime().describe("Timestamp of creation"),updated_at:S$.string().datetime().describe("Timestamp of last update")}),um4=S$.object({toolName:S$.string().describe("Fully qualified tool name"),appId:S$.string().describe("App ID that owns the tool"),args:S$.record(S$.string(),S$.unknown()).describe("Arguments used when expanding the tool"),expandedAt:S$.string().datetime().describe("When the tool was expanded")}),RS$=S$.object({expanded_tools:S$.array(um4).optional(),read_only:S$.boolean().optional().describe("The thread takes no further input (an autonomous run the user cannot continue)"),runtime:S$.enum(j91).optional().describe("Session runtime, stamped once at creation and immutable afterwards: 'cms' is a sandbox-less content session, 'sandbox' a coding session with a pod. Absent only on threads created before the stamp existed.")}).catchall(S$.unknown()),_H=S$.object({id:S$.string().describe("Unique thread ID"),organization_id:S$.string().describe("Organization this thread belongs to"),title:S$.string().describe("Thread title"),description:S$.string().nullable().describe("Thread description"),created_at:S$.string().datetime().describe("Timestamp of creation"),updated_at:S$.string().datetime().describe("Timestamp of last update"),hidden:S$.boolean().optional().describe("Whether the thread is hidden"),status:S$.enum([...JZ1,"expired"]).describe("Thread execution status. 'expired' is virtual -- computed at read time for stale in_progress threads"),created_by:S$.string().describe("User ID who created the thread"),updated_by:S$.string().optional().describe("User ID who last updated the thread"),virtual_mcp_id:S$.string().optional().describe("Virtual MCP (agent) this thread was initiated with"),trigger_id:S$.string().nullable().optional().describe("Automation trigger that created this thread; null/absent for human-initiated threads."),branch:S$.string().nullable().optional().describe("Git branch this thread is pinned to (GitHub-linked vms only)"),harness_id:S$.string().nullable().optional().describe("Pinned on first message; selects which harness runs the thread (e.g. 'claude-code', 'codex', 'decopilot')."),metadata:RS$.optional().describe("Free-form per-thread UI state (e.g. expanded_tools)"),run_config:S$.record(S$.string(),S$.unknown()).nullable().optional().describe("Persisted run configuration (contains agent and model info)")}),IS$=S$.object({id:S$.string().optional().describe("Optional custom ID for the thread"),title:S$.string().optional().describe("Thread title"),description:S$.string().nullish().describe("Thread description"),virtual_mcp_id:S$.string().describe("Virtual MCP (agent) this thread is bound to"),branch:S$.string().min(1).optional().describe("Preferred branch. Used only when the vMCP has a githubRepo; ignored otherwise. When omitted, the server picks the most-recently-touched branch from the user's sandboxMap, falling back to a freshly generated name."),runtime:S$.enum(j91).optional().describe("Session runtime for the new thread, honored verbatim and immutable for the thread's life. 'sandbox' starts a coding session even on a Fast Preview project, sharing the given branch (it continues the CMS draft). Omitted \u21D2 stamped with the project's default (Fast Preview capable \u21D2 'cms', else 'sandbox').")}),qS$=S$.object({title:S$.string().optional().describe("New thread title"),description:S$.string().nullish().describe("New thread description"),hidden:S$.boolean().optional().describe("Whether the thread is hidden"),status:S$.enum(JZ1).optional().describe("New thread status (user-set override). 'expired' is a computed virtual status and cannot be set directly."),metadata:RS$.superRefine(($,Z)=>{if("sandboxMap"in $)Z.addIssue({code:"custom",path:["sandboxMap"],message:"sandboxMap is managed by the sandbox lifecycle"})}).optional().describe("Full replacement of the thread's user-managed metadata"),branch:S$.string().min(1).nullish().describe("New git branch for this thread"),virtual_mcp_id:S$.string().optional().describe("Re-point the thread at a different agent. Only meaningful for an unsent thread (changing the recipient of a new chat); the UI restricts it accordingly.")})});import{z as VG}from"zod";var cm4,lm4,Ov;var KZ1=L(()=>{_J();S0();Bv();cm4=EK.extend({where:VG.object({created_by:VG.string().optional(),trigger_ids:VG.array(VG.string()).max(1000).optional(),virtual_mcp_id:VG.string().optional(),hidden:VG.boolean().optional(),has_trigger:VG.boolean().optional()}).optional(),startDate:VG.string().datetime().optional().describe("Filter threads updated at or after this ISO timestamp"),endDate:VG.string().datetime().optional().describe("Filter threads updated at or before this ISO timestamp"),search:VG.string().optional().describe("Full-text search on thread title (case-insensitive)"),status:VG.string().optional().describe("Filter by thread status (e.g. completed, failed, in_progress)"),userId:VG.string().optional().describe("Filter by the user who created the thread"),agentId:VG.string().optional().describe("Filter by agent (connection or virtual MCP) ID")}),lm4=fN(_H),Ov=c({name:"COLLECTION_THREADS_LIST",description:"List threads with filtering, sorting, and pagination.",annotations:{title:"List Threads",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:cm4,outputSchema:lm4,handler:async($,Z)=>{await Z.access.check();let X=Z.auth.user?.id;if(!X)throw Error("User ID required to list threads");a(Z);let Q=$.offset??0,Y=$.limit??100,G=$.where?.trigger_ids,J=$.where?.virtual_mcp_id,K=$.userId??($.where?.created_by==="me"?X:$.where?.created_by),{threads:W,total:H}=G?.length?await Z.storage.threads.listByTriggerIds(G,{limit:Y,offset:Q}):await Z.storage.threads.list(K,{limit:Y,offset:Q,virtualMcpId:J,startDate:$.startDate,endDate:$.endDate,search:$.search,status:$.status,agentId:$.agentId,includeArchived:$.where?.hidden,hasTrigger:$.where?.has_trigger}),F=Q+Y<H,N=Date.now();return{items:W.map((U)=>oJ(U,N)),totalCount:H,hasMore:F}}})});var dm4,Lv;var WZ1=L(()=>{_J();S0();Bv();dm4=eo(_H),Lv=c({name:"COLLECTION_THREADS_GET",description:"Get a thread's details and metadata by ID.",annotations:{title:"Get Thread",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:so,outputSchema:dm4,handler:async($,Z)=>{s(Z),a(Z),await Z.access.check();let X=await Z.storage.threads.get($.id);if(!X)return{item:null};return{item:oJ(X)}}})});import{z as mm4}from"zod";function MS$($){if(!$)return null;if("field"in $&&$.field[0]==="thread_id"&&$.operator==="eq")return String($.value);if("conditions"in $&&($.operator==="and"||$.operator==="or"))for(let Z of $.conditions){let X=MS$(Z);if(X)return X}return null}var im4,pm4,Dv;var HZ1=L(()=>{_J();S0();Bv();im4=EK.extend({thread_id:mm4.string().optional().describe("ID of the thread to list messages for (required)")}),pm4=fN(TS$),Dv=c({name:"COLLECTION_THREAD_MESSAGES_LIST",description:"List messages in a thread with pagination. Requires thread_id. Returns messages in chronological order.",annotations:{title:"List Thread Messages",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:im4,outputSchema:pm4,handler:async($,Z)=>{a(Z),await Z.access.check();let X=$.thread_id??MS$($.where);if(!X)throw Error("thread_id is required (provide as top-level param or in where clause)");let Q=$.offset??0,Y=$.limit??100,G=$.orderBy?.[0]?.direction??"asc",J=await Z.storage.threads.get(X);if(!J)return{items:[],totalCount:0,hasMore:!1};if(J.message_storage_version===2){let{messages:F,total:N}=await Z.storage.threads.messageParts().loadWindow(X,{limit:Y,offset:Q,includeInFlight:!0});return{items:F.map((U)=>({id:U.id,thread_id:X,role:U.role,parts:U.parts,metadata:U.metadata??null,created_at:U.created_at,updated_at:U.created_at})),totalCount:N,hasMore:Q+Y<N}}let{messages:K,total:W}=await Z.storage.threads.listMessages(X,{limit:Y,offset:Q,sort:G}),H=Q+Y<W;return{items:K,totalCount:W,hasMore:H}}})});function VS$($){return{search_threads:k$({description:Ov.description,inputSchema:Z0(Ov.inputSchema),execute:(Z)=>Ov.execute(Z,$)}),get_thread:k$({description:Lv.description,inputSchema:Z0(Lv.inputSchema),execute:(Z)=>Lv.execute(Z,$)}),list_thread_messages:k$({description:Dv.description,inputSchema:Z0(Dv.inputSchema),execute:(Z)=>Dv.execute(Z,$)})}}var kS$=L(()=>{j4();KZ1();WZ1();HZ1()});function UZ1($){let Z=$.type;if(typeof Z!=="string")return!1;if(Z==="text"||Z==="reasoning")return $.state!=="streaming";if(Z==="step-start")return!1;if(Z.startsWith("tool-")||Z==="dynamic-tool")return $.state==="approval-requested"||Z==="tool-user_ask"&&$.state==="input-available"||$.state==="output-available"||$.state==="output-error"||$.state==="output-denied";return!0}function FZ1($){let Z=$.type??"";if(Z==="reasoning")return"reasoning";if(Z==="file")return"file";if(Z.startsWith("tool-")||Z==="dynamic-tool")return $.state==="output-available"||$.state==="output-error"||$.state==="output-denied"?"tool_result":"tool_call";return"text"}class BZ1{ctx;base;seqByPart=new Map;emitted=new Set;finished=new Set;partKeyByRowId=new Map;finishMessageIdByRowId=new Map;nextSeq=0;constructor($){this.ctx=$;this.base=$.baseTimeMs??Date.now()}hasEmittedContentFor($){let Z=`${$}#`;for(let X of this.emitted)if(X.startsWith(Z))return!0;return!1}seqFor($){let Z=this.seqByPart.get($);if(Z!==void 0)return Z;let X=this.nextSeq++;return this.seqByPart.set($,X),X}row($,Z,X,Q,Y,G=null){return{id:`${this.ctx.runId}:${$}:${X}`,seq:X,org_id:this.ctx.orgId,thread_id:this.ctx.threadId,run_id:this.ctx.runId,message_id:$,role:Z,kind:Q,payload:Y,payload_ref:null,metadata:G,created_at:new Date(this.base+X).toISOString()}}emitMessageParts($){let Z=$.parts??[],X=[];for(let Q=0;Q<Z.length;Q++){let Y=Z[Q];if(!UZ1(Y))continue;let G=`${$.id}#${Q}`;if(this.emitted.has(G))continue;let J=this.seqFor(G),K=this.row($.id,$.role,J,FZ1(Y),NZ1(Y));this.partKeyByRowId.set(K.id,G),X.push(K)}return X}emitRequestMessageParts($){let Z=$.parts??[],X=[];for(let Q=0;Q<Z.length;Q++){let Y=Z[Q],G=`${$.id}#${Q}`,J=this.seqFor(G),K=this.row($.id,$.role,J,FZ1(Y),NZ1(Y));this.partKeyByRowId.set(K.id,G),X.push(K)}return X}markFinished($,Z,X=null){if(this.finished.has($))return[];let Q=this.seqFor(`${$}#finish`),Y=this.row($,Z,Q,"finish",{},X);return this.finishMessageIdByRowId.set(Y.id,$),[Y]}markRequestFinished($,Z,X=null){let Q=this.seqFor(`${$}#finish`),Y=this.row($,Z,Q,"finish",{},X);return this.finishMessageIdByRowId.set(Y.id,$),[Y]}acknowledge($){for(let Z of $){let X=this.partKeyByRowId.get(Z.id);if(X!==void 0)this.emitted.add(X);let Q=this.finishMessageIdByRowId.get(Z.id);if(Q!==void 0)this.finished.add(Q)}}emitUserMessage($){return[...this.emitMessageParts($),...this.markFinished($.id,$.role,$.metadata??null)]}emitRequestMessage($){return[...this.emitRequestMessageParts($),...this.markRequestFinished($.id,$.role,$.metadata??null)]}emitStepParts($){return this.emitMessageParts($)}emitFinal($){let Z=this.emitMessageParts($);if(Z.length===0&&!this.hasEmittedContentFor($.id))return Z;return[...Z,...this.markFinished($.id,$.role,$.metadata??null)]}emitFinalSnapshot($){let Z=$.parts??[],X=[];for(let G=0;G<Z.length;G++){let J=Z[G];if(!UZ1(J))continue;let K=`${$.id}#${G}`,W=this.seqFor(K),H=this.row($.id,$.role,W,FZ1(J),NZ1(J));this.partKeyByRowId.set(H.id,K),X.push(H)}if(X.length===0&&!this.hasEmittedContentFor($.id))return X;let Q=this.seqFor(`${$.id}#finish`),Y=this.row($.id,$.role,Q,"finish",{},$.metadata??null);return this.finishMessageIdByRowId.set(Y.id,$.id),[...X,Y]}emitError($,Z){let X=`${$}#error`,Q=[];if(!this.emitted.has(X)){let Y=this.seqFor(X),G=this.row($,"assistant",Y,"error",{type:"text",text:`Error: ${SS$(Z)}`});this.partKeyByRowId.set(G.id,X),Q.push(G)}return[...Q,...this.markFinished($,"assistant")]}}function SS$($){if($.length<=qA0)return $;let Z=$.length-qA0;return`${$.slice(0,qA0)}\u2026 [truncated ${Z} characters]`}function NZ1($){let Z=$.errorText;if(typeof Z!=="string"||Z.length<=qA0)return $;return{...$,errorText:SS$(Z)}}var qA0=8000;class IX{ctx;builder;constructor($){this.ctx=$;this.builder=new BZ1($)}async appendBuiltRows($){await this.ctx.storage.appendParts($),this.builder.acknowledge($)}async emitUserMessage($){await this.appendBuiltRows(this.builder.emitUserMessage($))}async emitRequestMessage($){let Z=this.builder.emitRequestMessage($);await this.ctx.storage.replaceMessageParts(this.ctx.threadId,$.id,Z),this.builder.acknowledge(Z)}async emitStepParts($){await this.appendBuiltRows(this.builder.emitStepParts($))}async emitFinal($){await this.appendBuiltRows(this.builder.emitFinal($))}async replaceFinal($){let Z=this.builder.emitFinalSnapshot($);await this.ctx.storage.replaceMessageParts(this.ctx.threadId,$.id,Z),this.builder.acknowledge(Z)}async emitError($,Z){await this.appendBuiltRows(this.builder.emitError($,Z))}}var wD=()=>{};async function MA0($,Z,X,Q){let Y=Z.organizationId,G=await eZ($,"smart"),J=X.virtual_mcp_id??Bj(Y),K={id:Q.messageId,role:"user",parts:[{type:"text",text:Q.prompt}]};await new IX({storage:$.storage.threads.messageParts(),orgId:Y,threadId:X.id,runId:X.id}).emitRequestMessage(K),await HU({threadId:X.id,source:"background-tool",request:{messages:[K],models:{credentialId:G.credentialId,thinking:{id:G.modelId,title:G.modelMeta.title}},agent:{id:J,...Q.agent??{}},temperature:0.5,toolApprovalLevel:"auto",mode:"default",organizationId:Y,userId:Z.assignedBy??Z.createdBy,harnessId:X.harness_id==="claude-code"?"claude-code":"decopilot",...X.branch?{branch:X.branch}:{},taskId:X.id,runMetadata:{...tP0(Z),...Q.runClass?{[Su]:Q.runClass}:{}}}},{workflowID:Q.workflowID})}var OZ1=L(()=>{Aa();wD();JU();FU();Cu();g8()});var VA0,CS$="notification.created";var kA0=L(()=>{VA0=["created","commented","mentioned","status_changed","assignee_changed","review_requested","review_approved","review_changes_requested","merge_failed"]});class xS${listeners=new Map;totalCount=0;strategy=null;started=!1;async start($){if(this.started){if(!$)return;await this.stop()}this.strategy=$,await this.strategy.start((Z,X)=>this.localEmit(Z,X)),this.started=!0}async stop(){if(!this.started||!this.strategy)return;await this.strategy.stop(),this.started=!1}add($){if(this.totalCount>=vS$)return console.warn(`[SSEHub] Total connection limit reached (${vS$})`),null;let Z=this.listeners.get($.organizationId);if(!Z)Z=new Map,this.listeners.set($.organizationId,Z);if(Z.size>=_S$)return console.warn(`[SSEHub] Per-org connection limit reached for ${$.organizationId} (${_S$})`),null;return Z.set($.id,$),this.totalCount++,$.id}remove($,Z){let X=this.listeners.get($);if(!X)return;if(X.delete(Z)){if(this.totalCount--,X.size===0)this.listeners.delete($)}}emit($,Z){if(this.strategy)this.strategy.broadcast($,Z);else this.localEmit($,Z)}countForOrg($){return this.listeners.get($)?.size??0}get count(){return this.totalCount}localEmit($,Z){let X=this.listeners.get($);if(!X||X.size===0)return;for(let Q of X.values()){if(Q.typePatterns&&!nm4(Z.type,Q.typePatterns))continue;try{Q.push(Z)}catch{this.remove($,Q.id)}}}}function nm4($,Z){for(let X of Z){if(X===$)return!0;if(X.endsWith(".*")){let Q=X.slice(0,-1);if($.startsWith(Q))return!0}}return!1}var _S$=50,vS$=500,c5;var fa=L(()=>{x6();c5=new xS$;P$.createObservableGauge("sse_hub.connections",{description:"Active SSE listeners held by this pod",unit:"{connections}"}).addCallback(($)=>$.observe(c5.count))});function tm4($){return $.replace(/[^a-zA-Z]/g,"").toUpperCase().slice(0,4)||"TASK"}function fS$($,Z){if(Z==null)return null;return`${tm4($)}-${String(Z).padStart(2,"0")}`}var bS$=()=>{};function LZ1($){return $.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}function rm4($,Z){let X=$.taskKeySeq===null?null:fS$($.orgSlug,$.taskKeySeq),Q=LZ1($.actorName??"The agent"),Y=LZ1($.taskTitle),G=X?`${LZ1(X)} \xB7 ${Y}`:Y,J=X?`<a href="${Z}/${encodeURIComponent($.orgSlug)}/t/${encodeURIComponent(X)}" style="color:#141413;">${G}</a>`:G;return`<p style="margin:0 0 12px 0;font-size:14px;color:#141413;line-height:1.6;font-family:Inter,system-ui,sans-serif;">${Q} ${om4[$.type]} ${J}</p>`}function yS$($,Z){let X=$.length===1?"1 update on your tasks":`${$.length} updates on your tasks`;return{subject:X,html:OK({preheader:X,heading:X,body:$.map((Q)=>rm4(Q,Z)).join(`
|
|
2743
|
+
`,O=await Uv("Browserless function call",`${Hv}/function?token=${encodeURIComponent(H)}`,{method:"POST",headers:{"Content-Type":"application/javascript"},body:B});if(!O.ok)return{success:!1,error:O.error,url:F.url};let D=O.response;if(!D.ok){let z=await D.text().catch(()=>"Unknown error");return{success:!1,error:`Browserless function call failed (${D.status}): ${z}`,url:F.url}}let w=await D.json().catch(async()=>{return{error:`Browserless returned non-JSON response: ${(await D.text().catch(()=>"")).slice(0,200)}`}}),E=JSON.stringify(w,null,2);X.set(K.toolCallId,E);let j=RX(E);if(!("error"in w)&&j>UD&&Q){let z=`inspect-pages/${crypto.randomUUID()}.json`;return await Q.put(z,new TextEncoder().encode(E),{contentType:"application/json"}),{success:!0,uri:TQ(z),preview:nJ(E),url:F.url,tokenCount:j,consoleLogCount:w.consoleLogs?.length??0,errorCount:w.errors?.length??0,hasEvaluateResult:w.evaluateResult!=null}}return{success:!("error"in w),...w,url:F.url,tokenCount:j}}finally{$.write({type:"data-tool-metadata",id:K.toolCallId,data:{latencyMs:performance.now()-W}})}}})}function PS$($){let{writer:Z,toolOutputMap:X,objectStorage:Q,pendingImages:Y,imageTool:G}=$,J={user_ask:BA0,todo_write:OA0,propose_plan:DA0,read_tool_output:HA0({toolOutputMap:X})};if(G)J.generate_image=Ca("generate_image",Sa,jA0(Z,{...G,objectStorage:Q}),null);if(process.env.BROWSERLESS_TOKEN){if(J.scrape_url=zS$(Z,{toolOutputMap:X,objectStorage:Q,kind:"scrape"}),J.inspect_page=zS$(Z,{toolOutputMap:X,objectStorage:Q,kind:"inspect"}),Y)J.take_screenshot=zA0(Z,{objectStorage:Q,toolOutputMap:X,pendingImages:Y})}return J}var AS$=L(()=>{j4();n91();t91();o91();yK();TA0();xu();yu();s91()});async function RA0($,Z,X){let Q=await $.findById(Z,X);if(!Q||Q.organization_id!==X)throw Error(`Virtual MCP not found: ${Z}`);return Q}function va($,Z=Date.now()){let X=new Date($.updated_at).getTime(),Q=$.last_progress_at?new Date($.last_progress_at).getTime():Number.NaN,Y=Math.max(Number.isFinite(X)?X:Number.NEGATIVE_INFINITY,Number.isFinite(Q)?Q:Number.NEGATIVE_INFINITY);return!Number.isFinite(Y)||Z-Y>GZ1}function oJ($,Z=Date.now()){let X=$.status;if(X==="in_progress"&&va($,Z))X="expired";return{id:$.id,organization_id:$.organization_id,title:$.title,description:$.description,created_at:$.created_at,updated_at:$.updated_at,created_by:$.created_by,updated_by:$.updated_by,hidden:$.hidden??!1,status:X,virtual_mcp_id:$.virtual_mcp_id||void 0,trigger_id:$.trigger_id,branch:$.branch,harness_id:$.harness_id,metadata:$.metadata&&Object.keys($.metadata).length>0?$.metadata:void 0,run_config:$.run_config}}var GZ1=1800000;var JZ1,xa;var IA0=L(()=>{JZ1=["in_progress","requires_action","failed","completed"],xa=["ended_after_delivery","superseded"]});import{z as S$}from"zod";var TS$,um4,RS$,_H,IS$,qS$;var Bv=L(()=>{IA0();Iu();TS$=S$.object({id:S$.string().describe("Unique message ID"),thread_id:S$.string().describe("ID of the parent thread"),metadata:S$.unknown().optional().describe("Optional message metadata"),parts:S$.array(S$.record(S$.string(),S$.unknown())).describe("Message content parts (AI SDK UIMessagePart format)"),role:S$.enum(["user","assistant","system"]).describe("Message role"),created_at:S$.string().datetime().describe("Timestamp of creation"),updated_at:S$.string().datetime().describe("Timestamp of last update")}),um4=S$.object({toolName:S$.string().describe("Fully qualified tool name"),appId:S$.string().describe("App ID that owns the tool"),args:S$.record(S$.string(),S$.unknown()).describe("Arguments used when expanding the tool"),expandedAt:S$.string().datetime().describe("When the tool was expanded")}),RS$=S$.object({expanded_tools:S$.array(um4).optional(),read_only:S$.boolean().optional().describe("The thread takes no further input (an autonomous run the user cannot continue)"),runtime:S$.enum(j91).optional().describe("Session runtime, stamped once at creation and immutable afterwards: 'cms' is a sandbox-less content session, 'sandbox' a coding session with a pod. Absent only on threads created before the stamp existed.")}).catchall(S$.unknown()),_H=S$.object({id:S$.string().describe("Unique thread ID"),organization_id:S$.string().describe("Organization this thread belongs to"),title:S$.string().describe("Thread title"),description:S$.string().nullable().describe("Thread description"),created_at:S$.string().datetime().describe("Timestamp of creation"),updated_at:S$.string().datetime().describe("Timestamp of last update"),hidden:S$.boolean().optional().describe("Whether the thread is hidden"),status:S$.enum([...JZ1,"expired"]).describe("Thread execution status. 'expired' is virtual -- computed at read time for stale in_progress threads"),created_by:S$.string().describe("User ID who created the thread"),updated_by:S$.string().optional().describe("User ID who last updated the thread"),virtual_mcp_id:S$.string().optional().describe("Virtual MCP (agent) this thread was initiated with"),trigger_id:S$.string().nullable().optional().describe("Automation trigger that created this thread; null/absent for human-initiated threads."),branch:S$.string().nullable().optional().describe("Git branch this thread is pinned to (GitHub-linked vms only)"),harness_id:S$.string().nullable().optional().describe("Pinned on first message; selects which harness runs the thread (e.g. 'claude-code', 'codex', 'decopilot')."),metadata:RS$.optional().describe("Free-form per-thread UI state (e.g. expanded_tools)"),run_config:S$.record(S$.string(),S$.unknown()).nullable().optional().describe("Persisted run configuration (contains agent and model info)")}),IS$=S$.object({id:S$.string().optional().describe("Optional custom ID for the thread"),title:S$.string().optional().describe("Thread title"),description:S$.string().nullish().describe("Thread description"),virtual_mcp_id:S$.string().describe("Virtual MCP (agent) this thread is bound to"),branch:S$.string().min(1).optional().describe("Preferred branch. Used only when the vMCP has a githubRepo; ignored otherwise. When omitted, the server picks the most-recently-touched branch from the user's sandboxMap, falling back to a freshly generated name."),runtime:S$.enum(j91).optional().describe("Session runtime for the new thread, honored verbatim and immutable for the thread's life. 'sandbox' starts a coding session even on a Fast Preview project, sharing the given branch (it continues the CMS draft). Omitted \u21D2 stamped with the project's default (Fast Preview capable \u21D2 'cms', else 'sandbox').")}),qS$=S$.object({title:S$.string().optional().describe("New thread title"),description:S$.string().nullish().describe("New thread description"),hidden:S$.boolean().optional().describe("Whether the thread is hidden"),status:S$.enum(JZ1).optional().describe("New thread status (user-set override). 'expired' is a computed virtual status and cannot be set directly."),metadata:RS$.superRefine(($,Z)=>{if("sandboxMap"in $)Z.addIssue({code:"custom",path:["sandboxMap"],message:"sandboxMap is managed by the sandbox lifecycle"})}).optional().describe("Full replacement of the thread's user-managed metadata"),branch:S$.string().min(1).nullish().describe("New git branch for this thread"),virtual_mcp_id:S$.string().optional().describe("Re-point the thread at a different agent. Only meaningful for an unsent thread (changing the recipient of a new chat); the UI restricts it accordingly.")})});import{z as VG}from"zod";var cm4,lm4,Ov;var KZ1=L(()=>{_J();S0();Bv();cm4=EK.extend({where:VG.object({created_by:VG.string().optional(),trigger_ids:VG.array(VG.string()).max(1000).optional(),virtual_mcp_id:VG.string().optional(),hidden:VG.boolean().optional(),has_trigger:VG.boolean().optional()}).optional(),startDate:VG.string().datetime().optional().describe("Filter threads updated at or after this ISO timestamp"),endDate:VG.string().datetime().optional().describe("Filter threads updated at or before this ISO timestamp"),search:VG.string().optional().describe("Full-text search on thread title (case-insensitive)"),status:VG.string().optional().describe("Filter by thread status (e.g. completed, failed, in_progress)"),userId:VG.string().optional().describe("Filter by the user who created the thread"),agentId:VG.string().optional().describe("Filter by agent (connection or virtual MCP) ID")}),lm4=fN(_H),Ov=c({name:"COLLECTION_THREADS_LIST",description:"List threads with filtering, sorting, and pagination.",annotations:{title:"List Threads",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:cm4,outputSchema:lm4,handler:async($,Z)=>{await Z.access.check();let X=Z.auth.user?.id;if(!X)throw Error("User ID required to list threads");a(Z);let Q=$.offset??0,Y=$.limit??100,G=$.where?.trigger_ids,J=$.where?.virtual_mcp_id,K=$.userId??($.where?.created_by==="me"?X:$.where?.created_by),{threads:W,total:H}=G?.length?await Z.storage.threads.listByTriggerIds(G,{limit:Y,offset:Q}):await Z.storage.threads.list(K,{limit:Y,offset:Q,virtualMcpId:J,startDate:$.startDate,endDate:$.endDate,search:$.search,status:$.status,agentId:$.agentId,includeArchived:$.where?.hidden,hasTrigger:$.where?.has_trigger}),F=Q+Y<H,N=Date.now();return{items:W.map((U)=>oJ(U,N)),totalCount:H,hasMore:F}}})});var dm4,Lv;var WZ1=L(()=>{_J();S0();Bv();dm4=eo(_H),Lv=c({name:"COLLECTION_THREADS_GET",description:"Get a thread's details and metadata by ID.",annotations:{title:"Get Thread",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:so,outputSchema:dm4,handler:async($,Z)=>{s(Z),a(Z),await Z.access.check();let X=await Z.storage.threads.get($.id);if(!X)return{item:null};return{item:oJ(X)}}})});import{z as mm4}from"zod";function MS$($){if(!$)return null;if("field"in $&&$.field[0]==="thread_id"&&$.operator==="eq")return String($.value);if("conditions"in $&&($.operator==="and"||$.operator==="or"))for(let Z of $.conditions){let X=MS$(Z);if(X)return X}return null}var im4,pm4,Dv;var HZ1=L(()=>{_J();S0();Bv();im4=EK.extend({thread_id:mm4.string().optional().describe("ID of the thread to list messages for (required)")}),pm4=fN(TS$),Dv=c({name:"COLLECTION_THREAD_MESSAGES_LIST",description:"List messages in a thread with pagination. Requires thread_id. Returns messages in chronological order.",annotations:{title:"List Thread Messages",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:im4,outputSchema:pm4,handler:async($,Z)=>{a(Z),await Z.access.check();let X=$.thread_id??MS$($.where);if(!X)throw Error("thread_id is required (provide as top-level param or in where clause)");let Q=$.offset??0,Y=$.limit??100,G=$.orderBy?.[0]?.direction??"asc",J=await Z.storage.threads.get(X);if(!J)return{items:[],totalCount:0,hasMore:!1};if(J.message_storage_version===2){let{messages:F,total:N}=await Z.storage.threads.messageParts().loadWindow(X,{limit:Y,offset:Q,includeInFlight:!0});return{items:F.map((U)=>({id:U.id,thread_id:X,role:U.role,parts:U.parts,metadata:U.metadata??null,created_at:U.created_at,updated_at:U.created_at})),totalCount:N,hasMore:Q+Y<N}}let{messages:K,total:W}=await Z.storage.threads.listMessages(X,{limit:Y,offset:Q,sort:G}),H=Q+Y<W;return{items:K,totalCount:W,hasMore:H}}})});function VS$($){return{search_threads:k$({description:Ov.description,inputSchema:Z0(Ov.inputSchema),execute:(Z)=>Ov.execute(Z,$)}),get_thread:k$({description:Lv.description,inputSchema:Z0(Lv.inputSchema),execute:(Z)=>Lv.execute(Z,$)}),list_thread_messages:k$({description:Dv.description,inputSchema:Z0(Dv.inputSchema),execute:(Z)=>Dv.execute(Z,$)})}}var kS$=L(()=>{j4();KZ1();WZ1();HZ1()});function UZ1($){let Z=$.type;if(typeof Z!=="string")return!1;if(Z==="text"||Z==="reasoning")return $.state!=="streaming";if(Z==="step-start")return!1;if(Z.startsWith("tool-")||Z==="dynamic-tool")return $.state==="approval-requested"||Z==="tool-user_ask"&&$.state==="input-available"||$.state==="output-available"||$.state==="output-error"||$.state==="output-denied";return!0}function FZ1($){let Z=$.type??"";if(Z==="reasoning")return"reasoning";if(Z==="file")return"file";if(Z.startsWith("tool-")||Z==="dynamic-tool")return $.state==="output-available"||$.state==="output-error"||$.state==="output-denied"?"tool_result":"tool_call";return"text"}class BZ1{ctx;base;seqByPart=new Map;emitted=new Set;finished=new Set;partKeyByRowId=new Map;finishMessageIdByRowId=new Map;nextSeq=0;constructor($){this.ctx=$;this.base=$.baseTimeMs??Date.now()}hasEmittedContentFor($){let Z=`${$}#`;for(let X of this.emitted)if(X.startsWith(Z))return!0;return!1}seqFor($){let Z=this.seqByPart.get($);if(Z!==void 0)return Z;let X=this.nextSeq++;return this.seqByPart.set($,X),X}row($,Z,X,Q,Y,G=null){return{id:`${this.ctx.runId}:${$}:${X}`,seq:X,org_id:this.ctx.orgId,thread_id:this.ctx.threadId,run_id:this.ctx.runId,message_id:$,role:Z,kind:Q,payload:Y,payload_ref:null,metadata:G,created_at:new Date(this.base+X).toISOString()}}emitMessageParts($){let Z=$.parts??[],X=[];for(let Q=0;Q<Z.length;Q++){let Y=Z[Q];if(!UZ1(Y))continue;let G=`${$.id}#${Q}`;if(this.emitted.has(G))continue;let J=this.seqFor(G),K=this.row($.id,$.role,J,FZ1(Y),NZ1(Y));this.partKeyByRowId.set(K.id,G),X.push(K)}return X}emitRequestMessageParts($){let Z=$.parts??[],X=[];for(let Q=0;Q<Z.length;Q++){let Y=Z[Q],G=`${$.id}#${Q}`,J=this.seqFor(G),K=this.row($.id,$.role,J,FZ1(Y),NZ1(Y));this.partKeyByRowId.set(K.id,G),X.push(K)}return X}markFinished($,Z,X=null){if(this.finished.has($))return[];let Q=this.seqFor(`${$}#finish`),Y=this.row($,Z,Q,"finish",{},X);return this.finishMessageIdByRowId.set(Y.id,$),[Y]}markRequestFinished($,Z,X=null){let Q=this.seqFor(`${$}#finish`),Y=this.row($,Z,Q,"finish",{},X);return this.finishMessageIdByRowId.set(Y.id,$),[Y]}acknowledge($){for(let Z of $){let X=this.partKeyByRowId.get(Z.id);if(X!==void 0)this.emitted.add(X);let Q=this.finishMessageIdByRowId.get(Z.id);if(Q!==void 0)this.finished.add(Q)}}emitUserMessage($){return[...this.emitMessageParts($),...this.markFinished($.id,$.role,$.metadata??null)]}emitRequestMessage($){return[...this.emitRequestMessageParts($),...this.markRequestFinished($.id,$.role,$.metadata??null)]}emitStepParts($){return this.emitMessageParts($)}emitFinal($){let Z=this.emitMessageParts($);if(Z.length===0&&!this.hasEmittedContentFor($.id))return Z;return[...Z,...this.markFinished($.id,$.role,$.metadata??null)]}emitFinalSnapshot($){let Z=$.parts??[],X=[];for(let G=0;G<Z.length;G++){let J=Z[G];if(!UZ1(J))continue;let K=`${$.id}#${G}`,W=this.seqFor(K),H=this.row($.id,$.role,W,FZ1(J),NZ1(J));this.partKeyByRowId.set(H.id,K),X.push(H)}if(X.length===0&&!this.hasEmittedContentFor($.id))return X;let Q=this.seqFor(`${$.id}#finish`),Y=this.row($.id,$.role,Q,"finish",{},$.metadata??null);return this.finishMessageIdByRowId.set(Y.id,$.id),[...X,Y]}emitError($,Z){let X=`${$}#error`,Q=[];if(!this.emitted.has(X)){let Y=this.seqFor(X),G=this.row($,"assistant",Y,"error",{type:"text",text:`Error: ${SS$(Z)}`});this.partKeyByRowId.set(G.id,X),Q.push(G)}return[...Q,...this.markFinished($,"assistant")]}}function SS$($){if($.length<=qA0)return $;let Z=$.length-qA0;return`${$.slice(0,qA0)}\u2026 [truncated ${Z} characters]`}function NZ1($){let Z=$.errorText;if(typeof Z!=="string"||Z.length<=qA0)return $;return{...$,errorText:SS$(Z)}}var qA0=8000;class IX{ctx;builder;constructor($){this.ctx=$;this.builder=new BZ1($)}async appendBuiltRows($){await this.ctx.storage.appendParts($),this.builder.acknowledge($)}async emitUserMessage($){await this.appendBuiltRows(this.builder.emitUserMessage($))}async emitRequestMessage($){let Z=this.builder.emitRequestMessage($);await this.ctx.storage.replaceMessageParts(this.ctx.threadId,$.id,Z),this.builder.acknowledge(Z)}async emitStepParts($){await this.appendBuiltRows(this.builder.emitStepParts($))}async emitFinal($){await this.appendBuiltRows(this.builder.emitFinal($))}async replaceFinal($){let Z=this.builder.emitFinalSnapshot($);await this.ctx.storage.replaceMessageParts(this.ctx.threadId,$.id,Z),this.builder.acknowledge(Z)}async emitError($,Z){await this.appendBuiltRows(this.builder.emitError($,Z))}}var wD=()=>{};async function MA0($,Z,X,Q){let Y=Z.organizationId,G=await eZ($,"smart"),J=X.virtual_mcp_id??Bj(Y),K={id:Q.messageId,role:"user",parts:[{type:"text",text:Q.prompt}],metadata:{created_at:new Date().toISOString()}};await new IX({storage:$.storage.threads.messageParts(),orgId:Y,threadId:X.id,runId:X.id}).emitRequestMessage(K),await HU({threadId:X.id,source:"background-tool",request:{messages:[K],models:{credentialId:G.credentialId,thinking:{id:G.modelId,title:G.modelMeta.title}},agent:{id:J,...Q.agent??{}},temperature:0.5,toolApprovalLevel:"auto",mode:"default",organizationId:Y,userId:Z.assignedBy??Z.createdBy,harnessId:X.harness_id==="claude-code"?"claude-code":"decopilot",...X.branch?{branch:X.branch}:{},taskId:X.id,runMetadata:{...tP0(Z),...Q.runClass?{[Su]:Q.runClass}:{}}}},{workflowID:Q.workflowID})}var OZ1=L(()=>{Aa();wD();JU();FU();Cu();g8()});var VA0,CS$="notification.created";var kA0=L(()=>{VA0=["created","commented","mentioned","status_changed","assignee_changed","review_requested","review_approved","review_changes_requested","merge_failed"]});class xS${listeners=new Map;totalCount=0;strategy=null;started=!1;async start($){if(this.started){if(!$)return;await this.stop()}this.strategy=$,await this.strategy.start((Z,X)=>this.localEmit(Z,X)),this.started=!0}async stop(){if(!this.started||!this.strategy)return;await this.strategy.stop(),this.started=!1}add($){if(this.totalCount>=vS$)return console.warn(`[SSEHub] Total connection limit reached (${vS$})`),null;let Z=this.listeners.get($.organizationId);if(!Z)Z=new Map,this.listeners.set($.organizationId,Z);if(Z.size>=_S$)return console.warn(`[SSEHub] Per-org connection limit reached for ${$.organizationId} (${_S$})`),null;return Z.set($.id,$),this.totalCount++,$.id}remove($,Z){let X=this.listeners.get($);if(!X)return;if(X.delete(Z)){if(this.totalCount--,X.size===0)this.listeners.delete($)}}emit($,Z){if(this.strategy)this.strategy.broadcast($,Z);else this.localEmit($,Z)}countForOrg($){return this.listeners.get($)?.size??0}get count(){return this.totalCount}localEmit($,Z){let X=this.listeners.get($);if(!X||X.size===0)return;for(let Q of X.values()){if(Q.typePatterns&&!nm4(Z.type,Q.typePatterns))continue;try{Q.push(Z)}catch{this.remove($,Q.id)}}}}function nm4($,Z){for(let X of Z){if(X===$)return!0;if(X.endsWith(".*")){let Q=X.slice(0,-1);if($.startsWith(Q))return!0}}return!1}var _S$=50,vS$=500,c5;var fa=L(()=>{x6();c5=new xS$;P$.createObservableGauge("sse_hub.connections",{description:"Active SSE listeners held by this pod",unit:"{connections}"}).addCallback(($)=>$.observe(c5.count))});function tm4($){return $.replace(/[^a-zA-Z]/g,"").toUpperCase().slice(0,4)||"TASK"}function fS$($,Z){if(Z==null)return null;return`${tm4($)}-${String(Z).padStart(2,"0")}`}var bS$=()=>{};function LZ1($){return $.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}function rm4($,Z){let X=$.taskKeySeq===null?null:fS$($.orgSlug,$.taskKeySeq),Q=LZ1($.actorName??"The agent"),Y=LZ1($.taskTitle),G=X?`${LZ1(X)} \xB7 ${Y}`:Y,J=X?`<a href="${Z}/${encodeURIComponent($.orgSlug)}/t/${encodeURIComponent(X)}" style="color:#141413;">${G}</a>`:G;return`<p style="margin:0 0 12px 0;font-size:14px;color:#141413;line-height:1.6;font-family:Inter,system-ui,sans-serif;">${Q} ${om4[$.type]} ${J}</p>`}function yS$($,Z){let X=$.length===1?"1 update on your tasks":`${$.length} updates on your tasks`;return{subject:X,html:OK({preheader:X,heading:X,body:$.map((Q)=>rm4(Q,Z)).join(`
|
|
2744
2744
|
`),footnote:"You received this because you follow these tasks. Open a task and use Unfollow to stop."})}}var om4;var gS$=L(()=>{bS$();om4={created:"created",commented:"commented on",mentioned:"mentioned you on",status_changed:"moved",assignee_changed:"reassigned",review_requested:"requested review on",review_approved:"approved",review_changes_requested:"requested changes on",merge_failed:"couldn't merge"}});import{z as ba}from"zod";var hu;var SA0=L(()=>{hu=ba.object({taskTitle:ba.string(),taskKeySeq:ba.number().int().nullable(),actorName:ba.string().nullable(),actorImage:ba.string().nullable()})});import{DBOS as vH,SchedulerMode as am4}from"@dbos-inc/dbos-sdk";function hS$($){EZ1=$}function zZ1(){if(!EZ1)throw Error("[notifications] runtime not initialized \u2014 setNotificationDigestRuntime() must run before the workflow fires");return EZ1}function uS$(){return zZ1().db.selectFrom("notifications as n").innerJoin("organization as o","o.id","n.organization_id").innerJoin("user as u","u.id","n.user_id").innerJoin("member as m",($)=>$.onRef("m.userId","=","n.user_id").onRef("m.organizationId","=","n.organization_id")).select(["n.id as id","n.user_id as userId","n.type as type","n.data as data","o.slug as orgSlug","u.email as email"]).where("n.emailed_at","is",null).where("n.read_at","is",null).orderBy("n.created_at","asc").limit($i4)}function cS$($){return $.map((Z)=>{let X=hu.parse(Z.data);return{id:Z.id,userId:Z.userId,email:Z.email,type:Z.type,orgSlug:Z.orgSlug,taskTitle:X.taskTitle,taskKeySeq:X.taskKeySeq,actorName:X.actorName}})}async function Xi4($){return cS$(await uS$().where("n.user_id","=",$).execute())}async function Qi4($){return cS$(await uS$().where("n.created_at","<",$).execute())}async function Yi4($){if($.length===0)return new Set;let Z=await zZ1().db.updateTable("notifications").set({emailed_at:new Date}).where("id","in",$).where("emailed_at","is",null).returning("id").execute();return new Set(Z.map((X)=>X.id))}function Gi4($){let Z=new Map;for(let X of $){let Q=Z.get(X.userId);if(Q)Q.push(X);else Z.set(X.userId,[X])}return[...Z.values()]}function PZ1(){let $=SN().auth,Z=$.emailProviders??[],X=$.inviteEmailProviderId?BK(Z,$.inviteEmailProviderId):Z[0];return X?UK(X):null}async function Ji4($){let Z=PZ1();if(!Z)throw Error("no email provider configured");let{subject:X,html:Q}=yS$($,_5());await Z({to:$[0].email,subject:X,html:Q})}async function Ki4($){await zZ1().db.deleteFrom("notifications").where("created_at","<",$).execute()}async function lS$($,Z){if($.length===0)return;let X=await vH.runStep(()=>Yi4($.map((Y)=>Y.id)),{name:`claimForEmail:${Z}`}),Q=$.filter((Y)=>X.has(Y.id));if(Q.length===0)return;await vH.runStep(()=>Ji4(Q),{name:`sendDigest:${Z}`})}async function Wi4($,Z){let X=Z-Date.now();if(X>0)await vH.sleep(X);if(!PZ1())return;let Q=await vH.runStep(()=>Xi4($),{name:"loadPendingForUser"});try{await lS$(Q,$)}catch(Y){console.warn(`[notifications] digest for ${$} failed:`,Y instanceof Error?Y.message:Y)}}async function Hi4($,Z){let X=new Date($.getTime()-wZ1-em4),Q=PZ1()?await vH.runStep(()=>Qi4(X),{name:"loadOrphanedNotifications"}):[];for(let Y of Gi4(Q)){let G=Y[0].userId;try{await lS$(Y,G)}catch(J){console.warn(`[notifications] sweep digest for ${G} failed:`,J instanceof Error?J.message:J)}}if($.getUTCMinutes()<2)await vH.runStep(()=>Ki4(new Date($.getTime()-Zi4)),{name:"pruneOldNotifications"})}function dS$($){if(!jZ1)return;let Z=Math.floor(Date.now()/wZ1),X=(Z+1)*wZ1;vH.startWorkflow(jZ1,{workflowID:`notif-digest:${$}:${Z}`})($,X).catch((Q)=>{console.debug("[notifications] digest enqueue skipped:",Q instanceof Error?Q.message:Q)})}function mS$(){if(DZ1)return;jZ1=vH.registerWorkflow(Wi4,{name:"notificationUserDigestWorkflow"}),DZ1=vH.registerWorkflow(Hi4,{name:"notificationDigestWorkflow"}),vH.registerScheduled(DZ1,{name:"notificationDigestWorkflow",crontab:sm4,mode:am4.ExactlyOncePerIntervalWhenActive})}var sm4="*/2 * * * *",wZ1=30000,em4=60000,$i4=500,Zi4=2592000000,EZ1=null,DZ1=null,jZ1=null;var AZ1=L(()=>{xG0();p5();Th();gS$();SA0()});async function Fi4($,Z){return await $.selectFrom("task_board_items").select(["organization_id","title","key_seq"]).where("id","=",Z).executeTakeFirst()}async function Ni4($,Z){if(!Z)return{name:null,image:null};let X=await $.selectFrom("user").select(["name","image"]).where("id","=",Z).executeTakeFirst();return{name:X?.name??null,image:X?.image??null}}async function uu($){let{db:Z,taskBoardItemId:X,type:Q,actorId:Y}=$;try{let G=[],J=await Fi4(Z,X);if(!J)return;let K=async(W)=>{let H=[...new Set($.alsoSubscribe?.filter((D)=>!!D))];if(H.length>0)await W.insertInto("notification_subscriptions").values(H.map((D)=>({id:o$("nsub"),user_id:D,task_board_item_id:X}))).onConflict((D)=>D.columns(["user_id","task_board_item_id"]).doNothing()).execute();let F=$.recipients,U=(F?[...new Set(F.filter((D)=>!!D))]:(await W.selectFrom("notification_subscriptions").select("user_id").where("task_board_item_id","=",X).where("subscribed","=",!0).execute()).map((D)=>D.user_id)).filter((D)=>D!==Y);if(U.length===0)return;G=U;let B=await Ni4(W,Y),O=hu.parse({taskTitle:J.title,taskKeySeq:J.key_seq??null,actorName:B.name,actorImage:B.image});await W.insertInto("notifications").values(U.map((D)=>({id:o$("notif"),user_id:D,organization_id:J.organization_id,task_board_item_id:X,type:Q,actor_id:Y,data:JSON.stringify(O)}))).execute()};await(Z.isTransaction?K(Z):Z.transaction().execute(K));for(let W of G)dS$(W),c5.emit(J.organization_id,{id:crypto.randomUUID(),type:CS$,source:"notifications",subject:W,time:new Date().toISOString()})}catch(G){console.error("[notifications] fan-out failed",G)}}var CA0=L(()=>{dZ();kA0();fa();AZ1();SA0()});import{sql as ED}from"kysely";function Bi4($){return Ui4.has($)?$:null}function _A0($){let Z=(X)=>X instanceof Date?X.toISOString():X;return{id:$.id,taskBoardItemId:$.task_board_item_id,parentId:$.parent_id,authorId:$.author_id,threadId:$.thread_id,body:$.body,resolved:$.resolved,createdAt:Z($.created_at),updatedAt:Z($.updated_at)}}function iS$($){if($&&typeof $==="object"&&!Array.isArray($)){let Z=$.text;if(typeof Z==="string"&&Z.trim())return Z.trim()}return null}function TZ1($,Z=!1){if($.status!=="in_progress")return!1;let X=$.threads.filter((Q)=>Q.hasMessages);if(X.length===0)return!1;if($.repo!=null&&!Z)return!1;if(!X.every((Q)=>Q.status!==null&&ya.has(Q.status)))return!1;return X.some((Q)=>Q.status==="completed")}function Di4($){let Z=typeof $==="string"?(()=>{try{return JSON.parse($)}catch{return null}})():$;if(!Z||typeof Z!=="object")return!1;let X=Z.githubRepo?.url;return typeof X==="string"&&X.length>0}function wi4($){if($===null||$===void 0)return null;let Z=typeof $==="number"?$:Number($);return Number.isFinite(Z)?Z:null}function Ei4($,Z){let X=(G)=>G instanceof Date?G.getTime():new Date(G).getTime(),Q=X($),Y=Z===null?Number.NEGATIVE_INFINITY:X(Z);return new Date(Math.max(Q,Y)).toISOString()}class RQ{db;constructor($){this.db=$}inTransaction($){return this.db.isTransaction?$(this.db):this.db.transaction().execute($)}async list($){let X=(await this.db.selectFrom("task_board_items").selectAll().where("organization_id","=",$).where("dismissed_at","is",null).orderBy("sort_order","asc").execute()).map((Q)=>this.itemFromDbRow(Q));return await this.attachRefs(X,$),X}async getById($,Z){let X=await this.db.selectFrom("task_board_items").selectAll().where("id","=",$).where("organization_id","=",Z).executeTakeFirst();if(!X)return null;let Q=this.itemFromDbRow(X);return await this.attachRefs([Q],Z),Q}async create($){let Z=o$("board"),X=new Date().toISOString(),Q=$.status??"triage",Y=(J)=>J.insertInto("task_board_items").values({id:Z,organization_id:$.organizationId,title:$.title,description:$.description??null,status:Q,priority:$.priority??"medium",type:$.type??A81,assignee_id:$.assigneeId??null,assigned_by:$.assignedBy??null,repo:$.repo??null,due_date:$.dueDate??null,sprint_id:$.sprintId??null,external_key:$.externalKey??null,sort_order:ED`(
|
|
2745
2745
|
select coalesce(min(sort_order), 0) - 1
|
|
2746
2746
|
from task_board_items
|
|
@@ -2884,7 +2884,7 @@ ${Z}
|
|
|
2884
2884
|
|
|
2885
2885
|
Use this to continue with the user's request \u2014 do NOT call subtask again for this.`:`The background subtask you started completed but produced no usable output${X==="length"?" (it hit its step limit)":""}. Continue with the user's request without calling subtask again for this.`;return{models:Q,reactionNudge:G}}}};VD.registerWorkflow(x06,{name:"backgroundToolWorkflow"})});async function f06($,Z,X){let Q=await eu({kind:X.kind,ctx:$,organization:Z,virtualMcp:X.virtualMcp,mcpClient:X.mcpClient,provider:X.provider,models:X.models,messages:X.messages,abortSignal:X.abortSignal,temperature:X.temperature,planMode:X.planMode,isDecopilot:X.isDecopilot,systemAgentInstructions:X.systemAgentInstructions,currentThreadId:X.currentThreadId,user:X.user,userContext:X.userContext,codingWorkspace:X.codingWorkspace,writer:X.writer,subtaskParams:{provider:X.provider,organization:Z,models:X.models,codingWorkspace:X.codingWorkspace},prepareStep:X.prepareStep,onStepFinish:X.onStepFinish,passthroughClient:X.passthroughClient,connectionsData:X.connectionsData,extraTools:X.extraTools,toolOutputMap:X.toolOutputMap,additionalSystemMessages:X.additionalSystemMessages,activeToolNames:X.activeToolNames,stepLimit:X.stepLimit});return{result:Q.result,error:Q.error,span:Q.span,assembledSystemMessages:Q.assembledSystemMessages}}function df$($){let{ctx:Z,organization:X,modelRuntime:Q,sideChannel:Y,cleanup:G}=$,J=_f$(Z,Y.writer),K=Sf$(Z);return{toolRuntime:{buildEnvironmentTools:async({input:F,onChildUsage:N})=>{let U=Xc(F),B=WA0(),O=[],{resolveArgs:D,onToolCalled:w,onPrOpened:E}=OT0(Z,F.threadId),j=await If$(F,Z,{writer:Y.writer,toolOutputMap:B,pendingImages:O,threadId:F.threadId,resolveArgs:D,onToolCalled:w,onPrOpened:E,mcpForAgent:async(P,A)=>{let R=U.virtualMcp,M=null;if(R.id&&F.user.id&&b9(R.metadata)[F.user.id])M=await gv(Z,R.id,F.user.id,U.branch??void 0).catch(()=>null);return KU(R,Z,A?.superUser??!1,{listTimeoutMs:A?.listTimeoutMs,includeSkillsCatalog:!0,additionalConnections:M?[M]:[]})},provider:Q.thinking.provider,imageProvider:Q.image?.provider??Q.thinking.provider,webSearchProvider:Q.webSearch?.provider??Q.thinking.provider,deepResearchProvider:Q.deepResearch?.provider??Q.thinking.provider,backgroundDispatcher:lf$({threadId:F.threadId,orgId:F.organizationId,userId:F.user.id,agentId:F.agent.id,temperature:F.temperature,toolApprovalLevel:F.toolApprovalLevel,branch:U.branch??null,runMetadata:Z.metadata.runMetadata}),htmlArtifactBuffer:K,onChildUsage:N}),z={tools:j.tools,passthroughTools:j.passthroughTools,builtInTools:j.builtInTools,connectionsBlockTools:j.connectionsBlockTools,toolAnnotations:j.toolAnnotations,connectionTitleMap:j.connectionTitleMap,serverInstructions:j.serverInstructions,passthroughClient:j.passthroughClient,toolOutputMap:B,writer:Y.writer,pendingImages:O,sideChunks:Y.stream,closeSideChunks:Y.close,onStepFinish:async()=>{await K.flush(),await J.sweep()},close:j.close};return G.close=j.close,z},runEngine:(F)=>f06(Z,X,F)},telemetry:{recordLlmCall:(F)=>Pf$({ctx:Z,...F}),monitorLlmCall:(F)=>jf$({ctx:Z,...F,requestId:Z.metadata.requestId,userAgent:Z.metadata.userAgent??null})}}}var mf$=L(()=>{zf$();Af$();vu();kT0();wY();qf$();C71();Cf$();vf$();yK();LT0();Jc();Qc()});async function*if$($,Z){let X=Xc(Z),Q=Of$({models:Z.models,modelSources:X.modelSources},IT0),Y=$.organization;if(!Y)throw Error("[decopilot] an organization-scoped Studio context is required");let G=qT0(),J={},K=df$({ctx:$,organization:Y,modelRuntime:Q,sideChannel:G,cleanup:J});try{yield*Lf$({input:Z,modelRuntime:Q,toolRuntime:K.toolRuntime,telemetry:K.telemetry,kind:"main"})}finally{G.close(),await J.close?.().catch(()=>{})}}var pf$=L(()=>{BX1();Df$();Qc();mf$()});function kD($,Z){return`error-${$}:${Z}`}class nf${thread;organization_id;storage;defaultWindowSize;constructor($){this.thread=$.thread,this.organization_id=$.thread.organization_id,this.storage=$.storage,this.defaultWindowSize=$.defaultWindowSize??50}async loadHistory($){let Z=$??this.defaultWindowSize,{chronological:X,isWindowed:Q}=this.thread.message_storage_version===2?await this.loadWindowedFromParts(Z):await this.loadWindowedFromMessages(Z),Y=X.find((W)=>W.role!=="system");if(!Y||Y.role==="user")return X;let G=Y,J=Q?"[Context: earlier turns in this conversation were truncated. The messages below continue the thread \u2014 pick up from there.]":"[Context: this thread opens with your message \u2014 you spoke first to greet the user, and the user has not spoken before it. Their reply follows.]";return[{id:`${this.thread.id}-msg-prefix`,thread_id:this.thread.id,role:"user",parts:[{type:"text",text:J}],metadata:void 0,created_at:G.created_at,updated_at:G.updated_at},...X]}async loadWindowedFromMessages($){let{messages:Z,total:X}=await this.storage.listMessages(this.thread.id,{limit:$,sort:"desc"});return{chronological:[...Z].reverse(),isWindowed:X>Z.length}}async loadWindowedFromParts($){let{messages:Z,total:X}=await this.storage.messageParts().loadWindow(this.thread.id,{limit:$,excludeSubtasks:!0});return{chronological:Z.map((Y)=>({id:Y.id,thread_id:this.thread.id,role:Y.role,parts:Y.parts,metadata:Y.metadata??void 0,created_at:Y.created_at,updated_at:Y.created_at})),isWindowed:X>Z.length}}}async function bT0($,Z){let{thread_id:X,defaultWindowSize:Q}=Z;if(!X)throw Error("createMemory: thread_id is required");let Y=await $.get(X);if(!Y)throw Error(`Thread not found: ${X}`);return new nf$({thread:Y,storage:$,defaultWindowSize:Q})}function b06($,Z){let X=$.filter((G)=>G.parts&&G.parts.length>0),Q=X.findIndex((G)=>G.id===Z.id);return Q>=0?[...X.slice(0,Q),Z]:[...X,Z]}async function y06($){return[...$.systemMessages,...b06($.history,$.userMessage)]}async function tf$($){let Z=$.isSubagent?[]:await(await bT0($.ctx.storage.threads,{thread_id:$.threadId,organization_id:$.ctx.organization?.id??"",userId:$.ctx.auth.user?.id??"",defaultWindowSize:$.windowSize??tJ})).loadHistory($.windowSize??tJ),X=await y06({history:Z,userMessage:$.userMessage,systemMessages:$.systemMessages});return BT0(X,$.ctx)}var of$=L(()=>{OD();su()});function CX1($){let Z=new Map;for(let Q of $){let Y=Z.get(Q.message_id);if(Y)Y.push(Q);else Z.set(Q.message_id,[Q])}let X=[];for(let[Q,Y]of Z){let G=[...Y].sort((K,W)=>K.seq-W.seq),J=G[0];X.push({id:Q,role:J.role,parts:G.filter((K)=>K.kind!=="finish").map((K)=>K.payload&&typeof K.payload==="object"&&!Array.isArray(K.payload)?{...K.payload,created_at:K.created_at}:K.payload),created_at:J.created_at,status:G.some((K)=>K.kind==="finish")?"complete":"in_progress",metadata:G.find((K)=>K.kind==="finish")?.metadata??null})}return X.sort((Q,Y)=>Q.created_at<Y.created_at?-1:Q.created_at>Y.created_at?1:0),X}function yT0($){return{id:$.id,role:$.role,parts:$.parts,metadata:$.metadata??void 0}}var _X1=()=>{};function rf$($,Z){let X=$.thinking.capabilities;if(!((X?.vision??!1)||(X?.file??!1))){if(Z.some((G)=>G.parts?.some((J)=>J.type==="file")))throw new Q$(400,{message:"This model does not support file uploads. Please change the model and try again."})}}var af$=L(()=>{NK()});function g06($){return{type:"data-user-message",data:$}}function sf$($){if(!$||typeof $!=="object")return!1;return $.type==="data-user-message"}async function ef$($,Z,X){if(!$)return;try{await $.publishRawChunk(Z,g06(X))}catch{}}class Hs{intervalMs;emitFn;sleepFn;controller=null;stopped=!1;constructor($){this.intervalMs=$.intervalMs??h06,this.emitFn=$.emit,this.sleepFn=$.sleepFn??W$}arm(){if(this.stopped)return;this.controller?.abort();let $=new AbortController;this.controller=$,this.wait($.signal)}async wait($){try{await this.sleepFn(this.intervalMs,{signal:$})}catch{return}if(this.stopped||$.aborted)return;try{await this.emitFn()}catch{this.stop();return}if(!this.stopped&&!$.aborted)this.arm()}stop(){if(this.stopped)return;this.stopped=!0,this.controller?.abort(),this.controller=null}}function $b$($=Date.now){return{type:"data-liveness",data:{t:$()},transient:!0}}var h06=30000;var vX1=L(()=>{J4()});function u06($=Date.now){return $b$($)}async function*Zb$($,Z={}){let X=()=>u06(Z.now),Q=null,Y=new Hs({intervalMs:Z.intervalMs,sleepFn:Z.sleepFn,emit:()=>Q?.()}),G=$[Symbol.asyncIterator](),J=G.next();try{Y.arm();while(!0){let K=new Promise((H)=>{Q=()=>H("heartbeat")}),W=await Promise.race([J.then((H)=>({kind:"chunk",r:H})),K.then((H)=>({kind:H}))]);if(Q=null,W.kind==="heartbeat"){yield X();continue}if(Y.arm(),W.r.done)return;yield W.r.value,J=G.next()}}finally{Y.stop(),await G.return?.(void 0).catch(()=>{})}}var Xb$=L(()=>{vX1()});function c06($){if(!$)return;if(!("models"in $))return;return $.models??void 0}function Qb$($,Z){if(!$)return!0;if($.includes("*:*"))return!0;return $.some((X)=>X.startsWith(`${Z}:`))}function iK($,Z,X){if(!$)return!0;return $.includes("*:*")||$.includes(`${Z}:*`)||$.includes(`${Z}:${X}`)}function gT0($,Z){if($===void 0)return Z;let X=Z;if(X.image&&!iK($,X.image.credentialId,X.image.id)){let{image:Q,...Y}=X;X=Y}if(X.webSearch&&!iK($,X.webSearch.credentialId,X.webSearch.id)){let{webSearch:Q,...Y}=X;X=Y}if(X.deepResearch&&!iK($,X.deepResearch.credentialId,X.deepResearch.id)){let{deepResearch:Q,...Y}=X;X=Y}return X}function Yb$($){if(!$)return{allowAll:!0,models:{}};if($.includes("*:*"))return{allowAll:!0,models:{}};let Z={};for(let X of $){let Q=X.indexOf(":");if(Q===-1)continue;let Y=X.slice(0,Q),G=X.slice(Q+1);if(!Z[Y])Z[Y]=[];Z[Y].push(G)}return{allowAll:!1,models:Z}}function l06($){if($.some((X)=>X===void 0))return;let Z=new Set;for(let X of $)for(let Q of X??[])Z.add(Q);return[...Z]}async function pK($,Z,X){if(!X||NX(X))return;let Q=X.split(","),Y=await $.selectFrom("organizationRole").select(["role","permission"]).where("organizationId","=",Z).where("role","in",Q).execute(),G=new Map(Y.map((K)=>[K.role,K.permission])),J=Q.map((K)=>{let W=G.get(K);if(!W)return;try{let H=JSON.parse(W);return c06(H)}catch{return console.error(`[model-permissions] Failed to parse permissions for role: ${K}`),[]}});return l06(J)}var Kc=L(()=>{XY()});function Wc($,Z){let X=$.capabilities?{...$.capabilities.vision!==void 0?{vision:$.capabilities.vision}:{},...$.capabilities.text!==void 0?{text:$.capabilities.text}:{},...$.capabilities.reasoning!==void 0?{reasoning:$.capabilities.reasoning}:{}}:void 0;return{id:$.id,...$.title!==void 0?{title:$.title}:{},...$.provider!==void 0?{provider:$.provider}:{},credentialId:Z,...$.limits?{limits:$.limits}:{},...X&&Object.keys(X).length>0?{capabilities:X}:{}}}function Gb$($){let Z=$.credentialId,X=Wc($.thinking,Z);return{thinking:{...X,title:X.title??X.id},...$.fast?{fast:Wc($.fast,Z)}:{},...$.smart?{smart:Wc($.smart,Z)}:{},...$.image?{image:Wc($.image,$.image.credentialId??Z)}:{},...$.webSearch?{webSearch:Wc($.webSearch,$.webSearch.credentialId??Z)}:{},...$.deepResearch?{deepResearch:Wc($.deepResearch,$.deepResearch.credentialId??Z)}:{}}}function d06($,Z=[]){if($==="stop")return"completed";if($==="tool-calls"){let X=Z.some((Y)=>Y.type==="tool-user_ask"&&Y.state==="input-available"),Q=Z.some((Y)=>Y.state==="approval-requested");return X||Q?"requires_action":"completed"}return"failed"}function hT0($,Z=[]){if($==null)return"completed";return d06($,Z)}function xX1(){return y0().podName}var Jb$=L(()=>{R$()});function m06($){let Z=null;return new ReadableStream({async pull(X){try{Z??=$().getReader();let{done:Q,value:Y}=await Z.read();if(Q)X.close();else X.enqueue(Y)}catch(Q){X.error(Q)}},async cancel(X){await Z?.cancel(X)}},{highWaterMark:0})}function i06($){let Z=$.startSeq??0;async function*X(){for await(let Q of $.chunks)yield{seq:++Z,chunk:Q}}return new ReadableStream({async start(Q){try{let Y=await $.loadOriginalMessages?.();await vT0({runId:$.runId,fenceToken:$.fenceToken,chunks:X(),errorMessageId:$.errorMessageId,originalMessages:Y,...$.initialAckSeq!==void 0?{initialAckSeq:$.initialAckSeq}:{},...$.onPublished?{onPublished:$.onPublished}:{}},{streamBuffer:$.streamBuffer,hooks:$.hooks,title:$.title}),Q.close()}catch(Y){Q.error(Y)}}})}async function p06($,Z,X,Q,Y){let{keyInfo:G,apiKey:J}=await $.storage.aiProviderKeys.resolve(X,Z),K=PV$(g71({providerId:G.providerId,apiKey:J,modelId:Q}),Y);if(K.providerId==="openrouter"||K.providerId==="deco")return{...K,extraHeaders:{...K.extraHeaders,"HTTP-Referer":"https://studio.decocms.com","X-Title":"deco"}};return K}function Fs($){if(!Hb$.includes($))throw Error(`hosted dispatch requires one of ${Hb$.join(", ")}; got ${JSON.stringify($)}`)}function Fb$($){return!("messages"in $)}function Nb$($,Z){if(!$.taskId)throw Error("buildDurableDispatchInput: taskId is required");let X=$.messages.filter((Q)=>Q.role==="system").flatMap((Q)=>Q.parts).filter((Q)=>Q.type==="text"&&typeof Q.text==="string").map((Q)=>Q.text).join(`
|
|
2886
2886
|
|
|
2887
|
-
`).trim();return{models:$.models,agent:$.agent,temperature:$.temperature,toolApprovalLevel:$.toolApprovalLevel,...$.toolAllowlist!==void 0?{toolAllowlist:$.toolAllowlist}:{},...$.maxAgentSteps!==void 0?{maxAgentSteps:$.maxAgentSteps}:{},...$.isSubagent!==void 0?{isSubagent:$.isSubagent}:{},...$.subtaskJobId!==void 0?{subtaskJobId:$.subtaskJobId}:{},...$.resumedFromBackground!==void 0?{resumedFromBackground:$.resumedFromBackground}:{},mode:$.mode,...$.windowSize!==void 0?{windowSize:$.windowSize}:{},...$.triggerId!==void 0?{triggerId:$.triggerId}:{},...$.runMetadata!==void 0?{runMetadata:$.runMetadata}:{},branch:Z.branch??$.branch??null,harnessId:$.harnessId,organizationId:$.organizationId,userId:$.userId,taskId:$.taskId,messageId:Z.messageId,...Z.runFenceToken!==void 0?{runFenceToken:Z.runFenceToken}:{},...$.isResume!==void 0?{isResume:$.isResume}:{},...X?{systemContext:X}:{}}}function n06($,Z){let X=$.find((Q)=>Q.id===Z);if(!X)throw new CH("empty_request",`Persisted request message missing for messageId=${Z}`);if(X.role==="system")throw new CH("empty_request",`Persisted message ${Z} has role=system; expected non-system request message`);return X}function t06($){let Z=$.models;return{"decopilot.agent.id":$.agent.id,"decopilot.model.id":Z.thinking.id,"decopilot.credential.id":Z.credentialId,"decopilot.organization.id":$.organizationId,"decopilot.user.id":$.userId,"decopilot.thread.id":$.taskId??""}}async function Ub$($,Z,X){return tp1("decopilot.dispatchRunAndWait",async(Q)=>{let{taskId:Y,uiStream:G,registrySignal:J}=await a06($,Z,X,Q),K=X.streamBuffer,W=K?await K.createTailStream(Y,$.abortSignal,{deliverPolicy:"new",closeOnDone:!0}):null;if(K&&W){let H=K.pump(G,Y,J,$.organizationId);H.catch(()=>{});let F=W.getReader();try{while(!0){let{done:N}=await F.read();if(N)break}}finally{F.releaseLock()}await H}else{if(K)console.warn(JSON.stringify({msg:"decopilot-stream-diag",event:"producer-fallback-no-pump",taskId:Y,hasTail:!!W,note:"createTailStream returned null \u2014 draining producer stream directly; projector persistence depends on streamBuffer publish health"}));let H=G.getReader();try{while(!0){let{done:F}=await H.read();if(F)break}}finally{H.releaseLock()}}return{taskId:Y}},t06($))}async function o06($,Z,X,Q){let[Y,G,J]=await Promise.all([$.storage.threads.list(Q,{limit:9,agentId:X}).catch(()=>null),$.storage.interests.getForAgent(Z,X,Q).catch(()=>null),$.storage.virtualMcps.list(Z).catch(()=>null)]),K={};if(Y&&Y.total>0)K.recentThreads={total:Y.total,threads:Y.threads.map((W)=>({id:W.id,title:W.title,updated_at:W.updated_at}))};if(G&&G.interests.length>0)K.interests=G.interests.map((W)=>({title:W.title,summary:W.summary}));if(J)K.agents=J.map((W)=>({id:W.id,name:W.title,description:W.description,status:W.status}));return K}async function r06({virtualMcp:$,agentId:Z,organizationId:X,ctx:Q}){return EJ0({virtualMcp:$,agentId:Z,organizationId:X,ctx:Q})}async function a06($,Z,X,Q){let{runRegistry:Y,streamBuffer:G}=X;Fs($.harnessId);let J=$.harnessId;if(!Fb$($))$={...$,messages:$.messages.map((H)=>H.id?H:{...H,id:qa()})};let K=!1,W;try{let H=$.models;Q.setAttribute("decopilot.harnessId",J),Q.setAttribute("decopilot.dispatchTarget.sandboxProviderKind","agent-sandbox");let F=Mv(J),N=Gb$(H),U=await pK(Z.db,$.organizationId,Z.organization?.role??Z.auth.user?.role);if(!iK(U,N.thinking.credentialId,N.thinking.id))throw new CH("model_not_allowed","Model not allowed for your role");N=gT0(U,N);let B=$.windowSize??tJ;if(!$.taskId)throw Error("dispatchRunAndWait: taskId is required");if(F)await CG({streamBuffer:G,harnessId:J,taskId:$.taskId,stage:ra[0]});let O=await zV$(Z,$.organizationId,Z.metadata?.runMetadata),D=(v0)=>v0?p06(Z,$.organizationId,v0.credentialId,v0.id,O):Promise.resolve(void 0),[w,E,j,z,P,A,R,M,q]=await Promise.all([Z.storage.virtualMcps.findById($.agent.id,$.organizationId),D(N.thinking),D(N.fast),D(N.smart),D(N.image),D(N.webSearch),D(N.deepResearch),bT0(Z.storage.threads,{organization_id:$.organizationId,thread_id:$.taskId,userId:$.userId,defaultWindowSize:B}),o06(Z,$.organizationId,$.agent.id,$.userId)]);if(F)await CG({streamBuffer:G,harnessId:J,taskId:$.taskId,stage:ra[1]});let S=E?{thinking:E,...j?{fast:j}:{},...z?{smart:z}:{},...P?{image:P}:{},...A?{webSearch:A}:{},...R?{deepResearch:R}:{}}:void 0,m=E?IT0(E):null;if(W=M.thread.id,Z.metadata.threadId=M.thread.id,Q.setAttribute("decopilot.thread.id",M.thread.id),M.thread.created_by!==$.userId)throw new CH("not_thread_owner","You are not allowed to write to this thread because you are not the owner");if(m?.asyncResearch){let v0=[["thinking",N.thinking.id]];if(N.fast)v0.push(["fast",N.fast.id]);if(N.smart)v0.push(["smart",N.smart.id]);if(N.image)v0.push(["image",N.image.id]);for(let[n0,o]of v0)if(m.asyncResearch.canHandle(o))throw Error(`Model "${o}" can only be used as a Deep Research model. It is not usable as the ${n0} model \u2014 set it in the Deep Research slot instead.`)}let b=M.thread.message_storage_version===2?new IX({storage:Z.storage.threads.messageParts(),orgId:$.organizationId,threadId:M.thread.id,runId:M.thread.id}):null;if(!w)throw new CH("agent_not_found","Agent not found");let l=await r06({virtualMcp:w,agentId:$.agent.id,organizationId:$.organizationId,ctx:Z});if($.isResume)await Y.execute({type:"RESUME",taskId:M.thread.id,orgId:$.organizationId,userId:$.userId,abortController:new AbortController,podId:xX1()});else await Y.execute({type:"START",taskId:M.thread.id,orgId:$.organizationId,userId:$.userId,abortController:new AbortController,podId:xX1(),runConfig:{models:$.models,agent:$.agent,temperature:$.temperature,toolApprovalLevel:$.toolApprovalLevel,mode:$.mode,windowSize:$.windowSize,triggerId:$.triggerId},messageId:$.messageId});K=!0,await Z.storage.threads.clearCancelRequested(M.thread.id);let y=$.runFenceToken,p=Y.getAbortSignal(M.thread.id);if(!p)throw await Y.execute({type:"FINISH",taskId:M.thread.id,threadStatus:"failed"}),Error("Run was cancelled immediately after starting");if($.abortSignal){let v0=$.abortSignal;if(v0.aborted)await Y.execute({type:"CANCEL",taskId:M.thread.id});else v0.addEventListener("abort",()=>{Y.execute({type:"CANCEL",taskId:M.thread.id}).catch(()=>{})},{once:!0})}let Y0=$c(J),L0=Y0?await Z.storage.threads.getAckedSeq(M.thread.id):0;if(L0>0)console.log("[dispatch] resuming a sandbox-hosted turn",{runId:M.thread.id,fromSeq:L0});if(L0===0)G?.purge(M.thread.id);let r=[],t,D0;if(Fb$($)){if(D0=await M.loadHistory(B),t=n06(D0,$.messageId),$.systemContext)r=[{id:`system-${$.messageId}`,role:"system",parts:[{type:"text",text:$.systemContext}]}]}else{r=$.messages.filter((n0)=>n0.role==="system");let v0=$.messages.find((n0)=>n0.role!=="system");if(t=v0?(await UT0([v0],Z,{threadId:M.thread.id})).find((n0)=>n0.role!=="system"):void 0,!$.isResume){if(!t)throw new CH("empty_request","No user message found in input \u2014 expected at least one non-system message");if(b)await b.emitUserMessage(t).catch((n0)=>{console.error("[decopilot:stream] v2 user-message emit failed",n0)})}}if(t)await ef$(G,M.thread.id,t);let e=[],E0=Date.now(),u0=t?(await BT0([t],Z))[0]:void 0;if(!u0||!t)throw new CH("empty_request","No user message found in input \u2014 expected at least one non-system message");rf$($.models,[u0]);let q0=await tf$({ctx:Z,threadId:M.thread.id,userMessage:t,windowSize:B,isSubagent:$.isSubagent===!0,systemMessages:r}),J0={url:"",headers:{},expiresAt:0},j0=void 0,P0=void 0,M0={cwd:null},X0=$.agent.instructions??(typeof l.metadata?.instructions==="string"?l.metadata.instructions:void 0),G0={taskId:$.taskId,isSubagent:$.isSubagent,subtaskJobId:$.subtaskJobId,resumedFromBackground:$.resumedFromBackground,virtualMcp:l,branch:$.branch,messages:q0,modelSources:S,mcpSource:j0,objectStorageSource:P0,userContext:q},V0={threadId:M.thread.id,userMessage:u0,harness:{sessionId:void 0},workspace:M0,models:N,mcp:J0,mode:$.mode,temperature:$.temperature,toolApprovalLevel:$.toolApprovalLevel,toolAllowlist:$.toolAllowlist??null,maxAgentSteps:$.maxAgentSteps,user:{id:$.userId,email:Z.auth.user?.email??""},organizationId:$.organizationId,agent:{id:$.agent.id,instructions:X0,...$.agent.disallowedTools?{disallowedTools:$.agent.disallowedTools}:{}},currentThreadTitle:M.thread.title};if(F)await CG({streamBuffer:G,harnessId:J,taskId:$.taskId,stage:ra[2]});let N0=Y0?await Z.storage.claudeSubscriptions.findLiveToken($.userId).catch((v0)=>{return console.warn("[dispatch] claude subscription lookup failed",v0),null}):null,O0=async function*(){let v0={...V0,signal:p};if(EX1(v0,G0),F)await CG({streamBuffer:G,harnessId:J,taskId:M.thread.id,stage:ra[3]});yield*Y0?new y71({ctx:Z,virtualMcpId:l.id,streamBuffer:G,interactive:Boolean(l.metadata?.githubRepo?.url),...L0>0?{resume:{reason:"the Studio process driving the previous attempt stopped"}}:{},branch:await o30(Z,{threadId:M.thread.id,agentRepo:l.metadata?.githubRepo,runBranch:$.branch}),credential:N0?{providerId:RV$,apiKey:N0}:E?{providerId:E.providerId,apiKey:E.apiKey,...E.baseUrl?{baseUrl:E.baseUrl}:{}}:null}).dispatch(v0):if$(Z,v0)},P1=m06(()=>i06({runId:M.thread.id,fenceToken:y,streamBuffer:G??{publishRawChunk:async()=>!1,publishDone:async()=>!1},chunks:Zb$(O0()),...Y0?{startSeq:L0,initialAckSeq:L0,onPublished:(v0)=>Z.storage.threads.bumpAckedSeq(M.thread.id,y,v0)}:{},errorMessageId:kD(M.thread.id,y),loadOriginalMessages:b?async()=>(await Z.storage.threads.messageParts().loadWindow(M.thread.id,{limit:1})).messages.map(yT0):void 0,title:{currentThreadTitle:M.thread.title,threadId:M.thread.id,persistTitle:async(v0,n0)=>{await Z.storage.threads.update(v0,{title:n0})}},hooks:{onStep:()=>{let v0=Y.dispatch({type:"STEP_DONE",taskId:M.thread.id});e.push(Y.react(v0).catch((n0)=>{console.error("[decopilot:stream] onStepFinish reactor failed",n0)}))},onFinish:async(v0,n0)=>{let o=e.length,f0=performance.now();if(await Promise.allSettled(e),Kb$.record(performance.now()-f0,{phase:"settle"}),p.aborted)return;await W$(0);let X1=Wb$?VE():null,k1=performance.now(),_0=hT0(n0,v0?.parts);await Y.execute({type:"FINISH",taskId:M.thread.id,threadStatus:_0});let c1=performance.now()-k1;if(Kb$.record(c1,{phase:"save"}),Wb$&&X1){let O8=VE()??X1,H6=-1;try{H6=JSON.stringify(v0)?.length??-1}catch{}console.warn(JSON.stringify({msg:"decopilot-finish-trace",threadId:M.thread.id,pendingOps:o,saveMs:Math.round(c1),parts:v0?.parts?.length??0,messageBytes:H6,rssDelta:O8.rss-X1.rss,heapUsedDelta:O8.heapUsed-X1.heapUsed,externalDelta:O8.external-X1.external}))}},onError:(v0)=>{if(p.aborted){u1.capture({distinctId:$.userId,event:"chat_message_aborted",groups:{organization:$.organizationId},properties:{organization_id:$.organizationId,thread_id:M.thread.id,agent_id:$.agent.id,model_id:N.thinking.id,mode:$.mode,duration_ms:Date.now()-E0,is_resume:$.isResume??!1}});return}if(aa(v0)){console.log(`[decopilot] attempt superseded by a newer dispatch; leaving the terminal to it thread=${M.thread.id}`);return}console.error("[decopilot] stream error:",bK(v0)),Y.execute({type:"FINISH",taskId:M.thread.id,threadStatus:"failed",errorText:bK(v0)}).catch((n0)=>{console.error("[decopilot:stream] onError reactor failed",n0)})}}}));return{taskId:M.thread.id,uiStream:P1,registrySignal:p}}catch(H){if(K&&W)Y.execute({type:"FINISH",taskId:W,threadStatus:"failed",errorText:bK(H)}).catch((F)=>{console.error("[decopilot:stream] catch-block reactor failed",F)});throw H}}var Kb$,Wb$,Hb$;var uT0=L(()=>{Aa();k91();f4();aP0();DT0();VK();Vh();wv$();pf$();Qc();BX1();OD();of$();wD();_X1();su();af$();Vv();VX1();Xb$();Kc();x6();Jb$();J4();Kb$=P$.createHistogram("decopilot.finish.duration",{description:"Wall time of onFinish flush segments, tagged by phase",unit:"ms"}),Wb$=process.env.DECOPILOT_FINISH_TRACE==="1";Hb$=["decopilot","claude-code"]});function Bb$(){return crypto.randomUUID()}function Ob$($){return Fv$($)||sf$($)}async function s06($){let Z=$.getReader();try{while(!0){let{done:X}=await Z.read();if(X)break}}finally{Z.releaseLock()}}function e06($,Z){let X=$.getReader(),Q=!1,Y=()=>{if(Q)return;Q=!0,X.releaseLock()};return new ReadableStream({async pull(G){try{let{done:J,value:K}=await X.read();if(J)Y(),G.close();else G.enqueue(K)}catch(J){Z(J),Y(),G.error(J)}},async cancel(G){await X.cancel(G),Y()}})}async function Lb$($){if(!$.chunks&&!$.chunkStream)throw Error("projectChunks requires chunks or chunkStream");let Z=null,X=!1,Q=void 0,Y={inputTokens:0,outputTokens:0,totalTokens:0},G=[],J=null,K=(O)=>{if(J===null)J=O;throw O},W=$.chunks?async function*(){try{for await(let O of $.chunks){if(Ob$(O))continue;yield O}}catch(O){throw Z=O,O}}():void 0,H=$.chunkStream?e06($.chunkStream,(O)=>{Z=O}).pipeThrough(new TransformStream({transform(O,D){if(!Ob$(O))D.enqueue(O)}})):void 0,F={emitStepParts:(O)=>$.persistence.emitStepParts(O).catch(K),emitFinal:(O)=>$.persistence.emitFinal(O).catch(K),emitError:(O,D)=>$.persistence.emitError(O,D).catch(K)},{uiStream:N,whenComplete:U}=_T0({chunks:W,chunkStream:H,originalMessages:$.originalMessages??[],title:$.title?{currentThreadTitle:$.title.currentThreadTitle,threadId:$.title.threadId,persistTitle:$.title.persistTitle}:{currentThreadTitle:void 0,threadId:"projector",persistTitle:async()=>{}},persistence:F,sanitizeErrorText:$.sanitizeErrorText,errorMessageId:$.errorMessageId,generateMessageId:$.generateMessageId,hooks:{onUsage:(O)=>{Y={inputTokens:O.inputTokens,outputTokens:O.outputTokens,totalTokens:O.totalTokens}},onError:()=>{X=!0},onFinish:(O,D)=>{Q=D,G=Array.isArray(O.parts)?O.parts.filter((w)=>w!=null&&typeof w==="object"&&("type"in w)):[]}}});if(await s06(N).catch(()=>{}),await U,J!==null)throw J;if(Z!==null)throw Z;return{failed:X&&Q===void 0,finishReason:Q,usage:Y,finalParts:G}}var Db$=L(()=>{MX1();Vv()});function $16($){if(/[.*>\s]/.test($))throw Error("Invalid NATS subject token")}function SD($){return $16($),`decopilot.stream.${$}`}function wb$($){let Z=`${$.runId}:${$.fenceToken}:${$.seq}`;return $.fragmentIndex===void 0?Z:`${Z}:frag:${$.fragmentIndex}`}function Z16($){return`${$.runId}:${$.fenceToken}:done:${$.finalSeq}`}function Eb$($){if(!$)return null;let Z=Number($);return Number.isInteger(Z)&&Z>0?Z:null}function X16($){if(!$)return null;let Z=Number($);return Number.isInteger(Z)&&Z>=0?Z:null}function Q16($){if(!$)return null;let Z=$.split(":"),[X,Q,Y,G,J]=Z;if(!X||!Q||!Y)return null;if(Y==="done"){let W=Eb$(G);return Z.length===4&&W!==null?{kind:"done",runId:X,fenceToken:Q,finalSeq:W}:null}let K=Eb$(Y);if(K===null)return null;if(Z.length===3)return{kind:"chunk",runId:X,fenceToken:Q,seq:K,fragmentIndex:null};if(Z.length===5&&G==="frag"){let W=X16(J);return W===null?null:{kind:"chunk",runId:X,fenceToken:Q,seq:K,fragmentIndex:W}}return null}function yX1($,Z){let X=SD(Z.runId),Q=bX1.encode(JSON.stringify({p:$}));if(Q.length>33554432)throw RangeError(`stream chunk is ${Q.length} bytes; maximum is 33554432`);if(Q.length<=786432)return[{subject:X,data:Q,msgId:Z.dedup?wb$({runId:Z.runId,...Z.dedup}):void 0}];let Y=Math.ceil(Q.length/786432),G=[];for(let J=0;J<Y;J++)G.push({subject:X,data:Q.slice(J*786432,(J+1)*786432),headers:{["Dp-Frag-Idx"]:String(J),["Dp-Frag-Total"]:String(Y)},msgId:Z.dedup?wb$({runId:Z.runId,...Z.dedup,fragmentIndex:J}):void 0});return G}function jb$($){return{subject:SD($.runId),data:bX1.encode(JSON.stringify({done:!0,finalSeq:$.finalSeq})),msgId:Z16($)}}function zb$($){return{subject:SD($),data:bX1.encode(JSON.stringify({done:!0}))}}function Y16($){let Z=$.reduce((Y,G)=>Y+(G?.length??0),0),X=new Uint8Array(Z),Q=0;for(let Y of $){if(!Y)continue;X.set(Y,Q),Q+=Y.length}return X}function cT0(){let $=null;return new TransformStream({transform(Z,X){let Q=Z.headers?.get("Dp-Frag-Total");if(!Q){X.enqueue(Z);return}let Y=Number(Q),G=Number(Z.headers?.get("Dp-Frag-Idx")??"0");if(G===0)$={total:Y,received:0,parts:Array(Y)};else if(!$||$.total!==Y)return;if(!$.parts[G])$.received++;if($.parts[G]=Z.data,$.received<$.total)return;let J=Y16($.parts);$=null,X.enqueue({subject:Z.subject,data:J,headers:Z.headers})}})}function G16($){return typeof $==="number"&&Number.isInteger($)&&$>0}function K16($){let Z=Q16($.headers?.get("Nats-Msg-Id")||void 0),X;try{X=JSON.parse(J16.decode($.data))}catch{return null}if(!X||typeof X!=="object")return null;let Q=X;if(Q.done===!0)return{kind:"done",runId:Z?.kind==="done"?Z.runId:null,fenceToken:Z?.kind==="done"?Z.fenceToken:null,envelopeFinalSeq:G16(Q.finalSeq)?Q.finalSeq:null,msgIdFinalSeq:Z?.kind==="done"?Z.finalSeq:null};if("p"in Q)return{kind:"chunk",seq:Z?.kind==="chunk"?Z.seq:null,runId:Z?.kind==="chunk"?Z.runId:null,fenceToken:Z?.kind==="chunk"?Z.fenceToken:null,chunk:Q.p};return null}function lT0(){return new TransformStream({transform($,Z){let X=K16($);if(X)Z.enqueue(X)}})}var fX1="decopilot.stream",bX1,J16;var Pb$=L(()=>{bX1=new TextEncoder;J16=new TextDecoder});var dT0=L(()=>{Pb$()});var wU="DECOPILOT_STREAMS";var gX1=L(()=>{dT0()});function Hc($){if(!($ instanceof Error))return!1;if($.name==="TimeoutError")return!0;return/timeout|no responders|503|not enabled|is offline/i.test($.message)}function Ab$($,Z){return new TransformStream({transform(X,Q){if(X.runId!==$||X.fenceToken!==Z)return;Q.enqueue(X)}})}function Tb$(){let $=1;return new TransformStream({transform(Z,X){if(Z.kind==="done"){X.enqueue(Z);return}if(Z.seq===null){X.error(Error("projector chunk missing seq"));return}if(Z.seq<$)return;if(Z.seq>$){X.error(new Ns($,Z.seq));return}$++,X.enqueue(Z)}})}function Rb$($){let Z=$.getReader(),X=!1,Q=0,Y=()=>{if(X)return;X=!0,Z.releaseLock()};return new ReadableStream({async pull(G){for(;;){let{done:J,value:K}=await Z.read();if(J){await Z.cancel(),Y(),G.error(Error("reader stopped before done"));return}let W=K;if(W.kind==="done"){if(!(W.envelopeFinalSeq!=null&&W.envelopeFinalSeq===W.msgIdFinalSeq))continue;if(W.envelopeFinalSeq!==Q){await Z.cancel(),Y(),G.error(new Ns(Q+1,null));return}await Z.cancel(),Y(),G.close();return}Q=W.seq??Q,G.enqueue(W.chunk);return}},async cancel(G){await Z.cancel(G),Y()}})}function W16($){if(Symbol.asyncIterator in $)return $[Symbol.asyncIterator]();let Z=$[Symbol.iterator]();return{next:async()=>Z.next(),return:async(X)=>Z.return?Z.return(X):{done:!0,value:X}}}function iT0($){let Z=W16($.messages),X=$.idleTimeoutMs,Q=!1,Y=(G)=>{if(Q)return;Q=!0,Z.return?.(G).catch(()=>{}),$.onCancel?.()};return new ReadableStream({async pull(G){if(X===void 0){let{done:F,value:N}=await Z.next();if(F){G.close();return}G.enqueue(N);return}let J=new AbortController,K=Z.next().then((F)=>{return J.abort(),F}),W=W$(X,{signal:J.signal}).then(()=>"idle").catch(()=>"cancelled"),H=await Promise.race([K,W]);if(H==="idle"){G.error(new mT0(X));return}if(H==="cancelled")return;if(H.done){G.close();return}G.enqueue(H.value)},async cancel(G){Y(G)}})}var mT0,Ns;var pT0=L(()=>{J4();mT0=class mT0 extends Error{idleTimeoutMs;constructor($){super("producer produced no output before timeout");this.idleTimeoutMs=$;this.name="StreamIdleTimeoutError"}};Ns=class Ns extends Error{expectedSeq;gotSeq;constructor($,Z){super(Z===null?`missing seq ${$} (stream ended at the fenced done)`:`missing seq ${$} (next delivered is ${Z})`);this.expectedSeq=$;this.gotSeq=Z;this.name="StreamGapError"}}});function H16($){let X=iT0({messages:$.messages,idleTimeoutMs:$.idleTimeoutMs,onCancel:$.onDone}).pipeThrough(cT0()).pipeThrough(lT0()).pipeThrough(Ab$($.runId,$.fenceToken)).pipeThrough(Tb$());return Rb$(X)}async function qb$($){let Z=await z6(async()=>{return(await $.js.consumers.get(wU,{filter_subjects:SD($.runId),deliver_policy:Ib$.DeliverPolicy.All})).consume()},{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:Hc});async function*X(){try{for await(let Q of Z)yield{subject:Q.subject,data:Q.data,headers:Q.headers}}finally{Z.stop()}}return H16({messages:X(),runId:$.runId,fenceToken:$.fenceToken,idleTimeoutMs:$.idleTimeoutMs,onDone:()=>Z.stop()})}var Ib$;var Mb$=L(()=>{J4();gX1();pT0();dT0();Ib$=k(tE(),1)});async function F16($){let X=($.requestMessageId?await $.messageParts.maxCreatedAtMsForMessage($.runId,$.requestMessageId):null)??await $.messageParts.maxCreatedAtMsForRun($.runId);return new IX({storage:$.messageParts,orgId:$.orgId,threadId:$.runId,runId:$.runId,baseTimeMs:(X??Date.now())+1})}async function Vb$($){let Z=await F16($),X=$.replaceFinal?(Q)=>Z.replaceFinal(Q):(Q)=>Z.emitFinal(Q);return{emitStepParts:(Q)=>Z.emitStepParts(Q),emitFinal:X,emitError:(Q,Y)=>Z.emitError(Q,Y)}}var kb$=L(()=>{wD()});function nT0($,Z){U16().add(1,{"org.id":Z??"unknown"})}var N16=($)=>{let Z;return()=>Z??=$()},U16;var Sb$=L(()=>{x6();U16=N16(()=>P$.createCounter("decopilot.projector.poison_runs",{description:"Number of decopilot runs that exhausted retries and were sent to the DLQ",unit:"{runs}"}))});class hX1{intervalMs;lastBumpMs=new Map;constructor($=3000){this.intervalMs=$}shouldBump($,Z=Date.now()){let X=this.lastBumpMs.get($);if(X!==void 0&&Z-X<this.intervalMs)return!1;return this.lastBumpMs.set($,Z),!0}clear($){this.lastBumpMs.delete($)}}function Cb$($,Z,X,Q){return $.pipeThrough(new TransformStream({transform(Y,G){if(X.shouldBump(Z))Q();G.enqueue(Y)},flush(){X.clear(Z)}}))}function B16($){return`liveness: no stream events for ${Math.round($/60000)}m`}function cX1($){return $.runFenceToken!==null&&$.runFenceToken!==$.fenceToken}function vb$($){uX1=$}function xb$(){if(!uX1)throw Error("[projector-workflow] runtime not initialized \u2014 setProjectorWorkflowRuntime() must run before workflows fire");return uX1}function fb$(){return xb$()}async function bb$($,Z,X){let Q=xb$(),Y=Q.getJetStream();if(!Y)throw Error("JetStream unavailable");let G=(await Q.messageParts.loadWindow($.runId,{limit:500})).messages.map(yT0);return{chunkCount:0,attempts:1,outcome:await Lb$({chunkStream:Cb$(await qb$({js:Y,runId:$.runId,fenceToken:$.fenceToken,idleTimeoutMs:$.idleTimeoutMs}),$.runId,O16,()=>{Q.bumpProgress({runId:$.runId,orgId:Z}).catch(()=>{})}),persistence:await Vb$({messageParts:Q.messageParts,orgId:Z,runId:$.runId,requestMessageId:$.messageId,replaceFinal:!0}),originalMessages:G,errorMessageId:kD($.runId,$.fenceToken),title:{threadId:$.runId,currentThreadTitle:X,persistTitle:async(K,W)=>{await Q.persistTitle($.runId,Z,W),await Q.onTitleUpdated({runId:$.runId,orgId:Z,title:W})}}})}}async function _b$($,Z,X){let Q=await $.resolveRun(Z).catch(()=>null);return Q!==null&&Q.runFenceToken===X&&["completed","failed","requires_action"].includes(Q.status)}async function yb$($,Z,X){let Q=await L16($,Z);if("skip"in Q)return;let Y=Q.row.orgId,G=Q.row.createdBy??$.runId,J=Q.row.title;try{let{outcome:K}=await X($,Y,J),W=K?.failed?"failed":hT0(K?.finishReason,K?.finalParts);if(W==="failed"){let H=K?.finishReason?`harness reported an error: ${K.finishReason}`:"harness reported an error";if(nT0($.runId,Y),await Z.markRunFailed($.runId,Y,H,"harness"))await Z.recordFailed({runId:$.runId,orgId:Y,distinctId:G,reason:H,kind:"harness"})}else if(W==="requires_action")await Z.markRunRequiresAction($.runId,Y),await Z.clearSynthesizedError($.runId,$.fenceToken);else{if(await Z.completeRunIfNotCompleted($.runId,Y))await Z.recordCompleted({runId:$.runId,orgId:Y,distinctId:G,usage:K?.usage??{inputTokens:0,outputTokens:0,totalTokens:0}});await Z.clearSynthesizedError($.runId,$.fenceToken)}await Z.purgeRun($.runId,$.fenceToken)}catch(K){if(K instanceof Ns){if(await _b$(Z,$.runId,$.fenceToken)){await Z.clearSynthesizedError($.runId,$.fenceToken),await Z.purgeRun($.runId,$.fenceToken);return}let U=`stream truncated before projection could replay it: ${K.message}`;if(nT0($.runId,Y),await Z.markRunFailed($.runId,Y,U,"projection"))await Z.recordFailed({runId:$.runId,orgId:Y,distinctId:G,reason:U,kind:"projection"});await Z.purgeRun($.runId,$.fenceToken);return}let W=K instanceof mT0;if(W&&await _b$(Z,$.runId,$.fenceToken)){await Z.purgeRun($.runId,$.fenceToken);return}let H=W?B16(K.idleTimeoutMs):K instanceof Error?K.message:String(K),F=W?"liveness":"projection";if(nT0($.runId,Y),await Z.markRunFailed($.runId,Y,H,F))await Z.recordFailed({runId:$.runId,orgId:Y,distinctId:G,reason:H,kind:F});if(W)await Z.clearSynthesizedError($.runId,$.fenceToken);throw K}}async function L16($,Z){let X=await Z.resolveRun($.runId);if(!X)return{skip:"missing"};if(cX1({status:X.status,runFenceToken:X.runFenceToken,fenceToken:$.fenceToken}))return{skip:"stale",row:X};if(X.version!==2)return{skip:"legacy-v1",row:X};return{row:X}}var uX1=null,O16;var lX1=L(()=>{Db$();Mb$();pT0();kb$();Sb$();_X1();O16=new hX1});function gb$($,Z){switch($.type){case"START":{let X={type:"RUN_STARTED",taskId:$.taskId,orgId:$.orgId,userId:$.userId,abortController:$.abortController,runConfig:$.runConfig,podId:$.podId,messageId:$.messageId};if(Z?.status.tag==="running")return[{type:"PREVIOUS_RUN_ABORTED",taskId:$.taskId,orgId:Z.orgId},X];return[X]}case"STEP_DONE":{if(Z?.status.tag!=="running")return[];return[{type:"STEP_COMPLETED",taskId:$.taskId,orgId:Z.orgId,stepCount:Z.status.stepCount+1}]}case"FINISH":{if(Z==null||Z.status.tag!=="running")return[];let{stepCount:X}=Z.status;if($.threadStatus==="completed")return[{type:"RUN_COMPLETED",taskId:$.taskId,orgId:Z.orgId,stepCount:X}];if($.threadStatus==="requires_action")return[{type:"RUN_REQUIRES_ACTION",taskId:$.taskId,orgId:Z.orgId,stepCount:X}];return[{type:"RUN_FAILED",taskId:$.taskId,orgId:Z.orgId,reason:"error",errorText:$.errorText??null}]}case"CANCEL":{if(Z?.status.tag!=="running")return[];return[{type:"RUN_FAILED",taskId:$.taskId,orgId:Z.orgId,reason:"cancelled"}]}case"RESUME":{if(Z?.status.tag==="running")return[];return[{type:"RUN_RESUMED",taskId:$.taskId,orgId:$.orgId,userId:$.userId,abortController:$.abortController,podId:$.podId}]}case"FORCE_FAIL":{if($.reason==="ghost")return[{type:"RUN_FAILED",taskId:$.taskId,orgId:Z?.orgId??$.orgId,reason:$.reason,expectedFenceToken:$.expectedFenceToken??null}];if(Z?.status.tag!=="running")return[];return[{type:"RUN_FAILED",taskId:$.taskId,orgId:Z.orgId,reason:$.reason}]}}}function hb$($,Z,X=new Date){switch(Z.type){case"RUN_STARTED":return{taskId:Z.taskId,orgId:Z.orgId,userId:Z.userId,status:{tag:"running",abortController:Z.abortController,stepCount:0,startedAt:X}};case"RUN_RESUMED":return{taskId:Z.taskId,orgId:Z.orgId,userId:Z.userId,status:{tag:"running",abortController:Z.abortController,stepCount:0,startedAt:X}};case"STEP_COMPLETED":if($?.status.tag!=="running")return $;return{...$,status:{...$.status,stepCount:Z.stepCount}};case"RUN_COMPLETED":return;case"RUN_REQUIRES_ACTION":return;case"RUN_FAILED":return;case"PREVIOUS_RUN_ABORTED":return}}function ub$($){if(!$?.trim())return{...Us};for(let{kind:Z,reason:X,match:Q}of D16)if(Q.test($))return{kind:Z,reason:X};return{...Us}}var D16,Us;var cb$=L(()=>{D16=[{kind:"credits",reason:"Run stopped: the organization is out of AI credits",match:/\[CREDITS\]|requires more credits|\b402\b/i},{kind:"sandbox_unreachable",reason:"Run stopped: its sandbox became unreachable mid-run",match:/\[SANDBOX_UNREACHABLE\]|sandbox stream broke/i},{kind:"cancelled",reason:"Run cancelled before it finished",match:/^\s*(error:\s*)?cancelled\b|run cancelled/i},{kind:"overloaded",reason:"Run stopped: the model provider was overloaded or rate-limited",match:/\boverloaded\b|\brate.?limit|\b429\b/i},{kind:"context_length",reason:"Run stopped: the conversation exceeded the model's context window",match:/context (length|window)|too many tokens|maximum context/i},{kind:"model_error",reason:"Run stopped: the model provider rejected the request",match:/\bAPI Error\b|\b5\d{2}\b.*provider|provider returned/i}],Us={kind:"error",reason:"Run ended with an error \u2014 see the run's messages"}});function j16($,Z){if($!=="error")return E16[$];let{kind:X,reason:Q}=ub$(Z);return{failure_reason:Q,failure_kind:X}}async function lb$($,Z,X,Q){let{storage:Y,sseHub:G}=Q,J=await Y.get($,Z);G.emit(Z,lW($,X,{virtualMcpId:J?.virtual_mcp_id??void 0,createdBy:J?.created_by,triggerId:J?.trigger_id,title:J?.title,branch:J?.branch??null,harnessId:J?.harness_id??void 0,createdAt:J?.created_at,updatedAt:J?.updated_at})),G.emit(Z,qX0($,X))}async function z16($,Z){let{storage:X,sseHub:Q}=Z;switch($.type){case"RUN_STARTED":{await X.update($.taskId,$.orgId,{status:"in_progress",run_config:$.runConfig??null,run_started_at:new Date().toISOString(),last_progress_at:null,failure_reason:null,failure_kind:null});let Y=await X.get($.taskId,$.orgId);Q.emit($.orgId,lW($.taskId,"in_progress",{virtualMcpId:Y?.virtual_mcp_id??void 0,createdBy:Y?.created_by,triggerId:Y?.trigger_id,title:Y?.title,branch:Y?.branch??null,harnessId:Y?.harness_id??void 0,createdAt:Y?.created_at,updatedAt:Y?.updated_at,messageId:$.messageId}));return}case"RUN_RESUMED":{await X.update($.taskId,$.orgId,{status:"in_progress",run_started_at:new Date().toISOString(),last_progress_at:null,failure_reason:null,failure_kind:null});let Y=await X.get($.taskId,$.orgId);Q.emit($.orgId,lW($.taskId,"in_progress",{virtualMcpId:Y?.virtual_mcp_id??void 0,createdBy:Y?.created_by,triggerId:Y?.trigger_id,title:Y?.title,branch:Y?.branch??null,harnessId:Y?.harness_id??void 0,createdAt:Y?.created_at,updatedAt:Y?.updated_at}));return}case"STEP_COMPLETED":Q.emit($.orgId,Bo0($.taskId,$.stepCount));return;case"RUN_COMPLETED":await lb$($.taskId,$.orgId,"completed",Z);return;case"RUN_REQUIRES_ACTION":await lb$($.taskId,$.orgId,"requires_action",Z);return;case"RUN_FAILED":{if($.reason==="ghost"){if(!await X.forceFailIfInProgress($.taskId,$.orgId,$.expectedFenceToken))return;await X.update($.taskId,$.orgId,{run_config:null,run_started_at:null})}else{if(!await X.forceFailIfInProgress($.taskId,$.orgId))return;await X.update($.taskId,$.orgId,{run_config:null,run_started_at:null,...j16($.reason,$.errorText)})}let Y=await X.get($.taskId,$.orgId);Q.emit($.orgId,lW($.taskId,"failed",{virtualMcpId:Y?.virtual_mcp_id??void 0,createdBy:Y?.created_by,triggerId:Y?.trigger_id,title:Y?.title,branch:Y?.branch??null,harnessId:Y?.harness_id??void 0,createdAt:Y?.created_at,updatedAt:Y?.updated_at})),Q.emit($.orgId,qX0($.taskId,"failed")),await Z.onThreadFinished?.($.taskId,$.orgId).catch((G)=>console.error("[run-reactor] thread-finish hook failed",G));return}case"PREVIOUS_RUN_ABORTED":return}}async function db$($,Z){for(let{event:X}of $)await z16(X,Z)}var w16="Run stalled \u2014 no progress within the idle timeout window",E16;var mb$=L(()=>{g8();cb$();E16={reaped:{failure_reason:w16,failure_kind:"stall"},cancelled:{failure_reason:"Run cancelled before it finished",failure_kind:"cancelled"},error:{failure_reason:Us.reason,failure_kind:Us.kind}}});function ib$($){return $.now-$.lastProgressAt>$.idleTimeoutMs}function pb$($){return Math.max($.persistedLastProgressAt??Number.NEGATIVE_INFINITY,$.currentRunStartedAt)}class mX1{deps;clock;states=new Map;reaperTimer=null;constructor($,Z=()=>new Date){this.deps=$;this.clock=Z;this.reaperTimer=setInterval(()=>{this.reapStaleRuns().catch((X)=>{console.error("[RunRegistry] Reaper sweep failed",X)})},P16)}async execute($){let Z=this.dispatch($);return await this.react(Z),Z}dispatch($){let Z=this.states.get($.taskId),X=gb$($,Z),Q=[];for(let Y of X){let G=this.states.get(Y.taskId);if(Y.type==="PREVIOUS_RUN_ABORTED"||Y.type==="RUN_FAILED"){if(G?.status.tag==="running")G.status.abortController.abort()}let J=hb$(G,Y,this.clock());if(J===void 0)this.states.delete(Y.taskId);else this.states.set(Y.taskId,J);if(Q.push({event:Y,state:J}),A16.has(Y.type))nb$().add(1,{"org.id":Y.orgId});else if(T16.has(Y.type)&&G?.status.tag==="running")nb$().add(-1,{"org.id":Y.orgId})}return Q}react($){return db$($,this.deps)}getAbortSignal($){let Z=this.states.get($);if(Z?.status.tag==="running")return Z.status.abortController.signal;return null}isRunning($){return this.states.get($)?.status.tag==="running"}async stopAll(){for(let[,$]of this.states)if($.status.tag==="running")$.status.abortController.abort();this.states.clear()}dispose(){if(this.reaperTimer)clearInterval(this.reaperTimer),this.reaperTimer=null}async reapStaleRuns(){let $=this.clock().getTime(),Z=[...this.states].filter(([,X])=>X.status.tag==="running");for(let[X,Q]of Z){if(this.states.get(X)?.status.tag!=="running")continue;let G;try{let K=await this.deps.storage.getProgress(X,Q.orgId);G=pb$({persistedLastProgressAt:K?.lastProgressAt??null,currentRunStartedAt:Q.status.startedAt.getTime()})}catch(K){console.warn(`[RunRegistry] Reaper progress read failed for ${X}; skipping`,K);continue}if(!ib$({lastProgressAt:G,now:$,idleTimeoutMs:tT0}))continue;let J=await this.deps.storage.get(X,Q.orgId).catch(()=>null);if(J&&J.status!=="in_progress"){let K=this.states.get(X);if(K?.status.tag==="running")K.status.abortController.abort();this.states.delete(X);continue}console.warn(`[RunRegistry] Reaping stuck run for thread ${X} (idle > ${tT0/60000}m) ...`),R16().add(1,{"org.id":Q.orgId,reason:"idle_timeout"}),await this.execute({type:"FORCE_FAIL",taskId:X,reason:"reaped"}).catch((K)=>{console.error("[RunRegistry] Reaper execute failed",K)})}}}var P16=300000,dX1,tT0,A16,T16,tb$=($)=>{let Z;return()=>Z??=$()},nb$,R16;var iX1=L(()=>{mb$();x6();dX1=Number(process.env.RUN_IDLE_TIMEOUT_MS),tT0=Number.isFinite(dX1)&&dX1>0?dX1:600000,A16=new Set(["RUN_STARTED","RUN_RESUMED"]),T16=new Set(["RUN_COMPLETED","RUN_FAILED","RUN_REQUIRES_ACTION","PREVIOUS_RUN_ABORTED"]),nb$=tb$(()=>P$.createUpDownCounter("decopilot.stream.inflight",{description:"Number of in-flight decopilot stream requests",unit:"{requests}"})),R16=tb$(()=>P$.createCounter("decopilot.run.reaped",{description:"Number of decopilot runs force-failed by the progress-based reaper",unit:"{runs}"}))});async function ob$($){let{runId:Z}=$,X=fb$(),Q=await X.resolveRun(Z),Y=$.fenceToken??Q?.runFenceToken;if(!Q||Q.version!==2||Y==null)return;if(cX1({status:Q.status,runFenceToken:Q.runFenceToken,fenceToken:Y}))return;if(!X.getJetStream())throw Error("JetStream unavailable for consume step");await yb$({runId:Z,fenceToken:Y,messageId:$.messageId,idleTimeoutMs:$.idleTimeoutMs??tT0},X,bb$)}var rb$=L(()=>{lX1();iX1()});import{DBOS as hv}from"@dbos-inc/dbos-sdk";function nX1($){pX1=$}function tX1(){if(!pX1)throw Error("[hostedHarness] runtime not initialized \u2014 setHostedHarnessRuntime() must run before workflows fire");return pX1}async function I16($,Z){let X=tX1(),{request:Q}=$,Y=Z??await X.studioContextFactory(Q.organizationId,Q.userId);if(!Y)throw Error("user membership lost mid-dispatch");if(Q.runMetadata)Y.metadata.runMetadata=Q.runMetadata;let G=new AbortController;ab$().add(1);try{if(pu(Y,"in_progress",$.threadId),!Q.runMetadata?.taskBoardItemId)$_$(Y,$.threadId);await X.dispatchRunFn({...Q,abortSignal:G.signal},Y,X.deps)}finally{ab$().add(-1)}}function sb$($,Z){let X=tX1(),Q=Z?.isQueued??V16,Y=new Hs({intervalMs:Z?.intervalMs,sleepFn:Z?.sleepFn,emit:async()=>{if(await Q($)){await M16(X,$);return}Y.stop()}});return Y.arm(),()=>Y.stop()}async function V16($){try{return(await hv.getWorkflowStatus(oX1($.runId,$.fenceToken)))?.status==="ENQUEUED"}catch(Z){return console.error(`[hostedHarness] could not read child status for run=${$.runId} fence=${$.fenceToken}`,Z),!0}}function k16($,Z,X,Q=1){let Y=X instanceof Error?X.message:String(X);return{messageId:kD($,Z),errorChunk:{type:"error",errorText:Y},seq:Q,finalSeq:Q}}function S16($){if(!($ instanceof Error))return;let Z=$.lastAckSeq;return typeof Z==="number"?Z+1:void 0}async function C16($,Z){let X=tX1(),{streamBuffer:Q}=X.deps,{messageId:Y,errorChunk:G,seq:J,finalSeq:K}=k16($.runId,$.fenceToken,Z,S16(Z));if(!Q){console.error(`[hostedHarness] no streamBuffer configured; dropping terminal error for run=${$.runId} fence=${$.fenceToken} messageId=${Y}`);return}if(!await Q.publishRawChunk($.runId,G,{fenceToken:$.fenceToken,seq:J})){console.error(`[hostedHarness] failed to publish terminal error chunk for run=${$.runId} fence=${$.fenceToken} messageId=${Y}`);return}await Q.publishDone($.runId,$.fenceToken,K)}async function _16($){try{await hv.runStep(()=>I16($),{name:"runHostedHarness",retriesAllowed:!1})}catch(Z){if(aa(Z)){console.log(`[hostedHarness] attempt superseded by a newer dispatch; leaving the terminal to it run=${$.runId} fence=${$.fenceToken}`);return}await hv.runStep(()=>C16($,Z),{name:"publishHostedHarnessFailure",retriesAllowed:!0}).catch((X)=>{console.error(`[hostedHarness] could not publish terminal error for run=${$.runId} fence=${$.fenceToken}`,X)})}}function oX1($,Z){return`decopilot-hosted:${$}:${Z}`}async function eb$($){return{workflowID:(await hv.startWorkflow(v16,{workflowID:oX1($.runId,$.fenceToken),queueName:$c($.request.harnessId)?JN:GN,enqueueOptions:{priority:oP0($.request.runMetadata)}})($)).workflowID}}async function uv($,Z){await hv.cancelWorkflow(oX1($,Z))}var pX1=null,q16,ab$=()=>q16??=P$.createUpDownCounter("hosted_runs.active",{description:"Hosted agent-loop runs executing on this pod",unit:"{runs}"}),M16=($,Z)=>CG({streamBuffer:$.deps.streamBuffer,harnessId:Z.request.harnessId,taskId:Z.runId,stage:"waiting-capacity"}),v16;var rX1=L(()=>{vX1();Vv();DT0();x6();Cu();q5();v16=hv.registerWorkflow(_16,{name:"hostedHarnessWorkflow",maxRecoveryAttempts:1000})});import{DBOS as Fc}from"@dbos-inc/dbos-sdk";function eX1($){Fs($)}function $Q1($){aX1=$}function x16(){if(!aX1)throw Error("[threadGate] runtime not initialized \u2014 setThreadGateRuntime() must run before workflows fire");return aX1}function f16($,Z=Bb$){let X=$.runFenceToken;if(X)return{runFenceToken:X,claimedRequest:{...$,runFenceToken:X},shouldPersistFence:!1};let Q=Z();return{runFenceToken:Q,claimedRequest:{...$,runFenceToken:Q},shouldPersistFence:!0}}async function b16($){let Z=x16(),{request:X}=$,Q=X.taskId??$.threadId;if(Mv(X.harnessId))await CG({streamBuffer:Z.deps.streamBuffer,harnessId:X.harnessId,taskId:Q,stage:"starting-run"});let Y=await Z.studioContextFactory(X.organizationId,X.userId);if(!Y)throw Error("user membership lost mid-dispatch");eX1(X.harnessId);let G=X.taskId??$.threadId,{runFenceToken:J,claimedRequest:K,shouldPersistFence:W}=f16(X);if(W)await Y.storage.threads.setRunFence(G,J);return{runFenceToken:J,hostedEnqueue:{runId:Q,fenceToken:J,threadId:$.threadId,request:K}}}async function y16($){if($.source!=="user-message")return;let{request:Z}=$;u1.capture({distinctId:Z.userId,event:"chat_message_started",groups:{organization:Z.organizationId},properties:{organization_id:Z.organizationId,agent_id:Z.agent,mode:Z.mode,thread_id:Z.taskId??$.threadId,credential_id:Z.models.credentialId}})}async function g16($,Z){if($.source!=="user-message")return;let{request:X}=$;u1.capture({distinctId:X.userId,event:"chat_message_failed",groups:{organization:X.organizationId},properties:{organization_id:X.organizationId,thread_id:X.taskId??$.threadId,agent_id:X.agent,model_id:X.models.thinking.id,mode:X.mode,error_category:"setup",error_message:Z}})}async function oT0($){eX1($.request.harnessId),await Fc.runStep(()=>y16($),{name:"trackMessageStarted"});let Z;try{Z=await Fc.runStep(()=>b16($),{name:"dispatchRunAndWait",retriesAllowed:!0}),await eb$(Z.hostedEnqueue)}catch(G){let J=G instanceof Error?G.message:String(G);throw await Fc.runStep(()=>g16($,J),{name:"trackMessageFailed"}),G}let X=$.request.taskId??$.threadId,Q="messages"in $.request?void 0:$.request.messageId,Y=sb$(Z.hostedEnqueue);try{await Fc.runStep(()=>ob$({runId:X,fenceToken:Z.runFenceToken,messageId:Q}),{name:"consumeRunProjection"})}finally{Y()}return{taskId:$.request.taskId??$.threadId}}async function h16($){return oT0($)}async function HU($,Z){return eX1($.request.harnessId),{workflowID:(await Fc.startWorkflow(u16,{queueName:h3,enqueueOptions:{queuePartitionKey:$.threadId,priority:oP0($.request.runMetadata)},workflowID:Z?.workflowID})($)).workflowID}}var sX1=1,aX1=null,u16;var $y$=L(()=>{uT0();f4();Vv();rb$();Cu();rX1();u16=Fc.registerWorkflow(h16,{name:"threadGateWorkflow",maxRecoveryAttempts:1000})});var FU=L(()=>{$y$();rX1()});async function la($,Z,X){let Q=Z.organizationId,Y=Z.assignedBy??Z.createdBy,G=X.harnessId??"decopilot",J=await eZ($,"smart"),K=Bj(Q),W=await $.storage.threads.create({...X.fence?{id:X.fence.threadId}:{},organization_id:Q,title:X.title,status:"in_progress",virtual_mcp_id:K,message_storage_version:2,harness_id:G,created_by:Y,metadata:{runtime:"sandbox"}});if(!W.isNew)return{threadId:W.id,isNew:!1};let H={...W.metadata??{},...X.pinnedRef?{pinnedRef:X.pinnedRef}:{},...X.repo?{githubRepo:{url:X.repo.url,owner:X.repo.owner,name:X.repo.name,installationId:X.repo.installationId,connectionId:X.repo.connectionId}}:{}},F=X.pinnedRef?X.pinnedRef:X.repo?tN(W.id,X.repo.connectionId):$c(G)?tN(W.id):null;await $.storage.threads.update(W.id,{metadata:H,...F?{branch:F}:{},updated_by:Y}),await $.storage.taskBoard.linkThread(Z.id,W.id,Q);let N={id:crypto.randomUUID(),role:"user",parts:[{type:"text",text:X.prompt}]};return await new IX({storage:$.storage.threads.messageParts(),orgId:Q,threadId:W.id,runId:W.id}).emitRequestMessage(N),await HU({threadId:W.id,source:"background-tool",request:{messages:[N],models:{credentialId:J.credentialId,thinking:{id:J.modelId,title:J.modelMeta.title}},agent:{id:K,...X.agent??{}},temperature:X.temperature,toolApprovalLevel:"auto",mode:"default",organizationId:Q,userId:Y,harnessId:G,...X.repo?{}:F?{branch:F}:{},taskId:W.id,runMetadata:{...tP0(Z),[Su]:X.runClass??"new_task",...X.modelClass&&X.modelClass!=="default"?{[rP0]:X.modelClass}:{}}}},X.fence?{workflowID:X.fence.workflowID}:void 0),{threadId:W.id,isNew:!0}}var U71=L(()=>{Aa();Cu();JU();FU();wD();g8();VK();DT0();aP0()});async function AD($,Z,X){if(Z.assigneeId!==J8)return;await uK($,Z,X).catch((Q)=>{if(Q instanceof DX)throw Q;console.error("[task-board] Super Agent enqueue failed",Q)})}function c16($,Z){return["You've been assigned this task. Complete it.","","You are running AUTONOMOUSLY \u2014 no human is watching this run, so drive it "+"to completion on your own. Use `user_ask` ONLY for a genuine, unresolvable blocker a human must clear (a missing credential/secret, or "+"a decision so ambiguous you truly cannot proceed) \u2014 that should be rare. "+"Do not ask for confirmation of a reasonable choice; make it and move on.","",`Title: ${$.title}`,$.description?`
|
|
2887
|
+
`).trim();return{models:$.models,agent:$.agent,temperature:$.temperature,toolApprovalLevel:$.toolApprovalLevel,...$.toolAllowlist!==void 0?{toolAllowlist:$.toolAllowlist}:{},...$.maxAgentSteps!==void 0?{maxAgentSteps:$.maxAgentSteps}:{},...$.isSubagent!==void 0?{isSubagent:$.isSubagent}:{},...$.subtaskJobId!==void 0?{subtaskJobId:$.subtaskJobId}:{},...$.resumedFromBackground!==void 0?{resumedFromBackground:$.resumedFromBackground}:{},mode:$.mode,...$.windowSize!==void 0?{windowSize:$.windowSize}:{},...$.triggerId!==void 0?{triggerId:$.triggerId}:{},...$.runMetadata!==void 0?{runMetadata:$.runMetadata}:{},branch:Z.branch??$.branch??null,harnessId:$.harnessId,organizationId:$.organizationId,userId:$.userId,taskId:$.taskId,messageId:Z.messageId,...Z.runFenceToken!==void 0?{runFenceToken:Z.runFenceToken}:{},...$.isResume!==void 0?{isResume:$.isResume}:{},...X?{systemContext:X}:{}}}function n06($,Z){let X=$.find((Q)=>Q.id===Z);if(!X)throw new CH("empty_request",`Persisted request message missing for messageId=${Z}`);if(X.role==="system")throw new CH("empty_request",`Persisted message ${Z} has role=system; expected non-system request message`);return X}function t06($){let Z=$.models;return{"decopilot.agent.id":$.agent.id,"decopilot.model.id":Z.thinking.id,"decopilot.credential.id":Z.credentialId,"decopilot.organization.id":$.organizationId,"decopilot.user.id":$.userId,"decopilot.thread.id":$.taskId??""}}async function Ub$($,Z,X){return tp1("decopilot.dispatchRunAndWait",async(Q)=>{let{taskId:Y,uiStream:G,registrySignal:J}=await a06($,Z,X,Q),K=X.streamBuffer,W=K?await K.createTailStream(Y,$.abortSignal,{deliverPolicy:"new",closeOnDone:!0}):null;if(K&&W){let H=K.pump(G,Y,J,$.organizationId);H.catch(()=>{});let F=W.getReader();try{while(!0){let{done:N}=await F.read();if(N)break}}finally{F.releaseLock()}await H}else{if(K)console.warn(JSON.stringify({msg:"decopilot-stream-diag",event:"producer-fallback-no-pump",taskId:Y,hasTail:!!W,note:"createTailStream returned null \u2014 draining producer stream directly; projector persistence depends on streamBuffer publish health"}));let H=G.getReader();try{while(!0){let{done:F}=await H.read();if(F)break}}finally{H.releaseLock()}}return{taskId:Y}},t06($))}async function o06($,Z,X,Q){let[Y,G,J]=await Promise.all([$.storage.threads.list(Q,{limit:9,agentId:X}).catch(()=>null),$.storage.interests.getForAgent(Z,X,Q).catch(()=>null),$.storage.virtualMcps.list(Z).catch(()=>null)]),K={};if(Y&&Y.total>0)K.recentThreads={total:Y.total,threads:Y.threads.map((W)=>({id:W.id,title:W.title,updated_at:W.updated_at}))};if(G&&G.interests.length>0)K.interests=G.interests.map((W)=>({title:W.title,summary:W.summary}));if(J)K.agents=J.map((W)=>({id:W.id,name:W.title,description:W.description,status:W.status}));return K}async function r06({virtualMcp:$,agentId:Z,organizationId:X,ctx:Q}){return EJ0({virtualMcp:$,agentId:Z,organizationId:X,ctx:Q})}async function a06($,Z,X,Q){let{runRegistry:Y,streamBuffer:G}=X;Fs($.harnessId);let J=$.harnessId;if(!Fb$($))$={...$,messages:$.messages.map((H)=>H.id?H:{...H,id:qa()})};let K=!1,W;try{let H=$.models;Q.setAttribute("decopilot.harnessId",J),Q.setAttribute("decopilot.dispatchTarget.sandboxProviderKind","agent-sandbox");let F=Mv(J),N=Gb$(H),U=await pK(Z.db,$.organizationId,Z.organization?.role??Z.auth.user?.role);if(!iK(U,N.thinking.credentialId,N.thinking.id))throw new CH("model_not_allowed","Model not allowed for your role");N=gT0(U,N);let B=$.windowSize??tJ;if(!$.taskId)throw Error("dispatchRunAndWait: taskId is required");if(F)await CG({streamBuffer:G,harnessId:J,taskId:$.taskId,stage:ra[0]});let O=await zV$(Z,$.organizationId,Z.metadata?.runMetadata),D=(v0)=>v0?p06(Z,$.organizationId,v0.credentialId,v0.id,O):Promise.resolve(void 0),[w,E,j,z,P,A,R,M,q]=await Promise.all([Z.storage.virtualMcps.findById($.agent.id,$.organizationId),D(N.thinking),D(N.fast),D(N.smart),D(N.image),D(N.webSearch),D(N.deepResearch),bT0(Z.storage.threads,{organization_id:$.organizationId,thread_id:$.taskId,userId:$.userId,defaultWindowSize:B}),o06(Z,$.organizationId,$.agent.id,$.userId)]);if(F)await CG({streamBuffer:G,harnessId:J,taskId:$.taskId,stage:ra[1]});let S=E?{thinking:E,...j?{fast:j}:{},...z?{smart:z}:{},...P?{image:P}:{},...A?{webSearch:A}:{},...R?{deepResearch:R}:{}}:void 0,m=E?IT0(E):null;if(W=M.thread.id,Z.metadata.threadId=M.thread.id,Q.setAttribute("decopilot.thread.id",M.thread.id),M.thread.created_by!==$.userId)throw new CH("not_thread_owner","You are not allowed to write to this thread because you are not the owner");if(m?.asyncResearch){let v0=[["thinking",N.thinking.id]];if(N.fast)v0.push(["fast",N.fast.id]);if(N.smart)v0.push(["smart",N.smart.id]);if(N.image)v0.push(["image",N.image.id]);for(let[n0,o]of v0)if(m.asyncResearch.canHandle(o))throw Error(`Model "${o}" can only be used as a Deep Research model. It is not usable as the ${n0} model \u2014 set it in the Deep Research slot instead.`)}let b=M.thread.message_storage_version===2?new IX({storage:Z.storage.threads.messageParts(),orgId:$.organizationId,threadId:M.thread.id,runId:M.thread.id}):null;if(!w)throw new CH("agent_not_found","Agent not found");let l=await r06({virtualMcp:w,agentId:$.agent.id,organizationId:$.organizationId,ctx:Z});if($.isResume)await Y.execute({type:"RESUME",taskId:M.thread.id,orgId:$.organizationId,userId:$.userId,abortController:new AbortController,podId:xX1()});else await Y.execute({type:"START",taskId:M.thread.id,orgId:$.organizationId,userId:$.userId,abortController:new AbortController,podId:xX1(),runConfig:{models:$.models,agent:$.agent,temperature:$.temperature,toolApprovalLevel:$.toolApprovalLevel,mode:$.mode,windowSize:$.windowSize,triggerId:$.triggerId},messageId:$.messageId});K=!0,await Z.storage.threads.clearCancelRequested(M.thread.id);let y=$.runFenceToken,p=Y.getAbortSignal(M.thread.id);if(!p)throw await Y.execute({type:"FINISH",taskId:M.thread.id,threadStatus:"failed"}),Error("Run was cancelled immediately after starting");if($.abortSignal){let v0=$.abortSignal;if(v0.aborted)await Y.execute({type:"CANCEL",taskId:M.thread.id});else v0.addEventListener("abort",()=>{Y.execute({type:"CANCEL",taskId:M.thread.id}).catch(()=>{})},{once:!0})}let Y0=$c(J),L0=Y0?await Z.storage.threads.getAckedSeq(M.thread.id):0;if(L0>0)console.log("[dispatch] resuming a sandbox-hosted turn",{runId:M.thread.id,fromSeq:L0});if(L0===0)G?.purge(M.thread.id);let r=[],t,D0;if(Fb$($)){if(D0=await M.loadHistory(B),t=n06(D0,$.messageId),$.systemContext)r=[{id:`system-${$.messageId}`,role:"system",parts:[{type:"text",text:$.systemContext}]}]}else{r=$.messages.filter((n0)=>n0.role==="system");let v0=$.messages.find((n0)=>n0.role!=="system");if(t=v0?(await UT0([v0],Z,{threadId:M.thread.id})).find((n0)=>n0.role!=="system"):void 0,!$.isResume){if(!t)throw new CH("empty_request","No user message found in input \u2014 expected at least one non-system message");if(b)await b.emitUserMessage(t).catch((n0)=>{console.error("[decopilot:stream] v2 user-message emit failed",n0)})}}if(t)await ef$(G,M.thread.id,t);let e=[],E0=Date.now(),u0=t?(await BT0([t],Z))[0]:void 0;if(!u0||!t)throw new CH("empty_request","No user message found in input \u2014 expected at least one non-system message");rf$($.models,[u0]);let q0=await tf$({ctx:Z,threadId:M.thread.id,userMessage:t,windowSize:B,isSubagent:$.isSubagent===!0,systemMessages:r}),J0={url:"",headers:{},expiresAt:0},j0=void 0,P0=void 0,M0={cwd:null},X0=$.agent.instructions??(typeof l.metadata?.instructions==="string"?l.metadata.instructions:void 0),G0={taskId:$.taskId,isSubagent:$.isSubagent,subtaskJobId:$.subtaskJobId,resumedFromBackground:$.resumedFromBackground,virtualMcp:l,branch:$.branch,messages:q0,modelSources:S,mcpSource:j0,objectStorageSource:P0,userContext:q},V0={threadId:M.thread.id,userMessage:u0,harness:{sessionId:void 0},workspace:M0,models:N,mcp:J0,mode:$.mode,temperature:$.temperature,toolApprovalLevel:$.toolApprovalLevel,toolAllowlist:$.toolAllowlist??null,maxAgentSteps:$.maxAgentSteps,user:{id:$.userId,email:Z.auth.user?.email??""},organizationId:$.organizationId,agent:{id:$.agent.id,instructions:X0,...$.agent.disallowedTools?{disallowedTools:$.agent.disallowedTools}:{}},currentThreadTitle:M.thread.title};if(F)await CG({streamBuffer:G,harnessId:J,taskId:$.taskId,stage:ra[2]});let N0=Y0?await Z.storage.claudeSubscriptions.findLiveToken($.userId).catch((v0)=>{return console.warn("[dispatch] claude subscription lookup failed",v0),null}):null,O0=async function*(){let v0={...V0,signal:p};if(EX1(v0,G0),F)await CG({streamBuffer:G,harnessId:J,taskId:M.thread.id,stage:ra[3]});yield*Y0?new y71({ctx:Z,virtualMcpId:l.id,streamBuffer:G,interactive:Boolean(l.metadata?.githubRepo?.url),...L0>0?{resume:{reason:"the Studio process driving the previous attempt stopped"}}:{},branch:await o30(Z,{threadId:M.thread.id,agentRepo:l.metadata?.githubRepo,runBranch:$.branch}),credential:N0?{providerId:RV$,apiKey:N0}:E?{providerId:E.providerId,apiKey:E.apiKey,...E.baseUrl?{baseUrl:E.baseUrl}:{}}:null}).dispatch(v0):if$(Z,v0)},P1=m06(()=>i06({runId:M.thread.id,fenceToken:y,streamBuffer:G??{publishRawChunk:async()=>!1,publishDone:async()=>!1},chunks:Zb$(O0()),...Y0?{startSeq:L0,initialAckSeq:L0,onPublished:(v0)=>Z.storage.threads.bumpAckedSeq(M.thread.id,y,v0)}:{},errorMessageId:kD(M.thread.id,y),loadOriginalMessages:b?async()=>(await Z.storage.threads.messageParts().loadWindow(M.thread.id,{limit:1})).messages.map(yT0):void 0,title:{currentThreadTitle:M.thread.title,threadId:M.thread.id,persistTitle:async(v0,n0)=>{await Z.storage.threads.update(v0,{title:n0})}},hooks:{onStep:()=>{let v0=Y.dispatch({type:"STEP_DONE",taskId:M.thread.id});e.push(Y.react(v0).catch((n0)=>{console.error("[decopilot:stream] onStepFinish reactor failed",n0)}))},onFinish:async(v0,n0)=>{let o=e.length,f0=performance.now();if(await Promise.allSettled(e),Kb$.record(performance.now()-f0,{phase:"settle"}),p.aborted)return;await W$(0);let X1=Wb$?VE():null,k1=performance.now(),_0=hT0(n0,v0?.parts);await Y.execute({type:"FINISH",taskId:M.thread.id,threadStatus:_0});let c1=performance.now()-k1;if(Kb$.record(c1,{phase:"save"}),Wb$&&X1){let O8=VE()??X1,H6=-1;try{H6=JSON.stringify(v0)?.length??-1}catch{}console.warn(JSON.stringify({msg:"decopilot-finish-trace",threadId:M.thread.id,pendingOps:o,saveMs:Math.round(c1),parts:v0?.parts?.length??0,messageBytes:H6,rssDelta:O8.rss-X1.rss,heapUsedDelta:O8.heapUsed-X1.heapUsed,externalDelta:O8.external-X1.external}))}},onError:(v0)=>{if(p.aborted){u1.capture({distinctId:$.userId,event:"chat_message_aborted",groups:{organization:$.organizationId},properties:{organization_id:$.organizationId,thread_id:M.thread.id,agent_id:$.agent.id,model_id:N.thinking.id,mode:$.mode,duration_ms:Date.now()-E0,is_resume:$.isResume??!1}});return}if(aa(v0)){console.log(`[decopilot] attempt superseded by a newer dispatch; leaving the terminal to it thread=${M.thread.id}`);return}console.error("[decopilot] stream error:",bK(v0)),Y.execute({type:"FINISH",taskId:M.thread.id,threadStatus:"failed",errorText:bK(v0)}).catch((n0)=>{console.error("[decopilot:stream] onError reactor failed",n0)})}}}));return{taskId:M.thread.id,uiStream:P1,registrySignal:p}}catch(H){if(K&&W)Y.execute({type:"FINISH",taskId:W,threadStatus:"failed",errorText:bK(H)}).catch((F)=>{console.error("[decopilot:stream] catch-block reactor failed",F)});throw H}}var Kb$,Wb$,Hb$;var uT0=L(()=>{Aa();k91();f4();aP0();DT0();VK();Vh();wv$();pf$();Qc();BX1();OD();of$();wD();_X1();su();af$();Vv();VX1();Xb$();Kc();x6();Jb$();J4();Kb$=P$.createHistogram("decopilot.finish.duration",{description:"Wall time of onFinish flush segments, tagged by phase",unit:"ms"}),Wb$=process.env.DECOPILOT_FINISH_TRACE==="1";Hb$=["decopilot","claude-code"]});function Bb$(){return crypto.randomUUID()}function Ob$($){return Fv$($)||sf$($)}async function s06($){let Z=$.getReader();try{while(!0){let{done:X}=await Z.read();if(X)break}}finally{Z.releaseLock()}}function e06($,Z){let X=$.getReader(),Q=!1,Y=()=>{if(Q)return;Q=!0,X.releaseLock()};return new ReadableStream({async pull(G){try{let{done:J,value:K}=await X.read();if(J)Y(),G.close();else G.enqueue(K)}catch(J){Z(J),Y(),G.error(J)}},async cancel(G){await X.cancel(G),Y()}})}async function Lb$($){if(!$.chunks&&!$.chunkStream)throw Error("projectChunks requires chunks or chunkStream");let Z=null,X=!1,Q=void 0,Y={inputTokens:0,outputTokens:0,totalTokens:0},G=[],J=null,K=(O)=>{if(J===null)J=O;throw O},W=$.chunks?async function*(){try{for await(let O of $.chunks){if(Ob$(O))continue;yield O}}catch(O){throw Z=O,O}}():void 0,H=$.chunkStream?e06($.chunkStream,(O)=>{Z=O}).pipeThrough(new TransformStream({transform(O,D){if(!Ob$(O))D.enqueue(O)}})):void 0,F={emitStepParts:(O)=>$.persistence.emitStepParts(O).catch(K),emitFinal:(O)=>$.persistence.emitFinal(O).catch(K),emitError:(O,D)=>$.persistence.emitError(O,D).catch(K)},{uiStream:N,whenComplete:U}=_T0({chunks:W,chunkStream:H,originalMessages:$.originalMessages??[],title:$.title?{currentThreadTitle:$.title.currentThreadTitle,threadId:$.title.threadId,persistTitle:$.title.persistTitle}:{currentThreadTitle:void 0,threadId:"projector",persistTitle:async()=>{}},persistence:F,sanitizeErrorText:$.sanitizeErrorText,errorMessageId:$.errorMessageId,generateMessageId:$.generateMessageId,hooks:{onUsage:(O)=>{Y={inputTokens:O.inputTokens,outputTokens:O.outputTokens,totalTokens:O.totalTokens}},onError:()=>{X=!0},onFinish:(O,D)=>{Q=D,G=Array.isArray(O.parts)?O.parts.filter((w)=>w!=null&&typeof w==="object"&&("type"in w)):[]}}});if(await s06(N).catch(()=>{}),await U,J!==null)throw J;if(Z!==null)throw Z;return{failed:X&&Q===void 0,finishReason:Q,usage:Y,finalParts:G}}var Db$=L(()=>{MX1();Vv()});function $16($){if(/[.*>\s]/.test($))throw Error("Invalid NATS subject token")}function SD($){return $16($),`decopilot.stream.${$}`}function wb$($){let Z=`${$.runId}:${$.fenceToken}:${$.seq}`;return $.fragmentIndex===void 0?Z:`${Z}:frag:${$.fragmentIndex}`}function Z16($){return`${$.runId}:${$.fenceToken}:done:${$.finalSeq}`}function Eb$($){if(!$)return null;let Z=Number($);return Number.isInteger(Z)&&Z>0?Z:null}function X16($){if(!$)return null;let Z=Number($);return Number.isInteger(Z)&&Z>=0?Z:null}function Q16($){if(!$)return null;let Z=$.split(":"),[X,Q,Y,G,J]=Z;if(!X||!Q||!Y)return null;if(Y==="done"){let W=Eb$(G);return Z.length===4&&W!==null?{kind:"done",runId:X,fenceToken:Q,finalSeq:W}:null}let K=Eb$(Y);if(K===null)return null;if(Z.length===3)return{kind:"chunk",runId:X,fenceToken:Q,seq:K,fragmentIndex:null};if(Z.length===5&&G==="frag"){let W=X16(J);return W===null?null:{kind:"chunk",runId:X,fenceToken:Q,seq:K,fragmentIndex:W}}return null}function yX1($,Z){let X=SD(Z.runId),Q=bX1.encode(JSON.stringify({p:$}));if(Q.length>33554432)throw RangeError(`stream chunk is ${Q.length} bytes; maximum is 33554432`);if(Q.length<=786432)return[{subject:X,data:Q,msgId:Z.dedup?wb$({runId:Z.runId,...Z.dedup}):void 0}];let Y=Math.ceil(Q.length/786432),G=[];for(let J=0;J<Y;J++)G.push({subject:X,data:Q.slice(J*786432,(J+1)*786432),headers:{["Dp-Frag-Idx"]:String(J),["Dp-Frag-Total"]:String(Y)},msgId:Z.dedup?wb$({runId:Z.runId,...Z.dedup,fragmentIndex:J}):void 0});return G}function jb$($){return{subject:SD($.runId),data:bX1.encode(JSON.stringify({done:!0,finalSeq:$.finalSeq})),msgId:Z16($)}}function zb$($){return{subject:SD($),data:bX1.encode(JSON.stringify({done:!0}))}}function Y16($){let Z=$.reduce((Y,G)=>Y+(G?.length??0),0),X=new Uint8Array(Z),Q=0;for(let Y of $){if(!Y)continue;X.set(Y,Q),Q+=Y.length}return X}function cT0(){let $=null;return new TransformStream({transform(Z,X){let Q=Z.headers?.get("Dp-Frag-Total");if(!Q){X.enqueue(Z);return}let Y=Number(Q),G=Number(Z.headers?.get("Dp-Frag-Idx")??"0");if(G===0)$={total:Y,received:0,parts:Array(Y)};else if(!$||$.total!==Y)return;if(!$.parts[G])$.received++;if($.parts[G]=Z.data,$.received<$.total)return;let J=Y16($.parts);$=null,X.enqueue({subject:Z.subject,data:J,headers:Z.headers})}})}function G16($){return typeof $==="number"&&Number.isInteger($)&&$>0}function K16($){let Z=Q16($.headers?.get("Nats-Msg-Id")||void 0),X;try{X=JSON.parse(J16.decode($.data))}catch{return null}if(!X||typeof X!=="object")return null;let Q=X;if(Q.done===!0)return{kind:"done",runId:Z?.kind==="done"?Z.runId:null,fenceToken:Z?.kind==="done"?Z.fenceToken:null,envelopeFinalSeq:G16(Q.finalSeq)?Q.finalSeq:null,msgIdFinalSeq:Z?.kind==="done"?Z.finalSeq:null};if("p"in Q)return{kind:"chunk",seq:Z?.kind==="chunk"?Z.seq:null,runId:Z?.kind==="chunk"?Z.runId:null,fenceToken:Z?.kind==="chunk"?Z.fenceToken:null,chunk:Q.p};return null}function lT0(){return new TransformStream({transform($,Z){let X=K16($);if(X)Z.enqueue(X)}})}var fX1="decopilot.stream",bX1,J16;var Pb$=L(()=>{bX1=new TextEncoder;J16=new TextDecoder});var dT0=L(()=>{Pb$()});var wU="DECOPILOT_STREAMS";var gX1=L(()=>{dT0()});function Hc($){if(!($ instanceof Error))return!1;if($.name==="TimeoutError")return!0;return/timeout|no responders|503|not enabled|is offline/i.test($.message)}function Ab$($,Z){return new TransformStream({transform(X,Q){if(X.runId!==$||X.fenceToken!==Z)return;Q.enqueue(X)}})}function Tb$(){let $=1;return new TransformStream({transform(Z,X){if(Z.kind==="done"){X.enqueue(Z);return}if(Z.seq===null){X.error(Error("projector chunk missing seq"));return}if(Z.seq<$)return;if(Z.seq>$){X.error(new Ns($,Z.seq));return}$++,X.enqueue(Z)}})}function Rb$($){let Z=$.getReader(),X=!1,Q=0,Y=()=>{if(X)return;X=!0,Z.releaseLock()};return new ReadableStream({async pull(G){for(;;){let{done:J,value:K}=await Z.read();if(J){await Z.cancel(),Y(),G.error(Error("reader stopped before done"));return}let W=K;if(W.kind==="done"){if(!(W.envelopeFinalSeq!=null&&W.envelopeFinalSeq===W.msgIdFinalSeq))continue;if(W.envelopeFinalSeq!==Q){await Z.cancel(),Y(),G.error(new Ns(Q+1,null));return}await Z.cancel(),Y(),G.close();return}Q=W.seq??Q,G.enqueue(W.chunk);return}},async cancel(G){await Z.cancel(G),Y()}})}function W16($){if(Symbol.asyncIterator in $)return $[Symbol.asyncIterator]();let Z=$[Symbol.iterator]();return{next:async()=>Z.next(),return:async(X)=>Z.return?Z.return(X):{done:!0,value:X}}}function iT0($){let Z=W16($.messages),X=$.idleTimeoutMs,Q=!1,Y=(G)=>{if(Q)return;Q=!0,Z.return?.(G).catch(()=>{}),$.onCancel?.()};return new ReadableStream({async pull(G){if(X===void 0){let{done:F,value:N}=await Z.next();if(F){G.close();return}G.enqueue(N);return}let J=new AbortController,K=Z.next().then((F)=>{return J.abort(),F}),W=W$(X,{signal:J.signal}).then(()=>"idle").catch(()=>"cancelled"),H=await Promise.race([K,W]);if(H==="idle"){G.error(new mT0(X));return}if(H==="cancelled")return;if(H.done){G.close();return}G.enqueue(H.value)},async cancel(G){Y(G)}})}var mT0,Ns;var pT0=L(()=>{J4();mT0=class mT0 extends Error{idleTimeoutMs;constructor($){super("producer produced no output before timeout");this.idleTimeoutMs=$;this.name="StreamIdleTimeoutError"}};Ns=class Ns extends Error{expectedSeq;gotSeq;constructor($,Z){super(Z===null?`missing seq ${$} (stream ended at the fenced done)`:`missing seq ${$} (next delivered is ${Z})`);this.expectedSeq=$;this.gotSeq=Z;this.name="StreamGapError"}}});function H16($){let X=iT0({messages:$.messages,idleTimeoutMs:$.idleTimeoutMs,onCancel:$.onDone}).pipeThrough(cT0()).pipeThrough(lT0()).pipeThrough(Ab$($.runId,$.fenceToken)).pipeThrough(Tb$());return Rb$(X)}async function qb$($){let Z=await z6(async()=>{return(await $.js.consumers.get(wU,{filter_subjects:SD($.runId),deliver_policy:Ib$.DeliverPolicy.All})).consume()},{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:Hc});async function*X(){try{for await(let Q of Z)yield{subject:Q.subject,data:Q.data,headers:Q.headers}}finally{Z.stop()}}return H16({messages:X(),runId:$.runId,fenceToken:$.fenceToken,idleTimeoutMs:$.idleTimeoutMs,onDone:()=>Z.stop()})}var Ib$;var Mb$=L(()=>{J4();gX1();pT0();dT0();Ib$=k(tE(),1)});async function F16($){let X=($.requestMessageId?await $.messageParts.maxCreatedAtMsForMessage($.runId,$.requestMessageId):null)??await $.messageParts.maxCreatedAtMsForRun($.runId);return new IX({storage:$.messageParts,orgId:$.orgId,threadId:$.runId,runId:$.runId,baseTimeMs:(X??Date.now())+1})}async function Vb$($){let Z=await F16($),X=$.replaceFinal?(Q)=>Z.replaceFinal(Q):(Q)=>Z.emitFinal(Q);return{emitStepParts:(Q)=>Z.emitStepParts(Q),emitFinal:X,emitError:(Q,Y)=>Z.emitError(Q,Y)}}var kb$=L(()=>{wD()});function nT0($,Z){U16().add(1,{"org.id":Z??"unknown"})}var N16=($)=>{let Z;return()=>Z??=$()},U16;var Sb$=L(()=>{x6();U16=N16(()=>P$.createCounter("decopilot.projector.poison_runs",{description:"Number of decopilot runs that exhausted retries and were sent to the DLQ",unit:"{runs}"}))});class hX1{intervalMs;lastBumpMs=new Map;constructor($=3000){this.intervalMs=$}shouldBump($,Z=Date.now()){let X=this.lastBumpMs.get($);if(X!==void 0&&Z-X<this.intervalMs)return!1;return this.lastBumpMs.set($,Z),!0}clear($){this.lastBumpMs.delete($)}}function Cb$($,Z,X,Q){return $.pipeThrough(new TransformStream({transform(Y,G){if(X.shouldBump(Z))Q();G.enqueue(Y)},flush(){X.clear(Z)}}))}function B16($){return`liveness: no stream events for ${Math.round($/60000)}m`}function cX1($){return $.runFenceToken!==null&&$.runFenceToken!==$.fenceToken}function vb$($){uX1=$}function xb$(){if(!uX1)throw Error("[projector-workflow] runtime not initialized \u2014 setProjectorWorkflowRuntime() must run before workflows fire");return uX1}function fb$(){return xb$()}async function bb$($,Z,X){let Q=xb$(),Y=Q.getJetStream();if(!Y)throw Error("JetStream unavailable");let G=(await Q.messageParts.loadWindow($.runId,{limit:500})).messages.map(yT0);return{chunkCount:0,attempts:1,outcome:await Lb$({chunkStream:Cb$(await qb$({js:Y,runId:$.runId,fenceToken:$.fenceToken,idleTimeoutMs:$.idleTimeoutMs}),$.runId,O16,()=>{Q.bumpProgress({runId:$.runId,orgId:Z}).catch(()=>{})}),persistence:await Vb$({messageParts:Q.messageParts,orgId:Z,runId:$.runId,requestMessageId:$.messageId,replaceFinal:!0}),originalMessages:G,errorMessageId:kD($.runId,$.fenceToken),title:{threadId:$.runId,currentThreadTitle:X,persistTitle:async(K,W)=>{await Q.persistTitle($.runId,Z,W),await Q.onTitleUpdated({runId:$.runId,orgId:Z,title:W})}}})}}async function _b$($,Z,X){let Q=await $.resolveRun(Z).catch(()=>null);return Q!==null&&Q.runFenceToken===X&&["completed","failed","requires_action"].includes(Q.status)}async function yb$($,Z,X){let Q=await L16($,Z);if("skip"in Q)return;let Y=Q.row.orgId,G=Q.row.createdBy??$.runId,J=Q.row.title;try{let{outcome:K}=await X($,Y,J),W=K?.failed?"failed":hT0(K?.finishReason,K?.finalParts);if(W==="failed"){let H=K?.finishReason?`harness reported an error: ${K.finishReason}`:"harness reported an error";if(nT0($.runId,Y),await Z.markRunFailed($.runId,Y,H,"harness"))await Z.recordFailed({runId:$.runId,orgId:Y,distinctId:G,reason:H,kind:"harness"})}else if(W==="requires_action")await Z.markRunRequiresAction($.runId,Y),await Z.clearSynthesizedError($.runId,$.fenceToken);else{if(await Z.completeRunIfNotCompleted($.runId,Y))await Z.recordCompleted({runId:$.runId,orgId:Y,distinctId:G,usage:K?.usage??{inputTokens:0,outputTokens:0,totalTokens:0}});await Z.clearSynthesizedError($.runId,$.fenceToken)}await Z.purgeRun($.runId,$.fenceToken)}catch(K){if(K instanceof Ns){if(await _b$(Z,$.runId,$.fenceToken)){await Z.clearSynthesizedError($.runId,$.fenceToken),await Z.purgeRun($.runId,$.fenceToken);return}let U=`stream truncated before projection could replay it: ${K.message}`;if(nT0($.runId,Y),await Z.markRunFailed($.runId,Y,U,"projection"))await Z.recordFailed({runId:$.runId,orgId:Y,distinctId:G,reason:U,kind:"projection"});await Z.purgeRun($.runId,$.fenceToken);return}let W=K instanceof mT0;if(W&&await _b$(Z,$.runId,$.fenceToken)){await Z.purgeRun($.runId,$.fenceToken);return}let H=W?B16(K.idleTimeoutMs):K instanceof Error?K.message:String(K),F=W?"liveness":"projection";if(nT0($.runId,Y),await Z.markRunFailed($.runId,Y,H,F))await Z.recordFailed({runId:$.runId,orgId:Y,distinctId:G,reason:H,kind:F});if(W)await Z.clearSynthesizedError($.runId,$.fenceToken);throw K}}async function L16($,Z){let X=await Z.resolveRun($.runId);if(!X)return{skip:"missing"};if(cX1({status:X.status,runFenceToken:X.runFenceToken,fenceToken:$.fenceToken}))return{skip:"stale",row:X};if(X.version!==2)return{skip:"legacy-v1",row:X};return{row:X}}var uX1=null,O16;var lX1=L(()=>{Db$();Mb$();pT0();kb$();Sb$();_X1();O16=new hX1});function gb$($,Z){switch($.type){case"START":{let X={type:"RUN_STARTED",taskId:$.taskId,orgId:$.orgId,userId:$.userId,abortController:$.abortController,runConfig:$.runConfig,podId:$.podId,messageId:$.messageId};if(Z?.status.tag==="running")return[{type:"PREVIOUS_RUN_ABORTED",taskId:$.taskId,orgId:Z.orgId},X];return[X]}case"STEP_DONE":{if(Z?.status.tag!=="running")return[];return[{type:"STEP_COMPLETED",taskId:$.taskId,orgId:Z.orgId,stepCount:Z.status.stepCount+1}]}case"FINISH":{if(Z==null||Z.status.tag!=="running")return[];let{stepCount:X}=Z.status;if($.threadStatus==="completed")return[{type:"RUN_COMPLETED",taskId:$.taskId,orgId:Z.orgId,stepCount:X}];if($.threadStatus==="requires_action")return[{type:"RUN_REQUIRES_ACTION",taskId:$.taskId,orgId:Z.orgId,stepCount:X}];return[{type:"RUN_FAILED",taskId:$.taskId,orgId:Z.orgId,reason:"error",errorText:$.errorText??null}]}case"CANCEL":{if(Z?.status.tag!=="running")return[];return[{type:"RUN_FAILED",taskId:$.taskId,orgId:Z.orgId,reason:"cancelled"}]}case"RESUME":{if(Z?.status.tag==="running")return[];return[{type:"RUN_RESUMED",taskId:$.taskId,orgId:$.orgId,userId:$.userId,abortController:$.abortController,podId:$.podId}]}case"FORCE_FAIL":{if($.reason==="ghost")return[{type:"RUN_FAILED",taskId:$.taskId,orgId:Z?.orgId??$.orgId,reason:$.reason,expectedFenceToken:$.expectedFenceToken??null}];if(Z?.status.tag!=="running")return[];return[{type:"RUN_FAILED",taskId:$.taskId,orgId:Z.orgId,reason:$.reason}]}}}function hb$($,Z,X=new Date){switch(Z.type){case"RUN_STARTED":return{taskId:Z.taskId,orgId:Z.orgId,userId:Z.userId,status:{tag:"running",abortController:Z.abortController,stepCount:0,startedAt:X}};case"RUN_RESUMED":return{taskId:Z.taskId,orgId:Z.orgId,userId:Z.userId,status:{tag:"running",abortController:Z.abortController,stepCount:0,startedAt:X}};case"STEP_COMPLETED":if($?.status.tag!=="running")return $;return{...$,status:{...$.status,stepCount:Z.stepCount}};case"RUN_COMPLETED":return;case"RUN_REQUIRES_ACTION":return;case"RUN_FAILED":return;case"PREVIOUS_RUN_ABORTED":return}}function ub$($){if(!$?.trim())return{...Us};for(let{kind:Z,reason:X,match:Q}of D16)if(Q.test($))return{kind:Z,reason:X};return{...Us}}var D16,Us;var cb$=L(()=>{D16=[{kind:"credits",reason:"Run stopped: the organization is out of AI credits",match:/\[CREDITS\]|requires more credits|\b402\b/i},{kind:"sandbox_unreachable",reason:"Run stopped: its sandbox became unreachable mid-run",match:/\[SANDBOX_UNREACHABLE\]|sandbox stream broke/i},{kind:"cancelled",reason:"Run cancelled before it finished",match:/^\s*(error:\s*)?cancelled\b|run cancelled/i},{kind:"overloaded",reason:"Run stopped: the model provider was overloaded or rate-limited",match:/\boverloaded\b|\brate.?limit|\b429\b/i},{kind:"context_length",reason:"Run stopped: the conversation exceeded the model's context window",match:/context (length|window)|too many tokens|maximum context/i},{kind:"model_error",reason:"Run stopped: the model provider rejected the request",match:/\bAPI Error\b|\b5\d{2}\b.*provider|provider returned/i}],Us={kind:"error",reason:"Run ended with an error \u2014 see the run's messages"}});function j16($,Z){if($!=="error")return E16[$];let{kind:X,reason:Q}=ub$(Z);return{failure_reason:Q,failure_kind:X}}async function lb$($,Z,X,Q){let{storage:Y,sseHub:G}=Q,J=await Y.get($,Z);G.emit(Z,lW($,X,{virtualMcpId:J?.virtual_mcp_id??void 0,createdBy:J?.created_by,triggerId:J?.trigger_id,title:J?.title,branch:J?.branch??null,harnessId:J?.harness_id??void 0,createdAt:J?.created_at,updatedAt:J?.updated_at})),G.emit(Z,qX0($,X))}async function z16($,Z){let{storage:X,sseHub:Q}=Z;switch($.type){case"RUN_STARTED":{await X.update($.taskId,$.orgId,{status:"in_progress",run_config:$.runConfig??null,run_started_at:new Date().toISOString(),last_progress_at:null,failure_reason:null,failure_kind:null});let Y=await X.get($.taskId,$.orgId);Q.emit($.orgId,lW($.taskId,"in_progress",{virtualMcpId:Y?.virtual_mcp_id??void 0,createdBy:Y?.created_by,triggerId:Y?.trigger_id,title:Y?.title,branch:Y?.branch??null,harnessId:Y?.harness_id??void 0,createdAt:Y?.created_at,updatedAt:Y?.updated_at,messageId:$.messageId}));return}case"RUN_RESUMED":{await X.update($.taskId,$.orgId,{status:"in_progress",run_started_at:new Date().toISOString(),last_progress_at:null,failure_reason:null,failure_kind:null});let Y=await X.get($.taskId,$.orgId);Q.emit($.orgId,lW($.taskId,"in_progress",{virtualMcpId:Y?.virtual_mcp_id??void 0,createdBy:Y?.created_by,triggerId:Y?.trigger_id,title:Y?.title,branch:Y?.branch??null,harnessId:Y?.harness_id??void 0,createdAt:Y?.created_at,updatedAt:Y?.updated_at}));return}case"STEP_COMPLETED":Q.emit($.orgId,Bo0($.taskId,$.stepCount));return;case"RUN_COMPLETED":await lb$($.taskId,$.orgId,"completed",Z);return;case"RUN_REQUIRES_ACTION":await lb$($.taskId,$.orgId,"requires_action",Z);return;case"RUN_FAILED":{if($.reason==="ghost"){if(!await X.forceFailIfInProgress($.taskId,$.orgId,$.expectedFenceToken))return;await X.update($.taskId,$.orgId,{run_config:null,run_started_at:null})}else{if(!await X.forceFailIfInProgress($.taskId,$.orgId))return;await X.update($.taskId,$.orgId,{run_config:null,run_started_at:null,...j16($.reason,$.errorText)})}let Y=await X.get($.taskId,$.orgId);Q.emit($.orgId,lW($.taskId,"failed",{virtualMcpId:Y?.virtual_mcp_id??void 0,createdBy:Y?.created_by,triggerId:Y?.trigger_id,title:Y?.title,branch:Y?.branch??null,harnessId:Y?.harness_id??void 0,createdAt:Y?.created_at,updatedAt:Y?.updated_at})),Q.emit($.orgId,qX0($.taskId,"failed")),await Z.onThreadFinished?.($.taskId,$.orgId).catch((G)=>console.error("[run-reactor] thread-finish hook failed",G));return}case"PREVIOUS_RUN_ABORTED":return}}async function db$($,Z){for(let{event:X}of $)await z16(X,Z)}var w16="Run stalled \u2014 no progress within the idle timeout window",E16;var mb$=L(()=>{g8();cb$();E16={reaped:{failure_reason:w16,failure_kind:"stall"},cancelled:{failure_reason:"Run cancelled before it finished",failure_kind:"cancelled"},error:{failure_reason:Us.reason,failure_kind:Us.kind}}});function ib$($){return $.now-$.lastProgressAt>$.idleTimeoutMs}function pb$($){return Math.max($.persistedLastProgressAt??Number.NEGATIVE_INFINITY,$.currentRunStartedAt)}class mX1{deps;clock;states=new Map;reaperTimer=null;constructor($,Z=()=>new Date){this.deps=$;this.clock=Z;this.reaperTimer=setInterval(()=>{this.reapStaleRuns().catch((X)=>{console.error("[RunRegistry] Reaper sweep failed",X)})},P16)}async execute($){let Z=this.dispatch($);return await this.react(Z),Z}dispatch($){let Z=this.states.get($.taskId),X=gb$($,Z),Q=[];for(let Y of X){let G=this.states.get(Y.taskId);if(Y.type==="PREVIOUS_RUN_ABORTED"||Y.type==="RUN_FAILED"){if(G?.status.tag==="running")G.status.abortController.abort()}let J=hb$(G,Y,this.clock());if(J===void 0)this.states.delete(Y.taskId);else this.states.set(Y.taskId,J);if(Q.push({event:Y,state:J}),A16.has(Y.type))nb$().add(1,{"org.id":Y.orgId});else if(T16.has(Y.type)&&G?.status.tag==="running")nb$().add(-1,{"org.id":Y.orgId})}return Q}react($){return db$($,this.deps)}getAbortSignal($){let Z=this.states.get($);if(Z?.status.tag==="running")return Z.status.abortController.signal;return null}isRunning($){return this.states.get($)?.status.tag==="running"}async stopAll(){for(let[,$]of this.states)if($.status.tag==="running")$.status.abortController.abort();this.states.clear()}dispose(){if(this.reaperTimer)clearInterval(this.reaperTimer),this.reaperTimer=null}async reapStaleRuns(){let $=this.clock().getTime(),Z=[...this.states].filter(([,X])=>X.status.tag==="running");for(let[X,Q]of Z){if(this.states.get(X)?.status.tag!=="running")continue;let G;try{let K=await this.deps.storage.getProgress(X,Q.orgId);G=pb$({persistedLastProgressAt:K?.lastProgressAt??null,currentRunStartedAt:Q.status.startedAt.getTime()})}catch(K){console.warn(`[RunRegistry] Reaper progress read failed for ${X}; skipping`,K);continue}if(!ib$({lastProgressAt:G,now:$,idleTimeoutMs:tT0}))continue;let J=await this.deps.storage.get(X,Q.orgId).catch(()=>null);if(J&&J.status!=="in_progress"){let K=this.states.get(X);if(K?.status.tag==="running")K.status.abortController.abort();this.states.delete(X);continue}console.warn(`[RunRegistry] Reaping stuck run for thread ${X} (idle > ${tT0/60000}m) ...`),R16().add(1,{"org.id":Q.orgId,reason:"idle_timeout"}),await this.execute({type:"FORCE_FAIL",taskId:X,reason:"reaped"}).catch((K)=>{console.error("[RunRegistry] Reaper execute failed",K)})}}}var P16=300000,dX1,tT0,A16,T16,tb$=($)=>{let Z;return()=>Z??=$()},nb$,R16;var iX1=L(()=>{mb$();x6();dX1=Number(process.env.RUN_IDLE_TIMEOUT_MS),tT0=Number.isFinite(dX1)&&dX1>0?dX1:600000,A16=new Set(["RUN_STARTED","RUN_RESUMED"]),T16=new Set(["RUN_COMPLETED","RUN_FAILED","RUN_REQUIRES_ACTION","PREVIOUS_RUN_ABORTED"]),nb$=tb$(()=>P$.createUpDownCounter("decopilot.stream.inflight",{description:"Number of in-flight decopilot stream requests",unit:"{requests}"})),R16=tb$(()=>P$.createCounter("decopilot.run.reaped",{description:"Number of decopilot runs force-failed by the progress-based reaper",unit:"{runs}"}))});async function ob$($){let{runId:Z}=$,X=fb$(),Q=await X.resolveRun(Z),Y=$.fenceToken??Q?.runFenceToken;if(!Q||Q.version!==2||Y==null)return;if(cX1({status:Q.status,runFenceToken:Q.runFenceToken,fenceToken:Y}))return;if(!X.getJetStream())throw Error("JetStream unavailable for consume step");await yb$({runId:Z,fenceToken:Y,messageId:$.messageId,idleTimeoutMs:$.idleTimeoutMs??tT0},X,bb$)}var rb$=L(()=>{lX1();iX1()});import{DBOS as hv}from"@dbos-inc/dbos-sdk";function nX1($){pX1=$}function tX1(){if(!pX1)throw Error("[hostedHarness] runtime not initialized \u2014 setHostedHarnessRuntime() must run before workflows fire");return pX1}async function I16($,Z){let X=tX1(),{request:Q}=$,Y=Z??await X.studioContextFactory(Q.organizationId,Q.userId);if(!Y)throw Error("user membership lost mid-dispatch");if(Q.runMetadata)Y.metadata.runMetadata=Q.runMetadata;let G=new AbortController;ab$().add(1);try{if(pu(Y,"in_progress",$.threadId),!Q.runMetadata?.taskBoardItemId)$_$(Y,$.threadId);await X.dispatchRunFn({...Q,abortSignal:G.signal},Y,X.deps)}finally{ab$().add(-1)}}function sb$($,Z){let X=tX1(),Q=Z?.isQueued??V16,Y=new Hs({intervalMs:Z?.intervalMs,sleepFn:Z?.sleepFn,emit:async()=>{if(await Q($)){await M16(X,$);return}Y.stop()}});return Y.arm(),()=>Y.stop()}async function V16($){try{return(await hv.getWorkflowStatus(oX1($.runId,$.fenceToken)))?.status==="ENQUEUED"}catch(Z){return console.error(`[hostedHarness] could not read child status for run=${$.runId} fence=${$.fenceToken}`,Z),!0}}function k16($,Z,X,Q=1){let Y=X instanceof Error?X.message:String(X);return{messageId:kD($,Z),errorChunk:{type:"error",errorText:Y},seq:Q,finalSeq:Q}}function S16($){if(!($ instanceof Error))return;let Z=$.lastAckSeq;return typeof Z==="number"?Z+1:void 0}async function C16($,Z){let X=tX1(),{streamBuffer:Q}=X.deps,{messageId:Y,errorChunk:G,seq:J,finalSeq:K}=k16($.runId,$.fenceToken,Z,S16(Z));if(!Q){console.error(`[hostedHarness] no streamBuffer configured; dropping terminal error for run=${$.runId} fence=${$.fenceToken} messageId=${Y}`);return}if(!await Q.publishRawChunk($.runId,G,{fenceToken:$.fenceToken,seq:J})){console.error(`[hostedHarness] failed to publish terminal error chunk for run=${$.runId} fence=${$.fenceToken} messageId=${Y}`);return}await Q.publishDone($.runId,$.fenceToken,K)}async function _16($){try{await hv.runStep(()=>I16($),{name:"runHostedHarness",retriesAllowed:!1})}catch(Z){if(aa(Z)){console.log(`[hostedHarness] attempt superseded by a newer dispatch; leaving the terminal to it run=${$.runId} fence=${$.fenceToken}`);return}await hv.runStep(()=>C16($,Z),{name:"publishHostedHarnessFailure",retriesAllowed:!0}).catch((X)=>{console.error(`[hostedHarness] could not publish terminal error for run=${$.runId} fence=${$.fenceToken}`,X)})}}function oX1($,Z){return`decopilot-hosted:${$}:${Z}`}async function eb$($){return{workflowID:(await hv.startWorkflow(v16,{workflowID:oX1($.runId,$.fenceToken),queueName:$c($.request.harnessId)?JN:GN,enqueueOptions:{priority:oP0($.request.runMetadata)}})($)).workflowID}}async function uv($,Z){await hv.cancelWorkflow(oX1($,Z))}var pX1=null,q16,ab$=()=>q16??=P$.createUpDownCounter("hosted_runs.active",{description:"Hosted agent-loop runs executing on this pod",unit:"{runs}"}),M16=($,Z)=>CG({streamBuffer:$.deps.streamBuffer,harnessId:Z.request.harnessId,taskId:Z.runId,stage:"waiting-capacity"}),v16;var rX1=L(()=>{vX1();Vv();DT0();x6();Cu();q5();v16=hv.registerWorkflow(_16,{name:"hostedHarnessWorkflow",maxRecoveryAttempts:1000})});import{DBOS as Fc}from"@dbos-inc/dbos-sdk";function eX1($){Fs($)}function $Q1($){aX1=$}function x16(){if(!aX1)throw Error("[threadGate] runtime not initialized \u2014 setThreadGateRuntime() must run before workflows fire");return aX1}function f16($,Z=Bb$){let X=$.runFenceToken;if(X)return{runFenceToken:X,claimedRequest:{...$,runFenceToken:X},shouldPersistFence:!1};let Q=Z();return{runFenceToken:Q,claimedRequest:{...$,runFenceToken:Q},shouldPersistFence:!0}}async function b16($){let Z=x16(),{request:X}=$,Q=X.taskId??$.threadId;if(Mv(X.harnessId))await CG({streamBuffer:Z.deps.streamBuffer,harnessId:X.harnessId,taskId:Q,stage:"starting-run"});let Y=await Z.studioContextFactory(X.organizationId,X.userId);if(!Y)throw Error("user membership lost mid-dispatch");eX1(X.harnessId);let G=X.taskId??$.threadId,{runFenceToken:J,claimedRequest:K,shouldPersistFence:W}=f16(X);if(W)await Y.storage.threads.setRunFence(G,J);return{runFenceToken:J,hostedEnqueue:{runId:Q,fenceToken:J,threadId:$.threadId,request:K}}}async function y16($){if($.source!=="user-message")return;let{request:Z}=$;u1.capture({distinctId:Z.userId,event:"chat_message_started",groups:{organization:Z.organizationId},properties:{organization_id:Z.organizationId,agent_id:Z.agent,mode:Z.mode,thread_id:Z.taskId??$.threadId,credential_id:Z.models.credentialId}})}async function g16($,Z){if($.source!=="user-message")return;let{request:X}=$;u1.capture({distinctId:X.userId,event:"chat_message_failed",groups:{organization:X.organizationId},properties:{organization_id:X.organizationId,thread_id:X.taskId??$.threadId,agent_id:X.agent,model_id:X.models.thinking.id,mode:X.mode,error_category:"setup",error_message:Z}})}async function oT0($){eX1($.request.harnessId),await Fc.runStep(()=>y16($),{name:"trackMessageStarted"});let Z;try{Z=await Fc.runStep(()=>b16($),{name:"dispatchRunAndWait",retriesAllowed:!0}),await eb$(Z.hostedEnqueue)}catch(G){let J=G instanceof Error?G.message:String(G);throw await Fc.runStep(()=>g16($,J),{name:"trackMessageFailed"}),G}let X=$.request.taskId??$.threadId,Q="messages"in $.request?void 0:$.request.messageId,Y=sb$(Z.hostedEnqueue);try{await Fc.runStep(()=>ob$({runId:X,fenceToken:Z.runFenceToken,messageId:Q}),{name:"consumeRunProjection"})}finally{Y()}return{taskId:$.request.taskId??$.threadId}}async function h16($){return oT0($)}async function HU($,Z){return eX1($.request.harnessId),{workflowID:(await Fc.startWorkflow(u16,{queueName:h3,enqueueOptions:{queuePartitionKey:$.threadId,priority:oP0($.request.runMetadata)},workflowID:Z?.workflowID})($)).workflowID}}var sX1=1,aX1=null,u16;var $y$=L(()=>{uT0();f4();Vv();rb$();Cu();rX1();u16=Fc.registerWorkflow(h16,{name:"threadGateWorkflow",maxRecoveryAttempts:1000})});var FU=L(()=>{$y$();rX1()});async function la($,Z,X){let Q=Z.organizationId,Y=Z.assignedBy??Z.createdBy,G=X.harnessId??"decopilot",J=await eZ($,"smart"),K=Bj(Q),W=await $.storage.threads.create({...X.fence?{id:X.fence.threadId}:{},organization_id:Q,title:X.title,status:"in_progress",virtual_mcp_id:K,message_storage_version:2,harness_id:G,created_by:Y,metadata:{runtime:"sandbox"}});if(!W.isNew)return{threadId:W.id,isNew:!1};let H={...W.metadata??{},...X.pinnedRef?{pinnedRef:X.pinnedRef}:{},...X.repo?{githubRepo:{url:X.repo.url,owner:X.repo.owner,name:X.repo.name,installationId:X.repo.installationId,connectionId:X.repo.connectionId}}:{}},F=X.pinnedRef?X.pinnedRef:X.repo?tN(W.id,X.repo.connectionId):$c(G)?tN(W.id):null;await $.storage.threads.update(W.id,{metadata:H,...F?{branch:F}:{},updated_by:Y}),await $.storage.taskBoard.linkThread(Z.id,W.id,Q);let N={id:crypto.randomUUID(),role:"user",parts:[{type:"text",text:X.prompt}],metadata:{created_at:new Date().toISOString()}};return await new IX({storage:$.storage.threads.messageParts(),orgId:Q,threadId:W.id,runId:W.id}).emitRequestMessage(N),await HU({threadId:W.id,source:"background-tool",request:{messages:[N],models:{credentialId:J.credentialId,thinking:{id:J.modelId,title:J.modelMeta.title}},agent:{id:K,...X.agent??{}},temperature:X.temperature,toolApprovalLevel:"auto",mode:"default",organizationId:Q,userId:Y,harnessId:G,...X.repo?{}:F?{branch:F}:{},taskId:W.id,runMetadata:{...tP0(Z),[Su]:X.runClass??"new_task",...X.modelClass&&X.modelClass!=="default"?{[rP0]:X.modelClass}:{}}}},X.fence?{workflowID:X.fence.workflowID}:void 0),{threadId:W.id,isNew:!0}}var U71=L(()=>{Aa();Cu();JU();FU();wD();g8();VK();DT0();aP0()});async function AD($,Z,X){if(Z.assigneeId!==J8)return;await uK($,Z,X).catch((Q)=>{if(Q instanceof DX)throw Q;console.error("[task-board] Super Agent enqueue failed",Q)})}function c16($,Z){return["You've been assigned this task. Complete it.","","You are running AUTONOMOUSLY \u2014 no human is watching this run, so drive it "+"to completion on your own. Use `user_ask` ONLY for a genuine, unresolvable blocker a human must clear (a missing credential/secret, or "+"a decision so ambiguous you truly cannot proceed) \u2014 that should be rare. "+"Do not ask for confirmation of a reasonable choice; make it and move on.","",`Title: ${$.title}`,$.description?`
|
|
2888
2888
|
Description:
|
|
2889
2889
|
${$.description}
|
|
2890
2890
|
`:"",Z?.resolveConflict&&Z.pr?[`Your pull request #${Z.pr.number} (${Z.pr.url}) is approved but can't be merged \u2014 it has a MERGE CONFLICT with its base branch.`,`Load the repo, CHECK OUT that PR's branch (e.g. \`gh pr checkout ${Z.pr.number}\`), then merge (or rebase) the base branch into it and resolve the conflicts, and push to update the SAME pull request \u2014 do NOT open a new one or start a new branch. Resolve conflicts by preserving BOTH sides' intent; never blindly discard either side. Change only what resolving the conflict requires.`,""].join(`
|