@runeya/runeya 2.0.116 → 2.0.118
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/agent/index.js +32 -1
- package/agent/index.js.map +1 -1
- package/agent-manager-HOL7ZG4V.js +9 -0
- package/{chat-AOL2TMLR.js → chat-XUIXGKSR.js} +6 -6
- package/{chunk-77UQ2UKW.js → chunk-I2AZCZMR.js} +2 -2
- package/{chunk-OGCEFBSS.js → chunk-P47X3LT3.js} +7 -2
- package/chunk-P47X3LT3.js.map +1 -0
- package/{chunk-6T7R2JZR.js → chunk-RN4X65D3.js} +35 -2
- package/chunk-RN4X65D3.js.map +1 -0
- package/{chunk-44XAJ3MK.js → chunk-WE6EOX4C.js} +340 -213
- package/chunk-WE6EOX4C.js.map +1 -0
- package/{chunk-VPANMGAI.js → chunk-XIRMRWVU.js} +65 -6
- package/chunk-XIRMRWVU.js.map +1 -0
- package/{companion-YYXSCN3H.js → companion-POUL5OGO.js} +4 -4
- package/{desktop-launcher-Q6J2LSVP.js → desktop-launcher-QVYFCE56.js} +2 -2
- package/index.js +4 -4
- package/package.json +1 -1
- package/settings-manager-KKSPWSM6.js +9 -0
- package/{src-S5TDMHPI.js → src-VCZQLW2Q.js} +98 -12
- package/src-VCZQLW2Q.js.map +1 -0
- package/web/assets/AgentScalarChatInterface.vue-BrMvIukr.js +13 -0
- package/web/assets/AgentTerminalPage-CXWlEDYr.js +1 -0
- package/web/assets/AiChatPage-CemkKI5f.js +1 -0
- package/web/assets/AppLayout-Kc2JJjh1.js +1 -0
- package/web/assets/AuditPage-Da3_Dw6e.js +1 -0
- package/web/assets/CloudAccountPage-C6zqdsH7.js +1 -0
- package/web/assets/CloudAccountPage-DPs87dbs.js +1 -0
- package/web/assets/CloudMessagingPage-DTuqXSPI.js +2 -0
- package/web/assets/DashboardPage-BGRnC6VN.js +164 -0
- package/web/assets/DirectoryPickerDialog-DEoqmzoh.js +1 -0
- package/web/assets/{EditorIcon-DJxKo-Bu.js → EditorIcon-CtWlXuLo.js} +2 -2
- package/web/assets/{EnvironmentForm-1NSDqR4s.js → EnvironmentForm-7rQeTN-8.js} +2 -2
- package/web/assets/EnvironmentFormPage-YcYUsjhT.js +1 -0
- package/web/assets/EnvironmentListPage-CLD1-AAY.js +1 -0
- package/web/assets/KanbanBoardPage-B7VdWhZB.js +4 -0
- package/web/assets/KanbanBoardPage-fEP3w_nz.css +1 -0
- package/web/assets/KanbanListPage-BEHtcwKs.js +1 -0
- package/web/assets/LaunchProjectPage-exfyMjFt.js +1 -0
- package/web/assets/LaunchServicesPage-YVkLRJqQ.js +1 -0
- package/web/assets/LogViewer-D1RcM2A4.js +3 -0
- package/web/assets/OrgKeyPrompt-C7LMf-Zk.js +1 -0
- package/web/assets/{ProcessControls-B_21fX0o.js → ProcessControls-58Ablgi0.js} +1 -1
- package/web/assets/ProcessDetailPage-BUjh1O5a.js +1 -0
- package/web/assets/{ProcessMetrics-jxJHtg7z.js → ProcessMetrics-BEzFNP7J.js} +2 -2
- package/web/assets/RandomJobTestPage-DuPQQhVb.js +2 -0
- package/web/assets/ScenarioEditorPage-6-CuJOmJ.js +14 -0
- package/web/assets/SendToChatDialog-CxuunSwf.js +1 -0
- package/web/assets/ServiceControlsBar-Cu9vxEOQ.js +1 -0
- package/web/assets/ServiceDetailPage-B4plJ5bz.js +2 -0
- package/web/assets/ServiceFormPage-7O2k1FOl.js +1 -0
- package/web/assets/SettingsPage-Hwj6MTiF.js +2063 -0
- package/web/assets/UnlockPage-Dcv0Z9re.js +1 -0
- package/web/assets/VaultMigrationPage-B25lyJg7.js +1 -0
- package/web/assets/VersionBadge-HrSfhQYh.js +1 -0
- package/web/assets/WikiPage-EBD94ewJ.js +1 -0
- package/web/assets/WikiView-nfJY79hF.js +1 -0
- package/web/assets/add-scalar-classes-H19oYTsX.js +387 -0
- package/web/assets/{autocomplete-CeUb1Plo.js → autocomplete-DJxf2wqE.js} +3 -3
- package/web/assets/{basic-shape-diamond.svg-D95sAEHe.js → basic-shape-diamond.svg-COr16MGG.js} +1 -1
- package/web/assets/{basic-shape-hexagon.svg-Bhu8sbuK.js → basic-shape-hexagon.svg-BzYcuOkI.js} +1 -1
- package/web/assets/{basic-shape-primary-circle-ellipse-round.svg-BPXa2nfu.js → basic-shape-primary-circle-ellipse-round.svg-Bw1gV38D.js} +1 -1
- package/web/assets/{basic-shape-primary-square-rectangle.svg-DYx2Drq6.js → basic-shape-primary-square-rectangle.svg-Cn_NwW2C.js} +1 -1
- package/web/assets/{basic-shape-shield.svg-iaNrBbaU.js → basic-shape-shield.svg-DMZviUvu.js} +1 -1
- package/web/assets/{browser-DhkJWAns.js → browser-72MoXpHU.js} +1 -1
- package/web/assets/{browser-Bd9Xf4OZ.js → browser-APehRX_-.js} +1 -1
- package/web/assets/card-DWOaM9R5.js +32 -0
- package/web/assets/{checkbox-DZeCLgbK.js → checkbox-3MTmcxWS.js} +3 -3
- package/web/assets/{chip-CzDSaVrV.js → chip-DX0PHdQT.js} +2 -2
- package/web/assets/client-CmMSqZpF.js +24 -0
- package/web/assets/cloud-chat.store-BcZHJL7V.js +1 -0
- package/web/assets/cloud-client-DSbRz1wz.js +1 -0
- package/web/assets/cloud-session-CMcFsrn6.js +2 -0
- package/web/assets/cloud-session-NnwumoiU.js +1 -0
- package/web/assets/column-CDX5Db_i.js +763 -0
- package/web/assets/{computer-device-desktop-monitor.svg-CK-yuA7j.js → computer-device-desktop-monitor.svg-BLXia0GM.js} +1 -1
- package/web/assets/{computer-device-desktop.svg-DnR_dL9H.js → computer-device-desktop.svg-gunjcHFA.js} +1 -1
- package/web/assets/{computer-device-laptop.svg-B4NDUXf6.js → computer-device-laptop.svg-Bw0yugEp.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-android-samsung-back.svg-CDy5Mj_3.js → computer-device-mobile-phone-android-samsung-back.svg-C0WpuMdy.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-android-samsung.svg-DZwCAngQ.js → computer-device-mobile-phone-android-samsung.svg-CNHYgja0.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-iphone-x-back.svg-qnHXKnfy.js → computer-device-mobile-phone-iphone-x-back.svg-DggESCcp.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-iphone-x.svg-CufxVRii.js → computer-device-mobile-phone-iphone-x.svg-CDSSQDCC.js} +1 -1
- package/web/assets/{computer-device-mobile-tablet-touch.svg-DvNOww1M.js → computer-device-mobile-tablet-touch.svg-DY9TWMUB.js} +1 -1
- package/web/assets/{computer-device-mobile-tablet.svg-C30Nrbgf.js → computer-device-mobile-tablet.svg-D_hfbqaw.js} +1 -1
- package/web/assets/{computer-device-network-ethernet-cat6.svg-BkhnUZzo.js → computer-device-network-ethernet-cat6.svg-CCoszOYr.js} +1 -1
- package/web/assets/{computer-device-network-lan-www.svg-DXEfVvcC.js → computer-device-network-lan-www.svg-CClZA2cg.js} +1 -1
- package/web/assets/{computer-device-network-wifi-connection.svg-CRSKVh1x.js → computer-device-network-wifi-connection.svg-DHLQJkPy.js} +1 -1
- package/web/assets/{computer-device-network-wifi-router.svg-DwfOCroy.js → computer-device-network-wifi-router.svg-xActAcrc.js} +1 -1
- package/web/assets/{cssMode-Dc5jzss9.js → cssMode-UiVbv5-d.js} +1 -1
- package/web/assets/{divider-Diym1gIH.js → divider-CHpP62xs.js} +2 -2
- package/web/assets/{docx-preview-B62lLslx.js → docx-preview-CZnedVKH.js} +1 -1
- package/web/assets/{ecology-science-erlenmeyer-flask.svg-CVBcLrkT.js → ecology-science-erlenmeyer-flask.svg-BNQkfPKh.js} +1 -1
- package/web/assets/{fieldset-xjeWC_Zd.js → fieldset-BEeYMjpD.js} +2 -2
- package/web/assets/{freemarker2-CCSFwo1D.js → freemarker2-DEBZcua_.js} +1 -1
- package/web/assets/{handlebars-Bo71unsx.js → handlebars-BNH-tM3s.js} +1 -1
- package/web/assets/{html-Bm9228kc.js → html-BFhZuj1f.js} +1 -1
- package/web/assets/{htmlMode-BmR9QSyO.js → htmlMode-DsWwMsD5.js} +1 -1
- package/web/assets/{image-flash-lightning.svg-BdEJcGIK.js → image-flash-lightning.svg-CaDxrzvs.js} +1 -1
- package/web/assets/{image-picture-flower.svg-B-mtrwDE.js → image-picture-flower.svg-Cm83ljlo.js} +1 -1
- package/web/assets/index-Bk2hTx0g.css +1 -0
- package/web/assets/{index-8J1A633V.js → index-D1xU-p3z.js} +570 -374
- package/web/assets/{interface-alert-exclamation-diamond.svg-9cBuGRNJ.js → interface-alert-exclamation-diamond.svg-CXdlYd1V.js} +1 -1
- package/web/assets/{interface-alert-exclamation-triangle-warning.svg-CEzfFTAS.js → interface-alert-exclamation-triangle-warning.svg-CeyAEw_C.js} +1 -1
- package/web/assets/{interface-alert-information-circle.svg-BjpTNsHF.js → interface-alert-information-circle.svg-DUbwIFHR.js} +1 -1
- package/web/assets/{interface-award-crown.svg-DGFO5nfn.js → interface-award-crown.svg-BI3VqkS7.js} +1 -1
- package/web/assets/{interface-bookmark.svg-u38u4053.js → interface-bookmark-tag.svg-BNP52up1.js} +1 -1
- package/web/assets/{interface-bookmark-tag.svg-D5jyBgha.js → interface-bookmark.svg-C_zoDBZC.js} +1 -1
- package/web/assets/{interface-calendar-date-one.svg-CEE3ju0p.js → interface-calendar-date-one.svg-DC0tGASA.js} +1 -1
- package/web/assets/{interface-content-book-open-pages.svg-S1nvOdAe.js → interface-content-book-open-pages.svg-l-5VHr-g.js} +1 -1
- package/web/assets/{interface-content-book-page.svg-CtDjLJwZ.js → interface-content-book-page.svg-CagVpKh4.js} +1 -1
- package/web/assets/{interface-content-file.svg-AD0WHI0R.js → interface-content-file.svg-B0aGvqPx.js} +1 -1
- package/web/assets/interface-content-folder.svg-BQN0Hvq-.js +1 -0
- package/web/assets/{interface-content-folder.svg-CM-PNCCw.js → interface-content-folder.svg-CVxNoyJ7.js} +1 -1
- package/web/assets/{interface-copy-clipboard.svg-rflxiB0d.js → interface-copy-clipboard.svg-D78-91bx.js} +1 -1
- package/web/assets/{interface-edit-attachment.svg-DrANyzys.js → interface-edit-attachment.svg-D6pWV5bC.js} +1 -1
- package/web/assets/{interface-edit-binocular.svg-BETaEZ89.js → interface-edit-binocular.svg-C6wbX04C.js} +1 -1
- package/web/assets/{interface-edit-magic-wand.svg-Bj6FVo53.js → interface-edit-magic-wand.svg-CoZhFtfQ.js} +1 -1
- package/web/assets/{interface-edit-tool-paint-roller.svg-Bp6eRqNw.js → interface-edit-tool-paint-roller.svg-DTQGU9t3.js} +1 -1
- package/web/assets/{interface-edit-tool-pencil.svg-DcLn0a3t.js → interface-edit-tool-pencil.svg-ByQHy9tx.js} +1 -1
- package/web/assets/{interface-favorite-award.svg-DUwbk0Rk.js → interface-favorite-award.svg-0CNheH17.js} +1 -1
- package/web/assets/{interface-favorite-flag.svg-BRp2Dr2h.js → interface-favorite-flag.svg-CCmC-2ES.js} +1 -1
- package/web/assets/{interface-favorite-heart.svg-Bt_5Dxks.js → interface-favorite-heart.svg-BVpuv5ru.js} +1 -1
- package/web/assets/{interface-favorite-star.svg-iaJ9oR-m.js → interface-favorite-star.svg-D7-x2gpZ.js} +1 -1
- package/web/assets/{interface-favorite-stars-sparkles.svg-C3lZkFSY.js → interface-favorite-stars-sparkles.svg-BReo0WNX.js} +1 -1
- package/web/assets/{interface-hierarchy-flowchart.svg-NRnPKxEv.js → interface-hierarchy-flowchart.svg-D6044jiD.js} +1 -1
- package/web/assets/{interface-home-house.svg-C2pnwXuY.js → interface-home-house.svg-BDbbqQ7y.js} +1 -1
- package/web/assets/{interface-hyperlink.svg-DMdhqTQ5.js → interface-hyperlink.svg-jMR6mBTh.js} +1 -1
- package/web/assets/{interface-lighting-brightness.svg-Dvs_nG0d.js → interface-lighting-brightness.svg-DxAyAplK.js} +1 -1
- package/web/assets/{interface-lock-closed.svg-CBeF2Ru4.js → interface-lock-closed.svg-KHv3R3lv.js} +1 -1
- package/web/assets/{interface-lock-open-unlock.svg-sChGga1F.js → interface-lock-open-unlock.svg-DTVS6Ld3.js} +1 -1
- package/web/assets/{interface-login-key.svg-cZB0Vhyp.js → interface-login-key.svg-CmrsGePn.js} +1 -1
- package/web/assets/{interface-search.svg-CjcIgtti.js → interface-search.svg-D68gdm71.js} +1 -1
- package/web/assets/{interface-setting-cog.svg-H5RLVC2p.js → interface-setting-cog.svg-BpmjacTl.js} +1 -1
- package/web/assets/{interface-share-megaphone-bullhorn.svg-BEk0DA1W.js → interface-share-megaphone-bullhorn.svg-B1Qopu7g.js} +1 -1
- package/web/assets/{interface-share-rocket.svg-p6tQEwJ6.js → interface-share-rocket.svg-xe-sFt3v.js} +1 -1
- package/web/assets/{interface-share-satellite.svg-BScMkxzb.js → interface-share-satellite.svg-DKB0wpfg.js} +1 -1
- package/web/assets/{interface-share-space-ship.svg-RtJDwluc.js → interface-share-space-ship.svg-BXUyLcC9.js} +1 -1
- package/web/assets/{interface-share.svg-_Rnlgc89.js → interface-share.svg--X4Sy8OU.js} +1 -1
- package/web/assets/{interface-signal-square.svg-sGo7FmcD.js → interface-signal-square.svg-SVcBtlCh.js} +1 -1
- package/web/assets/{interface-time-clock-circle.svg-CoQLcW4m.js → interface-time-clock-circle.svg-MMicUy7s.js} +1 -1
- package/web/assets/{interface-time-hour-glass.svg-C4rHS8Sx.js → interface-time-hour-glass.svg-CqNSWB1s.js} +1 -1
- package/web/assets/{interface-users-multiple.svg-B4ewwKgQ.js → interface-users-multiple.svg-Cb-ACWeS.js} +1 -1
- package/web/assets/{interface-weather-moon.svg-TOU86ccq.js → interface-weather-moon.svg-BTBYfL8w.js} +1 -1
- package/web/assets/{javascript-3xh4h-z5.js → javascript-DW5dr95z.js} +1 -1
- package/web/assets/{jsonMode-C6AJYdBQ.js → jsonMode-D3gEKJlR.js} +1 -1
- package/web/assets/{liquid-B1uuh-2_.js → liquid-DsB3REL_.js} +1 -1
- package/web/assets/{lspLanguageFeatures-BSf4GNlz.js → lspLanguageFeatures-Bo6XRGjF.js} +3 -3
- package/web/assets/{mail-chat-bubble-square.svg-Fe7IU49T.js → mail-chat-bubble-square.svg-DQPaE_l8.js} +1 -1
- package/web/assets/{mail-send-email-paper-airplane.svg-Cu3dNuIm.js → mail-send-email-paper-airplane.svg-SeNV9WPa.js} +1 -1
- package/web/assets/{mail-send-envelope.svg-C3l1liPg.js → mail-send-envelope.svg-DZr1S3ec.js} +1 -1
- package/web/assets/{mdx-DjWUPAFj.js → mdx-bfiZxOWu.js} +1 -1
- package/web/assets/{minus-Cy49kn7z.js → minus-DDv3xj8k.js} +2 -2
- package/web/assets/modal-Cg41N0d3.js +5 -0
- package/web/assets/modal-hmS0I-a3.js +1 -0
- package/web/assets/{money-cashier-receipt.svg-OkY-eUsN.js → money-cashier-receipt.svg-CMGSkzy4.js} +1 -1
- package/web/assets/{money-currency-dollar-pay.svg-DVA6DUQs.js → money-currency-dollar-pay.svg-BqBhV1Bu.js} +1 -1
- package/web/assets/{money-graph-arrow-increase.svg-5zYZLe6Q.js → money-graph-arrow-increase.svg-Jb3id3iX.js} +1 -1
- package/web/assets/{money-graph-bar-chart-increase.svg-CqGQIzPc.js → money-graph-bar-chart-increase.svg-C1_S5Hbg.js} +1 -1
- package/web/assets/multiselect-D6SVauJ0.js +251 -0
- package/web/assets/{nature-ecology-leaf.svg-B-jPo4Mf.js → nature-ecology-leaf.svg-Cv_Ub0f3.js} +1 -1
- package/web/assets/{password-FAGLfFXd.js → password-BnTuhvvF.js} +4 -4
- package/web/assets/{phone-telephone.svg-BBDd4gOe.js → phone-telephone.svg-C8m8L7Af.js} +1 -1
- package/web/assets/{plus-DvHGmumH.js → plus-CwKOeZC2.js} +6 -6
- package/web/assets/process.store-CgBhdhXY.js +1 -0
- package/web/assets/{programming-bug.svg-Di_RRUT8.js → programming-bug.svg-BMbf-v1F.js} +1 -1
- package/web/assets/{programming-cloud.svg-UXDdd80c.js → programming-cloud.svg-DoETzNlz.js} +1 -1
- package/web/assets/{programming-computer-database-server.svg-DqyeVkz2.js → programming-computer-database-server.svg-DFsTW5pZ.js} +1 -1
- package/web/assets/{programming-computer-database.svg-BB9uaRkU.js → programming-computer-database.svg-Dap1d6pH.js} +1 -1
- package/web/assets/{programming-module-four-layout.svg-DXHXfvRQ.js → programming-module-four-layout.svg-Dlte_L9w.js} +1 -1
- package/web/assets/{programming-module-three.svg-BqdjaGQY.js → programming-module-three.svg-CF2uP4yd.js} +1 -1
- package/web/assets/{programming-module.svg-Dca7humV.js → programming-module.svg-DSm70VcV.js} +1 -1
- package/web/assets/{programming-script-code.svg-S7W_TNxH.js → programming-script-code.svg-C7LrjNTC.js} +1 -1
- package/web/assets/project-launch.store-HM4tWJyO.js +1 -0
- package/web/assets/project.store-BUbzqDJl.js +1 -0
- package/web/assets/{python-BMgf76Zf.js → python-DGNKYf98.js} +1 -1
- package/web/assets/{radiobutton-BQ5ty9EJ.js → radiobutton-Drb-6bSf.js} +2 -2
- package/web/assets/{razor-DRB94rOF.js → razor-CLJyE3n7.js} +1 -1
- package/web/assets/router-DoDaan68.js +1 -0
- package/web/assets/settings-scope-CA1gM0Eg.js +1 -0
- package/web/assets/settings.store-BJ7H5w4n.js +1 -0
- package/web/assets/{shopping-cart.svg-BSU4UsCc.js → shopping-cart.svg-DqX4V0Z9.js} +1 -1
- package/web/assets/{shopping-gift-present.svg-CC16xqoa.js → shopping-gift-present.svg-BO9ncUGX.js} +1 -1
- package/web/assets/{shopping-shipping-box-parcel-package.svg-jK-_sKtf.js → shopping-shipping-box-parcel-package.svg-CEjca0LH.js} +1 -1
- package/web/assets/src-BKjJciGN.js +572 -0
- package/web/assets/src-F0BzIGAP.js +1 -0
- package/web/assets/{tabpanel-BytkhVWV.js → tabpanel-BX_29Z1p.js} +3 -3
- package/web/assets/{tag-new-circle.svg-DOyNg7L6.js → tag-new-circle.svg-DEFm057e.js} +1 -1
- package/web/assets/theme-CXbG8xGR.js +1 -0
- package/web/assets/{toggleswitch-Qo70K7EJ.js → toggleswitch-BCY7RhMa.js} +2 -2
- package/web/assets/{travel-map-earth-globe.svg-D6szY-qJ.js → travel-map-earth-globe.svg-bobKX3Td.js} +1 -1
- package/web/assets/trpc-D953ojvb.js +1 -0
- package/web/assets/{tsMode-Lbkz8xJi.js → tsMode-HrRwEBdZ.js} +5 -5
- package/web/assets/{typescript-C9Y4Q3Pi.js → typescript-CM93Igq2.js} +1 -1
- package/web/assets/useAiChatDrawer-uMew_avv.js +1 -0
- package/web/assets/{useCloudOrg-C0YVyKuT.js → useCloudOrg-Dd4m5ej-.js} +1 -1
- package/web/assets/{useEnvVarAutocomplete-DFNddwqp.css → useEnvVarAutocomplete-ChKhQI_8.css} +1 -1
- package/web/assets/useEnvVarAutocomplete-CwYnoQY2.js +1 -0
- package/web/assets/useProjectCatalog-Ct2H50rw.js +1 -0
- package/web/assets/useProjectCloudOrg-By2M8LTk.js +1 -0
- package/web/assets/useServiceUrlHost-ZVKBplG8.js +1 -0
- package/web/assets/{xml-BAzLHFet.js → xml-CJGov3Ex.js} +1 -1
- package/web/assets/{yaml-Dd3JbA6E.js → yaml-xY3BFPUE.js} +1 -1
- package/web/index.html +2 -2
- package/agent-manager-APY7SZ75.js +0 -9
- package/chunk-44XAJ3MK.js.map +0 -1
- package/chunk-6T7R2JZR.js.map +0 -1
- package/chunk-OGCEFBSS.js.map +0 -1
- package/chunk-VPANMGAI.js.map +0 -1
- package/settings-manager-MQBUCUIO.js +0 -9
- package/src-S5TDMHPI.js.map +0 -1
- package/web/assets/AgentScalarChatInterface.vue-BF7maBl3.js +0 -13
- package/web/assets/AgentTerminalPage-CvmJM-z2.js +0 -1
- package/web/assets/AiChatPage-CZvzic7w.js +0 -1
- package/web/assets/AppLayout-B6rcGZ-d.js +0 -1
- package/web/assets/AuditPage-Zow6i_p1.js +0 -1
- package/web/assets/CloudAccountPage-C7NM_P_L.js +0 -1
- package/web/assets/CloudAccountPage-EIJZWYuK.js +0 -1
- package/web/assets/CloudMessagingPage-TLIkdLja.js +0 -2
- package/web/assets/DashboardPage-DVe-s0J_.js +0 -164
- package/web/assets/DirectoryPickerDialog-B7FOXRqJ.js +0 -1
- package/web/assets/EnvironmentFormPage-B8u9s5R1.js +0 -1
- package/web/assets/EnvironmentListPage-CmzFuAkD.js +0 -1
- package/web/assets/KanbanBoardPage-B4luJ-Om.css +0 -1
- package/web/assets/KanbanBoardPage-BwlRY-B5.js +0 -4
- package/web/assets/KanbanListPage-BHvmkCBo.js +0 -1
- package/web/assets/LaunchProjectPage-CLtvEtB7.js +0 -1
- package/web/assets/LaunchServicesPage-CNwMUBEf.js +0 -1
- package/web/assets/LogViewer-CttayRws.js +0 -3
- package/web/assets/OrgKeyPrompt-BCUxooW7.js +0 -1
- package/web/assets/ProcessDetailPage-C9SV4g8j.js +0 -1
- package/web/assets/RandomJobTestPage-0PVLJcpY.js +0 -2
- package/web/assets/ScenarioEditorPage-CDRQjUbW.js +0 -14
- package/web/assets/SendToChatDialog-WvHUhHoF.js +0 -1
- package/web/assets/ServiceControlsBar-BUTVG9E_.js +0 -1
- package/web/assets/ServiceDetailPage-BzPogs-k.js +0 -2
- package/web/assets/ServiceFormPage-BAnq0Ajd.js +0 -1
- package/web/assets/SettingsPage-B60IQ4-n.js +0 -2063
- package/web/assets/UnlockPage-BrBOIaYO.js +0 -1
- package/web/assets/VaultMigrationPage-DwPlrgAk.js +0 -1
- package/web/assets/VersionBadge-VifKvUR5.js +0 -1
- package/web/assets/WikiPage-hb8nDENE.js +0 -1
- package/web/assets/WikiView-BGFK-ViQ.js +0 -1
- package/web/assets/add-scalar-classes-B7RXfMBe.js +0 -387
- package/web/assets/card-WTAGOi1D.js +0 -32
- package/web/assets/client-DcD_v2XG.js +0 -24
- package/web/assets/cloud-chat.store-C0vZ0R5r.js +0 -1
- package/web/assets/cloud-client-P2Cyjp5i.js +0 -1
- package/web/assets/cloud-session-5od8XXV-.js +0 -2
- package/web/assets/cloud-session-DEFzA7ER.js +0 -1
- package/web/assets/column-D-tpUFcH.js +0 -763
- package/web/assets/index-CuOHmXqW.css +0 -1
- package/web/assets/interface-content-folder.svg-vAfHUVxs.js +0 -1
- package/web/assets/modal-4lYrZSCG.js +0 -1
- package/web/assets/modal-C0BaKlvZ.js +0 -5
- package/web/assets/multiselect-C2K875ec.js +0 -251
- package/web/assets/process.store-Dkhppeiw.js +0 -1
- package/web/assets/project-launch.store-HsHnuv7p.js +0 -1
- package/web/assets/project.store-nYOH1fu8.js +0 -1
- package/web/assets/router-CEGkI1tc.js +0 -1
- package/web/assets/settings-scope-Dj1u8OM-.js +0 -1
- package/web/assets/settings.store-CzBxGLJM.js +0 -1
- package/web/assets/src-21gpk7yl.js +0 -572
- package/web/assets/src-Brqld0NK.js +0 -197
- package/web/assets/src-BsM0Obsp.css +0 -1
- package/web/assets/src-DYhMIuuF.js +0 -1
- package/web/assets/theme-GoDEfTsY.js +0 -1
- package/web/assets/trpc-D_S7-UJx.js +0 -1
- package/web/assets/useAiChatDrawer-GXkAcvQ3.js +0 -1
- package/web/assets/useEnvVarAutocomplete-Dkjm0cg5.js +0 -1
- package/web/assets/useProjectCatalog-BwvqZBo1.js +0 -1
- package/web/assets/useProjectCloudOrg-DpsnzqQF.js +0 -1
- package/web/assets/useServiceUrlHost-BFSLGMHh.js +0 -1
- package/web/assets/w3c-keyname-tfhvQ9CV.js +0 -1
- /package/{agent-manager-APY7SZ75.js.map → agent-manager-HOL7ZG4V.js.map} +0 -0
- /package/{chat-AOL2TMLR.js.map → chat-XUIXGKSR.js.map} +0 -0
- /package/{chunk-77UQ2UKW.js.map → chunk-I2AZCZMR.js.map} +0 -0
- /package/{companion-YYXSCN3H.js.map → companion-POUL5OGO.js.map} +0 -0
- /package/{desktop-launcher-Q6J2LSVP.js.map → desktop-launcher-QVYFCE56.js.map} +0 -0
- /package/{settings-manager-MQBUCUIO.js.map → settings-manager-KKSPWSM6.js.map} +0 -0
- /package/web/assets/{abap-DblxFMgX.js → abap-cDlgWO6H.js} +0 -0
- /package/web/assets/{apex-C_fmPlQy.js → apex-DxzSGotK.js} +0 -0
- /package/web/assets/{azcli-D73HZyav.js → azcli-CUNfZLtQ.js} +0 -0
- /package/web/assets/{bat-Br4Biw6V.js → bat-C-oKGifY.js} +0 -0
- /package/web/assets/{bicep-Cwg6_V-m.js → bicep-C4xTl9QV.js} +0 -0
- /package/web/assets/{browser-D6yPejPt.js → browser-CE5P0iHW.js} +0 -0
- /package/web/assets/{cameligo-Dq6Izwzi.js → cameligo-COpO1ZvP.js} +0 -0
- /package/web/assets/{clojure-U0exYVUx.js → clojure-D8gp5eAN.js} +0 -0
- /package/web/assets/{coffee-mPGPozSE.js → coffee-De9HMN-q.js} +0 -0
- /package/web/assets/{cpp-lpr_PQMA.js → cpp-C4pJyeKy.js} +0 -0
- /package/web/assets/{csharp-saQQwY3s.js → csharp-B4wLqqiU.js} +0 -0
- /package/web/assets/{csp-CcDpUBZN.js → csp-Do0Gg4qE.js} +0 -0
- /package/web/assets/{css-D6QFYBbL.js → css-BLq1nXK0.js} +0 -0
- /package/web/assets/{cypher-B_4KCq-w.js → cypher-CDQzi0TV.js} +0 -0
- /package/web/assets/{dart-CgLuovz1.js → dart-bTPYn7bY.js} +0 -0
- /package/web/assets/{dockerfile-DObNIc52.js → dockerfile-yM7ZnQpo.js} +0 -0
- /package/web/assets/{ecl-BpCwjSsH.js → ecl-BgTpp_c4.js} +0 -0
- /package/web/assets/{elixir-CebZWKus.js → elixir-DO7wJ1ib.js} +0 -0
- /package/web/assets/{flow9-DhoDs9JD.js → flow9-B2Ko_py3.js} +0 -0
- /package/web/assets/{fsharp-YDWqgr0W.js → fsharp-DNdx3wKW.js} +0 -0
- /package/web/assets/{go-CaPX4mu5.js → go-D7LajbkE.js} +0 -0
- /package/web/assets/{graphql-DOSo46Ed.js → graphql-BCQSwUPo.js} +0 -0
- /package/web/assets/{hcl-nSYpx4qj.js → hcl-DR3uNUXT.js} +0 -0
- /package/web/assets/{ini-Ca22qQIM.js → ini-zkzQPitL.js} +0 -0
- /package/web/assets/{java-KrQduvTo.js → java-YFwuCa4S.js} +0 -0
- /package/web/assets/{julia-Bb2MDsY_.js → julia-WWwv4jLR.js} +0 -0
- /package/web/assets/{kotlin-DB7e82Vg.js → kotlin-FwlJkapy.js} +0 -0
- /package/web/assets/{less-K5fiQqgY.js → less-CyhHW1nH.js} +0 -0
- /package/web/assets/{lexon-Do9EcqkA.js → lexon-BScN_v1c.js} +0 -0
- /package/web/assets/{lua-DU9Dpzvs.js → lua-eWb9GpZJ.js} +0 -0
- /package/web/assets/{m3-pF6PmPkL.js → m3-C4NDU793.js} +0 -0
- /package/web/assets/{markdown-BNRSTD3D.js → markdown-DWWpXAtL.js} +0 -0
- /package/web/assets/{mips-OIXxWbNl.js → mips-BpJKGw00.js} +0 -0
- /package/web/assets/{msdax-Blzk7oHr.js → msdax-BiuvyZwP.js} +0 -0
- /package/web/assets/{mysql-CISO3r5e.js → mysql-DJW9Aa9q.js} +0 -0
- /package/web/assets/{objective-c-CfnC_OAj.js → objective-c-YouNnWOW.js} +0 -0
- /package/web/assets/{pascal-BUF-IB2S.js → pascal-jQsRnBre.js} +0 -0
- /package/web/assets/{pascaligo-BKce2a7P.js → pascaligo-DZI84_dt.js} +0 -0
- /package/web/assets/{perl-BSNQJqG3.js → perl-D9TKt-s6.js} +0 -0
- /package/web/assets/{pgsql-B6gnZ9Pz.js → pgsql-DXgI6ehC.js} +0 -0
- /package/web/assets/{php-D3DRjlE-.js → php-Cgqd4wfW.js} +0 -0
- /package/web/assets/{pla-DMkpEwWz.js → pla-DRDkvVUU.js} +0 -0
- /package/web/assets/{postiats-CS9vJAK8.js → postiats-BOLeCCau.js} +0 -0
- /package/web/assets/{powerquery-5wdkUpGP.js → powerquery-DCDtPNBU.js} +0 -0
- /package/web/assets/{powershell-CFy-OLZK.js → powershell-WnZ4e5ia.js} +0 -0
- /package/web/assets/{protobuf-BexdMU0z.js → protobuf-C9Dg-C9o.js} +0 -0
- /package/web/assets/{pug-D7XxQLO5.js → pug-Dr8RhWun.js} +0 -0
- /package/web/assets/{qsharp-Cbf2FpNP.js → qsharp-DukGWvWZ.js} +0 -0
- /package/web/assets/{r-DF7k9FbU.js → r-BC41pTgC.js} +0 -0
- /package/web/assets/{redis-CsS7YEaP.js → redis-D-gYIUku.js} +0 -0
- /package/web/assets/{redshift-ELXdujA0.js → redshift-r0XbF8XS.js} +0 -0
- /package/web/assets/{restructuredtext-xoFIa5lj.js → restructuredtext-DsJDS7Eu.js} +0 -0
- /package/web/assets/{ruby-BqZs-MXO.js → ruby-JPrm3ODz.js} +0 -0
- /package/web/assets/{rust-Bg6ZO_et.js → rust-C8IjEXni.js} +0 -0
- /package/web/assets/{sb-DiB12F6v.js → sb-D8vNiFl9.js} +0 -0
- /package/web/assets/{scala-DElpnKpP.js → scala-DThahuqf.js} +0 -0
- /package/web/assets/{scheme-1ahRBKOq.js → scheme-CvEQUYYf.js} +0 -0
- /package/web/assets/{scss-DEMPy3QV.js → scss-C6obpl8K.js} +0 -0
- /package/web/assets/{shell-DPy86lBu.js → shell-BnVmd31t.js} +0 -0
- /package/web/assets/{solidity-BJ26fCkf.js → solidity-Bo6zEybc.js} +0 -0
- /package/web/assets/{sophia-BisqpnJK.js → sophia-DuB3Px8n.js} +0 -0
- /package/web/assets/{sparql-C7Lhhim4.js → sparql-CW9HqMW2.js} +0 -0
- /package/web/assets/{sql-BXVElqbr.js → sql-CPCPCQON.js} +0 -0
- /package/web/assets/{st-C3Kk-cML.js → st-AxC3n-1-.js} +0 -0
- /package/web/assets/{swift-D8IWJydR.js → swift-CgZOS_MZ.js} +0 -0
- /package/web/assets/{systemverilog-524SrI2Q.js → systemverilog-DYR-yx39.js} +0 -0
- /package/web/assets/{tcl-MYNTx-d-.js → tcl-4hAvWv0d.js} +0 -0
- /package/web/assets/{twig-BAVZN0tW.js → twig-Cf_07aFW.js} +0 -0
- /package/web/assets/{typespec-BhgMHLJQ.js → typespec-2tXj8s11.js} +0 -0
- /package/web/assets/{vb-BLauMmY8.js → vb-DLpM4f4s.js} +0 -0
- /package/web/assets/{wgsl-ybvhdvmz.js → wgsl-BcECae_z.js} +0 -0
|
@@ -31,7 +31,7 @@ import {
|
|
|
31
31
|
runCompanionNow,
|
|
32
32
|
syncConversationFromClaudeTranscript,
|
|
33
33
|
verifyJwt
|
|
34
|
-
} from "./chunk-
|
|
34
|
+
} from "./chunk-XIRMRWVU.js";
|
|
35
35
|
import {
|
|
36
36
|
agentManager,
|
|
37
37
|
agentStore,
|
|
@@ -51,10 +51,10 @@ import {
|
|
|
51
51
|
rememberFile,
|
|
52
52
|
serviceStore,
|
|
53
53
|
wasRead
|
|
54
|
-
} from "./chunk-
|
|
54
|
+
} from "./chunk-P47X3LT3.js";
|
|
55
55
|
import {
|
|
56
56
|
settingsManager
|
|
57
|
-
} from "./chunk-
|
|
57
|
+
} from "./chunk-I2AZCZMR.js";
|
|
58
58
|
import {
|
|
59
59
|
AGENT_STOP_FETCH_TIMEOUT,
|
|
60
60
|
ApiKeysFileSchema,
|
|
@@ -62,6 +62,7 @@ import {
|
|
|
62
62
|
HealthCheckSchema,
|
|
63
63
|
JSLogParserSchema,
|
|
64
64
|
LogSourceConfigSchema,
|
|
65
|
+
MissingVariableSchema,
|
|
65
66
|
RestartStrategySchema,
|
|
66
67
|
ScenarioSchema,
|
|
67
68
|
ServiceCommandSchema,
|
|
@@ -75,7 +76,7 @@ import {
|
|
|
75
76
|
serviceUrlValues,
|
|
76
77
|
urlHostFor,
|
|
77
78
|
withDeprecatedAliases
|
|
78
|
-
} from "./chunk-
|
|
79
|
+
} from "./chunk-RN4X65D3.js";
|
|
79
80
|
import {
|
|
80
81
|
allVaultRoots,
|
|
81
82
|
env,
|
|
@@ -90,7 +91,7 @@ import {
|
|
|
90
91
|
} from "./chunk-ZFELQG4B.js";
|
|
91
92
|
|
|
92
93
|
// ../server/src/trpc/routers/chat.ts
|
|
93
|
-
import { z as
|
|
94
|
+
import { z as z6 } from "zod";
|
|
94
95
|
import Anthropic2 from "@anthropic-ai/sdk";
|
|
95
96
|
import OpenAI2 from "openai";
|
|
96
97
|
import { fileURLToPath as fileURLToPath2 } from "url";
|
|
@@ -407,6 +408,7 @@ var ApiKeyStore = class {
|
|
|
407
408
|
var apiKeyStore = new ApiKeyStore();
|
|
408
409
|
|
|
409
410
|
// ../server/src/trpc/trpc.ts
|
|
411
|
+
import { z } from "zod";
|
|
410
412
|
function createContext({ req }) {
|
|
411
413
|
return {
|
|
412
414
|
authorization: req.headers.authorization ?? null,
|
|
@@ -415,13 +417,27 @@ function createContext({ req }) {
|
|
|
415
417
|
remoteAddress: req.socket.remoteAddress ?? null
|
|
416
418
|
};
|
|
417
419
|
}
|
|
420
|
+
function extractMissingVariables(cause) {
|
|
421
|
+
if (!cause || typeof cause !== "object") return {};
|
|
422
|
+
const parsed = z.object({
|
|
423
|
+
missingVariables: z.array(MissingVariableSchema).max(500),
|
|
424
|
+
environmentId: z.string().max(128)
|
|
425
|
+
}).safeParse(cause);
|
|
426
|
+
return parsed.success ? parsed.data : {};
|
|
427
|
+
}
|
|
418
428
|
var t = initTRPC.context().meta().create({
|
|
419
429
|
errorFormatter({ shape, error }) {
|
|
420
430
|
return {
|
|
421
431
|
...shape,
|
|
422
432
|
data: {
|
|
423
433
|
...shape.data,
|
|
424
|
-
message: error.message
|
|
434
|
+
message: error.message,
|
|
435
|
+
// La cause d'une erreur n'est PAS transportée par défaut, et c'est
|
|
436
|
+
// voulu : elle porte souvent la pile ou l'objet interne qui a échoué.
|
|
437
|
+
// Un seul champ traverse, nommé et validé — la liste des variables à
|
|
438
|
+
// remplir, dont le client a besoin pour ouvrir l'assistant sur ce qui
|
|
439
|
+
// vient exactement d'être refusé.
|
|
440
|
+
...extractMissingVariables(error.cause)
|
|
425
441
|
}
|
|
426
442
|
};
|
|
427
443
|
}
|
|
@@ -489,7 +505,7 @@ function getAllowedServiceIds(ctx) {
|
|
|
489
505
|
if (ctx.callerType !== "api") return null;
|
|
490
506
|
return new Set(ctx.apiKey.scopes.services.map((p) => p.serviceId));
|
|
491
507
|
}
|
|
492
|
-
function
|
|
508
|
+
function findEnvPermission(ctx, environmentId, action, serviceId) {
|
|
493
509
|
if (ctx.callerType !== "api") return { includeSecrets: true };
|
|
494
510
|
const permsToCheck = serviceId ? ctx.apiKey.scopes.services.filter((p) => p.serviceId === serviceId) : ctx.apiKey.scopes.services;
|
|
495
511
|
for (const svcPerm of permsToCheck) {
|
|
@@ -498,19 +514,27 @@ function requireEnvAction(ctx, environmentId, action, serviceId) {
|
|
|
498
514
|
return { includeSecrets: envPerm.includeSecrets };
|
|
499
515
|
}
|
|
500
516
|
}
|
|
517
|
+
return null;
|
|
518
|
+
}
|
|
519
|
+
function requireEnvAction(ctx, environmentId, action, serviceId) {
|
|
520
|
+
const permission = findEnvPermission(ctx, environmentId, action, serviceId);
|
|
521
|
+
if (permission) return permission;
|
|
501
522
|
throw new TRPCError({
|
|
502
523
|
code: "FORBIDDEN",
|
|
503
524
|
message: `API key lacks '${action}' permission on environment ${environmentId}`
|
|
504
525
|
});
|
|
505
526
|
}
|
|
527
|
+
function canEnvAction(ctx, environmentId, action) {
|
|
528
|
+
return findEnvPermission(ctx, environmentId, action) !== null;
|
|
529
|
+
}
|
|
506
530
|
|
|
507
531
|
// ../server/src/trpc/shared-schemas.ts
|
|
508
|
-
import { z } from "zod";
|
|
509
|
-
var Id128Schema =
|
|
510
|
-
var ConversationIdSchema =
|
|
511
|
-
var NameSchema =
|
|
512
|
-
var ShortString200Schema =
|
|
513
|
-
var DescriptionSchema =
|
|
532
|
+
import { z as z2 } from "zod";
|
|
533
|
+
var Id128Schema = z2.string().max(128);
|
|
534
|
+
var ConversationIdSchema = z2.string().max(128);
|
|
535
|
+
var NameSchema = z2.string().min(1).max(200);
|
|
536
|
+
var ShortString200Schema = z2.string().max(200);
|
|
537
|
+
var DescriptionSchema = z2.string().max(2e3);
|
|
514
538
|
var OptionalProviderIdSchema = Id128Schema.optional();
|
|
515
539
|
|
|
516
540
|
// ../server/src/services/workspace-cwd.ts
|
|
@@ -837,6 +861,97 @@ var EnvironmentResolver = class {
|
|
|
837
861
|
}
|
|
838
862
|
return injected;
|
|
839
863
|
}
|
|
864
|
+
/**
|
|
865
|
+
* Les variables qu'il faut remplir avant qu'un service de cet environnement
|
|
866
|
+
* puisse démarrer.
|
|
867
|
+
*
|
|
868
|
+
* Deux motifs, et ils ne se mesurent pas au même endroit :
|
|
869
|
+
*
|
|
870
|
+
* - `required` porte sur la valeur **finale**, interpolation et surcharge
|
|
871
|
+
* comprises : une variable obligatoire dont la valeur ne tient qu'à une
|
|
872
|
+
* référence morte est aussi vide qu'une case blanche.
|
|
873
|
+
* - `overrideOnly` porte sur l'**existence d'une surcharge machine**. Elle
|
|
874
|
+
* n'a par construction pas de valeur partagée ; ce qui manque n'est pas un
|
|
875
|
+
* contenu, c'est la réponse de ce poste-ci.
|
|
876
|
+
*
|
|
877
|
+
* Les drapeaux se lisent sur la définition, jamais sur le slot résolu : une
|
|
878
|
+
* surcharge remplace le slot entier et ne porte aucun drapeau — les y lire
|
|
879
|
+
* rendrait toute variable surchargée silencieusement facultative.
|
|
880
|
+
*/
|
|
881
|
+
async findMissingVariables(environmentId) {
|
|
882
|
+
if (!environmentId) return [];
|
|
883
|
+
const [{ env: env2 }, definitions, overridesByKey] = await Promise.all([
|
|
884
|
+
this.resolveEnvironment(environmentId),
|
|
885
|
+
this.resolveDag(environmentId, /* @__PURE__ */ new Set()),
|
|
886
|
+
this.resolveOverridesByKey(environmentId)
|
|
887
|
+
]);
|
|
888
|
+
const missing = [];
|
|
889
|
+
for (const [variableId, variable] of Object.entries(definitions.variables)) {
|
|
890
|
+
const slot = variable.value;
|
|
891
|
+
const source = definitions.sources[variableId];
|
|
892
|
+
const base = {
|
|
893
|
+
variableId,
|
|
894
|
+
key: variable.key,
|
|
895
|
+
description: slot.description,
|
|
896
|
+
isSecret: slot.isSecret,
|
|
897
|
+
environmentId: source?.environmentId ?? environmentId,
|
|
898
|
+
environmentName: source?.environmentName ?? ""
|
|
899
|
+
};
|
|
900
|
+
if (slot.overrideOnly && !overridesByKey[variable.key]) {
|
|
901
|
+
missing.push({ ...base, reason: "overrideOnly" });
|
|
902
|
+
continue;
|
|
903
|
+
}
|
|
904
|
+
if (slot.required && (env2[variable.key] ?? "") === "") {
|
|
905
|
+
missing.push({ ...base, reason: "required" });
|
|
906
|
+
}
|
|
907
|
+
}
|
|
908
|
+
return missing;
|
|
909
|
+
}
|
|
910
|
+
/**
|
|
911
|
+
* Tout ce qu'il reste à remplir sous l'environnement courant.
|
|
912
|
+
*
|
|
913
|
+
* Deux périmètres, et il faut les deux :
|
|
914
|
+
*
|
|
915
|
+
* 1. **L'environnement courant lui-même**, héritage compris —
|
|
916
|
+
* `findMissingVariables` remonte ses `parentIds`. C'est là que vivent les
|
|
917
|
+
* variables globales du projet, et c'est la première branche balayée.
|
|
918
|
+
* 2. **Les environnements de service qui s'activent avec lui**
|
|
919
|
+
* (`activateOn`). Ceux-là ne sont pas des ancêtres du global : ils en
|
|
920
|
+
* héritent, dans l'autre sens. Ne pas y descendre revenait à ne rien
|
|
921
|
+
* réclamer d'un service jusqu'à ce qu'on essaie de le démarrer.
|
|
922
|
+
*
|
|
923
|
+
* Dédoublonné par identifiant de variable : une variable du global remonte
|
|
924
|
+
* dans chaque branche de service qui en hérite, et l'assistant ne doit pas
|
|
925
|
+
* demander deux fois la même chose.
|
|
926
|
+
*/
|
|
927
|
+
async findMissingForActiveEnvironment(globalEnvId) {
|
|
928
|
+
if (!globalEnvId) return [];
|
|
929
|
+
const serviceEnvs = await environmentStore.listByActivateOn(globalEnvId);
|
|
930
|
+
const branches = await Promise.all([
|
|
931
|
+
this.findMissingVariables(globalEnvId),
|
|
932
|
+
...serviceEnvs.map((env2) => this.findMissingVariables(env2.id))
|
|
933
|
+
]);
|
|
934
|
+
const seen = /* @__PURE__ */ new Set();
|
|
935
|
+
const missing = [];
|
|
936
|
+
for (const branch of branches) {
|
|
937
|
+
for (const item of branch) {
|
|
938
|
+
if (seen.has(item.variableId)) continue;
|
|
939
|
+
seen.add(item.variableId);
|
|
940
|
+
missing.push(item);
|
|
941
|
+
}
|
|
942
|
+
}
|
|
943
|
+
return missing;
|
|
944
|
+
}
|
|
945
|
+
/**
|
|
946
|
+
* Idem, pour ce qu'un service verra réellement : son environnement dédié
|
|
947
|
+
* quand il en a un, l'environnement global sinon. Miroir de
|
|
948
|
+
* `resolveForService`, dont il partage la règle de sélection.
|
|
949
|
+
*/
|
|
950
|
+
async findMissingForService(ctx) {
|
|
951
|
+
if (!ctx.activeEnvironmentId) return [];
|
|
952
|
+
const serviceEnv = await environmentStore.findServiceEnvironment(ctx.serviceId, ctx.activeEnvironmentId);
|
|
953
|
+
return this.findMissingVariables(serviceEnv ? serviceEnv.id : ctx.activeEnvironmentId);
|
|
954
|
+
}
|
|
840
955
|
async resolveEnvironmentWithSources(environmentId) {
|
|
841
956
|
const visited = /* @__PURE__ */ new Set();
|
|
842
957
|
const result = await this.resolveDag(environmentId, visited);
|
|
@@ -1980,7 +2095,7 @@ async function executeTool(rawName, input, apiKey, authToken) {
|
|
|
1980
2095
|
}
|
|
1981
2096
|
|
|
1982
2097
|
// ../server/src/trpc/routers/service.ts
|
|
1983
|
-
import { z as
|
|
2098
|
+
import { z as z3 } from "zod";
|
|
1984
2099
|
import { TRPCError as TRPCError2 } from "@trpc/server";
|
|
1985
2100
|
|
|
1986
2101
|
// ../server/src/services/audit-service.ts
|
|
@@ -2355,10 +2470,10 @@ var serviceRouter = router({
|
|
|
2355
2470
|
* silencieux ferait croire au filtrage tout en rendant les services des
|
|
2356
2471
|
* autres organisations.
|
|
2357
2472
|
*/
|
|
2358
|
-
list: protectedProcedure.meta({ openapi: { method: "GET", path: "/services", tags: ["services"], summary: "List services (every project of the machine unless narrowed by project or organization)", protect: true } }).input(
|
|
2359
|
-
projectId:
|
|
2360
|
-
orgId:
|
|
2361
|
-
}).optional()).output(
|
|
2473
|
+
list: protectedProcedure.meta({ openapi: { method: "GET", path: "/services", tags: ["services"], summary: "List services (every project of the machine unless narrowed by project or organization)", protect: true } }).input(z3.object({
|
|
2474
|
+
projectId: z3.string().max(128).optional(),
|
|
2475
|
+
orgId: z3.string().max(128).nullable().optional()
|
|
2476
|
+
}).optional()).output(z3.any()).query(async ({ input, ctx }) => {
|
|
2362
2477
|
const all = await serviceStore.list();
|
|
2363
2478
|
const allowedIds = getAllowedServiceIds(ctx);
|
|
2364
2479
|
let filtered = allowedIds ? all.filter((s) => allowedIds.has(s.id)) : all;
|
|
@@ -2378,7 +2493,7 @@ var serviceRouter = router({
|
|
|
2378
2493
|
effectiveAgentId: await resolveEffectiveAgentId(s)
|
|
2379
2494
|
})));
|
|
2380
2495
|
}),
|
|
2381
|
-
get: protectedProcedure.meta({ openapi: { method: "GET", path: "/services/{id}", tags: ["services"], summary: "Get a service by ID", protect: true } }).input(
|
|
2496
|
+
get: protectedProcedure.meta({ openapi: { method: "GET", path: "/services/{id}", tags: ["services"], summary: "Get a service by ID", protect: true } }).input(z3.object({ id: z3.string().max(128) })).output(z3.any()).query(async ({ input, ctx }) => {
|
|
2382
2497
|
requireServiceAction(ctx, input.id, "service:read");
|
|
2383
2498
|
const service = await serviceStore.get(input.id);
|
|
2384
2499
|
if (!service) {
|
|
@@ -2386,34 +2501,34 @@ var serviceRouter = router({
|
|
|
2386
2501
|
}
|
|
2387
2502
|
return { ...service, effectiveAgentId: await resolveEffectiveAgentId(service) };
|
|
2388
2503
|
}),
|
|
2389
|
-
create: protectedProcedure.meta({ openapi: { method: "POST", path: "/services", tags: ["services"], summary: "Create a new service", protect: true } }).output(
|
|
2390
|
-
|
|
2391
|
-
agentId:
|
|
2392
|
-
name:
|
|
2393
|
-
commands:
|
|
2394
|
-
cwd:
|
|
2395
|
-
ports:
|
|
2396
|
-
groups:
|
|
2397
|
-
description:
|
|
2398
|
-
docsPath:
|
|
2399
|
-
url:
|
|
2400
|
-
localUrls:
|
|
2401
|
-
url:
|
|
2402
|
-
port:
|
|
2504
|
+
create: protectedProcedure.meta({ openapi: { method: "POST", path: "/services", tags: ["services"], summary: "Create a new service", protect: true } }).output(z3.any()).input(
|
|
2505
|
+
z3.object({
|
|
2506
|
+
agentId: z3.string().max(128).optional(),
|
|
2507
|
+
name: z3.string().min(1).max(200),
|
|
2508
|
+
commands: z3.array(ServiceCommandSchema).max(50).optional(),
|
|
2509
|
+
cwd: z3.string().max(4096).optional(),
|
|
2510
|
+
ports: z3.array(z3.number().int().min(1).max(65535)).max(20).optional(),
|
|
2511
|
+
groups: z3.array(z3.string().max(200)).max(20).optional(),
|
|
2512
|
+
description: z3.string().max(2e3).optional(),
|
|
2513
|
+
docsPath: z3.string().max(4096).optional(),
|
|
2514
|
+
url: z3.string().max(2048).optional(),
|
|
2515
|
+
localUrls: z3.array(z3.object({
|
|
2516
|
+
url: z3.string().max(253),
|
|
2517
|
+
port: z3.number().int().min(1).max(65535)
|
|
2403
2518
|
})).max(20).optional(),
|
|
2404
|
-
openapiUrl:
|
|
2405
|
-
git:
|
|
2406
|
-
meta:
|
|
2407
|
-
runner:
|
|
2519
|
+
openapiUrl: z3.string().max(2048).optional(),
|
|
2520
|
+
git: z3.object({ remote: z3.string().max(2048).optional(), home: z3.string().max(2048).optional() }).optional(),
|
|
2521
|
+
meta: z3.record(z3.string().max(256), z3.string().max(2e3)).optional().refine((obj) => !obj || Object.keys(obj).length <= 100, { message: "Too many meta keys (max 100)" }),
|
|
2522
|
+
runner: z3.enum(["native", "docker"]).optional().default("native"),
|
|
2408
2523
|
dockerConfig: DockerConfigInput.optional(),
|
|
2409
2524
|
healthCheck: HealthCheckSchema.optional(),
|
|
2410
|
-
autoRestart:
|
|
2525
|
+
autoRestart: z3.boolean().optional().default(false),
|
|
2411
2526
|
restartStrategy: RestartStrategySchema.optional(),
|
|
2412
|
-
maxRestarts:
|
|
2413
|
-
restartBackoffMs:
|
|
2414
|
-
orgId:
|
|
2415
|
-
shortcuts:
|
|
2416
|
-
parserIds:
|
|
2527
|
+
maxRestarts: z3.number().int().nonnegative().optional(),
|
|
2528
|
+
restartBackoffMs: z3.number().int().positive().optional().default(1e3),
|
|
2529
|
+
orgId: z3.string().max(128).nullable().optional(),
|
|
2530
|
+
shortcuts: z3.array(ServiceShortcutSchema).max(50).optional(),
|
|
2531
|
+
parserIds: z3.array(z3.string().max(128)).max(50).optional()
|
|
2417
2532
|
})
|
|
2418
2533
|
).mutation(async ({ input }) => {
|
|
2419
2534
|
if (input.agentId) {
|
|
@@ -2435,38 +2550,38 @@ var serviceRouter = router({
|
|
|
2435
2550
|
await auditService.log({ userId: "local", action: "create", entityType: "service", entityId: service.id, metadata: { name: input.name } });
|
|
2436
2551
|
return service;
|
|
2437
2552
|
}),
|
|
2438
|
-
update: protectedProcedure.meta({ openapi: { method: "PATCH", path: "/services/{id}", tags: ["services"], summary: "Update a service", protect: true } }).output(
|
|
2439
|
-
|
|
2440
|
-
id:
|
|
2441
|
-
agentId:
|
|
2553
|
+
update: protectedProcedure.meta({ openapi: { method: "PATCH", path: "/services/{id}", tags: ["services"], summary: "Update a service", protect: true } }).output(z3.any()).input(
|
|
2554
|
+
z3.object({
|
|
2555
|
+
id: z3.string().max(128),
|
|
2556
|
+
agentId: z3.string().max(128).nullable().optional(),
|
|
2442
2557
|
// null = clear (inherit from env)
|
|
2443
|
-
name:
|
|
2444
|
-
commands:
|
|
2445
|
-
cwd:
|
|
2446
|
-
ports:
|
|
2447
|
-
groups:
|
|
2448
|
-
description:
|
|
2449
|
-
docsPath:
|
|
2450
|
-
url:
|
|
2451
|
-
localUrls:
|
|
2452
|
-
url:
|
|
2453
|
-
port:
|
|
2558
|
+
name: z3.string().min(1).max(200).optional(),
|
|
2559
|
+
commands: z3.array(ServiceCommandSchema).max(50).optional(),
|
|
2560
|
+
cwd: z3.string().max(4096).nullable().optional(),
|
|
2561
|
+
ports: z3.array(z3.number().int().min(1).max(65535)).max(20).optional(),
|
|
2562
|
+
groups: z3.array(z3.string().max(200)).max(20).optional(),
|
|
2563
|
+
description: z3.string().max(2e3).optional(),
|
|
2564
|
+
docsPath: z3.string().max(4096).optional(),
|
|
2565
|
+
url: z3.string().max(2048).optional(),
|
|
2566
|
+
localUrls: z3.array(z3.object({
|
|
2567
|
+
url: z3.string().max(253),
|
|
2568
|
+
port: z3.number().int().min(1).max(65535)
|
|
2454
2569
|
})).max(20).optional(),
|
|
2455
|
-
openapiUrl:
|
|
2456
|
-
git:
|
|
2457
|
-
meta:
|
|
2458
|
-
runner:
|
|
2570
|
+
openapiUrl: z3.string().max(2048).optional(),
|
|
2571
|
+
git: z3.object({ remote: z3.string().max(2048).optional(), home: z3.string().max(2048).optional() }).nullable().optional(),
|
|
2572
|
+
meta: z3.record(z3.string().max(256), z3.string().max(2e3)).nullable().optional().refine((obj) => !obj || Object.keys(obj).length <= 100, { message: "Too many meta keys (max 100)" }),
|
|
2573
|
+
runner: z3.enum(["native", "docker"]).optional(),
|
|
2459
2574
|
dockerConfig: DockerConfigInput.optional(),
|
|
2460
2575
|
healthCheck: HealthCheckSchema.nullable().optional(),
|
|
2461
|
-
autoRestart:
|
|
2462
|
-
clearLogsOnStart:
|
|
2576
|
+
autoRestart: z3.boolean().optional(),
|
|
2577
|
+
clearLogsOnStart: z3.boolean().optional(),
|
|
2463
2578
|
restartStrategy: RestartStrategySchema.optional(),
|
|
2464
|
-
maxRestarts:
|
|
2465
|
-
restartBackoffMs:
|
|
2466
|
-
orgId:
|
|
2467
|
-
shortcuts:
|
|
2468
|
-
parserIds:
|
|
2469
|
-
logSources:
|
|
2579
|
+
maxRestarts: z3.number().int().nonnegative().optional(),
|
|
2580
|
+
restartBackoffMs: z3.number().int().positive().optional(),
|
|
2581
|
+
orgId: z3.string().max(128).nullable().optional(),
|
|
2582
|
+
shortcuts: z3.array(ServiceShortcutSchema).max(50).optional(),
|
|
2583
|
+
parserIds: z3.array(z3.string().max(128)).max(50).optional(),
|
|
2584
|
+
logSources: z3.array(LogSourceConfigSchema).max(20).optional()
|
|
2470
2585
|
})
|
|
2471
2586
|
).mutation(async ({ input }) => {
|
|
2472
2587
|
const existing = await serviceStore.get(input.id);
|
|
@@ -2521,7 +2636,7 @@ var serviceRouter = router({
|
|
|
2521
2636
|
await auditService.log({ userId: "local", action: "update", entityType: "service", entityId: input.id });
|
|
2522
2637
|
return { ...service, effectiveAgentId: await resolveEffectiveAgentId(service), stoppedForAgentChange };
|
|
2523
2638
|
}),
|
|
2524
|
-
delete: protectedProcedure.meta({ openapi: { method: "DELETE", path: "/services/{id}", tags: ["services"], summary: "Delete a service", protect: true } }).input(
|
|
2639
|
+
delete: protectedProcedure.meta({ openapi: { method: "DELETE", path: "/services/{id}", tags: ["services"], summary: "Delete a service", protect: true } }).input(z3.object({ id: z3.string().max(128) })).output(z3.object({ success: z3.literal(true) })).mutation(async ({ input }) => {
|
|
2525
2640
|
const deleted = await serviceStore.delete(input.id);
|
|
2526
2641
|
if (!deleted) {
|
|
2527
2642
|
throw new TRPCError2({ code: "NOT_FOUND", message: `Service ${input.id} not found` });
|
|
@@ -2529,7 +2644,7 @@ var serviceRouter = router({
|
|
|
2529
2644
|
await auditService.log({ userId: "local", action: "delete", entityType: "service", entityId: input.id });
|
|
2530
2645
|
return { success: true };
|
|
2531
2646
|
}),
|
|
2532
|
-
checkCwd: protectedProcedure.input(
|
|
2647
|
+
checkCwd: protectedProcedure.input(z3.object({ id: z3.string().max(128), checkReachability: z3.boolean().optional() })).query(async ({ input }) => {
|
|
2533
2648
|
const service = await serviceStore.get(input.id);
|
|
2534
2649
|
if (!service) {
|
|
2535
2650
|
throw new TRPCError2({ code: "NOT_FOUND", message: `Service ${input.id} not found` });
|
|
@@ -2562,7 +2677,7 @@ var serviceRouter = router({
|
|
|
2562
2677
|
}
|
|
2563
2678
|
return { exists, canClone, unresolvedVars: [], resolvedCwd, gitMismatch };
|
|
2564
2679
|
}),
|
|
2565
|
-
cloneRepository: protectedProcedure.input(
|
|
2680
|
+
cloneRepository: protectedProcedure.input(z3.object({ id: z3.string().max(128) })).mutation(async ({ input }) => {
|
|
2566
2681
|
const service = await serviceStore.get(input.id);
|
|
2567
2682
|
if (!service) {
|
|
2568
2683
|
throw new TRPCError2({ code: "NOT_FOUND", message: `Service ${input.id} not found` });
|
|
@@ -3547,7 +3662,7 @@ async function resolveImagesToBase64(images, contextId) {
|
|
|
3547
3662
|
}
|
|
3548
3663
|
|
|
3549
3664
|
// ../server/src/trpc/routers/cloud-auth.ts
|
|
3550
|
-
import { z as
|
|
3665
|
+
import { z as z5 } from "zod";
|
|
3551
3666
|
import { hostname } from "os";
|
|
3552
3667
|
import { basename } from "path";
|
|
3553
3668
|
import { TRPCError as TRPCError3 } from "@trpc/server";
|
|
@@ -3804,12 +3919,12 @@ var cloudSessionStore = new CloudSessionStore();
|
|
|
3804
3919
|
import { networkInterfaces } from "os";
|
|
3805
3920
|
import { readFile as readFile8, writeFile as writeFile6, rename as rename6, mkdir as mkdir8 } from "fs/promises";
|
|
3806
3921
|
import { join as join7 } from "path";
|
|
3807
|
-
import { z as
|
|
3922
|
+
import { z as z4 } from "zod";
|
|
3808
3923
|
var LOOPBACK2 = "127.0.0.1";
|
|
3809
3924
|
var ANY = "0.0.0.0";
|
|
3810
3925
|
var NETWORK_FILE = "network.json";
|
|
3811
|
-
var NetworkFileSchema =
|
|
3812
|
-
instances:
|
|
3926
|
+
var NetworkFileSchema = z4.object({
|
|
3927
|
+
instances: z4.record(z4.string(), z4.object({ lanEnabled: z4.boolean().default(false) })).default({})
|
|
3813
3928
|
});
|
|
3814
3929
|
var httpServer = null;
|
|
3815
3930
|
function instanceKey() {
|
|
@@ -4077,15 +4192,15 @@ function isAllowedProxyPath(path) {
|
|
|
4077
4192
|
const [pathname] = path.split("?");
|
|
4078
4193
|
return PROXY_PREFIXES.some((p) => pathname === p || pathname.startsWith(p));
|
|
4079
4194
|
}
|
|
4080
|
-
var ScopeSchema =
|
|
4081
|
-
accountId:
|
|
4195
|
+
var ScopeSchema = z5.object({
|
|
4196
|
+
accountId: z5.string().min(1).max(64)
|
|
4082
4197
|
});
|
|
4083
4198
|
function scopeOf(input) {
|
|
4084
4199
|
return { accountId: input.accountId };
|
|
4085
4200
|
}
|
|
4086
4201
|
var cloudAuthRouter = router({
|
|
4087
4202
|
/** Build the cloud authorization URL to open in the browser. */
|
|
4088
|
-
startLogin: protectedProcedure.input(
|
|
4203
|
+
startLogin: protectedProcedure.input(z5.object({ returnTo: z5.string().url().max(2048) })).mutation(async ({ input }) => {
|
|
4089
4204
|
const callback = callbackForReturnTo(input.returnTo);
|
|
4090
4205
|
if (!callback) {
|
|
4091
4206
|
throw new TRPCError3({
|
|
@@ -4123,7 +4238,7 @@ var cloudAuthRouter = router({
|
|
|
4123
4238
|
* `null` quand rien ne rattache cette organisation à un compte de ce poste :
|
|
4124
4239
|
* l'interface l'affiche comme déconnectée, ce qu'elle est.
|
|
4125
4240
|
*/
|
|
4126
|
-
accountForOrg: protectedProcedure.input(
|
|
4241
|
+
accountForOrg: protectedProcedure.input(z5.object({ orgId: z5.string().min(1).max(128) })).query(async ({ input }) => ({ accountId: await accountForOrg(input.orgId) })),
|
|
4127
4242
|
/**
|
|
4128
4243
|
* Les comptes liés à ce poste, et l'organisation dont chacun répond.
|
|
4129
4244
|
*
|
|
@@ -4179,7 +4294,7 @@ var cloudAuthRouter = router({
|
|
|
4179
4294
|
* drops the session, and the local token is dropped here too, so nothing is
|
|
4180
4295
|
* left holding a dead credential.
|
|
4181
4296
|
*/
|
|
4182
|
-
revokeDevice: protectedProcedure.input(ScopeSchema.extend({ id:
|
|
4297
|
+
revokeDevice: protectedProcedure.input(ScopeSchema.extend({ id: z5.string().min(1).max(128) })).mutation(async ({ input }) => {
|
|
4183
4298
|
const { accountId } = input;
|
|
4184
4299
|
if (!accountId) throw new TRPCError3({ code: "PRECONDITION_FAILED", message: "No cloud account for this scope." });
|
|
4185
4300
|
const res = await cloudFetch2("/api/auth/device/revoke", {
|
|
@@ -4202,17 +4317,17 @@ var cloudAuthRouter = router({
|
|
|
4202
4317
|
* the cloud: the web UI asks its own server, which holds the credential.
|
|
4203
4318
|
*/
|
|
4204
4319
|
proxy: protectedProcedure.input(
|
|
4205
|
-
|
|
4206
|
-
path:
|
|
4207
|
-
method:
|
|
4208
|
-
query:
|
|
4209
|
-
body:
|
|
4320
|
+
z5.object({
|
|
4321
|
+
path: z5.string().min(1).max(512),
|
|
4322
|
+
method: z5.enum(["GET", "POST"]).default("GET"),
|
|
4323
|
+
query: z5.record(z5.string().max(128), z5.string().max(2048)).optional(),
|
|
4324
|
+
body: z5.unknown().optional(),
|
|
4210
4325
|
// Obligatoire, et seul : c'est la porte par laquelle passent tous les
|
|
4211
4326
|
// appels cloud de l'interface. La laisser optionnelle est ce qui a
|
|
4212
4327
|
// permis aux composables partagées de n'envoyer aucune portée pendant
|
|
4213
4328
|
// trente routes, et au serveur de retomber sur « le compte unique du
|
|
4214
4329
|
// poste » — muet dès qu'il y en a eu deux.
|
|
4215
|
-
accountId:
|
|
4330
|
+
accountId: z5.string().min(1).max(64)
|
|
4216
4331
|
})
|
|
4217
4332
|
).mutation(async ({ input }) => {
|
|
4218
4333
|
if (!isAllowedProxyPath(input.path)) {
|
|
@@ -4994,7 +5109,7 @@ function tailTranscript(opts) {
|
|
|
4994
5109
|
|
|
4995
5110
|
// ../server/src/services/ai-runners/claude-pty-runner.ts
|
|
4996
5111
|
async function getAgentManager() {
|
|
4997
|
-
const { agentManager: agentManager2 } = await import("./agent-manager-
|
|
5112
|
+
const { agentManager: agentManager2 } = await import("./agent-manager-HOL7ZG4V.js");
|
|
4998
5113
|
return agentManager2;
|
|
4999
5114
|
}
|
|
5000
5115
|
function buildPtyArgs(params, sessionId, opts) {
|
|
@@ -5686,7 +5801,7 @@ async function shutdownCodexAppServer() {
|
|
|
5686
5801
|
}
|
|
5687
5802
|
}
|
|
5688
5803
|
async function getAgentManager2() {
|
|
5689
|
-
const { agentManager: agentManager2 } = await import("./agent-manager-
|
|
5804
|
+
const { agentManager: agentManager2 } = await import("./agent-manager-HOL7ZG4V.js");
|
|
5690
5805
|
return agentManager2;
|
|
5691
5806
|
}
|
|
5692
5807
|
function parseRuneyaCurlCommand(command) {
|
|
@@ -6124,18 +6239,18 @@ ${prompt}`;
|
|
|
6124
6239
|
};
|
|
6125
6240
|
|
|
6126
6241
|
// ../server/src/trpc/routers/chat.ts
|
|
6127
|
-
var MessageSchema =
|
|
6128
|
-
role:
|
|
6129
|
-
content:
|
|
6242
|
+
var MessageSchema = z6.object({
|
|
6243
|
+
role: z6.enum(["user", "assistant"]),
|
|
6244
|
+
content: z6.string().max(1e5)
|
|
6130
6245
|
});
|
|
6131
|
-
var ImagePartSchema =
|
|
6132
|
-
type:
|
|
6133
|
-
imageId:
|
|
6134
|
-
url:
|
|
6135
|
-
mimeType:
|
|
6136
|
-
altText:
|
|
6246
|
+
var ImagePartSchema = z6.object({
|
|
6247
|
+
type: z6.literal("image"),
|
|
6248
|
+
imageId: z6.string().regex(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i),
|
|
6249
|
+
url: z6.string().max(500),
|
|
6250
|
+
mimeType: z6.string().max(100),
|
|
6251
|
+
altText: z6.string().max(500).optional()
|
|
6137
6252
|
});
|
|
6138
|
-
var ImagePartsSchema =
|
|
6253
|
+
var ImagePartsSchema = z6.array(ImagePartSchema).max(5).optional();
|
|
6139
6254
|
var LANGUAGE_INSTRUCTION = "Always respond in the same language the user writes in.";
|
|
6140
6255
|
async function buildSystemPrompt(apiKey) {
|
|
6141
6256
|
const allServices = await serviceStore.list();
|
|
@@ -6523,24 +6638,24 @@ async function startCodexSession(convId, prompt, opts = {}) {
|
|
|
6523
6638
|
});
|
|
6524
6639
|
return { session, done };
|
|
6525
6640
|
}
|
|
6526
|
-
var MessagePartSchema =
|
|
6527
|
-
|
|
6528
|
-
|
|
6529
|
-
|
|
6530
|
-
type:
|
|
6641
|
+
var MessagePartSchema = z6.discriminatedUnion("type", [
|
|
6642
|
+
z6.object({ type: z6.literal("thinking"), text: z6.string().max(1e5) }),
|
|
6643
|
+
z6.object({ type: z6.literal("text"), text: z6.string().max(1e5) }),
|
|
6644
|
+
z6.object({
|
|
6645
|
+
type: z6.literal("tool"),
|
|
6531
6646
|
id: Id128Schema,
|
|
6532
6647
|
name: Id128Schema,
|
|
6533
|
-
input:
|
|
6534
|
-
rawInput:
|
|
6535
|
-
result:
|
|
6536
|
-
isError:
|
|
6537
|
-
pending:
|
|
6648
|
+
input: z6.record(z6.string(), z6.unknown()).optional(),
|
|
6649
|
+
rawInput: z6.string().max(1e4).optional(),
|
|
6650
|
+
result: z6.unknown().optional(),
|
|
6651
|
+
isError: z6.boolean().optional(),
|
|
6652
|
+
pending: z6.boolean()
|
|
6538
6653
|
})
|
|
6539
6654
|
]);
|
|
6540
|
-
var StoredMessageSchema =
|
|
6541
|
-
role:
|
|
6542
|
-
content:
|
|
6543
|
-
parts:
|
|
6655
|
+
var StoredMessageSchema = z6.object({
|
|
6656
|
+
role: z6.enum(["user", "assistant"]),
|
|
6657
|
+
content: z6.string().max(1e5),
|
|
6658
|
+
parts: z6.array(MessagePartSchema).max(200).optional()
|
|
6544
6659
|
});
|
|
6545
6660
|
async function conversationCwd(conv) {
|
|
6546
6661
|
return resolveConversationCwd(conv.id);
|
|
@@ -6557,7 +6672,7 @@ var chatRouter = router({
|
|
|
6557
6672
|
* et sans le même filtre il y reversait toutes les conversations de la
|
|
6558
6673
|
* machine, une seconde après un chargement pourtant filtré.
|
|
6559
6674
|
*/
|
|
6560
|
-
onChanged: protectedProcedure.input(
|
|
6675
|
+
onChanged: protectedProcedure.input(z6.object({
|
|
6561
6676
|
projectId: Id128Schema.optional(),
|
|
6562
6677
|
orgId: Id128Schema.nullable().optional()
|
|
6563
6678
|
}).optional()).subscription(async function* ({ input }) {
|
|
@@ -6605,7 +6720,7 @@ var chatRouter = router({
|
|
|
6605
6720
|
* reachable where they were written, without leaking into every other
|
|
6606
6721
|
* organization's projects.
|
|
6607
6722
|
*/
|
|
6608
|
-
list: protectedProcedure.input(
|
|
6723
|
+
list: protectedProcedure.input(z6.object({
|
|
6609
6724
|
projectId: Id128Schema.optional(),
|
|
6610
6725
|
orgId: Id128Schema.nullable().optional()
|
|
6611
6726
|
}).optional()).query(async ({ input }) => {
|
|
@@ -6613,24 +6728,24 @@ var chatRouter = router({
|
|
|
6613
6728
|
if (!projectId) return conversationStore.list();
|
|
6614
6729
|
return conversationStore.listForProject({ id: projectId, orgId: input?.orgId });
|
|
6615
6730
|
}),
|
|
6616
|
-
get: protectedProcedure.input(
|
|
6731
|
+
get: protectedProcedure.input(z6.object({ id: Id128Schema })).query(async ({ input }) => {
|
|
6617
6732
|
const conv = await conversationStore.get(input.id);
|
|
6618
6733
|
if (!conv) throw new TRPCError4({ code: "NOT_FOUND", message: "Conversation not found" });
|
|
6619
6734
|
return conv;
|
|
6620
6735
|
}),
|
|
6621
|
-
create: protectedProcedure.input(
|
|
6736
|
+
create: protectedProcedure.input(z6.object({
|
|
6622
6737
|
title: ShortString200Schema.optional(),
|
|
6623
|
-
isCli:
|
|
6624
|
-
runner:
|
|
6738
|
+
isCli: z6.boolean().optional(),
|
|
6739
|
+
runner: z6.enum(["claude-code", "codex"]).optional(),
|
|
6625
6740
|
providerId: Id128Schema.optional(),
|
|
6626
6741
|
scenarioId: Id128Schema.optional(),
|
|
6627
|
-
scenarioInput:
|
|
6742
|
+
scenarioInput: z6.string().max(1e5).optional(),
|
|
6628
6743
|
kanbanBoardId: Id128Schema.optional(),
|
|
6629
6744
|
kanbanCardId: Id128Schema.optional(),
|
|
6630
6745
|
// The project the conversation is about: only the caller knows which
|
|
6631
6746
|
// one it is looking at.
|
|
6632
6747
|
projectId: Id128Schema.optional(),
|
|
6633
|
-
orgId:
|
|
6748
|
+
orgId: z6.string().max(128).nullable().optional()
|
|
6634
6749
|
})).mutation(async ({ input }) => {
|
|
6635
6750
|
let scenario = null;
|
|
6636
6751
|
if (input.scenarioId) {
|
|
@@ -6664,13 +6779,13 @@ var chatRouter = router({
|
|
|
6664
6779
|
}
|
|
6665
6780
|
return conv;
|
|
6666
6781
|
}),
|
|
6667
|
-
update: protectedProcedure.input(
|
|
6782
|
+
update: protectedProcedure.input(z6.object({
|
|
6668
6783
|
id: Id128Schema,
|
|
6669
6784
|
title: ShortString200Schema.optional(),
|
|
6670
|
-
messages:
|
|
6671
|
-
contextUsage:
|
|
6672
|
-
inputTokens:
|
|
6673
|
-
contextWindow:
|
|
6785
|
+
messages: z6.array(StoredMessageSchema).max(500).optional(),
|
|
6786
|
+
contextUsage: z6.object({
|
|
6787
|
+
inputTokens: z6.number().int().nonnegative(),
|
|
6788
|
+
contextWindow: z6.number().int().positive()
|
|
6674
6789
|
}).optional()
|
|
6675
6790
|
})).mutation(async ({ input }) => {
|
|
6676
6791
|
const conv = await conversationStore.update(input.id, { title: input.title, messages: input.messages, contextUsage: input.contextUsage });
|
|
@@ -6684,10 +6799,10 @@ var chatRouter = router({
|
|
|
6684
6799
|
* messages, et un réglage qui voyage avec 500 messages se perdrait dans un
|
|
6685
6800
|
* patch dont ce n'est pas le sujet.
|
|
6686
6801
|
*/
|
|
6687
|
-
setCompanion: protectedProcedure.input(
|
|
6802
|
+
setCompanion: protectedProcedure.input(z6.object({
|
|
6688
6803
|
id: Id128Schema,
|
|
6689
|
-
enabled:
|
|
6690
|
-
runner:
|
|
6804
|
+
enabled: z6.boolean(),
|
|
6805
|
+
runner: z6.enum(["claude-code", "codex"]).optional()
|
|
6691
6806
|
})).mutation(async ({ input }) => {
|
|
6692
6807
|
const existing = await conversationStore.get(input.id);
|
|
6693
6808
|
if (!existing) throw new TRPCError4({ code: "NOT_FOUND", message: "Conversation not found" });
|
|
@@ -6710,7 +6825,7 @@ var chatRouter = router({
|
|
|
6710
6825
|
* compagnon silencieux parce qu'il n'avait rien à dire et un message qui
|
|
6711
6826
|
* n'a pas pu être transmis se ressemblent parfaitement sans cette trace.
|
|
6712
6827
|
*/
|
|
6713
|
-
companionDelivery: protectedProcedure.input(
|
|
6828
|
+
companionDelivery: protectedProcedure.input(z6.object({ id: Id128Schema })).query(async ({ input }) => {
|
|
6714
6829
|
const conv = await conversationStore.get(input.id);
|
|
6715
6830
|
const companionId = conv?.companionConversationId;
|
|
6716
6831
|
const running = isCompanionThinking(input.id) || (companionId ? activeSessionRegistry.get(companionId)?.status === "running" : false);
|
|
@@ -6760,7 +6875,7 @@ var chatRouter = router({
|
|
|
6760
6875
|
* route emprunte exactement le chemin de livraison, sans le jugement, et
|
|
6761
6876
|
* rend PAR OÙ le message est passé.
|
|
6762
6877
|
*/
|
|
6763
|
-
testCompanionBridge: protectedProcedure.input(
|
|
6878
|
+
testCompanionBridge: protectedProcedure.input(z6.object({ id: Id128Schema })).mutation(async ({ input }) => {
|
|
6764
6879
|
const conv = await conversationStore.get(input.id);
|
|
6765
6880
|
if (!conv) throw new TRPCError4({ code: "NOT_FOUND", message: "Conversation not found" });
|
|
6766
6881
|
const route = await deliverToMainConversation(
|
|
@@ -6781,7 +6896,7 @@ var chatRouter = router({
|
|
|
6781
6896
|
* entier, bien plus qu'une requête ne doit rester ouverte. L'interface suit
|
|
6782
6897
|
* l'avancement par l'état poussé « il relit », déjà en place.
|
|
6783
6898
|
*/
|
|
6784
|
-
runCompanionNow: protectedProcedure.input(
|
|
6899
|
+
runCompanionNow: protectedProcedure.input(z6.object({ id: Id128Schema })).mutation(async ({ input }) => {
|
|
6785
6900
|
const conv = await conversationStore.get(input.id);
|
|
6786
6901
|
if (!conv) throw new TRPCError4({ code: "NOT_FOUND", message: "Conversation not found" });
|
|
6787
6902
|
if (conv.isCompanion) {
|
|
@@ -6798,7 +6913,7 @@ var chatRouter = router({
|
|
|
6798
6913
|
});
|
|
6799
6914
|
return { started: true };
|
|
6800
6915
|
}),
|
|
6801
|
-
delete: protectedProcedure.input(
|
|
6916
|
+
delete: protectedProcedure.input(z6.object({ id: Id128Schema })).mutation(async ({ input }) => {
|
|
6802
6917
|
const existing = await conversationStore.get(input.id);
|
|
6803
6918
|
if (!existing) throw new TRPCError4({ code: "NOT_FOUND", message: "Conversation not found" });
|
|
6804
6919
|
resetRelaunches(input.id);
|
|
@@ -6826,18 +6941,29 @@ var chatRouter = router({
|
|
|
6826
6941
|
(err) => console.error("[chat.delete] Image cleanup error:", err)
|
|
6827
6942
|
);
|
|
6828
6943
|
}),
|
|
6829
|
-
archive: protectedProcedure.input(
|
|
6944
|
+
archive: protectedProcedure.input(z6.object({ id: Id128Schema, archived: z6.boolean() })).mutation(async ({ input }) => {
|
|
6830
6945
|
const conv = await conversationStore.update(input.id, { archived: input.archived });
|
|
6831
6946
|
if (!conv) throw new TRPCError4({ code: "NOT_FOUND", message: "Conversation not found" });
|
|
6832
6947
|
return conv;
|
|
6948
|
+
}),
|
|
6949
|
+
pin: protectedProcedure.input(z6.object({ id: Id128Schema, pinned: z6.boolean() })).mutation(async ({ input }) => {
|
|
6950
|
+
const conv = await conversationStore.setPinned(input.id, input.pinned);
|
|
6951
|
+
if (!conv) throw new TRPCError4({ code: "NOT_FOUND", message: "Conversation not found" });
|
|
6952
|
+
return conv;
|
|
6953
|
+
}),
|
|
6954
|
+
// L'ordre ne vaut que pour les ids donnés : l'écran ne connaît que les
|
|
6955
|
+
// conversations du projet courant, et les épinglées des autres projets
|
|
6956
|
+
// n'ont pas à bouger parce qu'on a rangé celles-ci.
|
|
6957
|
+
reorderPinned: protectedProcedure.input(z6.object({ ids: z6.array(Id128Schema).max(500) })).mutation(async ({ input }) => {
|
|
6958
|
+
await conversationStore.reorderPinned(input.ids);
|
|
6833
6959
|
})
|
|
6834
6960
|
}),
|
|
6835
|
-
listModels: protectedProcedure.input(
|
|
6961
|
+
listModels: protectedProcedure.input(z6.object({
|
|
6836
6962
|
providerId: Id128Schema.optional(),
|
|
6837
6963
|
// Le projet dit de quelle organisation lire les fournisseurs ; absent,
|
|
6838
6964
|
// ce sont ceux du poste.
|
|
6839
6965
|
projectId: Id128Schema.optional(),
|
|
6840
|
-
orgId:
|
|
6966
|
+
orgId: z6.string().max(128).nullable().optional()
|
|
6841
6967
|
}).optional()).query(async ({ input }) => {
|
|
6842
6968
|
const active = await getActiveProvider(
|
|
6843
6969
|
input?.providerId,
|
|
@@ -6850,7 +6976,7 @@ var chatRouter = router({
|
|
|
6850
6976
|
return [];
|
|
6851
6977
|
}
|
|
6852
6978
|
}),
|
|
6853
|
-
checkCliAvailability: protectedProcedure.input(
|
|
6979
|
+
checkCliAvailability: protectedProcedure.input(z6.object({ agentId: Id128Schema.optional() }).optional()).query(async ({ input }) => {
|
|
6854
6980
|
if (input?.agentId) {
|
|
6855
6981
|
try {
|
|
6856
6982
|
const res = await agentManager.agentQuery(
|
|
@@ -6868,12 +6994,12 @@ var chatRouter = router({
|
|
|
6868
6994
|
]);
|
|
6869
6995
|
return { available: claudeOk, codexAvailable: codexOk };
|
|
6870
6996
|
}),
|
|
6871
|
-
enhanceScenarioPrompt: protectedProcedure.input(
|
|
6872
|
-
text:
|
|
6997
|
+
enhanceScenarioPrompt: protectedProcedure.input(z6.object({
|
|
6998
|
+
text: z6.string().max(1e4),
|
|
6873
6999
|
providerId: Id128Schema.optional(),
|
|
6874
|
-
model:
|
|
7000
|
+
model: z6.string().max(200).optional(),
|
|
6875
7001
|
projectId: Id128Schema.optional(),
|
|
6876
|
-
orgId:
|
|
7002
|
+
orgId: z6.string().max(128).nullable().optional()
|
|
6877
7003
|
})).mutation(async ({ input }) => {
|
|
6878
7004
|
const active = await getActiveProvider(
|
|
6879
7005
|
input.providerId,
|
|
@@ -6930,22 +7056,22 @@ Return ONLY the improved text, no explanation, no preamble.`;
|
|
|
6930
7056
|
}
|
|
6931
7057
|
}),
|
|
6932
7058
|
getStreamingStatus: protectedProcedure.query(() => activeSessionRegistry.listActive()),
|
|
6933
|
-
stopSession: protectedProcedure.input(
|
|
7059
|
+
stopSession: protectedProcedure.input(z6.object({ conversationId: ConversationIdSchema })).mutation(({ input }) => {
|
|
6934
7060
|
if (process.env.RUNEYA_DEBUG) console.log("[chat]: stopSession");
|
|
6935
7061
|
const killed = activeSessionRegistry.kill(input.conversationId);
|
|
6936
7062
|
if (!killed) throw new TRPCError4({ code: "NOT_FOUND", message: "No active session for this conversation" });
|
|
6937
7063
|
return { ok: true };
|
|
6938
7064
|
}),
|
|
6939
|
-
streamViaClaudeCode: protectedProcedure.input(
|
|
7065
|
+
streamViaClaudeCode: protectedProcedure.input(z6.object({
|
|
6940
7066
|
conversationId: ConversationIdSchema,
|
|
6941
|
-
prompt:
|
|
6942
|
-
contextNote:
|
|
7067
|
+
prompt: z6.string().max(1e5),
|
|
7068
|
+
contextNote: z6.string().max(2e5).optional(),
|
|
6943
7069
|
model: ShortString200Schema.optional(),
|
|
6944
|
-
effort:
|
|
6945
|
-
reconnect:
|
|
7070
|
+
effort: z6.enum(["low", "medium", "high"]).optional(),
|
|
7071
|
+
reconnect: z6.boolean().optional(),
|
|
6946
7072
|
agentId: Id128Schema.optional(),
|
|
6947
|
-
environmentId:
|
|
6948
|
-
imageIds:
|
|
7073
|
+
environmentId: z6.string().max(128).optional(),
|
|
7074
|
+
imageIds: z6.array(z6.string().regex(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i)).max(5).optional(),
|
|
6949
7075
|
imageParts: ImagePartsSchema
|
|
6950
7076
|
})).subscription(async function* ({ input, ctx, signal }) {
|
|
6951
7077
|
if (process.env.RUNEYA_DEBUG) console.log("[chat]: Reconnect");
|
|
@@ -7047,15 +7173,15 @@ ${imagePaths.map((p) => `Image: ${p}`).join("\n")}` : cliPrompt;
|
|
|
7047
7173
|
if (process.env.RUNEYA_DEBUG) console.log("[chat]: drainSession...");
|
|
7048
7174
|
yield* drainSession(session, signal, false);
|
|
7049
7175
|
}),
|
|
7050
|
-
streamViaCodex: protectedProcedure.input(
|
|
7176
|
+
streamViaCodex: protectedProcedure.input(z6.object({
|
|
7051
7177
|
conversationId: ConversationIdSchema,
|
|
7052
|
-
prompt:
|
|
7053
|
-
contextNote:
|
|
7178
|
+
prompt: z6.string().max(1e5),
|
|
7179
|
+
contextNote: z6.string().max(2e5).optional(),
|
|
7054
7180
|
model: ShortString200Schema.optional(),
|
|
7055
|
-
reconnect:
|
|
7181
|
+
reconnect: z6.boolean().optional(),
|
|
7056
7182
|
agentId: Id128Schema.optional(),
|
|
7057
|
-
environmentId:
|
|
7058
|
-
imageIds:
|
|
7183
|
+
environmentId: z6.string().max(128).optional(),
|
|
7184
|
+
imageIds: z6.array(z6.string().regex(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i)).max(5).optional(),
|
|
7059
7185
|
imageParts: ImagePartsSchema
|
|
7060
7186
|
})).subscription(async function* ({ input, ctx, signal }) {
|
|
7061
7187
|
const existingSession = activeSessionRegistry.get(input.conversationId);
|
|
@@ -7125,13 +7251,13 @@ ${input.prompt}` : input.prompt;
|
|
|
7125
7251
|
});
|
|
7126
7252
|
yield* drainSession(session, signal, false);
|
|
7127
7253
|
}),
|
|
7128
|
-
send: protectedProcedure.input(
|
|
7254
|
+
send: protectedProcedure.input(z6.object({
|
|
7129
7255
|
conversationId: ConversationIdSchema,
|
|
7130
|
-
messages:
|
|
7256
|
+
messages: z6.array(MessageSchema).min(0).max(100),
|
|
7131
7257
|
model: ShortString200Schema.optional(),
|
|
7132
|
-
contextNote:
|
|
7133
|
-
reconnect:
|
|
7134
|
-
imageIds:
|
|
7258
|
+
contextNote: z6.string().max(2e5).optional(),
|
|
7259
|
+
reconnect: z6.boolean().optional(),
|
|
7260
|
+
imageIds: z6.array(z6.string().regex(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i)).max(5).optional(),
|
|
7135
7261
|
imageParts: ImagePartsSchema
|
|
7136
7262
|
})).subscription(async function* ({ input, ctx, signal }) {
|
|
7137
7263
|
const existingSession = activeSessionRegistry.get(input.conversationId);
|
|
@@ -7244,25 +7370,25 @@ ${input.prompt}` : input.prompt;
|
|
|
7244
7370
|
// ── PTY passthrough (interactive Claude Code session) ────────────────────
|
|
7245
7371
|
pty: router({
|
|
7246
7372
|
/** Start a PTY session running `claude --resume <sessionId>` (or fresh). */
|
|
7247
|
-
start: protectedProcedure.input(
|
|
7248
|
-
agentId:
|
|
7249
|
-
sessionId:
|
|
7250
|
-
runner:
|
|
7251
|
-
resume:
|
|
7252
|
-
model:
|
|
7253
|
-
cwd:
|
|
7373
|
+
start: protectedProcedure.input(z6.object({
|
|
7374
|
+
agentId: z6.string().max(128).optional(),
|
|
7375
|
+
sessionId: z6.string().max(128).optional(),
|
|
7376
|
+
runner: z6.enum(["claude-code", "codex"]).default("claude-code"),
|
|
7377
|
+
resume: z6.boolean().default(false),
|
|
7378
|
+
model: z6.string().max(128).optional(),
|
|
7379
|
+
cwd: z6.string().max(4096).optional(),
|
|
7254
7380
|
/** Anchors the session when no explicit cwd is given. */
|
|
7255
|
-
serviceId:
|
|
7381
|
+
serviceId: z6.string().max(128).optional(),
|
|
7256
7382
|
projectId: Id128Schema.optional(),
|
|
7257
|
-
orgId:
|
|
7258
|
-
cols:
|
|
7259
|
-
rows:
|
|
7260
|
-
enableMcp:
|
|
7261
|
-
apiBaseUrl:
|
|
7262
|
-
environmentId:
|
|
7263
|
-
attachedContexts:
|
|
7264
|
-
label:
|
|
7265
|
-
text:
|
|
7383
|
+
orgId: z6.string().max(128).nullable().optional(),
|
|
7384
|
+
cols: z6.number().int().min(1).max(1e3).default(120),
|
|
7385
|
+
rows: z6.number().int().min(1).max(1e3).default(30),
|
|
7386
|
+
enableMcp: z6.boolean().default(false),
|
|
7387
|
+
apiBaseUrl: z6.string().max(512).optional(),
|
|
7388
|
+
environmentId: z6.string().max(128).optional(),
|
|
7389
|
+
attachedContexts: z6.array(z6.object({
|
|
7390
|
+
label: z6.string().max(200),
|
|
7391
|
+
text: z6.string().max(1e6)
|
|
7266
7392
|
})).max(20).optional()
|
|
7267
7393
|
})).mutation(async ({ input, ctx }) => {
|
|
7268
7394
|
const t0 = Date.now();
|
|
@@ -7420,10 +7546,10 @@ Context:
|
|
|
7420
7546
|
return { spawnId: res.spawnId, agentId, reattached: false };
|
|
7421
7547
|
}),
|
|
7422
7548
|
/** Subscribe to PTY output stream (raw text with ANSI). */
|
|
7423
|
-
stream: protectedProcedure.input(
|
|
7424
|
-
agentId:
|
|
7425
|
-
spawnId:
|
|
7426
|
-
fromOffset:
|
|
7549
|
+
stream: protectedProcedure.input(z6.object({
|
|
7550
|
+
agentId: z6.string().max(128).optional(),
|
|
7551
|
+
spawnId: z6.string().max(128),
|
|
7552
|
+
fromOffset: z6.number().int().min(0).default(0)
|
|
7427
7553
|
})).subscription(async function* ({ input, signal }) {
|
|
7428
7554
|
const agentId = input.agentId ?? agentManager.getDefaultAgentId();
|
|
7429
7555
|
if (!agentId) throw new TRPCError4({ code: "PRECONDITION_FAILED", message: "No agent available" });
|
|
@@ -7478,10 +7604,10 @@ Context:
|
|
|
7478
7604
|
}
|
|
7479
7605
|
}),
|
|
7480
7606
|
/** Write input to a PTY session (keystrokes from xterm). */
|
|
7481
|
-
write: protectedProcedure.input(
|
|
7482
|
-
agentId:
|
|
7483
|
-
spawnId:
|
|
7484
|
-
data:
|
|
7607
|
+
write: protectedProcedure.input(z6.object({
|
|
7608
|
+
agentId: z6.string().max(128).optional(),
|
|
7609
|
+
spawnId: z6.string().max(128),
|
|
7610
|
+
data: z6.string().max(1e6)
|
|
7485
7611
|
})).mutation(async ({ input }) => {
|
|
7486
7612
|
const agentId = input.agentId ?? agentManager.getDefaultAgentId();
|
|
7487
7613
|
if (!agentId) throw new TRPCError4({ code: "PRECONDITION_FAILED", message: "No agent available" });
|
|
@@ -7491,11 +7617,11 @@ Context:
|
|
|
7491
7617
|
});
|
|
7492
7618
|
}),
|
|
7493
7619
|
/** Resize a PTY session. */
|
|
7494
|
-
resize: protectedProcedure.input(
|
|
7495
|
-
agentId:
|
|
7496
|
-
spawnId:
|
|
7497
|
-
cols:
|
|
7498
|
-
rows:
|
|
7620
|
+
resize: protectedProcedure.input(z6.object({
|
|
7621
|
+
agentId: z6.string().max(128).optional(),
|
|
7622
|
+
spawnId: z6.string().max(128),
|
|
7623
|
+
cols: z6.number().int().min(1).max(1e3),
|
|
7624
|
+
rows: z6.number().int().min(1).max(1e3)
|
|
7499
7625
|
})).mutation(async ({ input }) => {
|
|
7500
7626
|
const agentId = input.agentId ?? agentManager.getDefaultAgentId();
|
|
7501
7627
|
if (!agentId) throw new TRPCError4({ code: "PRECONDITION_FAILED", message: "No agent available" });
|
|
@@ -7511,11 +7637,11 @@ Context:
|
|
|
7511
7637
|
* picks it up. Returns the tmp path and which clipboard method succeeded
|
|
7512
7638
|
* (null if none — caller should inject `@<path>` instead of Ctrl+V).
|
|
7513
7639
|
*/
|
|
7514
|
-
pasteImage: protectedProcedure.input(
|
|
7515
|
-
agentId:
|
|
7516
|
-
sessionId:
|
|
7517
|
-
mimeType:
|
|
7518
|
-
base64:
|
|
7640
|
+
pasteImage: protectedProcedure.input(z6.object({
|
|
7641
|
+
agentId: z6.string().max(128).optional(),
|
|
7642
|
+
sessionId: z6.string().max(128).optional(),
|
|
7643
|
+
mimeType: z6.string().max(64),
|
|
7644
|
+
base64: z6.string().max(15e6)
|
|
7519
7645
|
})).mutation(async ({ input }) => {
|
|
7520
7646
|
const agentId = input.agentId ?? agentManager.getDefaultAgentId();
|
|
7521
7647
|
if (!agentId) throw new TRPCError4({ code: "PRECONDITION_FAILED", message: "No agent available" });
|
|
@@ -7533,7 +7659,7 @@ Context:
|
|
|
7533
7659
|
* Read the transcript Claude Code stores on disk for a given session.
|
|
7534
7660
|
* Returns parsed JSONL entries (user / assistant messages, tool uses, etc.).
|
|
7535
7661
|
*/
|
|
7536
|
-
transcript: protectedProcedure.input(
|
|
7662
|
+
transcript: protectedProcedure.input(z6.object({ sessionId: z6.string().max(128) })).query(async ({ input }) => {
|
|
7537
7663
|
return readClaudeTranscript(input.sessionId);
|
|
7538
7664
|
}),
|
|
7539
7665
|
/**
|
|
@@ -7541,9 +7667,9 @@ Context:
|
|
|
7541
7667
|
* when was the transcript JSONL last touched? Used by the non-PTY view
|
|
7542
7668
|
* to show a "Claude is thinking…" indicator while output streams.
|
|
7543
7669
|
*/
|
|
7544
|
-
activity: protectedProcedure.input(
|
|
7545
|
-
agentId:
|
|
7546
|
-
sessionId:
|
|
7670
|
+
activity: protectedProcedure.input(z6.object({
|
|
7671
|
+
agentId: z6.string().max(128).optional(),
|
|
7672
|
+
sessionId: z6.string().max(128)
|
|
7547
7673
|
})).query(async ({ input }) => {
|
|
7548
7674
|
const agentId = input.agentId ?? agentManager.getDefaultAgentId();
|
|
7549
7675
|
let running = false;
|
|
@@ -7569,7 +7695,7 @@ Context:
|
|
|
7569
7695
|
* them on the conversation, so the non-PTY chat view stays in sync.
|
|
7570
7696
|
* Uses the conversation id as session id (PTY sessions are spawned that way).
|
|
7571
7697
|
*/
|
|
7572
|
-
syncTranscript: protectedProcedure.input(
|
|
7698
|
+
syncTranscript: protectedProcedure.input(z6.object({ conversationId: ConversationIdSchema })).mutation(async ({ input }) => {
|
|
7573
7699
|
const conv = await conversationStore.get(input.conversationId);
|
|
7574
7700
|
if (!conv) {
|
|
7575
7701
|
throw new TRPCError4({ code: "NOT_FOUND", message: `Conversation ${input.conversationId} not found` });
|
|
@@ -7583,14 +7709,14 @@ Context:
|
|
|
7583
7709
|
* with the given sessionId. Used to benchmark the PTY → tRPC → xterm.js
|
|
7584
7710
|
* pipeline. Open the conversation in PTY mode to attach to it.
|
|
7585
7711
|
*/
|
|
7586
|
-
debugStress: protectedProcedure.input(
|
|
7587
|
-
sessionId:
|
|
7588
|
-
agentId:
|
|
7589
|
-
bytesPerSec:
|
|
7590
|
-
chunkSize:
|
|
7591
|
-
durationMs:
|
|
7592
|
-
cols:
|
|
7593
|
-
rows:
|
|
7712
|
+
debugStress: protectedProcedure.input(z6.object({
|
|
7713
|
+
sessionId: z6.string().max(128),
|
|
7714
|
+
agentId: z6.string().max(128).optional(),
|
|
7715
|
+
bytesPerSec: z6.number().int().min(100).max(1e7).default(5e4),
|
|
7716
|
+
chunkSize: z6.number().int().min(1).max(65536).default(256),
|
|
7717
|
+
durationMs: z6.number().int().min(0).max(36e5).default(0),
|
|
7718
|
+
cols: z6.number().int().min(1).max(1e3).default(120),
|
|
7719
|
+
rows: z6.number().int().min(1).max(1e3).default(30)
|
|
7594
7720
|
})).mutation(async ({ input }) => {
|
|
7595
7721
|
const agentId = input.agentId ?? agentManager.getDefaultAgentId();
|
|
7596
7722
|
if (!agentId) throw new TRPCError4({ code: "PRECONDITION_FAILED", message: "No agent available" });
|
|
@@ -7637,9 +7763,9 @@ Context:
|
|
|
7637
7763
|
return { spawnId: res.spawnId, agentId, stressSessionId };
|
|
7638
7764
|
}),
|
|
7639
7765
|
/** Kill a PTY session. */
|
|
7640
|
-
kill: protectedProcedure.input(
|
|
7641
|
-
agentId:
|
|
7642
|
-
spawnId:
|
|
7766
|
+
kill: protectedProcedure.input(z6.object({
|
|
7767
|
+
agentId: z6.string().max(128).optional(),
|
|
7768
|
+
spawnId: z6.string().max(128)
|
|
7643
7769
|
})).mutation(async ({ input }) => {
|
|
7644
7770
|
const agentId = input.agentId ?? agentManager.getDefaultAgentId();
|
|
7645
7771
|
if (!agentId) throw new TRPCError4({ code: "PRECONDITION_FAILED", message: "No agent available" });
|
|
@@ -7661,6 +7787,7 @@ export {
|
|
|
7661
7787
|
requireServiceAction,
|
|
7662
7788
|
getAllowedServiceIds,
|
|
7663
7789
|
requireEnvAction,
|
|
7790
|
+
canEnvAction,
|
|
7664
7791
|
appVersion,
|
|
7665
7792
|
APP_VERSION_HEADER,
|
|
7666
7793
|
cloudSessionStore,
|
|
@@ -7718,4 +7845,4 @@ export {
|
|
|
7718
7845
|
startCliSession,
|
|
7719
7846
|
chatRouter
|
|
7720
7847
|
};
|
|
7721
|
-
//# sourceMappingURL=chunk-
|
|
7848
|
+
//# sourceMappingURL=chunk-WE6EOX4C.js.map
|