@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.
Files changed (349) hide show
  1. package/agent/index.js +32 -1
  2. package/agent/index.js.map +1 -1
  3. package/agent-manager-HOL7ZG4V.js +9 -0
  4. package/{chat-AOL2TMLR.js → chat-XUIXGKSR.js} +6 -6
  5. package/{chunk-77UQ2UKW.js → chunk-I2AZCZMR.js} +2 -2
  6. package/{chunk-OGCEFBSS.js → chunk-P47X3LT3.js} +7 -2
  7. package/chunk-P47X3LT3.js.map +1 -0
  8. package/{chunk-6T7R2JZR.js → chunk-RN4X65D3.js} +35 -2
  9. package/chunk-RN4X65D3.js.map +1 -0
  10. package/{chunk-44XAJ3MK.js → chunk-WE6EOX4C.js} +340 -213
  11. package/chunk-WE6EOX4C.js.map +1 -0
  12. package/{chunk-VPANMGAI.js → chunk-XIRMRWVU.js} +65 -6
  13. package/chunk-XIRMRWVU.js.map +1 -0
  14. package/{companion-YYXSCN3H.js → companion-POUL5OGO.js} +4 -4
  15. package/{desktop-launcher-Q6J2LSVP.js → desktop-launcher-QVYFCE56.js} +2 -2
  16. package/index.js +4 -4
  17. package/package.json +1 -1
  18. package/settings-manager-KKSPWSM6.js +9 -0
  19. package/{src-S5TDMHPI.js → src-VCZQLW2Q.js} +98 -12
  20. package/src-VCZQLW2Q.js.map +1 -0
  21. package/web/assets/AgentScalarChatInterface.vue-BrMvIukr.js +13 -0
  22. package/web/assets/AgentTerminalPage-CXWlEDYr.js +1 -0
  23. package/web/assets/AiChatPage-CemkKI5f.js +1 -0
  24. package/web/assets/AppLayout-Kc2JJjh1.js +1 -0
  25. package/web/assets/AuditPage-Da3_Dw6e.js +1 -0
  26. package/web/assets/CloudAccountPage-C6zqdsH7.js +1 -0
  27. package/web/assets/CloudAccountPage-DPs87dbs.js +1 -0
  28. package/web/assets/CloudMessagingPage-DTuqXSPI.js +2 -0
  29. package/web/assets/DashboardPage-BGRnC6VN.js +164 -0
  30. package/web/assets/DirectoryPickerDialog-DEoqmzoh.js +1 -0
  31. package/web/assets/{EditorIcon-DJxKo-Bu.js → EditorIcon-CtWlXuLo.js} +2 -2
  32. package/web/assets/{EnvironmentForm-1NSDqR4s.js → EnvironmentForm-7rQeTN-8.js} +2 -2
  33. package/web/assets/EnvironmentFormPage-YcYUsjhT.js +1 -0
  34. package/web/assets/EnvironmentListPage-CLD1-AAY.js +1 -0
  35. package/web/assets/KanbanBoardPage-B7VdWhZB.js +4 -0
  36. package/web/assets/KanbanBoardPage-fEP3w_nz.css +1 -0
  37. package/web/assets/KanbanListPage-BEHtcwKs.js +1 -0
  38. package/web/assets/LaunchProjectPage-exfyMjFt.js +1 -0
  39. package/web/assets/LaunchServicesPage-YVkLRJqQ.js +1 -0
  40. package/web/assets/LogViewer-D1RcM2A4.js +3 -0
  41. package/web/assets/OrgKeyPrompt-C7LMf-Zk.js +1 -0
  42. package/web/assets/{ProcessControls-B_21fX0o.js → ProcessControls-58Ablgi0.js} +1 -1
  43. package/web/assets/ProcessDetailPage-BUjh1O5a.js +1 -0
  44. package/web/assets/{ProcessMetrics-jxJHtg7z.js → ProcessMetrics-BEzFNP7J.js} +2 -2
  45. package/web/assets/RandomJobTestPage-DuPQQhVb.js +2 -0
  46. package/web/assets/ScenarioEditorPage-6-CuJOmJ.js +14 -0
  47. package/web/assets/SendToChatDialog-CxuunSwf.js +1 -0
  48. package/web/assets/ServiceControlsBar-Cu9vxEOQ.js +1 -0
  49. package/web/assets/ServiceDetailPage-B4plJ5bz.js +2 -0
  50. package/web/assets/ServiceFormPage-7O2k1FOl.js +1 -0
  51. package/web/assets/SettingsPage-Hwj6MTiF.js +2063 -0
  52. package/web/assets/UnlockPage-Dcv0Z9re.js +1 -0
  53. package/web/assets/VaultMigrationPage-B25lyJg7.js +1 -0
  54. package/web/assets/VersionBadge-HrSfhQYh.js +1 -0
  55. package/web/assets/WikiPage-EBD94ewJ.js +1 -0
  56. package/web/assets/WikiView-nfJY79hF.js +1 -0
  57. package/web/assets/add-scalar-classes-H19oYTsX.js +387 -0
  58. package/web/assets/{autocomplete-CeUb1Plo.js → autocomplete-DJxf2wqE.js} +3 -3
  59. package/web/assets/{basic-shape-diamond.svg-D95sAEHe.js → basic-shape-diamond.svg-COr16MGG.js} +1 -1
  60. package/web/assets/{basic-shape-hexagon.svg-Bhu8sbuK.js → basic-shape-hexagon.svg-BzYcuOkI.js} +1 -1
  61. package/web/assets/{basic-shape-primary-circle-ellipse-round.svg-BPXa2nfu.js → basic-shape-primary-circle-ellipse-round.svg-Bw1gV38D.js} +1 -1
  62. package/web/assets/{basic-shape-primary-square-rectangle.svg-DYx2Drq6.js → basic-shape-primary-square-rectangle.svg-Cn_NwW2C.js} +1 -1
  63. package/web/assets/{basic-shape-shield.svg-iaNrBbaU.js → basic-shape-shield.svg-DMZviUvu.js} +1 -1
  64. package/web/assets/{browser-DhkJWAns.js → browser-72MoXpHU.js} +1 -1
  65. package/web/assets/{browser-Bd9Xf4OZ.js → browser-APehRX_-.js} +1 -1
  66. package/web/assets/card-DWOaM9R5.js +32 -0
  67. package/web/assets/{checkbox-DZeCLgbK.js → checkbox-3MTmcxWS.js} +3 -3
  68. package/web/assets/{chip-CzDSaVrV.js → chip-DX0PHdQT.js} +2 -2
  69. package/web/assets/client-CmMSqZpF.js +24 -0
  70. package/web/assets/cloud-chat.store-BcZHJL7V.js +1 -0
  71. package/web/assets/cloud-client-DSbRz1wz.js +1 -0
  72. package/web/assets/cloud-session-CMcFsrn6.js +2 -0
  73. package/web/assets/cloud-session-NnwumoiU.js +1 -0
  74. package/web/assets/column-CDX5Db_i.js +763 -0
  75. package/web/assets/{computer-device-desktop-monitor.svg-CK-yuA7j.js → computer-device-desktop-monitor.svg-BLXia0GM.js} +1 -1
  76. package/web/assets/{computer-device-desktop.svg-DnR_dL9H.js → computer-device-desktop.svg-gunjcHFA.js} +1 -1
  77. package/web/assets/{computer-device-laptop.svg-B4NDUXf6.js → computer-device-laptop.svg-Bw0yugEp.js} +1 -1
  78. 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
  79. package/web/assets/{computer-device-mobile-phone-android-samsung.svg-DZwCAngQ.js → computer-device-mobile-phone-android-samsung.svg-CNHYgja0.js} +1 -1
  80. 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
  81. package/web/assets/{computer-device-mobile-phone-iphone-x.svg-CufxVRii.js → computer-device-mobile-phone-iphone-x.svg-CDSSQDCC.js} +1 -1
  82. package/web/assets/{computer-device-mobile-tablet-touch.svg-DvNOww1M.js → computer-device-mobile-tablet-touch.svg-DY9TWMUB.js} +1 -1
  83. package/web/assets/{computer-device-mobile-tablet.svg-C30Nrbgf.js → computer-device-mobile-tablet.svg-D_hfbqaw.js} +1 -1
  84. package/web/assets/{computer-device-network-ethernet-cat6.svg-BkhnUZzo.js → computer-device-network-ethernet-cat6.svg-CCoszOYr.js} +1 -1
  85. package/web/assets/{computer-device-network-lan-www.svg-DXEfVvcC.js → computer-device-network-lan-www.svg-CClZA2cg.js} +1 -1
  86. package/web/assets/{computer-device-network-wifi-connection.svg-CRSKVh1x.js → computer-device-network-wifi-connection.svg-DHLQJkPy.js} +1 -1
  87. package/web/assets/{computer-device-network-wifi-router.svg-DwfOCroy.js → computer-device-network-wifi-router.svg-xActAcrc.js} +1 -1
  88. package/web/assets/{cssMode-Dc5jzss9.js → cssMode-UiVbv5-d.js} +1 -1
  89. package/web/assets/{divider-Diym1gIH.js → divider-CHpP62xs.js} +2 -2
  90. package/web/assets/{docx-preview-B62lLslx.js → docx-preview-CZnedVKH.js} +1 -1
  91. package/web/assets/{ecology-science-erlenmeyer-flask.svg-CVBcLrkT.js → ecology-science-erlenmeyer-flask.svg-BNQkfPKh.js} +1 -1
  92. package/web/assets/{fieldset-xjeWC_Zd.js → fieldset-BEeYMjpD.js} +2 -2
  93. package/web/assets/{freemarker2-CCSFwo1D.js → freemarker2-DEBZcua_.js} +1 -1
  94. package/web/assets/{handlebars-Bo71unsx.js → handlebars-BNH-tM3s.js} +1 -1
  95. package/web/assets/{html-Bm9228kc.js → html-BFhZuj1f.js} +1 -1
  96. package/web/assets/{htmlMode-BmR9QSyO.js → htmlMode-DsWwMsD5.js} +1 -1
  97. package/web/assets/{image-flash-lightning.svg-BdEJcGIK.js → image-flash-lightning.svg-CaDxrzvs.js} +1 -1
  98. package/web/assets/{image-picture-flower.svg-B-mtrwDE.js → image-picture-flower.svg-Cm83ljlo.js} +1 -1
  99. package/web/assets/index-Bk2hTx0g.css +1 -0
  100. package/web/assets/{index-8J1A633V.js → index-D1xU-p3z.js} +570 -374
  101. package/web/assets/{interface-alert-exclamation-diamond.svg-9cBuGRNJ.js → interface-alert-exclamation-diamond.svg-CXdlYd1V.js} +1 -1
  102. package/web/assets/{interface-alert-exclamation-triangle-warning.svg-CEzfFTAS.js → interface-alert-exclamation-triangle-warning.svg-CeyAEw_C.js} +1 -1
  103. package/web/assets/{interface-alert-information-circle.svg-BjpTNsHF.js → interface-alert-information-circle.svg-DUbwIFHR.js} +1 -1
  104. package/web/assets/{interface-award-crown.svg-DGFO5nfn.js → interface-award-crown.svg-BI3VqkS7.js} +1 -1
  105. package/web/assets/{interface-bookmark.svg-u38u4053.js → interface-bookmark-tag.svg-BNP52up1.js} +1 -1
  106. package/web/assets/{interface-bookmark-tag.svg-D5jyBgha.js → interface-bookmark.svg-C_zoDBZC.js} +1 -1
  107. package/web/assets/{interface-calendar-date-one.svg-CEE3ju0p.js → interface-calendar-date-one.svg-DC0tGASA.js} +1 -1
  108. package/web/assets/{interface-content-book-open-pages.svg-S1nvOdAe.js → interface-content-book-open-pages.svg-l-5VHr-g.js} +1 -1
  109. package/web/assets/{interface-content-book-page.svg-CtDjLJwZ.js → interface-content-book-page.svg-CagVpKh4.js} +1 -1
  110. package/web/assets/{interface-content-file.svg-AD0WHI0R.js → interface-content-file.svg-B0aGvqPx.js} +1 -1
  111. package/web/assets/interface-content-folder.svg-BQN0Hvq-.js +1 -0
  112. package/web/assets/{interface-content-folder.svg-CM-PNCCw.js → interface-content-folder.svg-CVxNoyJ7.js} +1 -1
  113. package/web/assets/{interface-copy-clipboard.svg-rflxiB0d.js → interface-copy-clipboard.svg-D78-91bx.js} +1 -1
  114. package/web/assets/{interface-edit-attachment.svg-DrANyzys.js → interface-edit-attachment.svg-D6pWV5bC.js} +1 -1
  115. package/web/assets/{interface-edit-binocular.svg-BETaEZ89.js → interface-edit-binocular.svg-C6wbX04C.js} +1 -1
  116. package/web/assets/{interface-edit-magic-wand.svg-Bj6FVo53.js → interface-edit-magic-wand.svg-CoZhFtfQ.js} +1 -1
  117. package/web/assets/{interface-edit-tool-paint-roller.svg-Bp6eRqNw.js → interface-edit-tool-paint-roller.svg-DTQGU9t3.js} +1 -1
  118. package/web/assets/{interface-edit-tool-pencil.svg-DcLn0a3t.js → interface-edit-tool-pencil.svg-ByQHy9tx.js} +1 -1
  119. package/web/assets/{interface-favorite-award.svg-DUwbk0Rk.js → interface-favorite-award.svg-0CNheH17.js} +1 -1
  120. package/web/assets/{interface-favorite-flag.svg-BRp2Dr2h.js → interface-favorite-flag.svg-CCmC-2ES.js} +1 -1
  121. package/web/assets/{interface-favorite-heart.svg-Bt_5Dxks.js → interface-favorite-heart.svg-BVpuv5ru.js} +1 -1
  122. package/web/assets/{interface-favorite-star.svg-iaJ9oR-m.js → interface-favorite-star.svg-D7-x2gpZ.js} +1 -1
  123. package/web/assets/{interface-favorite-stars-sparkles.svg-C3lZkFSY.js → interface-favorite-stars-sparkles.svg-BReo0WNX.js} +1 -1
  124. package/web/assets/{interface-hierarchy-flowchart.svg-NRnPKxEv.js → interface-hierarchy-flowchart.svg-D6044jiD.js} +1 -1
  125. package/web/assets/{interface-home-house.svg-C2pnwXuY.js → interface-home-house.svg-BDbbqQ7y.js} +1 -1
  126. package/web/assets/{interface-hyperlink.svg-DMdhqTQ5.js → interface-hyperlink.svg-jMR6mBTh.js} +1 -1
  127. package/web/assets/{interface-lighting-brightness.svg-Dvs_nG0d.js → interface-lighting-brightness.svg-DxAyAplK.js} +1 -1
  128. package/web/assets/{interface-lock-closed.svg-CBeF2Ru4.js → interface-lock-closed.svg-KHv3R3lv.js} +1 -1
  129. package/web/assets/{interface-lock-open-unlock.svg-sChGga1F.js → interface-lock-open-unlock.svg-DTVS6Ld3.js} +1 -1
  130. package/web/assets/{interface-login-key.svg-cZB0Vhyp.js → interface-login-key.svg-CmrsGePn.js} +1 -1
  131. package/web/assets/{interface-search.svg-CjcIgtti.js → interface-search.svg-D68gdm71.js} +1 -1
  132. package/web/assets/{interface-setting-cog.svg-H5RLVC2p.js → interface-setting-cog.svg-BpmjacTl.js} +1 -1
  133. package/web/assets/{interface-share-megaphone-bullhorn.svg-BEk0DA1W.js → interface-share-megaphone-bullhorn.svg-B1Qopu7g.js} +1 -1
  134. package/web/assets/{interface-share-rocket.svg-p6tQEwJ6.js → interface-share-rocket.svg-xe-sFt3v.js} +1 -1
  135. package/web/assets/{interface-share-satellite.svg-BScMkxzb.js → interface-share-satellite.svg-DKB0wpfg.js} +1 -1
  136. package/web/assets/{interface-share-space-ship.svg-RtJDwluc.js → interface-share-space-ship.svg-BXUyLcC9.js} +1 -1
  137. package/web/assets/{interface-share.svg-_Rnlgc89.js → interface-share.svg--X4Sy8OU.js} +1 -1
  138. package/web/assets/{interface-signal-square.svg-sGo7FmcD.js → interface-signal-square.svg-SVcBtlCh.js} +1 -1
  139. package/web/assets/{interface-time-clock-circle.svg-CoQLcW4m.js → interface-time-clock-circle.svg-MMicUy7s.js} +1 -1
  140. package/web/assets/{interface-time-hour-glass.svg-C4rHS8Sx.js → interface-time-hour-glass.svg-CqNSWB1s.js} +1 -1
  141. package/web/assets/{interface-users-multiple.svg-B4ewwKgQ.js → interface-users-multiple.svg-Cb-ACWeS.js} +1 -1
  142. package/web/assets/{interface-weather-moon.svg-TOU86ccq.js → interface-weather-moon.svg-BTBYfL8w.js} +1 -1
  143. package/web/assets/{javascript-3xh4h-z5.js → javascript-DW5dr95z.js} +1 -1
  144. package/web/assets/{jsonMode-C6AJYdBQ.js → jsonMode-D3gEKJlR.js} +1 -1
  145. package/web/assets/{liquid-B1uuh-2_.js → liquid-DsB3REL_.js} +1 -1
  146. package/web/assets/{lspLanguageFeatures-BSf4GNlz.js → lspLanguageFeatures-Bo6XRGjF.js} +3 -3
  147. package/web/assets/{mail-chat-bubble-square.svg-Fe7IU49T.js → mail-chat-bubble-square.svg-DQPaE_l8.js} +1 -1
  148. package/web/assets/{mail-send-email-paper-airplane.svg-Cu3dNuIm.js → mail-send-email-paper-airplane.svg-SeNV9WPa.js} +1 -1
  149. package/web/assets/{mail-send-envelope.svg-C3l1liPg.js → mail-send-envelope.svg-DZr1S3ec.js} +1 -1
  150. package/web/assets/{mdx-DjWUPAFj.js → mdx-bfiZxOWu.js} +1 -1
  151. package/web/assets/{minus-Cy49kn7z.js → minus-DDv3xj8k.js} +2 -2
  152. package/web/assets/modal-Cg41N0d3.js +5 -0
  153. package/web/assets/modal-hmS0I-a3.js +1 -0
  154. package/web/assets/{money-cashier-receipt.svg-OkY-eUsN.js → money-cashier-receipt.svg-CMGSkzy4.js} +1 -1
  155. package/web/assets/{money-currency-dollar-pay.svg-DVA6DUQs.js → money-currency-dollar-pay.svg-BqBhV1Bu.js} +1 -1
  156. package/web/assets/{money-graph-arrow-increase.svg-5zYZLe6Q.js → money-graph-arrow-increase.svg-Jb3id3iX.js} +1 -1
  157. package/web/assets/{money-graph-bar-chart-increase.svg-CqGQIzPc.js → money-graph-bar-chart-increase.svg-C1_S5Hbg.js} +1 -1
  158. package/web/assets/multiselect-D6SVauJ0.js +251 -0
  159. package/web/assets/{nature-ecology-leaf.svg-B-jPo4Mf.js → nature-ecology-leaf.svg-Cv_Ub0f3.js} +1 -1
  160. package/web/assets/{password-FAGLfFXd.js → password-BnTuhvvF.js} +4 -4
  161. package/web/assets/{phone-telephone.svg-BBDd4gOe.js → phone-telephone.svg-C8m8L7Af.js} +1 -1
  162. package/web/assets/{plus-DvHGmumH.js → plus-CwKOeZC2.js} +6 -6
  163. package/web/assets/process.store-CgBhdhXY.js +1 -0
  164. package/web/assets/{programming-bug.svg-Di_RRUT8.js → programming-bug.svg-BMbf-v1F.js} +1 -1
  165. package/web/assets/{programming-cloud.svg-UXDdd80c.js → programming-cloud.svg-DoETzNlz.js} +1 -1
  166. package/web/assets/{programming-computer-database-server.svg-DqyeVkz2.js → programming-computer-database-server.svg-DFsTW5pZ.js} +1 -1
  167. package/web/assets/{programming-computer-database.svg-BB9uaRkU.js → programming-computer-database.svg-Dap1d6pH.js} +1 -1
  168. package/web/assets/{programming-module-four-layout.svg-DXHXfvRQ.js → programming-module-four-layout.svg-Dlte_L9w.js} +1 -1
  169. package/web/assets/{programming-module-three.svg-BqdjaGQY.js → programming-module-three.svg-CF2uP4yd.js} +1 -1
  170. package/web/assets/{programming-module.svg-Dca7humV.js → programming-module.svg-DSm70VcV.js} +1 -1
  171. package/web/assets/{programming-script-code.svg-S7W_TNxH.js → programming-script-code.svg-C7LrjNTC.js} +1 -1
  172. package/web/assets/project-launch.store-HM4tWJyO.js +1 -0
  173. package/web/assets/project.store-BUbzqDJl.js +1 -0
  174. package/web/assets/{python-BMgf76Zf.js → python-DGNKYf98.js} +1 -1
  175. package/web/assets/{radiobutton-BQ5ty9EJ.js → radiobutton-Drb-6bSf.js} +2 -2
  176. package/web/assets/{razor-DRB94rOF.js → razor-CLJyE3n7.js} +1 -1
  177. package/web/assets/router-DoDaan68.js +1 -0
  178. package/web/assets/settings-scope-CA1gM0Eg.js +1 -0
  179. package/web/assets/settings.store-BJ7H5w4n.js +1 -0
  180. package/web/assets/{shopping-cart.svg-BSU4UsCc.js → shopping-cart.svg-DqX4V0Z9.js} +1 -1
  181. package/web/assets/{shopping-gift-present.svg-CC16xqoa.js → shopping-gift-present.svg-BO9ncUGX.js} +1 -1
  182. package/web/assets/{shopping-shipping-box-parcel-package.svg-jK-_sKtf.js → shopping-shipping-box-parcel-package.svg-CEjca0LH.js} +1 -1
  183. package/web/assets/src-BKjJciGN.js +572 -0
  184. package/web/assets/src-F0BzIGAP.js +1 -0
  185. package/web/assets/{tabpanel-BytkhVWV.js → tabpanel-BX_29Z1p.js} +3 -3
  186. package/web/assets/{tag-new-circle.svg-DOyNg7L6.js → tag-new-circle.svg-DEFm057e.js} +1 -1
  187. package/web/assets/theme-CXbG8xGR.js +1 -0
  188. package/web/assets/{toggleswitch-Qo70K7EJ.js → toggleswitch-BCY7RhMa.js} +2 -2
  189. package/web/assets/{travel-map-earth-globe.svg-D6szY-qJ.js → travel-map-earth-globe.svg-bobKX3Td.js} +1 -1
  190. package/web/assets/trpc-D953ojvb.js +1 -0
  191. package/web/assets/{tsMode-Lbkz8xJi.js → tsMode-HrRwEBdZ.js} +5 -5
  192. package/web/assets/{typescript-C9Y4Q3Pi.js → typescript-CM93Igq2.js} +1 -1
  193. package/web/assets/useAiChatDrawer-uMew_avv.js +1 -0
  194. package/web/assets/{useCloudOrg-C0YVyKuT.js → useCloudOrg-Dd4m5ej-.js} +1 -1
  195. package/web/assets/{useEnvVarAutocomplete-DFNddwqp.css → useEnvVarAutocomplete-ChKhQI_8.css} +1 -1
  196. package/web/assets/useEnvVarAutocomplete-CwYnoQY2.js +1 -0
  197. package/web/assets/useProjectCatalog-Ct2H50rw.js +1 -0
  198. package/web/assets/useProjectCloudOrg-By2M8LTk.js +1 -0
  199. package/web/assets/useServiceUrlHost-ZVKBplG8.js +1 -0
  200. package/web/assets/{xml-BAzLHFet.js → xml-CJGov3Ex.js} +1 -1
  201. package/web/assets/{yaml-Dd3JbA6E.js → yaml-xY3BFPUE.js} +1 -1
  202. package/web/index.html +2 -2
  203. package/agent-manager-APY7SZ75.js +0 -9
  204. package/chunk-44XAJ3MK.js.map +0 -1
  205. package/chunk-6T7R2JZR.js.map +0 -1
  206. package/chunk-OGCEFBSS.js.map +0 -1
  207. package/chunk-VPANMGAI.js.map +0 -1
  208. package/settings-manager-MQBUCUIO.js +0 -9
  209. package/src-S5TDMHPI.js.map +0 -1
  210. package/web/assets/AgentScalarChatInterface.vue-BF7maBl3.js +0 -13
  211. package/web/assets/AgentTerminalPage-CvmJM-z2.js +0 -1
  212. package/web/assets/AiChatPage-CZvzic7w.js +0 -1
  213. package/web/assets/AppLayout-B6rcGZ-d.js +0 -1
  214. package/web/assets/AuditPage-Zow6i_p1.js +0 -1
  215. package/web/assets/CloudAccountPage-C7NM_P_L.js +0 -1
  216. package/web/assets/CloudAccountPage-EIJZWYuK.js +0 -1
  217. package/web/assets/CloudMessagingPage-TLIkdLja.js +0 -2
  218. package/web/assets/DashboardPage-DVe-s0J_.js +0 -164
  219. package/web/assets/DirectoryPickerDialog-B7FOXRqJ.js +0 -1
  220. package/web/assets/EnvironmentFormPage-B8u9s5R1.js +0 -1
  221. package/web/assets/EnvironmentListPage-CmzFuAkD.js +0 -1
  222. package/web/assets/KanbanBoardPage-B4luJ-Om.css +0 -1
  223. package/web/assets/KanbanBoardPage-BwlRY-B5.js +0 -4
  224. package/web/assets/KanbanListPage-BHvmkCBo.js +0 -1
  225. package/web/assets/LaunchProjectPage-CLtvEtB7.js +0 -1
  226. package/web/assets/LaunchServicesPage-CNwMUBEf.js +0 -1
  227. package/web/assets/LogViewer-CttayRws.js +0 -3
  228. package/web/assets/OrgKeyPrompt-BCUxooW7.js +0 -1
  229. package/web/assets/ProcessDetailPage-C9SV4g8j.js +0 -1
  230. package/web/assets/RandomJobTestPage-0PVLJcpY.js +0 -2
  231. package/web/assets/ScenarioEditorPage-CDRQjUbW.js +0 -14
  232. package/web/assets/SendToChatDialog-WvHUhHoF.js +0 -1
  233. package/web/assets/ServiceControlsBar-BUTVG9E_.js +0 -1
  234. package/web/assets/ServiceDetailPage-BzPogs-k.js +0 -2
  235. package/web/assets/ServiceFormPage-BAnq0Ajd.js +0 -1
  236. package/web/assets/SettingsPage-B60IQ4-n.js +0 -2063
  237. package/web/assets/UnlockPage-BrBOIaYO.js +0 -1
  238. package/web/assets/VaultMigrationPage-DwPlrgAk.js +0 -1
  239. package/web/assets/VersionBadge-VifKvUR5.js +0 -1
  240. package/web/assets/WikiPage-hb8nDENE.js +0 -1
  241. package/web/assets/WikiView-BGFK-ViQ.js +0 -1
  242. package/web/assets/add-scalar-classes-B7RXfMBe.js +0 -387
  243. package/web/assets/card-WTAGOi1D.js +0 -32
  244. package/web/assets/client-DcD_v2XG.js +0 -24
  245. package/web/assets/cloud-chat.store-C0vZ0R5r.js +0 -1
  246. package/web/assets/cloud-client-P2Cyjp5i.js +0 -1
  247. package/web/assets/cloud-session-5od8XXV-.js +0 -2
  248. package/web/assets/cloud-session-DEFzA7ER.js +0 -1
  249. package/web/assets/column-D-tpUFcH.js +0 -763
  250. package/web/assets/index-CuOHmXqW.css +0 -1
  251. package/web/assets/interface-content-folder.svg-vAfHUVxs.js +0 -1
  252. package/web/assets/modal-4lYrZSCG.js +0 -1
  253. package/web/assets/modal-C0BaKlvZ.js +0 -5
  254. package/web/assets/multiselect-C2K875ec.js +0 -251
  255. package/web/assets/process.store-Dkhppeiw.js +0 -1
  256. package/web/assets/project-launch.store-HsHnuv7p.js +0 -1
  257. package/web/assets/project.store-nYOH1fu8.js +0 -1
  258. package/web/assets/router-CEGkI1tc.js +0 -1
  259. package/web/assets/settings-scope-Dj1u8OM-.js +0 -1
  260. package/web/assets/settings.store-CzBxGLJM.js +0 -1
  261. package/web/assets/src-21gpk7yl.js +0 -572
  262. package/web/assets/src-Brqld0NK.js +0 -197
  263. package/web/assets/src-BsM0Obsp.css +0 -1
  264. package/web/assets/src-DYhMIuuF.js +0 -1
  265. package/web/assets/theme-GoDEfTsY.js +0 -1
  266. package/web/assets/trpc-D_S7-UJx.js +0 -1
  267. package/web/assets/useAiChatDrawer-GXkAcvQ3.js +0 -1
  268. package/web/assets/useEnvVarAutocomplete-Dkjm0cg5.js +0 -1
  269. package/web/assets/useProjectCatalog-BwvqZBo1.js +0 -1
  270. package/web/assets/useProjectCloudOrg-DpsnzqQF.js +0 -1
  271. package/web/assets/useServiceUrlHost-BFSLGMHh.js +0 -1
  272. package/web/assets/w3c-keyname-tfhvQ9CV.js +0 -1
  273. /package/{agent-manager-APY7SZ75.js.map → agent-manager-HOL7ZG4V.js.map} +0 -0
  274. /package/{chat-AOL2TMLR.js.map → chat-XUIXGKSR.js.map} +0 -0
  275. /package/{chunk-77UQ2UKW.js.map → chunk-I2AZCZMR.js.map} +0 -0
  276. /package/{companion-YYXSCN3H.js.map → companion-POUL5OGO.js.map} +0 -0
  277. /package/{desktop-launcher-Q6J2LSVP.js.map → desktop-launcher-QVYFCE56.js.map} +0 -0
  278. /package/{settings-manager-MQBUCUIO.js.map → settings-manager-KKSPWSM6.js.map} +0 -0
  279. /package/web/assets/{abap-DblxFMgX.js → abap-cDlgWO6H.js} +0 -0
  280. /package/web/assets/{apex-C_fmPlQy.js → apex-DxzSGotK.js} +0 -0
  281. /package/web/assets/{azcli-D73HZyav.js → azcli-CUNfZLtQ.js} +0 -0
  282. /package/web/assets/{bat-Br4Biw6V.js → bat-C-oKGifY.js} +0 -0
  283. /package/web/assets/{bicep-Cwg6_V-m.js → bicep-C4xTl9QV.js} +0 -0
  284. /package/web/assets/{browser-D6yPejPt.js → browser-CE5P0iHW.js} +0 -0
  285. /package/web/assets/{cameligo-Dq6Izwzi.js → cameligo-COpO1ZvP.js} +0 -0
  286. /package/web/assets/{clojure-U0exYVUx.js → clojure-D8gp5eAN.js} +0 -0
  287. /package/web/assets/{coffee-mPGPozSE.js → coffee-De9HMN-q.js} +0 -0
  288. /package/web/assets/{cpp-lpr_PQMA.js → cpp-C4pJyeKy.js} +0 -0
  289. /package/web/assets/{csharp-saQQwY3s.js → csharp-B4wLqqiU.js} +0 -0
  290. /package/web/assets/{csp-CcDpUBZN.js → csp-Do0Gg4qE.js} +0 -0
  291. /package/web/assets/{css-D6QFYBbL.js → css-BLq1nXK0.js} +0 -0
  292. /package/web/assets/{cypher-B_4KCq-w.js → cypher-CDQzi0TV.js} +0 -0
  293. /package/web/assets/{dart-CgLuovz1.js → dart-bTPYn7bY.js} +0 -0
  294. /package/web/assets/{dockerfile-DObNIc52.js → dockerfile-yM7ZnQpo.js} +0 -0
  295. /package/web/assets/{ecl-BpCwjSsH.js → ecl-BgTpp_c4.js} +0 -0
  296. /package/web/assets/{elixir-CebZWKus.js → elixir-DO7wJ1ib.js} +0 -0
  297. /package/web/assets/{flow9-DhoDs9JD.js → flow9-B2Ko_py3.js} +0 -0
  298. /package/web/assets/{fsharp-YDWqgr0W.js → fsharp-DNdx3wKW.js} +0 -0
  299. /package/web/assets/{go-CaPX4mu5.js → go-D7LajbkE.js} +0 -0
  300. /package/web/assets/{graphql-DOSo46Ed.js → graphql-BCQSwUPo.js} +0 -0
  301. /package/web/assets/{hcl-nSYpx4qj.js → hcl-DR3uNUXT.js} +0 -0
  302. /package/web/assets/{ini-Ca22qQIM.js → ini-zkzQPitL.js} +0 -0
  303. /package/web/assets/{java-KrQduvTo.js → java-YFwuCa4S.js} +0 -0
  304. /package/web/assets/{julia-Bb2MDsY_.js → julia-WWwv4jLR.js} +0 -0
  305. /package/web/assets/{kotlin-DB7e82Vg.js → kotlin-FwlJkapy.js} +0 -0
  306. /package/web/assets/{less-K5fiQqgY.js → less-CyhHW1nH.js} +0 -0
  307. /package/web/assets/{lexon-Do9EcqkA.js → lexon-BScN_v1c.js} +0 -0
  308. /package/web/assets/{lua-DU9Dpzvs.js → lua-eWb9GpZJ.js} +0 -0
  309. /package/web/assets/{m3-pF6PmPkL.js → m3-C4NDU793.js} +0 -0
  310. /package/web/assets/{markdown-BNRSTD3D.js → markdown-DWWpXAtL.js} +0 -0
  311. /package/web/assets/{mips-OIXxWbNl.js → mips-BpJKGw00.js} +0 -0
  312. /package/web/assets/{msdax-Blzk7oHr.js → msdax-BiuvyZwP.js} +0 -0
  313. /package/web/assets/{mysql-CISO3r5e.js → mysql-DJW9Aa9q.js} +0 -0
  314. /package/web/assets/{objective-c-CfnC_OAj.js → objective-c-YouNnWOW.js} +0 -0
  315. /package/web/assets/{pascal-BUF-IB2S.js → pascal-jQsRnBre.js} +0 -0
  316. /package/web/assets/{pascaligo-BKce2a7P.js → pascaligo-DZI84_dt.js} +0 -0
  317. /package/web/assets/{perl-BSNQJqG3.js → perl-D9TKt-s6.js} +0 -0
  318. /package/web/assets/{pgsql-B6gnZ9Pz.js → pgsql-DXgI6ehC.js} +0 -0
  319. /package/web/assets/{php-D3DRjlE-.js → php-Cgqd4wfW.js} +0 -0
  320. /package/web/assets/{pla-DMkpEwWz.js → pla-DRDkvVUU.js} +0 -0
  321. /package/web/assets/{postiats-CS9vJAK8.js → postiats-BOLeCCau.js} +0 -0
  322. /package/web/assets/{powerquery-5wdkUpGP.js → powerquery-DCDtPNBU.js} +0 -0
  323. /package/web/assets/{powershell-CFy-OLZK.js → powershell-WnZ4e5ia.js} +0 -0
  324. /package/web/assets/{protobuf-BexdMU0z.js → protobuf-C9Dg-C9o.js} +0 -0
  325. /package/web/assets/{pug-D7XxQLO5.js → pug-Dr8RhWun.js} +0 -0
  326. /package/web/assets/{qsharp-Cbf2FpNP.js → qsharp-DukGWvWZ.js} +0 -0
  327. /package/web/assets/{r-DF7k9FbU.js → r-BC41pTgC.js} +0 -0
  328. /package/web/assets/{redis-CsS7YEaP.js → redis-D-gYIUku.js} +0 -0
  329. /package/web/assets/{redshift-ELXdujA0.js → redshift-r0XbF8XS.js} +0 -0
  330. /package/web/assets/{restructuredtext-xoFIa5lj.js → restructuredtext-DsJDS7Eu.js} +0 -0
  331. /package/web/assets/{ruby-BqZs-MXO.js → ruby-JPrm3ODz.js} +0 -0
  332. /package/web/assets/{rust-Bg6ZO_et.js → rust-C8IjEXni.js} +0 -0
  333. /package/web/assets/{sb-DiB12F6v.js → sb-D8vNiFl9.js} +0 -0
  334. /package/web/assets/{scala-DElpnKpP.js → scala-DThahuqf.js} +0 -0
  335. /package/web/assets/{scheme-1ahRBKOq.js → scheme-CvEQUYYf.js} +0 -0
  336. /package/web/assets/{scss-DEMPy3QV.js → scss-C6obpl8K.js} +0 -0
  337. /package/web/assets/{shell-DPy86lBu.js → shell-BnVmd31t.js} +0 -0
  338. /package/web/assets/{solidity-BJ26fCkf.js → solidity-Bo6zEybc.js} +0 -0
  339. /package/web/assets/{sophia-BisqpnJK.js → sophia-DuB3Px8n.js} +0 -0
  340. /package/web/assets/{sparql-C7Lhhim4.js → sparql-CW9HqMW2.js} +0 -0
  341. /package/web/assets/{sql-BXVElqbr.js → sql-CPCPCQON.js} +0 -0
  342. /package/web/assets/{st-C3Kk-cML.js → st-AxC3n-1-.js} +0 -0
  343. /package/web/assets/{swift-D8IWJydR.js → swift-CgZOS_MZ.js} +0 -0
  344. /package/web/assets/{systemverilog-524SrI2Q.js → systemverilog-DYR-yx39.js} +0 -0
  345. /package/web/assets/{tcl-MYNTx-d-.js → tcl-4hAvWv0d.js} +0 -0
  346. /package/web/assets/{twig-BAVZN0tW.js → twig-Cf_07aFW.js} +0 -0
  347. /package/web/assets/{typespec-BhgMHLJQ.js → typespec-2tXj8s11.js} +0 -0
  348. /package/web/assets/{vb-BLauMmY8.js → vb-DLpM4f4s.js} +0 -0
  349. /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-VPANMGAI.js";
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-OGCEFBSS.js";
54
+ } from "./chunk-P47X3LT3.js";
55
55
  import {
56
56
  settingsManager
57
- } from "./chunk-77UQ2UKW.js";
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-6T7R2JZR.js";
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 z5 } from "zod";
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 requireEnvAction(ctx, environmentId, action, serviceId) {
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 = z.string().max(128);
510
- var ConversationIdSchema = z.string().max(128);
511
- var NameSchema = z.string().min(1).max(200);
512
- var ShortString200Schema = z.string().max(200);
513
- var DescriptionSchema = z.string().max(2e3);
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 z2 } from "zod";
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(z2.object({
2359
- projectId: z2.string().max(128).optional(),
2360
- orgId: z2.string().max(128).nullable().optional()
2361
- }).optional()).output(z2.any()).query(async ({ input, ctx }) => {
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(z2.object({ id: z2.string().max(128) })).output(z2.any()).query(async ({ input, ctx }) => {
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(z2.any()).input(
2390
- z2.object({
2391
- agentId: z2.string().max(128).optional(),
2392
- name: z2.string().min(1).max(200),
2393
- commands: z2.array(ServiceCommandSchema).max(50).optional(),
2394
- cwd: z2.string().max(4096).optional(),
2395
- ports: z2.array(z2.number().int().min(1).max(65535)).max(20).optional(),
2396
- groups: z2.array(z2.string().max(200)).max(20).optional(),
2397
- description: z2.string().max(2e3).optional(),
2398
- docsPath: z2.string().max(4096).optional(),
2399
- url: z2.string().max(2048).optional(),
2400
- localUrls: z2.array(z2.object({
2401
- url: z2.string().max(253),
2402
- port: z2.number().int().min(1).max(65535)
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: z2.string().max(2048).optional(),
2405
- git: z2.object({ remote: z2.string().max(2048).optional(), home: z2.string().max(2048).optional() }).optional(),
2406
- meta: z2.record(z2.string().max(256), z2.string().max(2e3)).optional().refine((obj) => !obj || Object.keys(obj).length <= 100, { message: "Too many meta keys (max 100)" }),
2407
- runner: z2.enum(["native", "docker"]).optional().default("native"),
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: z2.boolean().optional().default(false),
2525
+ autoRestart: z3.boolean().optional().default(false),
2411
2526
  restartStrategy: RestartStrategySchema.optional(),
2412
- maxRestarts: z2.number().int().nonnegative().optional(),
2413
- restartBackoffMs: z2.number().int().positive().optional().default(1e3),
2414
- orgId: z2.string().max(128).nullable().optional(),
2415
- shortcuts: z2.array(ServiceShortcutSchema).max(50).optional(),
2416
- parserIds: z2.array(z2.string().max(128)).max(50).optional()
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(z2.any()).input(
2439
- z2.object({
2440
- id: z2.string().max(128),
2441
- agentId: z2.string().max(128).nullable().optional(),
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: z2.string().min(1).max(200).optional(),
2444
- commands: z2.array(ServiceCommandSchema).max(50).optional(),
2445
- cwd: z2.string().max(4096).nullable().optional(),
2446
- ports: z2.array(z2.number().int().min(1).max(65535)).max(20).optional(),
2447
- groups: z2.array(z2.string().max(200)).max(20).optional(),
2448
- description: z2.string().max(2e3).optional(),
2449
- docsPath: z2.string().max(4096).optional(),
2450
- url: z2.string().max(2048).optional(),
2451
- localUrls: z2.array(z2.object({
2452
- url: z2.string().max(253),
2453
- port: z2.number().int().min(1).max(65535)
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: z2.string().max(2048).optional(),
2456
- git: z2.object({ remote: z2.string().max(2048).optional(), home: z2.string().max(2048).optional() }).nullable().optional(),
2457
- meta: z2.record(z2.string().max(256), z2.string().max(2e3)).nullable().optional().refine((obj) => !obj || Object.keys(obj).length <= 100, { message: "Too many meta keys (max 100)" }),
2458
- runner: z2.enum(["native", "docker"]).optional(),
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: z2.boolean().optional(),
2462
- clearLogsOnStart: z2.boolean().optional(),
2576
+ autoRestart: z3.boolean().optional(),
2577
+ clearLogsOnStart: z3.boolean().optional(),
2463
2578
  restartStrategy: RestartStrategySchema.optional(),
2464
- maxRestarts: z2.number().int().nonnegative().optional(),
2465
- restartBackoffMs: z2.number().int().positive().optional(),
2466
- orgId: z2.string().max(128).nullable().optional(),
2467
- shortcuts: z2.array(ServiceShortcutSchema).max(50).optional(),
2468
- parserIds: z2.array(z2.string().max(128)).max(50).optional(),
2469
- logSources: z2.array(LogSourceConfigSchema).max(20).optional()
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(z2.object({ id: z2.string().max(128) })).output(z2.object({ success: z2.literal(true) })).mutation(async ({ 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(z2.object({ id: z2.string().max(128), checkReachability: z2.boolean().optional() })).query(async ({ 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(z2.object({ id: z2.string().max(128) })).mutation(async ({ 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 z4 } from "zod";
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 z3 } from "zod";
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 = z3.object({
3812
- instances: z3.record(z3.string(), z3.object({ lanEnabled: z3.boolean().default(false) })).default({})
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 = z4.object({
4081
- accountId: z4.string().min(1).max(64)
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(z4.object({ returnTo: z4.string().url().max(2048) })).mutation(async ({ 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(z4.object({ orgId: z4.string().min(1).max(128) })).query(async ({ input }) => ({ accountId: await accountForOrg(input.orgId) })),
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: z4.string().min(1).max(128) })).mutation(async ({ input }) => {
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
- z4.object({
4206
- path: z4.string().min(1).max(512),
4207
- method: z4.enum(["GET", "POST"]).default("GET"),
4208
- query: z4.record(z4.string().max(128), z4.string().max(2048)).optional(),
4209
- body: z4.unknown().optional(),
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: z4.string().min(1).max(64)
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-APY7SZ75.js");
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-APY7SZ75.js");
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 = z5.object({
6128
- role: z5.enum(["user", "assistant"]),
6129
- content: z5.string().max(1e5)
6242
+ var MessageSchema = z6.object({
6243
+ role: z6.enum(["user", "assistant"]),
6244
+ content: z6.string().max(1e5)
6130
6245
  });
6131
- var ImagePartSchema = z5.object({
6132
- type: z5.literal("image"),
6133
- imageId: z5.string().regex(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i),
6134
- url: z5.string().max(500),
6135
- mimeType: z5.string().max(100),
6136
- altText: z5.string().max(500).optional()
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 = z5.array(ImagePartSchema).max(5).optional();
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 = z5.discriminatedUnion("type", [
6527
- z5.object({ type: z5.literal("thinking"), text: z5.string().max(1e5) }),
6528
- z5.object({ type: z5.literal("text"), text: z5.string().max(1e5) }),
6529
- z5.object({
6530
- type: z5.literal("tool"),
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: z5.record(z5.string(), z5.unknown()).optional(),
6534
- rawInput: z5.string().max(1e4).optional(),
6535
- result: z5.unknown().optional(),
6536
- isError: z5.boolean().optional(),
6537
- pending: z5.boolean()
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 = z5.object({
6541
- role: z5.enum(["user", "assistant"]),
6542
- content: z5.string().max(1e5),
6543
- parts: z5.array(MessagePartSchema).max(200).optional()
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(z5.object({
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(z5.object({
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(z5.object({ id: Id128Schema })).query(async ({ 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(z5.object({
6736
+ create: protectedProcedure.input(z6.object({
6622
6737
  title: ShortString200Schema.optional(),
6623
- isCli: z5.boolean().optional(),
6624
- runner: z5.enum(["claude-code", "codex"]).optional(),
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: z5.string().max(1e5).optional(),
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: z5.string().max(128).nullable().optional()
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(z5.object({
6782
+ update: protectedProcedure.input(z6.object({
6668
6783
  id: Id128Schema,
6669
6784
  title: ShortString200Schema.optional(),
6670
- messages: z5.array(StoredMessageSchema).max(500).optional(),
6671
- contextUsage: z5.object({
6672
- inputTokens: z5.number().int().nonnegative(),
6673
- contextWindow: z5.number().int().positive()
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(z5.object({
6802
+ setCompanion: protectedProcedure.input(z6.object({
6688
6803
  id: Id128Schema,
6689
- enabled: z5.boolean(),
6690
- runner: z5.enum(["claude-code", "codex"]).optional()
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(z5.object({ id: Id128Schema })).query(async ({ 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(z5.object({ id: Id128Schema })).mutation(async ({ 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(z5.object({ id: Id128Schema })).mutation(async ({ 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(z5.object({ id: Id128Schema })).mutation(async ({ 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(z5.object({ id: Id128Schema, archived: z5.boolean() })).mutation(async ({ 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(z5.object({
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: z5.string().max(128).nullable().optional()
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(z5.object({ agentId: Id128Schema.optional() }).optional()).query(async ({ 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(z5.object({
6872
- text: z5.string().max(1e4),
6997
+ enhanceScenarioPrompt: protectedProcedure.input(z6.object({
6998
+ text: z6.string().max(1e4),
6873
6999
  providerId: Id128Schema.optional(),
6874
- model: z5.string().max(200).optional(),
7000
+ model: z6.string().max(200).optional(),
6875
7001
  projectId: Id128Schema.optional(),
6876
- orgId: z5.string().max(128).nullable().optional()
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(z5.object({ conversationId: ConversationIdSchema })).mutation(({ 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(z5.object({
7065
+ streamViaClaudeCode: protectedProcedure.input(z6.object({
6940
7066
  conversationId: ConversationIdSchema,
6941
- prompt: z5.string().max(1e5),
6942
- contextNote: z5.string().max(2e5).optional(),
7067
+ prompt: z6.string().max(1e5),
7068
+ contextNote: z6.string().max(2e5).optional(),
6943
7069
  model: ShortString200Schema.optional(),
6944
- effort: z5.enum(["low", "medium", "high"]).optional(),
6945
- reconnect: z5.boolean().optional(),
7070
+ effort: z6.enum(["low", "medium", "high"]).optional(),
7071
+ reconnect: z6.boolean().optional(),
6946
7072
  agentId: Id128Schema.optional(),
6947
- environmentId: z5.string().max(128).optional(),
6948
- imageIds: z5.array(z5.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(),
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(z5.object({
7176
+ streamViaCodex: protectedProcedure.input(z6.object({
7051
7177
  conversationId: ConversationIdSchema,
7052
- prompt: z5.string().max(1e5),
7053
- contextNote: z5.string().max(2e5).optional(),
7178
+ prompt: z6.string().max(1e5),
7179
+ contextNote: z6.string().max(2e5).optional(),
7054
7180
  model: ShortString200Schema.optional(),
7055
- reconnect: z5.boolean().optional(),
7181
+ reconnect: z6.boolean().optional(),
7056
7182
  agentId: Id128Schema.optional(),
7057
- environmentId: z5.string().max(128).optional(),
7058
- imageIds: z5.array(z5.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(),
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(z5.object({
7254
+ send: protectedProcedure.input(z6.object({
7129
7255
  conversationId: ConversationIdSchema,
7130
- messages: z5.array(MessageSchema).min(0).max(100),
7256
+ messages: z6.array(MessageSchema).min(0).max(100),
7131
7257
  model: ShortString200Schema.optional(),
7132
- contextNote: z5.string().max(2e5).optional(),
7133
- reconnect: z5.boolean().optional(),
7134
- imageIds: z5.array(z5.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(),
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(z5.object({
7248
- agentId: z5.string().max(128).optional(),
7249
- sessionId: z5.string().max(128).optional(),
7250
- runner: z5.enum(["claude-code", "codex"]).default("claude-code"),
7251
- resume: z5.boolean().default(false),
7252
- model: z5.string().max(128).optional(),
7253
- cwd: z5.string().max(4096).optional(),
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: z5.string().max(128).optional(),
7381
+ serviceId: z6.string().max(128).optional(),
7256
7382
  projectId: Id128Schema.optional(),
7257
- orgId: z5.string().max(128).nullable().optional(),
7258
- cols: z5.number().int().min(1).max(1e3).default(120),
7259
- rows: z5.number().int().min(1).max(1e3).default(30),
7260
- enableMcp: z5.boolean().default(false),
7261
- apiBaseUrl: z5.string().max(512).optional(),
7262
- environmentId: z5.string().max(128).optional(),
7263
- attachedContexts: z5.array(z5.object({
7264
- label: z5.string().max(200),
7265
- text: z5.string().max(1e6)
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(z5.object({
7424
- agentId: z5.string().max(128).optional(),
7425
- spawnId: z5.string().max(128),
7426
- fromOffset: z5.number().int().min(0).default(0)
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(z5.object({
7482
- agentId: z5.string().max(128).optional(),
7483
- spawnId: z5.string().max(128),
7484
- data: z5.string().max(1e6)
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(z5.object({
7495
- agentId: z5.string().max(128).optional(),
7496
- spawnId: z5.string().max(128),
7497
- cols: z5.number().int().min(1).max(1e3),
7498
- rows: z5.number().int().min(1).max(1e3)
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(z5.object({
7515
- agentId: z5.string().max(128).optional(),
7516
- sessionId: z5.string().max(128).optional(),
7517
- mimeType: z5.string().max(64),
7518
- base64: z5.string().max(15e6)
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(z5.object({ sessionId: z5.string().max(128) })).query(async ({ 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(z5.object({
7545
- agentId: z5.string().max(128).optional(),
7546
- sessionId: z5.string().max(128)
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(z5.object({ conversationId: ConversationIdSchema })).mutation(async ({ 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(z5.object({
7587
- sessionId: z5.string().max(128),
7588
- agentId: z5.string().max(128).optional(),
7589
- bytesPerSec: z5.number().int().min(100).max(1e7).default(5e4),
7590
- chunkSize: z5.number().int().min(1).max(65536).default(256),
7591
- durationMs: z5.number().int().min(0).max(36e5).default(0),
7592
- cols: z5.number().int().min(1).max(1e3).default(120),
7593
- rows: z5.number().int().min(1).max(1e3).default(30)
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(z5.object({
7641
- agentId: z5.string().max(128).optional(),
7642
- spawnId: z5.string().max(128)
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-44XAJ3MK.js.map
7848
+ //# sourceMappingURL=chunk-WE6EOX4C.js.map