@runeya/runeya 2.0.117 → 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-QLIFNGA2.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-K3H5WJRQ.js → chunk-WE6EOX4C.js} +331 -215
- package/chunk-WE6EOX4C.js.map +1 -0
- package/{chunk-F7A7XH3N.js → chunk-XIRMRWVU.js} +18 -6
- package/{chunk-F7A7XH3N.js.map → chunk-XIRMRWVU.js.map} +1 -1
- package/{companion-RLSRXTNO.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-Q2AWI57U.js → src-VCZQLW2Q.js} +92 -11
- 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-DoAjQCrb.js → EditorIcon-CtWlXuLo.js} +2 -2
- package/web/assets/{EnvironmentForm-CgsN_8EO.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/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-BAThUaVo.js → ProcessControls-58Ablgi0.js} +1 -1
- package/web/assets/ProcessDetailPage-BUjh1O5a.js +1 -0
- package/web/assets/{ProcessMetrics-BnfF7Esx.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-DVfF8-mq.js → autocomplete-DJxf2wqE.js} +3 -3
- package/web/assets/{basic-shape-diamond.svg-D8aU5xwY.js → basic-shape-diamond.svg-COr16MGG.js} +1 -1
- package/web/assets/{basic-shape-hexagon.svg-C48LyQUE.js → basic-shape-hexagon.svg-BzYcuOkI.js} +1 -1
- package/web/assets/{basic-shape-primary-circle-ellipse-round.svg-Cn4csfd0.js → basic-shape-primary-circle-ellipse-round.svg-Bw1gV38D.js} +1 -1
- package/web/assets/{basic-shape-primary-square-rectangle.svg-C9Hhhoy0.js → basic-shape-primary-square-rectangle.svg-Cn_NwW2C.js} +1 -1
- package/web/assets/{basic-shape-shield.svg-BtyWy6Hb.js → basic-shape-shield.svg-DMZviUvu.js} +1 -1
- package/web/assets/{browser-SQJu0kqP.js → browser-72MoXpHU.js} +1 -1
- package/web/assets/{browser-D-xywlrw.js → browser-APehRX_-.js} +1 -1
- package/web/assets/card-DWOaM9R5.js +32 -0
- package/web/assets/{checkbox-bUKoFar-.js → checkbox-3MTmcxWS.js} +3 -3
- package/web/assets/{chip-FS8CF7nQ.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-D9RcOxiL.js → cloud-session-CMcFsrn6.js} +2 -2
- 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-MSBAl_IT.js → computer-device-desktop-monitor.svg-BLXia0GM.js} +1 -1
- package/web/assets/{computer-device-desktop.svg-CEWAl-1r.js → computer-device-desktop.svg-gunjcHFA.js} +1 -1
- package/web/assets/{computer-device-laptop.svg-DQ1d2ADo.js → computer-device-laptop.svg-Bw0yugEp.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-android-samsung-back.svg-Dzz2XEW6.js → computer-device-mobile-phone-android-samsung-back.svg-C0WpuMdy.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-android-samsung.svg-BfiSZRYt.js → computer-device-mobile-phone-android-samsung.svg-CNHYgja0.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-iphone-x-back.svg-BKDNa4ua.js → computer-device-mobile-phone-iphone-x-back.svg-DggESCcp.js} +1 -1
- package/web/assets/{computer-device-mobile-phone-iphone-x.svg-CxwOtpMv.js → computer-device-mobile-phone-iphone-x.svg-CDSSQDCC.js} +1 -1
- package/web/assets/{computer-device-mobile-tablet-touch.svg-D-d6m_kv.js → computer-device-mobile-tablet-touch.svg-DY9TWMUB.js} +1 -1
- package/web/assets/{computer-device-mobile-tablet.svg-D8b5on89.js → computer-device-mobile-tablet.svg-D_hfbqaw.js} +1 -1
- package/web/assets/{computer-device-network-ethernet-cat6.svg-c-FuyKH3.js → computer-device-network-ethernet-cat6.svg-CCoszOYr.js} +1 -1
- package/web/assets/{computer-device-network-lan-www.svg-DVIwP-3w.js → computer-device-network-lan-www.svg-CClZA2cg.js} +1 -1
- package/web/assets/{computer-device-network-wifi-connection.svg-BXtM5IP8.js → computer-device-network-wifi-connection.svg-DHLQJkPy.js} +1 -1
- package/web/assets/{computer-device-network-wifi-router.svg-D0MA5S5K.js → computer-device-network-wifi-router.svg-xActAcrc.js} +1 -1
- package/web/assets/{cssMode-C1ocy9fG.js → cssMode-UiVbv5-d.js} +1 -1
- package/web/assets/{divider-DaQ67Uqu.js → divider-CHpP62xs.js} +2 -2
- package/web/assets/{docx-preview-D2pXpGJL.js → docx-preview-CZnedVKH.js} +1 -1
- package/web/assets/{ecology-science-erlenmeyer-flask.svg-BC5h7SBw.js → ecology-science-erlenmeyer-flask.svg-BNQkfPKh.js} +1 -1
- package/web/assets/{fieldset-DASecQzo.js → fieldset-BEeYMjpD.js} +2 -2
- package/web/assets/{freemarker2-Co24PBKb.js → freemarker2-DEBZcua_.js} +1 -1
- package/web/assets/{handlebars-BiGhhRTT.js → handlebars-BNH-tM3s.js} +1 -1
- package/web/assets/{html-jVmuH_kg.js → html-BFhZuj1f.js} +1 -1
- package/web/assets/{htmlMode-DfGryePh.js → htmlMode-DsWwMsD5.js} +1 -1
- package/web/assets/{image-flash-lightning.svg-pmP3Tybf.js → image-flash-lightning.svg-CaDxrzvs.js} +1 -1
- package/web/assets/{image-picture-flower.svg-D5oOhzzg.js → image-picture-flower.svg-Cm83ljlo.js} +1 -1
- package/web/assets/index-Bk2hTx0g.css +1 -0
- package/web/assets/{index-DBUGVNfV.js → index-D1xU-p3z.js} +570 -374
- package/web/assets/{interface-alert-exclamation-diamond.svg-H0YNQW-M.js → interface-alert-exclamation-diamond.svg-CXdlYd1V.js} +1 -1
- package/web/assets/{interface-alert-exclamation-triangle-warning.svg-MmLyfLsu.js → interface-alert-exclamation-triangle-warning.svg-CeyAEw_C.js} +1 -1
- package/web/assets/{interface-alert-information-circle.svg-DPtcCWUk.js → interface-alert-information-circle.svg-DUbwIFHR.js} +1 -1
- package/web/assets/{interface-award-crown.svg-D4TDd5uG.js → interface-award-crown.svg-BI3VqkS7.js} +1 -1
- package/web/assets/{interface-bookmark.svg-BOJKIiPZ.js → interface-bookmark-tag.svg-BNP52up1.js} +1 -1
- package/web/assets/{interface-bookmark-tag.svg-DY2HHX7j.js → interface-bookmark.svg-C_zoDBZC.js} +1 -1
- package/web/assets/{interface-calendar-date-one.svg-Ml9gQeRQ.js → interface-calendar-date-one.svg-DC0tGASA.js} +1 -1
- package/web/assets/{interface-content-book-open-pages.svg-DjrtXzto.js → interface-content-book-open-pages.svg-l-5VHr-g.js} +1 -1
- package/web/assets/{interface-content-book-page.svg-C7WDuE63.js → interface-content-book-page.svg-CagVpKh4.js} +1 -1
- package/web/assets/{interface-content-file.svg-Bj1fDi8J.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-CtoSNYlE.js → interface-content-folder.svg-CVxNoyJ7.js} +1 -1
- package/web/assets/{interface-copy-clipboard.svg-CndmGYGb.js → interface-copy-clipboard.svg-D78-91bx.js} +1 -1
- package/web/assets/{interface-edit-attachment.svg-C8GKdk_Y.js → interface-edit-attachment.svg-D6pWV5bC.js} +1 -1
- package/web/assets/{interface-edit-binocular.svg-JwEBvvNd.js → interface-edit-binocular.svg-C6wbX04C.js} +1 -1
- package/web/assets/{interface-edit-magic-wand.svg-dhVstxFv.js → interface-edit-magic-wand.svg-CoZhFtfQ.js} +1 -1
- package/web/assets/{interface-edit-tool-paint-roller.svg-BOT-wlXa.js → interface-edit-tool-paint-roller.svg-DTQGU9t3.js} +1 -1
- package/web/assets/{interface-edit-tool-pencil.svg-Bkzz_y5T.js → interface-edit-tool-pencil.svg-ByQHy9tx.js} +1 -1
- package/web/assets/{interface-favorite-award.svg-CUsXllHu.js → interface-favorite-award.svg-0CNheH17.js} +1 -1
- package/web/assets/{interface-favorite-flag.svg-D4tuSHHG.js → interface-favorite-flag.svg-CCmC-2ES.js} +1 -1
- package/web/assets/{interface-favorite-heart.svg-D-HpTcun.js → interface-favorite-heart.svg-BVpuv5ru.js} +1 -1
- package/web/assets/{interface-favorite-star.svg-Cud3tgeY.js → interface-favorite-star.svg-D7-x2gpZ.js} +1 -1
- package/web/assets/{interface-favorite-stars-sparkles.svg-CSCGE6jh.js → interface-favorite-stars-sparkles.svg-BReo0WNX.js} +1 -1
- package/web/assets/{interface-hierarchy-flowchart.svg-qBM4FMpY.js → interface-hierarchy-flowchart.svg-D6044jiD.js} +1 -1
- package/web/assets/{interface-home-house.svg-YhTW7PqZ.js → interface-home-house.svg-BDbbqQ7y.js} +1 -1
- package/web/assets/{interface-hyperlink.svg-SzbaajGz.js → interface-hyperlink.svg-jMR6mBTh.js} +1 -1
- package/web/assets/{interface-lighting-brightness.svg-C2-5tyeD.js → interface-lighting-brightness.svg-DxAyAplK.js} +1 -1
- package/web/assets/{interface-lock-closed.svg-gcAhT36X.js → interface-lock-closed.svg-KHv3R3lv.js} +1 -1
- package/web/assets/{interface-lock-open-unlock.svg-BC3s82xO.js → interface-lock-open-unlock.svg-DTVS6Ld3.js} +1 -1
- package/web/assets/{interface-login-key.svg-C-2XbaU2.js → interface-login-key.svg-CmrsGePn.js} +1 -1
- package/web/assets/{interface-search.svg-B0QE3jtv.js → interface-search.svg-D68gdm71.js} +1 -1
- package/web/assets/{interface-setting-cog.svg-D3xvk8YU.js → interface-setting-cog.svg-BpmjacTl.js} +1 -1
- package/web/assets/{interface-share-megaphone-bullhorn.svg-CRa9esm0.js → interface-share-megaphone-bullhorn.svg-B1Qopu7g.js} +1 -1
- package/web/assets/{interface-share-rocket.svg-TdCeEZOl.js → interface-share-rocket.svg-xe-sFt3v.js} +1 -1
- package/web/assets/{interface-share-satellite.svg-DZTk90vq.js → interface-share-satellite.svg-DKB0wpfg.js} +1 -1
- package/web/assets/{interface-share-space-ship.svg-C_8R9-Nb.js → interface-share-space-ship.svg-BXUyLcC9.js} +1 -1
- package/web/assets/{interface-share.svg-CUenxjcS.js → interface-share.svg--X4Sy8OU.js} +1 -1
- package/web/assets/{interface-signal-square.svg-CM6pbneT.js → interface-signal-square.svg-SVcBtlCh.js} +1 -1
- package/web/assets/{interface-time-clock-circle.svg-DaKkRSPs.js → interface-time-clock-circle.svg-MMicUy7s.js} +1 -1
- package/web/assets/{interface-time-hour-glass.svg-BupwUgts.js → interface-time-hour-glass.svg-CqNSWB1s.js} +1 -1
- package/web/assets/{interface-users-multiple.svg-C3UEzidB.js → interface-users-multiple.svg-Cb-ACWeS.js} +1 -1
- package/web/assets/{interface-weather-moon.svg-DuiN-Lpe.js → interface-weather-moon.svg-BTBYfL8w.js} +1 -1
- package/web/assets/{javascript-cyCZQpCs.js → javascript-DW5dr95z.js} +1 -1
- package/web/assets/{jsonMode-C7bOJkxl.js → jsonMode-D3gEKJlR.js} +2 -2
- package/web/assets/{liquid-wNd-_zNC.js → liquid-DsB3REL_.js} +1 -1
- package/web/assets/{lspLanguageFeatures-BLqGpyw3.js → lspLanguageFeatures-Bo6XRGjF.js} +3 -3
- package/web/assets/{mail-chat-bubble-square.svg-DYRNn-F8.js → mail-chat-bubble-square.svg-DQPaE_l8.js} +1 -1
- package/web/assets/{mail-send-email-paper-airplane.svg-C52yHOX7.js → mail-send-email-paper-airplane.svg-SeNV9WPa.js} +1 -1
- package/web/assets/{mail-send-envelope.svg-0-Xc7oiy.js → mail-send-envelope.svg-DZr1S3ec.js} +1 -1
- package/web/assets/{mdx-Q8jGyneU.js → mdx-bfiZxOWu.js} +1 -1
- package/web/assets/{minus-DytRiHhn.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-vbdCrl5f.js → money-cashier-receipt.svg-CMGSkzy4.js} +1 -1
- package/web/assets/{money-currency-dollar-pay.svg-B0WPo5zD.js → money-currency-dollar-pay.svg-BqBhV1Bu.js} +1 -1
- package/web/assets/{money-graph-arrow-increase.svg-u1MYvAWb.js → money-graph-arrow-increase.svg-Jb3id3iX.js} +1 -1
- package/web/assets/{money-graph-bar-chart-increase.svg--vnvg38g.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-Bm86NNsZ.js → nature-ecology-leaf.svg-Cv_Ub0f3.js} +1 -1
- package/web/assets/{password-D4dFyeDf.js → password-BnTuhvvF.js} +4 -4
- package/web/assets/{phone-telephone.svg-CDu0gfrF.js → phone-telephone.svg-C8m8L7Af.js} +1 -1
- package/web/assets/{plus-DyqgWY-p.js → plus-CwKOeZC2.js} +6 -6
- package/web/assets/process.store-CgBhdhXY.js +1 -0
- package/web/assets/{programming-bug.svg-GOtIFzyq.js → programming-bug.svg-BMbf-v1F.js} +1 -1
- package/web/assets/{programming-cloud.svg-Dob7Yyhx.js → programming-cloud.svg-DoETzNlz.js} +1 -1
- package/web/assets/{programming-computer-database-server.svg-BL9a2tMm.js → programming-computer-database-server.svg-DFsTW5pZ.js} +1 -1
- package/web/assets/{programming-computer-database.svg-CvSRjqHa.js → programming-computer-database.svg-Dap1d6pH.js} +1 -1
- package/web/assets/{programming-module-four-layout.svg-HWf5upwd.js → programming-module-four-layout.svg-Dlte_L9w.js} +1 -1
- package/web/assets/{programming-module-three.svg-v9W9DdQq.js → programming-module-three.svg-CF2uP4yd.js} +1 -1
- package/web/assets/{programming-module.svg-BHJLgt2p.js → programming-module.svg-DSm70VcV.js} +1 -1
- package/web/assets/{programming-script-code.svg-BDIXsnT6.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-C_Cyv2aj.js → python-DGNKYf98.js} +1 -1
- package/web/assets/{radiobutton-F_E8D321.js → radiobutton-Drb-6bSf.js} +2 -2
- package/web/assets/{razor-DustIlxk.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-CaQ6QeSL.js → settings.store-BJ7H5w4n.js} +1 -1
- package/web/assets/{shopping-cart.svg-DyoeDwG3.js → shopping-cart.svg-DqX4V0Z9.js} +1 -1
- package/web/assets/{shopping-gift-present.svg-BKPtii5v.js → shopping-gift-present.svg-BO9ncUGX.js} +1 -1
- package/web/assets/{shopping-shipping-box-parcel-package.svg-BvBFvRrd.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-BbQfLmF1.js → tabpanel-BX_29Z1p.js} +3 -3
- package/web/assets/{tag-new-circle.svg-hTnv3ssK.js → tag-new-circle.svg-DEFm057e.js} +1 -1
- package/web/assets/theme-CXbG8xGR.js +1 -0
- package/web/assets/{toggleswitch-Ct_pe9Y7.js → toggleswitch-BCY7RhMa.js} +2 -2
- package/web/assets/{travel-map-earth-globe.svg-CpkewKvu.js → travel-map-earth-globe.svg-bobKX3Td.js} +1 -1
- package/web/assets/trpc-D953ojvb.js +1 -0
- package/web/assets/{tsMode-WejVCjTD.js → tsMode-HrRwEBdZ.js} +5 -5
- package/web/assets/{typescript-Bhy-yTki.js → typescript-CM93Igq2.js} +1 -1
- package/web/assets/useAiChatDrawer-uMew_avv.js +1 -0
- package/web/assets/{useCloudOrg-DyonGJWX.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-hi8bDROZ.js → useProjectCloudOrg-By2M8LTk.js} +1 -1
- package/web/assets/useServiceUrlHost-ZVKBplG8.js +1 -0
- package/web/assets/{xml-DhE3CKSm.js → xml-CJGov3Ex.js} +1 -1
- package/web/assets/{yaml-BnNl--CF.js → yaml-xY3BFPUE.js} +1 -1
- package/web/index.html +2 -2
- package/agent-manager-APY7SZ75.js +0 -9
- package/chunk-6T7R2JZR.js.map +0 -1
- package/chunk-K3H5WJRQ.js.map +0 -1
- package/chunk-OGCEFBSS.js.map +0 -1
- package/settings-manager-MQBUCUIO.js +0 -9
- package/src-Q2AWI57U.js.map +0 -1
- package/web/assets/AgentScalarChatInterface.vue-DVTbGHHm.js +0 -13
- package/web/assets/AgentTerminalPage-BK1JBjF7.js +0 -1
- package/web/assets/AiChatPage-CzLTf0Dh.js +0 -1
- package/web/assets/AppLayout-DIpd73gZ.js +0 -1
- package/web/assets/AuditPage-DDemuQXR.js +0 -1
- package/web/assets/CloudAccountPage-BW4UfXnM.js +0 -1
- package/web/assets/CloudAccountPage-f9nRZeNR.js +0 -1
- package/web/assets/CloudMessagingPage-2gjGcJwo.js +0 -2
- package/web/assets/DashboardPage-2qCxx4Sm.js +0 -164
- package/web/assets/DirectoryPickerDialog-DxxSRtWi.js +0 -1
- package/web/assets/EnvironmentFormPage-Cg6oojrW.js +0 -1
- package/web/assets/EnvironmentListPage-DgQaxPct.js +0 -1
- package/web/assets/KanbanBoardPage-C2zkv8-3.js +0 -4
- package/web/assets/KanbanListPage-nH2wjGBV.js +0 -1
- package/web/assets/LaunchProjectPage-CGr9lWsC.js +0 -1
- package/web/assets/LaunchServicesPage-CLGbYznW.js +0 -1
- package/web/assets/LogViewer-CxPBFVR1.js +0 -3
- package/web/assets/OrgKeyPrompt-bIIIdk_5.js +0 -1
- package/web/assets/ProcessDetailPage-Uh2TiAAJ.js +0 -1
- package/web/assets/RandomJobTestPage-D7j9GCJM.js +0 -2
- package/web/assets/ScenarioEditorPage-Ct8pvptW.js +0 -14
- package/web/assets/SendToChatDialog-Byzw5hfV.js +0 -1
- package/web/assets/ServiceControlsBar-Dht6GO3P.js +0 -1
- package/web/assets/ServiceDetailPage-CbeFd4R4.js +0 -2
- package/web/assets/ServiceFormPage-BNbDJB1o.js +0 -1
- package/web/assets/SettingsPage-Dxhmpet-.js +0 -2063
- package/web/assets/UnlockPage-DJfS33Iu.js +0 -1
- package/web/assets/VaultMigrationPage-2bVNCDJk.js +0 -1
- package/web/assets/VersionBadge-1RvUznxK.js +0 -1
- package/web/assets/WikiPage-Ck-HfGMo.js +0 -1
- package/web/assets/WikiView-DnZi2CXf.js +0 -1
- package/web/assets/add-scalar-classes-DZeMJUzs.js +0 -387
- package/web/assets/card-C0WVIEBg.js +0 -32
- package/web/assets/client-DKfN77U3.js +0 -24
- package/web/assets/cloud-chat.store-C0O-wJT9.js +0 -1
- package/web/assets/cloud-client-D4Mr6l0A.js +0 -1
- package/web/assets/cloud-session-kXf1tl4W.js +0 -1
- package/web/assets/column-BGKAKQS9.js +0 -763
- package/web/assets/index-nUGeXteT.css +0 -1
- package/web/assets/interface-content-folder.svg-DGDMeUjj.js +0 -1
- package/web/assets/modal-DIpZHaX_.js +0 -1
- package/web/assets/modal-Dx2t6N7O.js +0 -5
- package/web/assets/multiselect-0FlwwPJ2.js +0 -251
- package/web/assets/process.store-Dy_a775l.js +0 -1
- package/web/assets/project-launch.store-BFSsFFjl.js +0 -1
- package/web/assets/project.store-CbypuRJa.js +0 -1
- package/web/assets/router-BujVDJWr.js +0 -1
- package/web/assets/settings-scope-hbAQWfja.js +0 -1
- package/web/assets/src-40AEWC6e.js +0 -1
- package/web/assets/src-BsM0Obsp.css +0 -1
- package/web/assets/src-CagkHqfs.js +0 -197
- package/web/assets/src-XBWUvtlx.js +0 -572
- package/web/assets/theme-CXVscC2X.js +0 -1
- package/web/assets/trpc-C5MKhb-3.js +0 -1
- package/web/assets/useAiChatDrawer-tRwj5DTE.js +0 -1
- package/web/assets/useEnvVarAutocomplete-wZvdJ--F.js +0 -1
- package/web/assets/useProjectCatalog-tOf78QC4.js +0 -1
- package/web/assets/useServiceUrlHost-B9WSS4Mi.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-QLIFNGA2.js.map → chat-XUIXGKSR.js.map} +0 -0
- /package/{chunk-77UQ2UKW.js.map → chunk-I2AZCZMR.js.map} +0 -0
- /package/{companion-RLSRXTNO.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,12 +6941,12 @@ 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;
|
|
6833
6948
|
}),
|
|
6834
|
-
pin: protectedProcedure.input(
|
|
6949
|
+
pin: protectedProcedure.input(z6.object({ id: Id128Schema, pinned: z6.boolean() })).mutation(async ({ input }) => {
|
|
6835
6950
|
const conv = await conversationStore.setPinned(input.id, input.pinned);
|
|
6836
6951
|
if (!conv) throw new TRPCError4({ code: "NOT_FOUND", message: "Conversation not found" });
|
|
6837
6952
|
return conv;
|
|
@@ -6839,16 +6954,16 @@ var chatRouter = router({
|
|
|
6839
6954
|
// L'ordre ne vaut que pour les ids donnés : l'écran ne connaît que les
|
|
6840
6955
|
// conversations du projet courant, et les épinglées des autres projets
|
|
6841
6956
|
// n'ont pas à bouger parce qu'on a rangé celles-ci.
|
|
6842
|
-
reorderPinned: protectedProcedure.input(
|
|
6957
|
+
reorderPinned: protectedProcedure.input(z6.object({ ids: z6.array(Id128Schema).max(500) })).mutation(async ({ input }) => {
|
|
6843
6958
|
await conversationStore.reorderPinned(input.ids);
|
|
6844
6959
|
})
|
|
6845
6960
|
}),
|
|
6846
|
-
listModels: protectedProcedure.input(
|
|
6961
|
+
listModels: protectedProcedure.input(z6.object({
|
|
6847
6962
|
providerId: Id128Schema.optional(),
|
|
6848
6963
|
// Le projet dit de quelle organisation lire les fournisseurs ; absent,
|
|
6849
6964
|
// ce sont ceux du poste.
|
|
6850
6965
|
projectId: Id128Schema.optional(),
|
|
6851
|
-
orgId:
|
|
6966
|
+
orgId: z6.string().max(128).nullable().optional()
|
|
6852
6967
|
}).optional()).query(async ({ input }) => {
|
|
6853
6968
|
const active = await getActiveProvider(
|
|
6854
6969
|
input?.providerId,
|
|
@@ -6861,7 +6976,7 @@ var chatRouter = router({
|
|
|
6861
6976
|
return [];
|
|
6862
6977
|
}
|
|
6863
6978
|
}),
|
|
6864
|
-
checkCliAvailability: protectedProcedure.input(
|
|
6979
|
+
checkCliAvailability: protectedProcedure.input(z6.object({ agentId: Id128Schema.optional() }).optional()).query(async ({ input }) => {
|
|
6865
6980
|
if (input?.agentId) {
|
|
6866
6981
|
try {
|
|
6867
6982
|
const res = await agentManager.agentQuery(
|
|
@@ -6879,12 +6994,12 @@ var chatRouter = router({
|
|
|
6879
6994
|
]);
|
|
6880
6995
|
return { available: claudeOk, codexAvailable: codexOk };
|
|
6881
6996
|
}),
|
|
6882
|
-
enhanceScenarioPrompt: protectedProcedure.input(
|
|
6883
|
-
text:
|
|
6997
|
+
enhanceScenarioPrompt: protectedProcedure.input(z6.object({
|
|
6998
|
+
text: z6.string().max(1e4),
|
|
6884
6999
|
providerId: Id128Schema.optional(),
|
|
6885
|
-
model:
|
|
7000
|
+
model: z6.string().max(200).optional(),
|
|
6886
7001
|
projectId: Id128Schema.optional(),
|
|
6887
|
-
orgId:
|
|
7002
|
+
orgId: z6.string().max(128).nullable().optional()
|
|
6888
7003
|
})).mutation(async ({ input }) => {
|
|
6889
7004
|
const active = await getActiveProvider(
|
|
6890
7005
|
input.providerId,
|
|
@@ -6941,22 +7056,22 @@ Return ONLY the improved text, no explanation, no preamble.`;
|
|
|
6941
7056
|
}
|
|
6942
7057
|
}),
|
|
6943
7058
|
getStreamingStatus: protectedProcedure.query(() => activeSessionRegistry.listActive()),
|
|
6944
|
-
stopSession: protectedProcedure.input(
|
|
7059
|
+
stopSession: protectedProcedure.input(z6.object({ conversationId: ConversationIdSchema })).mutation(({ input }) => {
|
|
6945
7060
|
if (process.env.RUNEYA_DEBUG) console.log("[chat]: stopSession");
|
|
6946
7061
|
const killed = activeSessionRegistry.kill(input.conversationId);
|
|
6947
7062
|
if (!killed) throw new TRPCError4({ code: "NOT_FOUND", message: "No active session for this conversation" });
|
|
6948
7063
|
return { ok: true };
|
|
6949
7064
|
}),
|
|
6950
|
-
streamViaClaudeCode: protectedProcedure.input(
|
|
7065
|
+
streamViaClaudeCode: protectedProcedure.input(z6.object({
|
|
6951
7066
|
conversationId: ConversationIdSchema,
|
|
6952
|
-
prompt:
|
|
6953
|
-
contextNote:
|
|
7067
|
+
prompt: z6.string().max(1e5),
|
|
7068
|
+
contextNote: z6.string().max(2e5).optional(),
|
|
6954
7069
|
model: ShortString200Schema.optional(),
|
|
6955
|
-
effort:
|
|
6956
|
-
reconnect:
|
|
7070
|
+
effort: z6.enum(["low", "medium", "high"]).optional(),
|
|
7071
|
+
reconnect: z6.boolean().optional(),
|
|
6957
7072
|
agentId: Id128Schema.optional(),
|
|
6958
|
-
environmentId:
|
|
6959
|
-
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(),
|
|
6960
7075
|
imageParts: ImagePartsSchema
|
|
6961
7076
|
})).subscription(async function* ({ input, ctx, signal }) {
|
|
6962
7077
|
if (process.env.RUNEYA_DEBUG) console.log("[chat]: Reconnect");
|
|
@@ -7058,15 +7173,15 @@ ${imagePaths.map((p) => `Image: ${p}`).join("\n")}` : cliPrompt;
|
|
|
7058
7173
|
if (process.env.RUNEYA_DEBUG) console.log("[chat]: drainSession...");
|
|
7059
7174
|
yield* drainSession(session, signal, false);
|
|
7060
7175
|
}),
|
|
7061
|
-
streamViaCodex: protectedProcedure.input(
|
|
7176
|
+
streamViaCodex: protectedProcedure.input(z6.object({
|
|
7062
7177
|
conversationId: ConversationIdSchema,
|
|
7063
|
-
prompt:
|
|
7064
|
-
contextNote:
|
|
7178
|
+
prompt: z6.string().max(1e5),
|
|
7179
|
+
contextNote: z6.string().max(2e5).optional(),
|
|
7065
7180
|
model: ShortString200Schema.optional(),
|
|
7066
|
-
reconnect:
|
|
7181
|
+
reconnect: z6.boolean().optional(),
|
|
7067
7182
|
agentId: Id128Schema.optional(),
|
|
7068
|
-
environmentId:
|
|
7069
|
-
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(),
|
|
7070
7185
|
imageParts: ImagePartsSchema
|
|
7071
7186
|
})).subscription(async function* ({ input, ctx, signal }) {
|
|
7072
7187
|
const existingSession = activeSessionRegistry.get(input.conversationId);
|
|
@@ -7136,13 +7251,13 @@ ${input.prompt}` : input.prompt;
|
|
|
7136
7251
|
});
|
|
7137
7252
|
yield* drainSession(session, signal, false);
|
|
7138
7253
|
}),
|
|
7139
|
-
send: protectedProcedure.input(
|
|
7254
|
+
send: protectedProcedure.input(z6.object({
|
|
7140
7255
|
conversationId: ConversationIdSchema,
|
|
7141
|
-
messages:
|
|
7256
|
+
messages: z6.array(MessageSchema).min(0).max(100),
|
|
7142
7257
|
model: ShortString200Schema.optional(),
|
|
7143
|
-
contextNote:
|
|
7144
|
-
reconnect:
|
|
7145
|
-
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(),
|
|
7146
7261
|
imageParts: ImagePartsSchema
|
|
7147
7262
|
})).subscription(async function* ({ input, ctx, signal }) {
|
|
7148
7263
|
const existingSession = activeSessionRegistry.get(input.conversationId);
|
|
@@ -7255,25 +7370,25 @@ ${input.prompt}` : input.prompt;
|
|
|
7255
7370
|
// ── PTY passthrough (interactive Claude Code session) ────────────────────
|
|
7256
7371
|
pty: router({
|
|
7257
7372
|
/** Start a PTY session running `claude --resume <sessionId>` (or fresh). */
|
|
7258
|
-
start: protectedProcedure.input(
|
|
7259
|
-
agentId:
|
|
7260
|
-
sessionId:
|
|
7261
|
-
runner:
|
|
7262
|
-
resume:
|
|
7263
|
-
model:
|
|
7264
|
-
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(),
|
|
7265
7380
|
/** Anchors the session when no explicit cwd is given. */
|
|
7266
|
-
serviceId:
|
|
7381
|
+
serviceId: z6.string().max(128).optional(),
|
|
7267
7382
|
projectId: Id128Schema.optional(),
|
|
7268
|
-
orgId:
|
|
7269
|
-
cols:
|
|
7270
|
-
rows:
|
|
7271
|
-
enableMcp:
|
|
7272
|
-
apiBaseUrl:
|
|
7273
|
-
environmentId:
|
|
7274
|
-
attachedContexts:
|
|
7275
|
-
label:
|
|
7276
|
-
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)
|
|
7277
7392
|
})).max(20).optional()
|
|
7278
7393
|
})).mutation(async ({ input, ctx }) => {
|
|
7279
7394
|
const t0 = Date.now();
|
|
@@ -7431,10 +7546,10 @@ Context:
|
|
|
7431
7546
|
return { spawnId: res.spawnId, agentId, reattached: false };
|
|
7432
7547
|
}),
|
|
7433
7548
|
/** Subscribe to PTY output stream (raw text with ANSI). */
|
|
7434
|
-
stream: protectedProcedure.input(
|
|
7435
|
-
agentId:
|
|
7436
|
-
spawnId:
|
|
7437
|
-
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)
|
|
7438
7553
|
})).subscription(async function* ({ input, signal }) {
|
|
7439
7554
|
const agentId = input.agentId ?? agentManager.getDefaultAgentId();
|
|
7440
7555
|
if (!agentId) throw new TRPCError4({ code: "PRECONDITION_FAILED", message: "No agent available" });
|
|
@@ -7489,10 +7604,10 @@ Context:
|
|
|
7489
7604
|
}
|
|
7490
7605
|
}),
|
|
7491
7606
|
/** Write input to a PTY session (keystrokes from xterm). */
|
|
7492
|
-
write: protectedProcedure.input(
|
|
7493
|
-
agentId:
|
|
7494
|
-
spawnId:
|
|
7495
|
-
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)
|
|
7496
7611
|
})).mutation(async ({ input }) => {
|
|
7497
7612
|
const agentId = input.agentId ?? agentManager.getDefaultAgentId();
|
|
7498
7613
|
if (!agentId) throw new TRPCError4({ code: "PRECONDITION_FAILED", message: "No agent available" });
|
|
@@ -7502,11 +7617,11 @@ Context:
|
|
|
7502
7617
|
});
|
|
7503
7618
|
}),
|
|
7504
7619
|
/** Resize a PTY session. */
|
|
7505
|
-
resize: protectedProcedure.input(
|
|
7506
|
-
agentId:
|
|
7507
|
-
spawnId:
|
|
7508
|
-
cols:
|
|
7509
|
-
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)
|
|
7510
7625
|
})).mutation(async ({ input }) => {
|
|
7511
7626
|
const agentId = input.agentId ?? agentManager.getDefaultAgentId();
|
|
7512
7627
|
if (!agentId) throw new TRPCError4({ code: "PRECONDITION_FAILED", message: "No agent available" });
|
|
@@ -7522,11 +7637,11 @@ Context:
|
|
|
7522
7637
|
* picks it up. Returns the tmp path and which clipboard method succeeded
|
|
7523
7638
|
* (null if none — caller should inject `@<path>` instead of Ctrl+V).
|
|
7524
7639
|
*/
|
|
7525
|
-
pasteImage: protectedProcedure.input(
|
|
7526
|
-
agentId:
|
|
7527
|
-
sessionId:
|
|
7528
|
-
mimeType:
|
|
7529
|
-
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)
|
|
7530
7645
|
})).mutation(async ({ input }) => {
|
|
7531
7646
|
const agentId = input.agentId ?? agentManager.getDefaultAgentId();
|
|
7532
7647
|
if (!agentId) throw new TRPCError4({ code: "PRECONDITION_FAILED", message: "No agent available" });
|
|
@@ -7544,7 +7659,7 @@ Context:
|
|
|
7544
7659
|
* Read the transcript Claude Code stores on disk for a given session.
|
|
7545
7660
|
* Returns parsed JSONL entries (user / assistant messages, tool uses, etc.).
|
|
7546
7661
|
*/
|
|
7547
|
-
transcript: protectedProcedure.input(
|
|
7662
|
+
transcript: protectedProcedure.input(z6.object({ sessionId: z6.string().max(128) })).query(async ({ input }) => {
|
|
7548
7663
|
return readClaudeTranscript(input.sessionId);
|
|
7549
7664
|
}),
|
|
7550
7665
|
/**
|
|
@@ -7552,9 +7667,9 @@ Context:
|
|
|
7552
7667
|
* when was the transcript JSONL last touched? Used by the non-PTY view
|
|
7553
7668
|
* to show a "Claude is thinking…" indicator while output streams.
|
|
7554
7669
|
*/
|
|
7555
|
-
activity: protectedProcedure.input(
|
|
7556
|
-
agentId:
|
|
7557
|
-
sessionId:
|
|
7670
|
+
activity: protectedProcedure.input(z6.object({
|
|
7671
|
+
agentId: z6.string().max(128).optional(),
|
|
7672
|
+
sessionId: z6.string().max(128)
|
|
7558
7673
|
})).query(async ({ input }) => {
|
|
7559
7674
|
const agentId = input.agentId ?? agentManager.getDefaultAgentId();
|
|
7560
7675
|
let running = false;
|
|
@@ -7580,7 +7695,7 @@ Context:
|
|
|
7580
7695
|
* them on the conversation, so the non-PTY chat view stays in sync.
|
|
7581
7696
|
* Uses the conversation id as session id (PTY sessions are spawned that way).
|
|
7582
7697
|
*/
|
|
7583
|
-
syncTranscript: protectedProcedure.input(
|
|
7698
|
+
syncTranscript: protectedProcedure.input(z6.object({ conversationId: ConversationIdSchema })).mutation(async ({ input }) => {
|
|
7584
7699
|
const conv = await conversationStore.get(input.conversationId);
|
|
7585
7700
|
if (!conv) {
|
|
7586
7701
|
throw new TRPCError4({ code: "NOT_FOUND", message: `Conversation ${input.conversationId} not found` });
|
|
@@ -7594,14 +7709,14 @@ Context:
|
|
|
7594
7709
|
* with the given sessionId. Used to benchmark the PTY → tRPC → xterm.js
|
|
7595
7710
|
* pipeline. Open the conversation in PTY mode to attach to it.
|
|
7596
7711
|
*/
|
|
7597
|
-
debugStress: protectedProcedure.input(
|
|
7598
|
-
sessionId:
|
|
7599
|
-
agentId:
|
|
7600
|
-
bytesPerSec:
|
|
7601
|
-
chunkSize:
|
|
7602
|
-
durationMs:
|
|
7603
|
-
cols:
|
|
7604
|
-
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)
|
|
7605
7720
|
})).mutation(async ({ input }) => {
|
|
7606
7721
|
const agentId = input.agentId ?? agentManager.getDefaultAgentId();
|
|
7607
7722
|
if (!agentId) throw new TRPCError4({ code: "PRECONDITION_FAILED", message: "No agent available" });
|
|
@@ -7648,9 +7763,9 @@ Context:
|
|
|
7648
7763
|
return { spawnId: res.spawnId, agentId, stressSessionId };
|
|
7649
7764
|
}),
|
|
7650
7765
|
/** Kill a PTY session. */
|
|
7651
|
-
kill: protectedProcedure.input(
|
|
7652
|
-
agentId:
|
|
7653
|
-
spawnId:
|
|
7766
|
+
kill: protectedProcedure.input(z6.object({
|
|
7767
|
+
agentId: z6.string().max(128).optional(),
|
|
7768
|
+
spawnId: z6.string().max(128)
|
|
7654
7769
|
})).mutation(async ({ input }) => {
|
|
7655
7770
|
const agentId = input.agentId ?? agentManager.getDefaultAgentId();
|
|
7656
7771
|
if (!agentId) throw new TRPCError4({ code: "PRECONDITION_FAILED", message: "No agent available" });
|
|
@@ -7672,6 +7787,7 @@ export {
|
|
|
7672
7787
|
requireServiceAction,
|
|
7673
7788
|
getAllowedServiceIds,
|
|
7674
7789
|
requireEnvAction,
|
|
7790
|
+
canEnvAction,
|
|
7675
7791
|
appVersion,
|
|
7676
7792
|
APP_VERSION_HEADER,
|
|
7677
7793
|
cloudSessionStore,
|
|
@@ -7729,4 +7845,4 @@ export {
|
|
|
7729
7845
|
startCliSession,
|
|
7730
7846
|
chatRouter
|
|
7731
7847
|
};
|
|
7732
|
-
//# sourceMappingURL=chunk-
|
|
7848
|
+
//# sourceMappingURL=chunk-WE6EOX4C.js.map
|