@runeya/runeya 2.0.93 → 2.0.94

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 (246) hide show
  1. package/agent/index.js +191 -160
  2. package/agent/index.js.map +1 -1
  3. package/agent-manager-3KSS7BHP.js +7 -0
  4. package/{chunk-6Y24763Y.js → chunk-4PQXBTV6.js} +62 -28
  5. package/chunk-4PQXBTV6.js.map +1 -0
  6. package/index.js +1 -1
  7. package/package.json +1 -1
  8. package/{src-QDQ5AT4C.js → src-GGPKDQGD.js} +997 -933
  9. package/src-GGPKDQGD.js.map +1 -0
  10. package/web/assets/AgentScalarChatInterface.vue-CR0iWJNr.js +13 -0
  11. package/web/assets/AgentTerminalPage-DZj9UulV.js +1 -0
  12. package/web/assets/AiChatPage-D4h76hus.js +1 -0
  13. package/web/assets/AppLayout-DusPXiZn.js +1 -0
  14. package/web/assets/{AppLayout-DiMqQfDk.css → AppLayout-Sk3Qnkr-.css} +1 -1
  15. package/web/assets/AuditPage-BBEa6MYr.js +1 -0
  16. package/web/assets/CloudAccountPage-DKgXvPS1.js +1 -0
  17. package/web/assets/CloudAccountPage-DopITrxL.js +1 -0
  18. package/web/assets/CloudMessagingPage-BNIbysEO.js +2 -0
  19. package/web/assets/DashboardPage-CTGAGY7X.js +1 -0
  20. package/web/assets/DirectoryPickerDialog-BKI9vxkG.js +1 -0
  21. package/web/assets/{EditorIcon-Bi1br5gY.js → EditorIcon-CdvuLNAP.js} +2 -2
  22. package/web/assets/EnvironmentForm-BiWvLVax.js +108 -0
  23. package/web/assets/EnvironmentFormPage-RReX9Ijr.js +1 -0
  24. package/web/assets/EnvironmentListPage-BW5PlOxl.js +1 -0
  25. package/web/assets/KanbanBoardPage-BFYgHGl0.js +4 -0
  26. package/web/assets/KanbanListPage-BAcgRh8Z.js +1 -0
  27. package/web/assets/LaunchProjectPage-CpiyvCBv.js +1 -0
  28. package/web/assets/LaunchServicesPage-ChEXnYIi.js +1 -0
  29. package/web/assets/LogViewer-iTxXl8YQ.js +3 -0
  30. package/web/assets/OrgKeyPrompt-KRyXRMw7.js +1 -0
  31. package/web/assets/{ProcessControls-BOkCKqGc.js → ProcessControls-DynA7Ock.js} +1 -1
  32. package/web/assets/ProcessDetailPage-BpgGTkXx.js +1 -0
  33. package/web/assets/{ProcessMetrics-DgnpYxXh.js → ProcessMetrics-_FGC-0hm.js} +2 -2
  34. package/web/assets/ProjectDetailPage-B49_-83N.js +1 -0
  35. package/web/assets/ProjectListPage-CFoEPT2F.js +1 -0
  36. package/web/assets/RandomJobTestPage-CALSR3WS.js +2 -0
  37. package/web/assets/ScenarioEditorPage-DxyzCjhy.js +14 -0
  38. package/web/assets/SendToChatDialog-CeFdMciG.js +1 -0
  39. package/web/assets/ServiceControlsBar-CI1_piqu.js +1 -0
  40. package/web/assets/ServiceDetailPage-CVT68kTt.js +2 -0
  41. package/web/assets/ServiceFormPage-nLRxtrOu.js +1 -0
  42. package/web/assets/{SettingsPage-BKcxRTQg.css → SettingsPage-CX1EAjNK.css} +1 -1
  43. package/web/assets/SettingsPage-DDYegVxd.js +2063 -0
  44. package/web/assets/UnlockPage-D9_ZbMR_.js +1 -0
  45. package/web/assets/VariablesTable-ClL6KuSo.js +1 -0
  46. package/web/assets/VaultMigrationPage-rc5OA9Xt.js +1 -0
  47. package/web/assets/VersionBadge-K5UQnfc6.js +1 -0
  48. package/web/assets/WikiPage-VeQCqO9Z.js +1 -0
  49. package/web/assets/WikiView-XCwSa_R7.js +1 -0
  50. package/web/assets/add-scalar-classes-CvhyJKCs.js +387 -0
  51. package/web/assets/auth-errors-Cmx-4mn3.js +1 -0
  52. package/web/assets/{autocomplete-CFCpVybl.js → autocomplete-tNXsUW-e.js} +3 -3
  53. package/web/assets/{basic-shape-diamond.svg-1nuR3NBd.js → basic-shape-diamond.svg-BgNul67K.js} +1 -1
  54. package/web/assets/{basic-shape-hexagon.svg-Be-pZrVb.js → basic-shape-hexagon.svg-CILNnZwG.js} +1 -1
  55. package/web/assets/{basic-shape-primary-circle-ellipse-round.svg-9-zHtg8B.js → basic-shape-primary-circle-ellipse-round.svg-OXklrBAn.js} +1 -1
  56. package/web/assets/{basic-shape-primary-square-rectangle.svg-CRTdnGnv.js → basic-shape-primary-square-rectangle.svg-DYF4zyUj.js} +1 -1
  57. package/web/assets/{basic-shape-shield.svg-D9JPqU4l.js → basic-shape-shield.svg-CQbzQswT.js} +1 -1
  58. package/web/assets/{browser-BdPlaU7e.js → browser-CDtVZzm0.js} +1 -1
  59. package/web/assets/{browser-B6dstq4l.js → browser-CdTGBSDI.js} +1 -1
  60. package/web/assets/{card-D8XCM024.js → card-BfEdnBhU.js} +2 -2
  61. package/web/assets/{checkbox-C_jx73WS.js → checkbox-CTopTVtp.js} +3 -3
  62. package/web/assets/{chip-CQdqiw0W.js → chip-Cw38kJ50.js} +2 -2
  63. package/web/assets/{client-B_gN8XJ7.js → client-Bjn9AL4v.js} +2 -2
  64. package/web/assets/cloud-chat.store-BPoTzBeD.js +1 -0
  65. package/web/assets/cloud-session-D0ue5Z97.js +1 -0
  66. package/web/assets/column-BtLe8qbf.js +907 -0
  67. package/web/assets/{computer-device-desktop-monitor.svg-CGh6MdTp.js → computer-device-desktop-monitor.svg-ByBKx1CQ.js} +1 -1
  68. package/web/assets/{computer-device-desktop.svg-CSnagCeX.js → computer-device-desktop.svg-BPvzT4sF.js} +1 -1
  69. package/web/assets/{computer-device-laptop.svg-BI_ZVURQ.js → computer-device-laptop.svg-saGCSB2c.js} +1 -1
  70. package/web/assets/{computer-device-mobile-phone-android-samsung-back.svg-DM3ubsFX.js → computer-device-mobile-phone-android-samsung-back.svg-Bo-eisU4.js} +1 -1
  71. package/web/assets/{computer-device-mobile-phone-android-samsung.svg-CzDW3wBE.js → computer-device-mobile-phone-android-samsung.svg-Bavaieis.js} +1 -1
  72. package/web/assets/{computer-device-mobile-phone-iphone-x-back.svg-B41GuLoA.js → computer-device-mobile-phone-iphone-x-back.svg-BQK9BRXi.js} +1 -1
  73. package/web/assets/{computer-device-mobile-phone-iphone-x.svg-Cd1cIH5V.js → computer-device-mobile-phone-iphone-x.svg-C24hCDuI.js} +1 -1
  74. package/web/assets/{computer-device-mobile-tablet-touch.svg-rLuvpYQb.js → computer-device-mobile-tablet-touch.svg-CUHV3zSo.js} +1 -1
  75. package/web/assets/{computer-device-mobile-tablet.svg-DjBMAEhJ.js → computer-device-mobile-tablet.svg-C8SRYMmI.js} +1 -1
  76. package/web/assets/{computer-device-network-ethernet-cat6.svg-BeYjyXJh.js → computer-device-network-ethernet-cat6.svg-Ds4kUid3.js} +1 -1
  77. package/web/assets/{computer-device-network-lan-www.svg-DIR2TMun.js → computer-device-network-lan-www.svg-BwIieS6h.js} +1 -1
  78. package/web/assets/{computer-device-network-wifi-connection.svg-DhI5VT5g.js → computer-device-network-wifi-connection.svg-Q7Mxb3eP.js} +1 -1
  79. package/web/assets/{computer-device-network-wifi-router.svg-BO0V5pTE.js → computer-device-network-wifi-router.svg-B0PMuY1x.js} +1 -1
  80. package/web/assets/{cssMode-CdzA9M1t.js → cssMode-8lAGHoa8.js} +1 -1
  81. package/web/assets/{divider-Cijz8TDb.js → divider-DRKb8XBY.js} +2 -2
  82. package/web/assets/{docx-preview-B8bBf__c.js → docx-preview-K0JOmyAw.js} +1 -1
  83. package/web/assets/{ecology-science-erlenmeyer-flask.svg-BuQW5h4a.js → ecology-science-erlenmeyer-flask.svg-D5wbPwU2.js} +1 -1
  84. package/web/assets/{fieldset-DnZ-YI4V.js → fieldset-jU8x6yyO.js} +2 -2
  85. package/web/assets/{freemarker2-Bp9032QT.js → freemarker2-BmTZDOK9.js} +1 -1
  86. package/web/assets/{handlebars-CdVx92lU.js → handlebars-DM-mBhq3.js} +1 -1
  87. package/web/assets/{html-CkCZL9gx.js → html-BohxI4Ke.js} +1 -1
  88. package/web/assets/{htmlMode-CW62-ie1.js → htmlMode-vqRVK3v5.js} +1 -1
  89. package/web/assets/{image-flash-lightning.svg-DeCuJWFT.js → image-flash-lightning.svg-s-LoyOp-.js} +1 -1
  90. package/web/assets/{image-picture-flower.svg-2ZzZbPy5.js → image-picture-flower.svg-CofKZT5Q.js} +1 -1
  91. package/web/assets/{index-DXGQcaBP.js → index-DHr5P6pq.js} +293 -293
  92. package/web/assets/index-Da38OOd8.css +1 -0
  93. package/web/assets/{interface-alert-exclamation-diamond.svg-D9th7CAp.js → interface-alert-exclamation-diamond.svg-C4C4i4oQ.js} +1 -1
  94. package/web/assets/{interface-alert-exclamation-triangle-warning.svg-Dq9CWWQ3.js → interface-alert-exclamation-triangle-warning.svg-C-ogsTXk.js} +1 -1
  95. package/web/assets/{interface-alert-information-circle.svg-FaG159xA.js → interface-alert-information-circle.svg-BFpBDkj5.js} +1 -1
  96. package/web/assets/{interface-award-crown.svg-B_-NjgUX.js → interface-award-crown.svg-DfHdQ8rJ.js} +1 -1
  97. package/web/assets/{interface-bookmark.svg--yRnhMMQ.js → interface-bookmark-tag.svg-DkfXcRMe.js} +1 -1
  98. package/web/assets/{interface-bookmark-tag.svg-CKjw2WEc.js → interface-bookmark.svg-qCQ3v5rM.js} +1 -1
  99. package/web/assets/{interface-calendar-date-one.svg-BCrvSyS9.js → interface-calendar-date-one.svg-D2ssTK7X.js} +1 -1
  100. package/web/assets/{interface-content-book-open-pages.svg-BGIlAwyt.js → interface-content-book-open-pages.svg-CH1BmaVm.js} +1 -1
  101. package/web/assets/{interface-content-book-page.svg-DeLfK2OR.js → interface-content-book-page.svg-BU6m1d9-.js} +1 -1
  102. package/web/assets/{interface-content-file.svg-DUdYkC8Y.js → interface-content-file.svg-DbsUtWTI.js} +1 -1
  103. package/web/assets/{interface-content-folder.svg-Ccx-IYD-.js → interface-content-folder.svg-8IvlkKzB.js} +1 -1
  104. package/web/assets/interface-content-folder.svg-nRYFY3NY.js +1 -0
  105. package/web/assets/{interface-copy-clipboard.svg-DIR-oOPG.js → interface-copy-clipboard.svg-D8ev9OtX.js} +1 -1
  106. package/web/assets/{interface-edit-attachment.svg-B9CSuzCn.js → interface-edit-attachment.svg-dl-nfI3P.js} +1 -1
  107. package/web/assets/{interface-edit-binocular.svg-6WTqf985.js → interface-edit-binocular.svg-Box_OuXH.js} +1 -1
  108. package/web/assets/{interface-edit-magic-wand.svg-BiB-GwoX.js → interface-edit-magic-wand.svg-DIhMw--x.js} +1 -1
  109. package/web/assets/{interface-edit-tool-paint-roller.svg-Dh0uneh4.js → interface-edit-tool-paint-roller.svg-COUefijc.js} +1 -1
  110. package/web/assets/{interface-edit-tool-pencil.svg-C9HQOHce.js → interface-edit-tool-pencil.svg-BNmSspcl.js} +1 -1
  111. package/web/assets/{interface-favorite-award.svg-Cj_1Qy9M.js → interface-favorite-award.svg-Cy-XeB8N.js} +1 -1
  112. package/web/assets/{interface-favorite-flag.svg-BniwQaep.js → interface-favorite-flag.svg-BVBisei8.js} +1 -1
  113. package/web/assets/{interface-favorite-heart.svg-CYJO0Ggb.js → interface-favorite-heart.svg-BkVO2jBo.js} +1 -1
  114. package/web/assets/{interface-favorite-star.svg-CeFb37gO.js → interface-favorite-star.svg-Bxe8dqRi.js} +1 -1
  115. package/web/assets/{interface-favorite-stars-sparkles.svg-CGeIzi4_.js → interface-favorite-stars-sparkles.svg-MkrYfhIz.js} +1 -1
  116. package/web/assets/{interface-hierarchy-flowchart.svg-Bd0q_y82.js → interface-hierarchy-flowchart.svg-De7TQhr3.js} +1 -1
  117. package/web/assets/{interface-home-house.svg-BqSaaLzz.js → interface-home-house.svg-D_qOil1N.js} +1 -1
  118. package/web/assets/{interface-hyperlink.svg-DTtVOw8L.js → interface-hyperlink.svg-5S7ugTcP.js} +1 -1
  119. package/web/assets/{interface-lighting-brightness.svg-CVNVwF9w.js → interface-lighting-brightness.svg-vJA95mbx.js} +1 -1
  120. package/web/assets/{interface-lock-closed.svg-CKiXr8tU.js → interface-lock-closed.svg-DVL32yBG.js} +1 -1
  121. package/web/assets/{interface-lock-open-unlock.svg-DU7sOeAE.js → interface-lock-open-unlock.svg-C7DBYFPn.js} +1 -1
  122. package/web/assets/{interface-login-key.svg-tuWEt_tn.js → interface-login-key.svg-CEq51fI1.js} +1 -1
  123. package/web/assets/{interface-search.svg-CMDkllvr.js → interface-search.svg-CkP-JMXm.js} +1 -1
  124. package/web/assets/{interface-setting-cog.svg-BRM5rRrt.js → interface-setting-cog.svg-CgR9wxJN.js} +1 -1
  125. package/web/assets/{interface-share-megaphone-bullhorn.svg-BgC_SP2r.js → interface-share-megaphone-bullhorn.svg-C_VIGsI0.js} +1 -1
  126. package/web/assets/{interface-share-rocket.svg-C-XkIKh-.js → interface-share-rocket.svg-aseIyfXq.js} +1 -1
  127. package/web/assets/{interface-share-satellite.svg-BKE0N18S.js → interface-share-satellite.svg-CzkX6PJ2.js} +1 -1
  128. package/web/assets/{interface-share-space-ship.svg-B8QuVt2r.js → interface-share-space-ship.svg-Df1jdZi5.js} +1 -1
  129. package/web/assets/{interface-share.svg-bp3wJyGc.js → interface-share.svg-CioS2p8V.js} +1 -1
  130. package/web/assets/{interface-signal-square.svg-D8XH70Ue.js → interface-signal-square.svg-VUtTXd8G.js} +1 -1
  131. package/web/assets/{interface-time-clock-circle.svg-2DN-SbMe.js → interface-time-clock-circle.svg-DWh2OWyC.js} +1 -1
  132. package/web/assets/{interface-time-hour-glass.svg-l0_r1j5d.js → interface-time-hour-glass.svg-BCqCfi9r.js} +1 -1
  133. package/web/assets/{interface-users-multiple.svg-RRlj9uIH.js → interface-users-multiple.svg-Edac3LOs.js} +1 -1
  134. package/web/assets/{interface-weather-moon.svg-BmdUGPZe.js → interface-weather-moon.svg-BrK0lmKX.js} +1 -1
  135. package/web/assets/{javascript-edU55dwl.js → javascript-ByDc_p54.js} +1 -1
  136. package/web/assets/{jsonMode-CdE3cdJ3.js → jsonMode-Cm2EOOd4.js} +1 -1
  137. package/web/assets/{liquid-DCimUdoJ.js → liquid-z9Tc1tTM.js} +1 -1
  138. package/web/assets/{lspLanguageFeatures-BKbLLFFb.js → lspLanguageFeatures-D6O0oAJj.js} +1 -1
  139. package/web/assets/{mail-chat-bubble-square.svg-VF1duUdO.js → mail-chat-bubble-square.svg-obHuGV3I.js} +1 -1
  140. package/web/assets/{mail-send-email-paper-airplane.svg-CdSpwALk.js → mail-send-email-paper-airplane.svg-I-JVbCkD.js} +1 -1
  141. package/web/assets/{mail-send-envelope.svg-DZVjejiO.js → mail-send-envelope.svg-CcYcXCe5.js} +1 -1
  142. package/web/assets/{mdx-Hv_NSA7I.js → mdx-B8bePw34.js} +1 -1
  143. package/web/assets/{minus-CQh_GdvM.js → minus-k3R4JOtO.js} +2 -2
  144. package/web/assets/modal-CVWJd9ZI.js +5 -0
  145. package/web/assets/modal-Ccn3uciU.js +1 -0
  146. package/web/assets/{money-cashier-receipt.svg-CWHgfD-x.js → money-cashier-receipt.svg-BIKxMBIH.js} +1 -1
  147. package/web/assets/{money-currency-dollar-pay.svg-XPcb5aF0.js → money-currency-dollar-pay.svg-B-HfkTCE.js} +1 -1
  148. package/web/assets/{money-graph-arrow-increase.svg-DhPujH9x.js → money-graph-arrow-increase.svg-CnXoTtSD.js} +1 -1
  149. package/web/assets/{money-graph-bar-chart-increase.svg-BPOlqEDC.js → money-graph-bar-chart-increase.svg-Dt7ly9Tz.js} +1 -1
  150. package/web/assets/multiselect-BsCXwmy0.js +251 -0
  151. package/web/assets/{nature-ecology-leaf.svg-DZNsVAVa.js → nature-ecology-leaf.svg-TjKZfobq.js} +1 -1
  152. package/web/assets/{password-DlR3LzLg.js → password-dyrMCyHO.js} +4 -4
  153. package/web/assets/{phone-telephone.svg-B7vr6N8Z.js → phone-telephone.svg-CCMqAIP_.js} +1 -1
  154. package/web/assets/{plus-BDDTopKC.js → plus-Dg2E4ggP.js} +6 -6
  155. package/web/assets/process.store-CHdSS5Et.js +1 -0
  156. package/web/assets/{programming-bug.svg-DzlGVlKX.js → programming-bug.svg-yyshFuq4.js} +1 -1
  157. package/web/assets/{programming-cloud.svg-QHMLI7Md.js → programming-cloud.svg-DPyoJVZM.js} +1 -1
  158. package/web/assets/{programming-computer-database-server.svg-CjsFgYWn.js → programming-computer-database-server.svg-D7pShcvh.js} +1 -1
  159. package/web/assets/{programming-computer-database.svg-vah-tira.js → programming-computer-database.svg-CErKDQrw.js} +1 -1
  160. package/web/assets/{programming-module-four-layout.svg-Cpk_lyys.js → programming-module-four-layout.svg-B26pG3Bb.js} +1 -1
  161. package/web/assets/{programming-module-three.svg-DPfLaBLh.js → programming-module-three.svg-CnoN59HX.js} +1 -1
  162. package/web/assets/{programming-module.svg-X3KTc78b.js → programming-module.svg-C02rn1I7.js} +1 -1
  163. package/web/assets/{programming-script-code.svg-Btq5sYVs.js → programming-script-code.svg-D0sPjoPV.js} +1 -1
  164. package/web/assets/{python-7W62NPSS.js → python-1623Ut7s.js} +1 -1
  165. package/web/assets/{razor-B-cp1S_J.js → razor-CyTiWHYX.js} +1 -1
  166. package/web/assets/router-DWhykW-F.js +1 -0
  167. package/web/assets/settings-scope-9i3_Io9Z.js +1 -0
  168. package/web/assets/{settings.store-DvVMtpRN.js → settings.store-BPAoJA_7.js} +1 -1
  169. package/web/assets/{shopping-cart.svg-CrAdOGHj.js → shopping-cart.svg-Cusya5ZE.js} +1 -1
  170. package/web/assets/{shopping-gift-present.svg-D6lzCq46.js → shopping-gift-present.svg-DuhD1jDX.js} +1 -1
  171. package/web/assets/{shopping-shipping-box-parcel-package.svg-CvE0Deq6.js → shopping-shipping-box-parcel-package.svg-mUJnCOxq.js} +1 -1
  172. package/web/assets/src-BiD62eGr.js +1 -0
  173. package/web/assets/src-CGoYw9sv.css +1 -0
  174. package/web/assets/{src-KOvSDAsA.js → src-HsHwQ5rW.js} +14 -14
  175. package/web/assets/{tabpanel-DnsLaWEk.js → tabpanel-D-R0gqbm.js} +3 -3
  176. package/web/assets/{tag-new-circle.svg-K7X6DVeY.js → tag-new-circle.svg-DFYYOM3s.js} +1 -1
  177. package/web/assets/{toggleswitch-BIl5_ynN.js → toggleswitch-Bv2Y60nl.js} +2 -2
  178. package/web/assets/{travel-map-earth-globe.svg-CGHyssIY.js → travel-map-earth-globe.svg-D1KtAG5P.js} +1 -1
  179. package/web/assets/trpc-4Nls70HO.js +1 -0
  180. package/web/assets/{tsMode-Ch-xMRFe.js → tsMode-DarxEDX3.js} +1 -1
  181. package/web/assets/{typescript-DaR3W1ZS.js → typescript-Bp83QY3R.js} +1 -1
  182. package/web/assets/useAiChatDrawer-BYR24v6F.js +1 -0
  183. package/web/assets/useCloudOrg-B1BakNYp.js +572 -0
  184. package/web/assets/{useCloudOrg-CZ_ZOAVy.css → useCloudOrg-CkiFdVCe.css} +1 -1
  185. package/web/assets/useProjectCatalog-ClgttEEn.js +1 -0
  186. package/web/assets/{xml-DGHPJrA4.js → xml-CieK61bI.js} +1 -1
  187. package/web/assets/{yaml-Bt6S3avV.js → yaml-Dd4h-bcV.js} +1 -1
  188. package/web/index.html +2 -2
  189. package/agent-manager-WEFGEFRT.js +0 -7
  190. package/chunk-6Y24763Y.js.map +0 -1
  191. package/src-QDQ5AT4C.js.map +0 -1
  192. package/web/assets/AgentScalarChatInterface.vue-BlRhaFfk.js +0 -13
  193. package/web/assets/AgentTerminalPage-Bgz6cN1-.js +0 -1
  194. package/web/assets/AiChatPage-B2ZLntQV.js +0 -1
  195. package/web/assets/AppLayout-CwaLgkBP.js +0 -1
  196. package/web/assets/AuditPage-qw3Fsus7.js +0 -1
  197. package/web/assets/CloudAccountPage-BLOaK1nf.js +0 -1
  198. package/web/assets/CloudAccountPage-DTs4O-ua.js +0 -1
  199. package/web/assets/CloudMessagingPage-Cz1EQr91.js +0 -2
  200. package/web/assets/DashboardPage-B5HHqw9m.js +0 -1
  201. package/web/assets/DirectoryPickerDialog-DjpBVTYW.js +0 -1
  202. package/web/assets/EnvironmentForm-C9NbiSRH.js +0 -108
  203. package/web/assets/EnvironmentFormPage-DWbL-D3Z.js +0 -1
  204. package/web/assets/EnvironmentListPage-rdeHc34g.js +0 -1
  205. package/web/assets/KanbanBoardPage-CbHeyK8M.js +0 -4
  206. package/web/assets/KanbanListPage-xIqiBmTe.js +0 -1
  207. package/web/assets/LaunchProjectPage-D04ok35N.js +0 -1
  208. package/web/assets/LaunchServicesPage-Bkhxe7Ko.js +0 -1
  209. package/web/assets/LogViewer-BHlGDB4l.js +0 -3
  210. package/web/assets/OrgKeyPrompt-CnIY4K5s.js +0 -1
  211. package/web/assets/ProcessDetailPage-BQCvKU0O.js +0 -1
  212. package/web/assets/ProjectDetailPage-Cjf4eBYS.js +0 -1
  213. package/web/assets/ProjectListPage-DQH1VC3U.js +0 -1
  214. package/web/assets/RandomJobTestPage-BMc4Qb-3.js +0 -2
  215. package/web/assets/ScenarioEditorPage-ClH3vxG9.js +0 -14
  216. package/web/assets/SendToChatDialog-5TxDHf96.js +0 -1
  217. package/web/assets/ServiceControlsBar-D0nrwVz7.js +0 -1
  218. package/web/assets/ServiceDetailPage-DLTZ2bjR.js +0 -2
  219. package/web/assets/ServiceFormPage-BoUHidR5.js +0 -1
  220. package/web/assets/SettingsPage-B6jM9W4h.js +0 -2063
  221. package/web/assets/UnlockPage-boIYvNg3.js +0 -1
  222. package/web/assets/VariablesTable-Eyqi7OJN.js +0 -1
  223. package/web/assets/VaultMigrationPage-CqKla89B.js +0 -1
  224. package/web/assets/VersionBadge-CnU3z5Rl.js +0 -1
  225. package/web/assets/WikiPage-Cbdxhr9G.js +0 -1
  226. package/web/assets/WikiView-BeWVPGaR.js +0 -1
  227. package/web/assets/add-scalar-classes-CG8bn7uZ.js +0 -387
  228. package/web/assets/auth-errors-CZibvB1j.js +0 -1
  229. package/web/assets/cloud-chat.store-BB8XNnvp.js +0 -1
  230. package/web/assets/cloud-session-f2IzlmYY.js +0 -1
  231. package/web/assets/column-BaNiShA4.js +0 -907
  232. package/web/assets/index-Cz0azMVO.css +0 -1
  233. package/web/assets/interface-content-folder.svg-C0OEvuKX.js +0 -1
  234. package/web/assets/modal-BO4YZ0Od.js +0 -1
  235. package/web/assets/modal-DUYd78Dq.js +0 -5
  236. package/web/assets/multiselect-DJ80nRN0.js +0 -251
  237. package/web/assets/process.store-Dq6j8zkt.js +0 -1
  238. package/web/assets/router-BzVLWWlf.js +0 -1
  239. package/web/assets/settings-scope-B2XSViBz.js +0 -1
  240. package/web/assets/src-DB1mNeZv.js +0 -1
  241. package/web/assets/src-DIxcn8ra.css +0 -1
  242. package/web/assets/trpc-BT4fWDYZ.js +0 -1
  243. package/web/assets/useAiChatDrawer-Bn5BBHr2.js +0 -1
  244. package/web/assets/useCloudOrg-CCXszfIX.js +0 -572
  245. package/web/assets/useProjectCatalog-CHgbaNsn.js +0 -1
  246. /package/{agent-manager-WEFGEFRT.js.map → agent-manager-3KSS7BHP.js.map} +0 -0
package/agent/index.js CHANGED
@@ -60,7 +60,7 @@ var authMiddleware = t.middleware(({ ctx, next }) => {
60
60
  var protectedProcedure = t.procedure.use(authMiddleware);
61
61
 
62
62
  // src/trpc/routers/process.ts
63
- import { z as z23 } from "zod";
63
+ import { z as z24 } from "zod";
64
64
  import { TRPCError as TRPCError2 } from "@trpc/server";
65
65
 
66
66
  // src/services/process-manager.ts
@@ -1148,6 +1148,37 @@ var UpdateCloudApiKeyInput = z20.object({
1148
1148
  boards: z20.array(z20.string().max(64)).max(200).nullable().optional()
1149
1149
  });
1150
1150
 
1151
+ // ../../packages/shared/src/schemas/changelog.schema.ts
1152
+ import { z as z21 } from "zod";
1153
+ var ChangelogSurfaceSchema = z21.enum(["app", "cloud"]);
1154
+ var ChangelogChangeKindSchema = z21.enum(["feature", "improvement", "fix", "breaking"]);
1155
+ var ChangelogTextSchema = z21.object({
1156
+ fr: z21.string().min(1).max(500),
1157
+ en: z21.string().min(1).max(500)
1158
+ });
1159
+ var ChangelogChangeSchema = z21.object({
1160
+ kind: ChangelogChangeKindSchema,
1161
+ text: ChangelogTextSchema
1162
+ });
1163
+ var ChangelogDraftSchema = ChangelogChangeSchema.extend({
1164
+ date: z21.string().regex(/^\d{4}-\d{2}-\d{2}$/),
1165
+ title: ChangelogTextSchema.optional()
1166
+ });
1167
+ var ChangelogReleaseSchema = z21.object({
1168
+ surface: ChangelogSurfaceSchema,
1169
+ /** `1.4.2` pour l'app (version npm publiée), `2026-09-03` — ou `2026-09-03.2` — pour le cloud. */
1170
+ version: z21.string().min(1).max(32).regex(/^[0-9][0-9.-]*$/),
1171
+ /** Date de publication, `YYYY-MM-DD`. */
1172
+ date: z21.string().regex(/^\d{4}-\d{2}-\d{2}$/),
1173
+ /** Facultatif : une version peut s'annoncer par son seul numéro. */
1174
+ title: ChangelogTextSchema.optional(),
1175
+ /** Une version sans changement n'a rien à annoncer : elle n'a pas sa place ici. */
1176
+ changes: z21.array(ChangelogChangeSchema).min(1).max(50)
1177
+ });
1178
+ var ChangelogIndexItemSchema = ChangelogReleaseSchema.omit({ changes: true }).extend({
1179
+ changeCount: z21.number().int().nonnegative()
1180
+ });
1181
+
1151
1182
  // ../../packages/shared/src/utils/crypto.ts
1152
1183
  import { createCipheriv, createDecipheriv, randomBytes, pbkdf2Sync } from "crypto";
1153
1184
 
@@ -3086,7 +3117,7 @@ import { execa as execa3 } from "execa";
3086
3117
  import { homedir as homedir4 } from "os";
3087
3118
 
3088
3119
  // src/trpc/routers/config.ts
3089
- import { z as z21 } from "zod";
3120
+ import { z as z22 } from "zod";
3090
3121
 
3091
3122
  // src/services/traefik-manager.ts
3092
3123
  import { spawn, execFile as execFile2 } from "child_process";
@@ -3464,13 +3495,13 @@ function resolvePassthroughEnv() {
3464
3495
  return result;
3465
3496
  }
3466
3497
  var configRouter = router({
3467
- setPassthroughEnv: protectedProcedure.input(z21.object({
3468
- names: z21.array(
3469
- z21.string().regex(/^[A-Za-z_][A-Za-z0-9_]*$/).max(256)
3498
+ setPassthroughEnv: protectedProcedure.input(z22.object({
3499
+ names: z22.array(
3500
+ z22.string().regex(/^[A-Za-z_][A-Za-z0-9_]*$/).max(256)
3470
3501
  ).max(100),
3471
- values: z21.record(
3472
- z21.string().regex(/^[A-Za-z_][A-Za-z0-9_]*$/).max(256),
3473
- z21.string().max(32768)
3502
+ values: z22.record(
3503
+ z22.string().regex(/^[A-Za-z_][A-Za-z0-9_]*$/).max(256),
3504
+ z22.string().max(32768)
3474
3505
  ).refine((obj) => Object.keys(obj).length <= 100, "Too many values").optional()
3475
3506
  })).mutation(({ input }) => {
3476
3507
  passthroughEnvNames = input.names;
@@ -3507,7 +3538,7 @@ var configRouter = router({
3507
3538
  getTraefikFileTree: protectedProcedure.query(async () => {
3508
3539
  return traefikManager.getFileTree();
3509
3540
  }),
3510
- getTraefikLogs: protectedProcedure.input(z21.object({ lines: z21.number().int().min(1).max(500).default(100) })).query(async ({ input }) => {
3541
+ getTraefikLogs: protectedProcedure.input(z22.object({ lines: z22.number().int().min(1).max(500).default(100) })).query(async ({ input }) => {
3511
3542
  const logs = await traefikManager.getLogs(input.lines);
3512
3543
  return { logs };
3513
3544
  })
@@ -3699,17 +3730,17 @@ var healthChecker = new HealthChecker();
3699
3730
  import killPort from "kill-port";
3700
3731
 
3701
3732
  // src/config/env.ts
3702
- import { z as z22 } from "zod";
3703
- var EnvSchema = z22.object({
3704
- RUNEYA_AGENT_PORT: z22.coerce.number().int().min(1).max(65535).default(4001),
3705
- RUNEYA_AGENT_HOST: z22.string().default("127.0.0.1"),
3706
- PASSPHRASE_OVERRIDE: z22.string().regex(/^[0-9a-f]+$/i, "Must be a hex string").optional(),
3707
- AGENT_ID: z22.string().optional(),
3733
+ import { z as z23 } from "zod";
3734
+ var EnvSchema = z23.object({
3735
+ RUNEYA_AGENT_PORT: z23.coerce.number().int().min(1).max(65535).default(4001),
3736
+ RUNEYA_AGENT_HOST: z23.string().default("127.0.0.1"),
3737
+ PASSPHRASE_OVERRIDE: z23.string().regex(/^[0-9a-f]+$/i, "Must be a hex string").optional(),
3738
+ AGENT_ID: z23.string().optional(),
3708
3739
  // Set by spawner or manually for remote agents
3709
- LOG_BUFFER_SIZE: z22.coerce.number().int().positive().default(LOG_BUFFER_SIZE),
3710
- METRICS_INTERVAL: z22.coerce.number().int().positive().default(METRICS_INTERVAL),
3711
- GRACE_PERIOD: z22.coerce.number().int().positive().default(GRACE_PERIOD),
3712
- HEALTH_WS_INTERVAL: z22.coerce.number().int().positive().default(HEALTH_WS_INTERVAL)
3740
+ LOG_BUFFER_SIZE: z23.coerce.number().int().positive().default(LOG_BUFFER_SIZE),
3741
+ METRICS_INTERVAL: z23.coerce.number().int().positive().default(METRICS_INTERVAL),
3742
+ GRACE_PERIOD: z23.coerce.number().int().positive().default(GRACE_PERIOD),
3743
+ HEALTH_WS_INTERVAL: z23.coerce.number().int().positive().default(HEALTH_WS_INTERVAL)
3713
3744
  });
3714
3745
  var env = EnvSchema.parse(process.env);
3715
3746
 
@@ -4494,7 +4525,7 @@ var processRouter = router({
4494
4525
  return processManager.listStatuses();
4495
4526
  }),
4496
4527
  /** Get a single process */
4497
- get: protectedProcedure.input(z23.object({ id: z23.string().max(128) })).query(({ input }) => {
4528
+ get: protectedProcedure.input(z24.object({ id: z24.string().max(128) })).query(({ input }) => {
4498
4529
  const status = processManager.getStatus(input.id);
4499
4530
  if (!status) {
4500
4531
  throw new TRPCError2({ code: "NOT_FOUND", message: `Process ${input.id} not found` });
@@ -4507,78 +4538,78 @@ var processRouter = router({
4507
4538
  return { id };
4508
4539
  }),
4509
4540
  /** Undeploy: stop + remove */
4510
- undeploy: protectedProcedure.input(z23.object({ id: z23.string().max(128) })).mutation(async ({ input }) => {
4541
+ undeploy: protectedProcedure.input(z24.object({ id: z24.string().max(128) })).mutation(async ({ input }) => {
4511
4542
  await processManager.undeploy(input.id);
4512
4543
  return { success: true };
4513
4544
  }),
4514
4545
  /** Update the service config for a deployed process */
4515
- updateConfig: protectedProcedure.input(z23.object({ serviceId: z23.string().max(128), config: ServiceConfigSchema })).mutation(({ input }) => {
4546
+ updateConfig: protectedProcedure.input(z24.object({ serviceId: z24.string().max(128), config: ServiceConfigSchema })).mutation(({ input }) => {
4516
4547
  processManager.updateConfig(input.serviceId, input.config);
4517
4548
  return { success: true };
4518
4549
  }),
4519
4550
  /** Start a deployed process */
4520
- start: protectedProcedure.input(z23.object({ id: z23.string().max(128) })).mutation(async ({ input }) => {
4551
+ start: protectedProcedure.input(z24.object({ id: z24.string().max(128) })).mutation(async ({ input }) => {
4521
4552
  console.log(`[agent] start service=${input.id}`);
4522
4553
  await processManager.start(input.id);
4523
4554
  return processManager.getStatus(input.id);
4524
4555
  }),
4525
4556
  /** Stop a running process */
4526
- stop: protectedProcedure.input(z23.object({ id: z23.string().max(128) })).mutation(async ({ input }) => {
4557
+ stop: protectedProcedure.input(z24.object({ id: z24.string().max(128) })).mutation(async ({ input }) => {
4527
4558
  console.log(`[agent] stop service=${input.id}`);
4528
4559
  await processManager.stop(input.id);
4529
4560
  return processManager.getStatus(input.id);
4530
4561
  }),
4531
4562
  /** Restart a process */
4532
- restart: protectedProcedure.input(z23.object({ id: z23.string().max(128) })).mutation(async ({ input }) => {
4563
+ restart: protectedProcedure.input(z24.object({ id: z24.string().max(128) })).mutation(async ({ input }) => {
4533
4564
  console.log(`[agent] restart service=${input.id}`);
4534
4565
  await processManager.restart(input.id);
4535
4566
  return processManager.getStatus(input.id);
4536
4567
  }),
4537
4568
  /** Get buffered logs for a process */
4538
- logs: protectedProcedure.input(z23.object({ id: z23.string().max(128) })).query(({ input }) => {
4569
+ logs: protectedProcedure.input(z24.object({ id: z24.string().max(128) })).query(({ input }) => {
4539
4570
  const logs = processManager.getLogs(input.id);
4540
4571
  return logs;
4541
4572
  }),
4542
4573
  /** Clear buffered logs for a process */
4543
- clearLogBuffer: protectedProcedure.input(z23.object({ id: z23.string().max(128) })).mutation(({ input }) => {
4574
+ clearLogBuffer: protectedProcedure.input(z24.object({ id: z24.string().max(128) })).mutation(({ input }) => {
4544
4575
  processManager.clearLogBuffer(input.id);
4545
4576
  return { success: true };
4546
4577
  }),
4547
4578
  /** Execute a shortcut command and stream output into the process log */
4548
- executeShortcut: protectedProcedure.input(z23.object({ id: z23.string().max(128), shortcut: ServiceShortcutSchema })).mutation(async ({ input }) => {
4579
+ executeShortcut: protectedProcedure.input(z24.object({ id: z24.string().max(128), shortcut: ServiceShortcutSchema })).mutation(async ({ input }) => {
4549
4580
  const result = await processManager.executeShortcut(input.id, input.shortcut);
4550
4581
  return result;
4551
4582
  }),
4552
4583
  /** Cancel a running shortcut command */
4553
- cancelShortcut: protectedProcedure.input(z23.object({ id: z23.string().max(128), shortcutId: z23.string().max(128) })).mutation(({ input }) => {
4584
+ cancelShortcut: protectedProcedure.input(z24.object({ id: z24.string().max(128), shortcutId: z24.string().max(128) })).mutation(({ input }) => {
4554
4585
  processManager.cancelShortcut(input.id, input.shortcutId);
4555
4586
  return { success: true };
4556
4587
  }),
4557
4588
  /** Cancel a running ad-hoc command */
4558
- cancelAdHocCommand: protectedProcedure.input(z23.object({ id: z23.string().max(128), commandId: z23.string().max(128).optional() })).mutation(({ input }) => {
4589
+ cancelAdHocCommand: protectedProcedure.input(z24.object({ id: z24.string().max(128), commandId: z24.string().max(128).optional() })).mutation(({ input }) => {
4559
4590
  processManager.cancelAdHocCommand(input.id, input.commandId);
4560
4591
  return { success: true };
4561
4592
  }),
4562
4593
  /** Execute an ad-hoc command and stream output into the process log */
4563
- executeAdHocCommand: protectedProcedure.input(z23.object({
4564
- id: z23.string().max(128),
4565
- command: z23.string().min(1).max(4096),
4566
- cwd: z23.string().max(4096).optional(),
4567
- commandId: z23.string().max(128).optional()
4594
+ executeAdHocCommand: protectedProcedure.input(z24.object({
4595
+ id: z24.string().max(128),
4596
+ command: z24.string().min(1).max(4096),
4597
+ cwd: z24.string().max(4096).optional(),
4598
+ commandId: z24.string().max(128).optional()
4568
4599
  })).mutation(async ({ input }) => {
4569
4600
  const result = await processManager.executeAdHocCommand(input.id, input.command, input.cwd, input.commandId);
4570
4601
  return result;
4571
4602
  }),
4572
4603
  /** List active log source types for a process */
4573
- logSources: protectedProcedure.input(z23.object({ processId: z23.string().max(128) })).query(({ input }) => {
4604
+ logSources: protectedProcedure.input(z24.object({ processId: z24.string().max(128) })).query(({ input }) => {
4574
4605
  return processManager.getLogSourceTypes(input.processId);
4575
4606
  }),
4576
4607
  /** Get current metrics for a process */
4577
- metrics: protectedProcedure.input(z23.object({ id: z23.string().max(128) })).query(async ({ input }) => {
4608
+ metrics: protectedProcedure.input(z24.object({ id: z24.string().max(128) })).query(async ({ input }) => {
4578
4609
  return processManager.getMetrics(input.id);
4579
4610
  }),
4580
4611
  /** Subscribe to real-time log stream (yields batches of ParsedLog[]) */
4581
- onLog: protectedProcedure.input(z23.object({ processId: z23.string().max(128).optional() }).optional()).subscription(async function* ({ input }) {
4612
+ onLog: protectedProcedure.input(z24.object({ processId: z24.string().max(128).optional() }).optional()).subscription(async function* ({ input }) {
4582
4613
  const queue = [];
4583
4614
  let resolve2 = null;
4584
4615
  const handler = (batch) => {
@@ -4607,7 +4638,7 @@ var processRouter = router({
4607
4638
  }
4608
4639
  }),
4609
4640
  /** Subscribe to real-time status changes */
4610
- onStatus: protectedProcedure.input(z23.object({ processId: z23.string().max(128).optional() }).optional()).subscription(async function* ({ input }) {
4641
+ onStatus: protectedProcedure.input(z24.object({ processId: z24.string().max(128).optional() }).optional()).subscription(async function* ({ input }) {
4611
4642
  console.debug("[agent] onStatus subscription started", input?.processId ? `for process ${input.processId}` : "(all processes)");
4612
4643
  const queue = [];
4613
4644
  let resolve2 = null;
@@ -4639,7 +4670,7 @@ var processRouter = router({
4639
4670
  }
4640
4671
  }),
4641
4672
  /** Subscribe to real-time health status changes */
4642
- onHealth: protectedProcedure.input(z23.object({ processId: z23.string().max(128).optional() }).optional()).subscription(async function* ({ input }) {
4673
+ onHealth: protectedProcedure.input(z24.object({ processId: z24.string().max(128).optional() }).optional()).subscription(async function* ({ input }) {
4643
4674
  const queue = [];
4644
4675
  let resolve2 = null;
4645
4676
  const handler = (healthData) => {
@@ -4669,7 +4700,7 @@ var processRouter = router({
4669
4700
  }
4670
4701
  }),
4671
4702
  /** Subscribe to real-time metrics */
4672
- onMetrics: protectedProcedure.input(z23.object({ processId: z23.string().max(128).optional() }).optional()).subscription(async function* ({ input }) {
4703
+ onMetrics: protectedProcedure.input(z24.object({ processId: z24.string().max(128).optional() }).optional()).subscription(async function* ({ input }) {
4673
4704
  const queue = [];
4674
4705
  let resolve2 = null;
4675
4706
  const handler = (metrics) => {
@@ -4750,7 +4781,7 @@ var healthRouter = router({
4750
4781
  });
4751
4782
 
4752
4783
  // src/trpc/routers/terminal.ts
4753
- import { z as z24 } from "zod";
4784
+ import { z as z25 } from "zod";
4754
4785
  import { TRPCError as TRPCError3 } from "@trpc/server";
4755
4786
 
4756
4787
  // src/services/terminal-manager.ts
@@ -4843,11 +4874,11 @@ var terminalManager = new TerminalManager();
4843
4874
  // src/trpc/routers/terminal.ts
4844
4875
  var terminalRouter = router({
4845
4876
  /** Spawn a new PTY shell session, returns a sessionId */
4846
- create: protectedProcedure.input(z24.object({
4847
- cwd: z24.string().max(512).optional(),
4848
- cols: z24.number().int().min(1).max(512).optional(),
4849
- rows: z24.number().int().min(1).max(256).optional(),
4850
- title: z24.string().max(128).optional()
4877
+ create: protectedProcedure.input(z25.object({
4878
+ cwd: z25.string().max(512).optional(),
4879
+ cols: z25.number().int().min(1).max(512).optional(),
4880
+ rows: z25.number().int().min(1).max(256).optional(),
4881
+ title: z25.string().max(128).optional()
4851
4882
  })).mutation(({ input }) => {
4852
4883
  const sessionId = terminalManager.create(input.cwd, input.cols, input.rows, input.title);
4853
4884
  return { sessionId };
@@ -4855,34 +4886,34 @@ var terminalRouter = router({
4855
4886
  /** Les sessions encore vivantes : un onglet fermé côté web se retrouve ici */
4856
4887
  list: protectedProcedure.query(() => ({ sessions: terminalManager.list() })),
4857
4888
  /** Renommer un onglet */
4858
- rename: protectedProcedure.input(z24.object({ sessionId: z24.string().max(128), title: z24.string().max(128) })).mutation(({ input }) => {
4889
+ rename: protectedProcedure.input(z25.object({ sessionId: z25.string().max(128), title: z25.string().max(128) })).mutation(({ input }) => {
4859
4890
  terminalManager.rename(input.sessionId, input.title);
4860
4891
  return { ok: true };
4861
4892
  }),
4862
4893
  /** Write data (keystrokes) to a PTY session */
4863
- write: protectedProcedure.input(z24.object({ sessionId: z24.string().max(128), data: z24.string().max(65536) })).mutation(({ input }) => {
4894
+ write: protectedProcedure.input(z25.object({ sessionId: z25.string().max(128), data: z25.string().max(65536) })).mutation(({ input }) => {
4864
4895
  terminalManager.write(input.sessionId, input.data);
4865
4896
  return { ok: true };
4866
4897
  }),
4867
4898
  /** Resize a PTY session */
4868
- resize: protectedProcedure.input(z24.object({
4869
- sessionId: z24.string().max(128),
4870
- cols: z24.number().int().min(1).max(512),
4871
- rows: z24.number().int().min(1).max(256)
4899
+ resize: protectedProcedure.input(z25.object({
4900
+ sessionId: z25.string().max(128),
4901
+ cols: z25.number().int().min(1).max(512),
4902
+ rows: z25.number().int().min(1).max(256)
4872
4903
  })).mutation(({ input }) => {
4873
4904
  terminalManager.resize(input.sessionId, input.cols, input.rows);
4874
4905
  return { ok: true };
4875
4906
  }),
4876
4907
  /** Destroy a PTY session */
4877
- destroy: protectedProcedure.input(z24.object({ sessionId: z24.string().max(128) })).mutation(({ input }) => {
4908
+ destroy: protectedProcedure.input(z25.object({ sessionId: z25.string().max(128) })).mutation(({ input }) => {
4878
4909
  terminalManager.destroy(input.sessionId);
4879
4910
  return { ok: true };
4880
4911
  }),
4881
4912
  /** Stream PTY output for a session (async generator subscription) */
4882
- onData: protectedProcedure.input(z24.object({
4883
- sessionId: z24.string().max(128),
4913
+ onData: protectedProcedure.input(z25.object({
4914
+ sessionId: z25.string().max(128),
4884
4915
  /** Rejouer l'historique avant le flux : c'est ce qui rend l'onglet persistant. */
4885
- replay: z24.boolean().optional()
4916
+ replay: z25.boolean().optional()
4886
4917
  })).subscription(async function* ({ input }) {
4887
4918
  const emitter = terminalManager.getEmitter(input.sessionId);
4888
4919
  if (!emitter) {
@@ -4927,7 +4958,7 @@ var terminalRouter = router({
4927
4958
  });
4928
4959
 
4929
4960
  // src/trpc/routers/git.ts
4930
- import { z as z25 } from "zod";
4961
+ import { z as z26 } from "zod";
4931
4962
  import { TRPCError as TRPCError4 } from "@trpc/server";
4932
4963
  import { execFile as execFile5, spawn as spawn3 } from "child_process";
4933
4964
  import { promisify as promisify3 } from "util";
@@ -4995,12 +5026,12 @@ async function sameGitRemote(a, b, resolveHost = resolveSshHost) {
4995
5026
  var execFileAsync3 = promisify3(execFile5);
4996
5027
  var GIT_TIMEOUT = 15e3;
4997
5028
  var DIFF_MAX_BYTES = 512 * 1024;
4998
- var CWD_SCHEMA = z25.string().min(1).max(4096);
4999
- var SAFE_PATH_SCHEMA = z25.string().min(1).max(4096).refine((p) => !p.startsWith("/") && !p.includes("../"), {
5029
+ var CWD_SCHEMA = z26.string().min(1).max(4096);
5030
+ var SAFE_PATH_SCHEMA = z26.string().min(1).max(4096).refine((p) => !p.startsWith("/") && !p.includes("../"), {
5000
5031
  message: "Path must be relative and not traverse up"
5001
5032
  });
5002
- var REMOTE_SCHEMA = z25.string().min(1).max(128).regex(/^[a-zA-Z0-9_\-.]+$/);
5003
- var BRANCH_SCHEMA = z25.string().min(1).max(256).regex(/^[a-zA-Z0-9._\-/]+$/);
5033
+ var REMOTE_SCHEMA = z26.string().min(1).max(128).regex(/^[a-zA-Z0-9_\-.]+$/);
5034
+ var BRANCH_SCHEMA = z26.string().min(1).max(256).regex(/^[a-zA-Z0-9._\-/]+$/);
5004
5035
  function gitSafeEnv() {
5005
5036
  const env2 = {
5006
5037
  GIT_TERMINAL_PROMPT: "0",
@@ -5118,10 +5149,10 @@ async function getGitStatus(cwd) {
5118
5149
  }
5119
5150
  var gitRouter = router({
5120
5151
  /** Check if a working directory exists and optionally verify its git remote */
5121
- checkCwd: protectedProcedure.input(z25.object({
5152
+ checkCwd: protectedProcedure.input(z26.object({
5122
5153
  cwd: CWD_SCHEMA,
5123
- remote: z25.string().max(2048).optional(),
5124
- checkReachability: z25.boolean().optional()
5154
+ remote: z26.string().max(2048).optional(),
5155
+ checkReachability: z26.boolean().optional()
5125
5156
  })).query(async ({ input }) => {
5126
5157
  const resolvedCwd = expandEnvVar(input.cwd);
5127
5158
  const unresolvedVars = [...resolvedCwd.matchAll(/\$\{?(\w+)\}?/g)].map((m) => m[1]);
@@ -5143,8 +5174,8 @@ var gitRouter = router({
5143
5174
  return { exists, actualRemote, remoteMatches, unreachable: false, resolvedCwd: absoluteCwd, unresolvedVars: [] };
5144
5175
  }),
5145
5176
  /** Clone a git repository into a target directory */
5146
- clone: protectedProcedure.input(z25.object({
5147
- remote: z25.string().min(1).max(2048),
5177
+ clone: protectedProcedure.input(z26.object({
5178
+ remote: z26.string().min(1).max(2048),
5148
5179
  cwd: CWD_SCHEMA
5149
5180
  })).mutation(async ({ input }) => {
5150
5181
  const absoluteCwd = resolvePath(expandEnvVar(input.cwd));
@@ -5165,13 +5196,13 @@ var gitRouter = router({
5165
5196
  return { success: true };
5166
5197
  }),
5167
5198
  /** Get full git status */
5168
- status: protectedProcedure.input(z25.object({ cwd: CWD_SCHEMA })).query(async ({ input }) => {
5199
+ status: protectedProcedure.input(z26.object({ cwd: CWD_SCHEMA })).query(async ({ input }) => {
5169
5200
  const cwd = assertCwdExists(input.cwd);
5170
5201
  await assertGitRepo(cwd);
5171
5202
  return getGitStatus(cwd);
5172
5203
  }),
5173
5204
  /** Watch .git/ for changes and stream updated status */
5174
- onStatusChange: protectedProcedure.input(z25.object({ cwd: CWD_SCHEMA })).subscription(async function* ({ input }) {
5205
+ onStatusChange: protectedProcedure.input(z26.object({ cwd: CWD_SCHEMA })).subscription(async function* ({ input }) {
5175
5206
  const cwd = assertCwdExists(input.cwd);
5176
5207
  await assertGitRepo(cwd);
5177
5208
  const gitDir = (await git(["rev-parse", "--git-dir"], cwd, true)).trim();
@@ -5222,7 +5253,7 @@ var gitRouter = router({
5222
5253
  }
5223
5254
  }),
5224
5255
  /** Get commit log */
5225
- log: protectedProcedure.input(z25.object({ cwd: CWD_SCHEMA, limit: z25.number().int().min(1).max(200).default(50) })).query(async ({ input }) => {
5256
+ log: protectedProcedure.input(z26.object({ cwd: CWD_SCHEMA, limit: z26.number().int().min(1).max(200).default(50) })).query(async ({ input }) => {
5226
5257
  const cwd = assertCwdExists(input.cwd);
5227
5258
  await assertGitRepo(cwd);
5228
5259
  const format = "%H%h%an%ae%ai%s";
@@ -5233,7 +5264,7 @@ var gitRouter = router({
5233
5264
  });
5234
5265
  }),
5235
5266
  /** List local and remote branches */
5236
- branches: protectedProcedure.input(z25.object({ cwd: CWD_SCHEMA })).query(async ({ input }) => {
5267
+ branches: protectedProcedure.input(z26.object({ cwd: CWD_SCHEMA })).query(async ({ input }) => {
5237
5268
  const cwd = assertCwdExists(input.cwd);
5238
5269
  await assertGitRepo(cwd);
5239
5270
  const current = (await git(["rev-parse", "--abbrev-ref", "HEAD"], cwd, true)).trim();
@@ -5245,7 +5276,7 @@ var gitRouter = router({
5245
5276
  return { current, branches };
5246
5277
  }),
5247
5278
  /** Checkout a branch */
5248
- checkout: protectedProcedure.input(z25.object({ cwd: CWD_SCHEMA, branch: BRANCH_SCHEMA, create: z25.boolean().default(false) })).mutation(async ({ input }) => {
5279
+ checkout: protectedProcedure.input(z26.object({ cwd: CWD_SCHEMA, branch: BRANCH_SCHEMA, create: z26.boolean().default(false) })).mutation(async ({ input }) => {
5249
5280
  const cwd = assertCwdExists(input.cwd);
5250
5281
  await assertGitRepo(cwd);
5251
5282
  const args = input.create ? ["checkout", "-b", input.branch] : ["checkout", input.branch];
@@ -5253,42 +5284,42 @@ var gitRouter = router({
5253
5284
  return { ok: true };
5254
5285
  }),
5255
5286
  /** Stage files */
5256
- stage: protectedProcedure.input(z25.object({ cwd: CWD_SCHEMA, paths: z25.array(SAFE_PATH_SCHEMA).min(1).max(500) })).mutation(async ({ input }) => {
5287
+ stage: protectedProcedure.input(z26.object({ cwd: CWD_SCHEMA, paths: z26.array(SAFE_PATH_SCHEMA).min(1).max(500) })).mutation(async ({ input }) => {
5257
5288
  const cwd = assertCwdExists(input.cwd);
5258
5289
  await assertGitRepo(cwd);
5259
5290
  await git(["add", "--", ...input.paths], cwd);
5260
5291
  return { ok: true };
5261
5292
  }),
5262
5293
  /** Stage all files */
5263
- stageAll: protectedProcedure.input(z25.object({ cwd: CWD_SCHEMA })).mutation(async ({ input }) => {
5294
+ stageAll: protectedProcedure.input(z26.object({ cwd: CWD_SCHEMA })).mutation(async ({ input }) => {
5264
5295
  const cwd = assertCwdExists(input.cwd);
5265
5296
  await assertGitRepo(cwd);
5266
5297
  await git(["add", "-A"], cwd);
5267
5298
  return { ok: true };
5268
5299
  }),
5269
5300
  /** Unstage files */
5270
- unstage: protectedProcedure.input(z25.object({ cwd: CWD_SCHEMA, paths: z25.array(SAFE_PATH_SCHEMA).min(1).max(500) })).mutation(async ({ input }) => {
5301
+ unstage: protectedProcedure.input(z26.object({ cwd: CWD_SCHEMA, paths: z26.array(SAFE_PATH_SCHEMA).min(1).max(500) })).mutation(async ({ input }) => {
5271
5302
  const cwd = assertCwdExists(input.cwd);
5272
5303
  await assertGitRepo(cwd);
5273
5304
  await git(["restore", "--staged", "--", ...input.paths], cwd);
5274
5305
  return { ok: true };
5275
5306
  }),
5276
5307
  /** Unstage all files */
5277
- unstageAll: protectedProcedure.input(z25.object({ cwd: CWD_SCHEMA })).mutation(async ({ input }) => {
5308
+ unstageAll: protectedProcedure.input(z26.object({ cwd: CWD_SCHEMA })).mutation(async ({ input }) => {
5278
5309
  const cwd = assertCwdExists(input.cwd);
5279
5310
  await assertGitRepo(cwd);
5280
5311
  await git(["reset", "--"], cwd);
5281
5312
  return { ok: true };
5282
5313
  }),
5283
5314
  /** Commit staged changes */
5284
- commit: protectedProcedure.input(z25.object({ cwd: CWD_SCHEMA, message: z25.string().min(1).max(4096) })).mutation(async ({ input }) => {
5315
+ commit: protectedProcedure.input(z26.object({ cwd: CWD_SCHEMA, message: z26.string().min(1).max(4096) })).mutation(async ({ input }) => {
5285
5316
  const cwd = assertCwdExists(input.cwd);
5286
5317
  await assertGitRepo(cwd);
5287
5318
  const output = await git(["commit", "-m", input.message], cwd);
5288
5319
  return { ok: true, output: output.trim() };
5289
5320
  }),
5290
5321
  /** Push to remote */
5291
- push: protectedProcedure.input(z25.object({ cwd: CWD_SCHEMA, remote: REMOTE_SCHEMA.default("origin"), setUpstream: z25.boolean().default(false) })).mutation(async ({ input }) => {
5322
+ push: protectedProcedure.input(z26.object({ cwd: CWD_SCHEMA, remote: REMOTE_SCHEMA.default("origin"), setUpstream: z26.boolean().default(false) })).mutation(async ({ input }) => {
5292
5323
  const cwd = assertCwdExists(input.cwd);
5293
5324
  await assertGitRepo(cwd);
5294
5325
  const branch = (await git(["rev-parse", "--abbrev-ref", "HEAD"], cwd, true)).trim();
@@ -5297,25 +5328,25 @@ var gitRouter = router({
5297
5328
  return { ok: true, output: output.trim() };
5298
5329
  }),
5299
5330
  /** Pull from remote */
5300
- pull: protectedProcedure.input(z25.object({ cwd: CWD_SCHEMA, remote: REMOTE_SCHEMA.default("origin") })).mutation(async ({ input }) => {
5331
+ pull: protectedProcedure.input(z26.object({ cwd: CWD_SCHEMA, remote: REMOTE_SCHEMA.default("origin") })).mutation(async ({ input }) => {
5301
5332
  const cwd = assertCwdExists(input.cwd);
5302
5333
  await assertGitRepo(cwd);
5303
5334
  const output = await git(["pull", input.remote], cwd);
5304
5335
  return { ok: true, output: output.trim() };
5305
5336
  }),
5306
5337
  /** Fetch from remote */
5307
- fetch: protectedProcedure.input(z25.object({ cwd: CWD_SCHEMA, remote: REMOTE_SCHEMA.default("origin") })).mutation(async ({ input }) => {
5338
+ fetch: protectedProcedure.input(z26.object({ cwd: CWD_SCHEMA, remote: REMOTE_SCHEMA.default("origin") })).mutation(async ({ input }) => {
5308
5339
  const cwd = assertCwdExists(input.cwd);
5309
5340
  await assertGitRepo(cwd);
5310
5341
  const output = await git(["fetch", input.remote], cwd);
5311
5342
  return { ok: true, output: output.trim() };
5312
5343
  }),
5313
5344
  /** Get diff for a file or the whole index */
5314
- diff: protectedProcedure.input(z25.object({
5345
+ diff: protectedProcedure.input(z26.object({
5315
5346
  cwd: CWD_SCHEMA,
5316
- path: z25.string().max(4096).optional(),
5317
- staged: z25.boolean().default(false),
5318
- untracked: z25.boolean().default(false)
5347
+ path: z26.string().max(4096).optional(),
5348
+ staged: z26.boolean().default(false),
5349
+ untracked: z26.boolean().default(false)
5319
5350
  })).query(async ({ input }) => {
5320
5351
  const cwd = assertCwdExists(input.cwd);
5321
5352
  await assertGitRepo(cwd);
@@ -5363,21 +5394,21 @@ var gitRouter = router({
5363
5394
  };
5364
5395
  }),
5365
5396
  /** Discard changes to working tree files */
5366
- discard: protectedProcedure.input(z25.object({ cwd: CWD_SCHEMA, paths: z25.array(SAFE_PATH_SCHEMA).min(1).max(500) })).mutation(async ({ input }) => {
5397
+ discard: protectedProcedure.input(z26.object({ cwd: CWD_SCHEMA, paths: z26.array(SAFE_PATH_SCHEMA).min(1).max(500) })).mutation(async ({ input }) => {
5367
5398
  const cwd = assertCwdExists(input.cwd);
5368
5399
  await assertGitRepo(cwd);
5369
5400
  await git(["restore", "--", ...input.paths], cwd);
5370
5401
  return { ok: true };
5371
5402
  }),
5372
5403
  /** Get staged diff (used by server for AI commit message generation) */
5373
- stagedDiff: protectedProcedure.input(z25.object({ cwd: CWD_SCHEMA })).query(async ({ input }) => {
5404
+ stagedDiff: protectedProcedure.input(z26.object({ cwd: CWD_SCHEMA })).query(async ({ input }) => {
5374
5405
  const cwd = assertCwdExists(input.cwd);
5375
5406
  await assertGitRepo(cwd);
5376
5407
  const diff = await git(["diff", "--staged"], cwd, true);
5377
5408
  return { diff: diff.slice(0, 3e4) };
5378
5409
  }),
5379
5410
  /** Merge a branch into the current branch */
5380
- merge: protectedProcedure.input(z25.object({ cwd: CWD_SCHEMA, branch: BRANCH_SCHEMA, noFf: z25.boolean().default(false) })).mutation(async ({ input }) => {
5411
+ merge: protectedProcedure.input(z26.object({ cwd: CWD_SCHEMA, branch: BRANCH_SCHEMA, noFf: z26.boolean().default(false) })).mutation(async ({ input }) => {
5381
5412
  const cwd = assertCwdExists(input.cwd);
5382
5413
  await assertGitRepo(cwd);
5383
5414
  const args = input.noFf ? ["merge", "--no-ff", input.branch] : ["merge", input.branch];
@@ -5385,14 +5416,14 @@ var gitRouter = router({
5385
5416
  return { ok: true, output: output.trim() };
5386
5417
  }),
5387
5418
  /** Rebase current branch onto another branch */
5388
- rebase: protectedProcedure.input(z25.object({ cwd: CWD_SCHEMA, branch: BRANCH_SCHEMA })).mutation(async ({ input }) => {
5419
+ rebase: protectedProcedure.input(z26.object({ cwd: CWD_SCHEMA, branch: BRANCH_SCHEMA })).mutation(async ({ input }) => {
5389
5420
  const cwd = assertCwdExists(input.cwd);
5390
5421
  await assertGitRepo(cwd);
5391
5422
  const output = await git(["rebase", input.branch], cwd);
5392
5423
  return { ok: true, output: output.trim() };
5393
5424
  }),
5394
5425
  /** List remotes */
5395
- remotes: protectedProcedure.input(z25.object({ cwd: CWD_SCHEMA })).query(async ({ input }) => {
5426
+ remotes: protectedProcedure.input(z26.object({ cwd: CWD_SCHEMA })).query(async ({ input }) => {
5396
5427
  const cwd = assertCwdExists(input.cwd);
5397
5428
  await assertGitRepo(cwd);
5398
5429
  const output = await git(["remote", "-v"], cwd, true);
@@ -5410,7 +5441,7 @@ var gitRouter = router({
5410
5441
  return remotes;
5411
5442
  }),
5412
5443
  /** List stash entries */
5413
- stashList: protectedProcedure.input(z25.object({ cwd: CWD_SCHEMA })).query(async ({ input }) => {
5444
+ stashList: protectedProcedure.input(z26.object({ cwd: CWD_SCHEMA })).query(async ({ input }) => {
5414
5445
  const cwd = assertCwdExists(input.cwd);
5415
5446
  await assertGitRepo(cwd);
5416
5447
  const output = await git(["stash", "list", "--format=%gd%s"], cwd, true);
@@ -5423,10 +5454,10 @@ var gitRouter = router({
5423
5454
  return entries;
5424
5455
  }),
5425
5456
  /** Stash current changes */
5426
- stashPush: protectedProcedure.input(z25.object({
5457
+ stashPush: protectedProcedure.input(z26.object({
5427
5458
  cwd: CWD_SCHEMA,
5428
- message: z25.string().max(4096).optional(),
5429
- includeUntracked: z25.boolean().default(true)
5459
+ message: z26.string().max(4096).optional(),
5460
+ includeUntracked: z26.boolean().default(true)
5430
5461
  })).mutation(async ({ input }) => {
5431
5462
  const cwd = assertCwdExists(input.cwd);
5432
5463
  await assertGitRepo(cwd);
@@ -5437,21 +5468,21 @@ var gitRouter = router({
5437
5468
  return { ok: true, output: output.trim() };
5438
5469
  }),
5439
5470
  /** Apply a stash entry and remove it from the list */
5440
- stashPop: protectedProcedure.input(z25.object({ cwd: CWD_SCHEMA, index: z25.number().int().min(0).max(1e3).default(0) })).mutation(async ({ input }) => {
5471
+ stashPop: protectedProcedure.input(z26.object({ cwd: CWD_SCHEMA, index: z26.number().int().min(0).max(1e3).default(0) })).mutation(async ({ input }) => {
5441
5472
  const cwd = assertCwdExists(input.cwd);
5442
5473
  await assertGitRepo(cwd);
5443
5474
  const output = await git(["stash", "pop", `stash@{${input.index}}`], cwd);
5444
5475
  return { ok: true, output: output.trim() };
5445
5476
  }),
5446
5477
  /** Apply a stash entry without removing it from the list */
5447
- stashApply: protectedProcedure.input(z25.object({ cwd: CWD_SCHEMA, index: z25.number().int().min(0).max(1e3).default(0) })).mutation(async ({ input }) => {
5478
+ stashApply: protectedProcedure.input(z26.object({ cwd: CWD_SCHEMA, index: z26.number().int().min(0).max(1e3).default(0) })).mutation(async ({ input }) => {
5448
5479
  const cwd = assertCwdExists(input.cwd);
5449
5480
  await assertGitRepo(cwd);
5450
5481
  const output = await git(["stash", "apply", `stash@{${input.index}}`], cwd);
5451
5482
  return { ok: true, output: output.trim() };
5452
5483
  }),
5453
5484
  /** Drop a stash entry */
5454
- stashDrop: protectedProcedure.input(z25.object({ cwd: CWD_SCHEMA, index: z25.number().int().min(0).max(1e3).default(0) })).mutation(async ({ input }) => {
5485
+ stashDrop: protectedProcedure.input(z26.object({ cwd: CWD_SCHEMA, index: z26.number().int().min(0).max(1e3).default(0) })).mutation(async ({ input }) => {
5455
5486
  const cwd = assertCwdExists(input.cwd);
5456
5487
  await assertGitRepo(cwd);
5457
5488
  const output = await git(["stash", "drop", `stash@{${input.index}}`], cwd);
@@ -5484,7 +5515,7 @@ function runGitRaw(args, timeoutMs, extraEnv) {
5484
5515
  }
5485
5516
 
5486
5517
  // src/trpc/routers/ai.ts
5487
- import { z as z26 } from "zod";
5518
+ import { z as z27 } from "zod";
5488
5519
  import { TRPCError as TRPCError5 } from "@trpc/server";
5489
5520
 
5490
5521
  // src/services/ai-spawn-manager.ts
@@ -6201,23 +6232,23 @@ var MAX_CONTEXT_FILE_BYTES = 1e6;
6201
6232
  var MAX_CONTEXT_TOTAL_BYTES = 5e6;
6202
6233
  var aiRouter = router({
6203
6234
  /** Spawn an AI CLI process. Returns a spawnId for streaming. */
6204
- spawn: protectedProcedure.input(z26.object({
6205
- cli: z26.string().max(64),
6206
- args: z26.array(z26.string().max(5e5)),
6207
- env: z26.record(z26.string().max(256), z26.string().max(5e5)).optional(),
6208
- cwd: z26.string().max(4096).optional(),
6209
- stdinData: z26.string().max(1e7).optional(),
6210
- enableMcp: z26.boolean().optional(),
6211
- mcpApiBaseUrl: z26.string().max(512).optional(),
6212
- mcpApiToken: z26.string().max(8192).optional()
6235
+ spawn: protectedProcedure.input(z27.object({
6236
+ cli: z27.string().max(64),
6237
+ args: z27.array(z27.string().max(5e5)),
6238
+ env: z27.record(z27.string().max(256), z27.string().max(5e5)).optional(),
6239
+ cwd: z27.string().max(4096).optional(),
6240
+ stdinData: z27.string().max(1e7).optional(),
6241
+ enableMcp: z27.boolean().optional(),
6242
+ mcpApiBaseUrl: z27.string().max(512).optional(),
6243
+ mcpApiToken: z27.string().max(8192).optional()
6213
6244
  })).mutation(({ input }) => {
6214
6245
  const spawnId = aiSpawnManager.spawn(input);
6215
6246
  return { spawnId };
6216
6247
  }),
6217
6248
  /** Stream stdout/stderr/exit chunks from offset. Reconnectable. */
6218
- stream: protectedProcedure.input(z26.object({
6219
- spawnId: z26.string().max(128),
6220
- fromOffset: z26.number().int().min(0).default(0)
6249
+ stream: protectedProcedure.input(z27.object({
6250
+ spawnId: z27.string().max(128),
6251
+ fromOffset: z27.number().int().min(0).default(0)
6221
6252
  })).subscription(async function* ({ input }) {
6222
6253
  try {
6223
6254
  for await (const item of aiSpawnManager.stream(input.spawnId, input.fromOffset)) {
@@ -6231,39 +6262,39 @@ var aiRouter = router({
6231
6262
  }
6232
6263
  }),
6233
6264
  /** Spawn an AI CLI process in a PTY (interactive mode). Returns spawnId. */
6234
- spawnPty: protectedProcedure.input(z26.object({
6235
- cli: z26.string().max(64),
6236
- args: z26.array(z26.string().max(5e5)),
6237
- env: z26.record(z26.string().max(256), z26.string().max(5e5)).optional(),
6238
- cwd: z26.string().max(4096).optional(),
6239
- cols: z26.number().int().min(1).max(1e3).optional(),
6240
- rows: z26.number().int().min(1).max(1e3).optional(),
6241
- sessionId: z26.string().max(128).optional(),
6242
- enableMcp: z26.boolean().optional(),
6243
- mcpApiBaseUrl: z26.string().max(512).optional(),
6244
- mcpApiToken: z26.string().max(8192).optional()
6265
+ spawnPty: protectedProcedure.input(z27.object({
6266
+ cli: z27.string().max(64),
6267
+ args: z27.array(z27.string().max(5e5)),
6268
+ env: z27.record(z27.string().max(256), z27.string().max(5e5)).optional(),
6269
+ cwd: z27.string().max(4096).optional(),
6270
+ cols: z27.number().int().min(1).max(1e3).optional(),
6271
+ rows: z27.number().int().min(1).max(1e3).optional(),
6272
+ sessionId: z27.string().max(128).optional(),
6273
+ enableMcp: z27.boolean().optional(),
6274
+ mcpApiBaseUrl: z27.string().max(512).optional(),
6275
+ mcpApiToken: z27.string().max(8192).optional()
6245
6276
  })).mutation(({ input }) => {
6246
6277
  const spawnId = aiSpawnManager.spawnPty(input);
6247
6278
  return { spawnId };
6248
6279
  }),
6249
6280
  /** Find a running PTY spawn by its logical sessionId (for re-attach). */
6250
- findPtyBySession: protectedProcedure.input(z26.object({ sessionId: z26.string().max(128) })).query(({ input }) => {
6281
+ findPtyBySession: protectedProcedure.input(z27.object({ sessionId: z27.string().max(128) })).query(({ input }) => {
6251
6282
  return aiSpawnManager.findPtyBySessionId(input.sessionId);
6252
6283
  }),
6253
6284
  /** Write input to a PTY spawn (user keystrokes). */
6254
- writePty: protectedProcedure.input(z26.object({
6255
- spawnId: z26.string().max(128),
6256
- data: z26.string().max(1e6)
6285
+ writePty: protectedProcedure.input(z27.object({
6286
+ spawnId: z27.string().max(128),
6287
+ data: z27.string().max(1e6)
6257
6288
  })).mutation(({ input }) => {
6258
6289
  const ok = aiSpawnManager.writePty(input.spawnId, input.data);
6259
6290
  return { ok };
6260
6291
  }),
6261
6292
  /** Write attached-context files for an AI session to a temp dir. Returns absolute paths. */
6262
- writeContextFiles: protectedProcedure.input(z26.object({
6263
- sessionId: z26.string().min(1).max(128),
6264
- files: z26.array(z26.object({
6265
- name: z26.string().min(1).max(256),
6266
- content: z26.string().max(MAX_CONTEXT_FILE_BYTES)
6293
+ writeContextFiles: protectedProcedure.input(z27.object({
6294
+ sessionId: z27.string().min(1).max(128),
6295
+ files: z27.array(z27.object({
6296
+ name: z27.string().min(1).max(256),
6297
+ content: z27.string().max(MAX_CONTEXT_FILE_BYTES)
6267
6298
  })).min(1).max(MAX_CONTEXT_FILES)
6268
6299
  }).refine(
6269
6300
  (val) => val.files.reduce((sum, f) => sum + f.content.length, 0) <= MAX_CONTEXT_TOTAL_BYTES,
@@ -6278,25 +6309,25 @@ var aiRouter = router({
6278
6309
  * which clipboard method (if any) succeeded — caller decides whether to send
6279
6310
  * Ctrl+V (\x16) or inject `@<path>` into the PTY.
6280
6311
  */
6281
- pasteImage: protectedProcedure.input(z26.object({
6282
- sessionId: z26.string().max(128).optional(),
6283
- mimeType: z26.string().max(64),
6284
- base64: z26.string().max(15e6)
6312
+ pasteImage: protectedProcedure.input(z27.object({
6313
+ sessionId: z27.string().max(128).optional(),
6314
+ mimeType: z27.string().max(64),
6315
+ base64: z27.string().max(15e6)
6285
6316
  })).mutation(async ({ input }) => {
6286
6317
  const res = await savePastedImage(input.base64, input.mimeType, input.sessionId);
6287
6318
  return res;
6288
6319
  }),
6289
6320
  /** Resize a PTY spawn. */
6290
- resizePty: protectedProcedure.input(z26.object({
6291
- spawnId: z26.string().max(128),
6292
- cols: z26.number().int().min(1).max(1e3),
6293
- rows: z26.number().int().min(1).max(1e3)
6321
+ resizePty: protectedProcedure.input(z27.object({
6322
+ spawnId: z27.string().max(128),
6323
+ cols: z27.number().int().min(1).max(1e3),
6324
+ rows: z27.number().int().min(1).max(1e3)
6294
6325
  })).mutation(({ input }) => {
6295
6326
  const ok = aiSpawnManager.resizePty(input.spawnId, input.cols, input.rows);
6296
6327
  return { ok };
6297
6328
  }),
6298
6329
  /** Kill a running AI spawn. */
6299
- kill: protectedProcedure.input(z26.object({ spawnId: z26.string().max(128) })).mutation(({ input }) => {
6330
+ kill: protectedProcedure.input(z27.object({ spawnId: z27.string().max(128) })).mutation(({ input }) => {
6300
6331
  const killed = aiSpawnManager.kill(input.spawnId);
6301
6332
  return { ok: killed };
6302
6333
  }),
@@ -6305,23 +6336,23 @@ var aiRouter = router({
6305
6336
  return aiSpawnManager.list();
6306
6337
  }),
6307
6338
  /** Acknowledge receipt of all data — agent can clean up after TTL. */
6308
- ack: protectedProcedure.input(z26.object({ spawnId: z26.string().max(128) })).mutation(({ input }) => {
6339
+ ack: protectedProcedure.input(z27.object({ spawnId: z27.string().max(128) })).mutation(({ input }) => {
6309
6340
  const acked = aiSpawnManager.ack(input.spawnId);
6310
6341
  return { ok: acked };
6311
6342
  }),
6312
6343
  /** Forward a JSON-RPC request to the local codex app-server. */
6313
- codexRequest: protectedProcedure.input(z26.object({
6314
- method: z26.string().max(256),
6315
- params: z26.record(z26.string(), z26.unknown()).default({}),
6316
- env: z26.record(z26.string().max(256), z26.string().max(5e5)).optional()
6344
+ codexRequest: protectedProcedure.input(z27.object({
6345
+ method: z27.string().max(256),
6346
+ params: z27.record(z27.string(), z27.unknown()).default({}),
6347
+ env: z27.record(z27.string().max(256), z27.string().max(5e5)).optional()
6317
6348
  })).mutation(async ({ input }) => {
6318
6349
  await codexAppServerManager.ensureConnected(input.env);
6319
6350
  const result = await codexAppServerManager.sendRequest(input.method, input.params);
6320
6351
  return { result };
6321
6352
  }),
6322
6353
  /** Stream notifications from the codex app-server. Optionally filter by threadId. */
6323
- codexNotifications: protectedProcedure.input(z26.object({
6324
- threadId: z26.string().max(256).optional()
6354
+ codexNotifications: protectedProcedure.input(z27.object({
6355
+ threadId: z27.string().max(256).optional()
6325
6356
  }).default({})).subscription(async function* ({ input, signal }) {
6326
6357
  await codexAppServerManager.ensureConnected();
6327
6358
  const queue = [];
@@ -6358,13 +6389,13 @@ var aiRouter = router({
6358
6389
  });
6359
6390
 
6360
6391
  // src/trpc/routers/wiki.ts
6361
- import { z as z27 } from "zod";
6392
+ import { z as z28 } from "zod";
6362
6393
  import { TRPCError as TRPCError6 } from "@trpc/server";
6363
6394
  import { readFile as readFile2, readdir, stat as stat2, realpath, writeFile as writeFile6, mkdir as mkdir6, rename as rename2, rm } from "fs/promises";
6364
6395
  import { dirname as dirname2 } from "path";
6365
6396
  import { resolve as resolvePath3, join as join5, relative, sep } from "path";
6366
- var CWD_SCHEMA2 = z27.string().min(1).max(4096);
6367
- var REL_PATH_SCHEMA = z27.string().min(1).max(512).regex(/^[A-Za-z0-9_./-]+$/).refine((p) => !p.includes("..") && !p.startsWith("/"), {
6397
+ var CWD_SCHEMA2 = z28.string().min(1).max(4096);
6398
+ var REL_PATH_SCHEMA = z28.string().min(1).max(512).regex(/^[A-Za-z0-9_./-]+$/).refine((p) => !p.includes("..") && !p.startsWith("/"), {
6368
6399
  message: "Path must be a relative path without traversal"
6369
6400
  });
6370
6401
  var MAX_FILES = 500;
@@ -6384,9 +6415,9 @@ var IGNORED_DIRS = /* @__PURE__ */ new Set([
6384
6415
  "target",
6385
6416
  "out"
6386
6417
  ]);
6387
- var RepoEntrySchema = z27.lazy(() => z27.union([
6388
- z27.object({ type: z27.literal("file"), name: z27.string(), path: z27.string() }),
6389
- z27.object({ type: z27.literal("dir"), name: z27.string(), path: z27.string(), children: z27.array(RepoEntrySchema) })
6418
+ var RepoEntrySchema = z28.lazy(() => z28.union([
6419
+ z28.object({ type: z28.literal("file"), name: z28.string(), path: z28.string() }),
6420
+ z28.object({ type: z28.literal("dir"), name: z28.string(), path: z28.string(), children: z28.array(RepoEntrySchema) })
6390
6421
  ]));
6391
6422
  async function walkMarkdown(root, dir, depth, counter) {
6392
6423
  if (depth > MAX_DEPTH || counter.n >= MAX_FILES) return [];
@@ -6456,13 +6487,13 @@ async function resolveRoot(cwd) {
6456
6487
  }
6457
6488
  }
6458
6489
  var wikiRouter = router({
6459
- listRepoMarkdown: protectedProcedure.input(z27.object({ cwd: CWD_SCHEMA2 })).query(async ({ input }) => {
6490
+ listRepoMarkdown: protectedProcedure.input(z28.object({ cwd: CWD_SCHEMA2 })).query(async ({ input }) => {
6460
6491
  const root = await resolveRoot(input.cwd);
6461
6492
  const counter = { n: 0 };
6462
6493
  const entries = await walkMarkdown(root, root, 0, counter);
6463
6494
  return { root, entries, truncated: counter.n >= MAX_FILES };
6464
6495
  }),
6465
- readRepoMarkdown: protectedProcedure.input(z27.object({ cwd: CWD_SCHEMA2, path: REL_PATH_SCHEMA })).query(async ({ input }) => {
6496
+ readRepoMarkdown: protectedProcedure.input(z28.object({ cwd: CWD_SCHEMA2, path: REL_PATH_SCHEMA })).query(async ({ input }) => {
6466
6497
  if (!/\.(md|markdown)$/i.test(input.path)) {
6467
6498
  throw new TRPCError6({ code: "BAD_REQUEST", message: "Seuls les .md sont autoris\xE9s" });
6468
6499
  }
@@ -6488,10 +6519,10 @@ var wikiRouter = router({
6488
6519
  const content = await readFile2(realTarget, "utf-8");
6489
6520
  return { path: input.path, content };
6490
6521
  }),
6491
- writeMarkdown: protectedProcedure.input(z27.object({
6522
+ writeMarkdown: protectedProcedure.input(z28.object({
6492
6523
  cwd: CWD_SCHEMA2,
6493
6524
  path: REL_PATH_SCHEMA,
6494
- content: z27.string().max(5e6)
6525
+ content: z28.string().max(5e6)
6495
6526
  })).mutation(async ({ input }) => {
6496
6527
  if (!/\.(md|markdown)$/i.test(input.path)) {
6497
6528
  throw new TRPCError6({ code: "BAD_REQUEST", message: "Seuls les .md/.markdown sont autoris\xE9s" });
@@ -6502,7 +6533,7 @@ var wikiRouter = router({
6502
6533
  await writeFile6(target, input.content, "utf-8");
6503
6534
  return { path: input.path, ok: true };
6504
6535
  }),
6505
- createFile: protectedProcedure.input(z27.object({ cwd: CWD_SCHEMA2, path: REL_PATH_SCHEMA })).mutation(async ({ input }) => {
6536
+ createFile: protectedProcedure.input(z28.object({ cwd: CWD_SCHEMA2, path: REL_PATH_SCHEMA })).mutation(async ({ input }) => {
6506
6537
  if (!/\.(md|markdown)$/i.test(input.path)) {
6507
6538
  throw new TRPCError6({ code: "BAD_REQUEST", message: "Seuls les .md/.markdown sont autoris\xE9s" });
6508
6539
  }
@@ -6518,13 +6549,13 @@ var wikiRouter = router({
6518
6549
  await writeFile6(target, "", "utf-8");
6519
6550
  return { path: input.path, ok: true };
6520
6551
  }),
6521
- createDir: protectedProcedure.input(z27.object({ cwd: CWD_SCHEMA2, path: REL_PATH_SCHEMA })).mutation(async ({ input }) => {
6552
+ createDir: protectedProcedure.input(z28.object({ cwd: CWD_SCHEMA2, path: REL_PATH_SCHEMA })).mutation(async ({ input }) => {
6522
6553
  const root = await resolveRoot(input.cwd);
6523
6554
  const target = await resolveSafePath(root, input.path, false);
6524
6555
  await mkdir6(target, { recursive: true });
6525
6556
  return { path: input.path, ok: true };
6526
6557
  }),
6527
- renamePath: protectedProcedure.input(z27.object({
6558
+ renamePath: protectedProcedure.input(z28.object({
6528
6559
  cwd: CWD_SCHEMA2,
6529
6560
  fromPath: REL_PATH_SCHEMA,
6530
6561
  toPath: REL_PATH_SCHEMA
@@ -6542,14 +6573,14 @@ var wikiRouter = router({
6542
6573
  await rename2(from, to);
6543
6574
  return { fromPath: input.fromPath, toPath: input.toPath, ok: true };
6544
6575
  }),
6545
- ensureRoot: protectedProcedure.input(z27.object({ cwd: CWD_SCHEMA2 })).mutation(async ({ input }) => {
6576
+ ensureRoot: protectedProcedure.input(z28.object({ cwd: CWD_SCHEMA2 })).mutation(async ({ input }) => {
6546
6577
  const expanded = expandEnvVar(input.cwd);
6547
6578
  const abs = resolvePath3(expanded);
6548
6579
  await mkdir6(abs, { recursive: true });
6549
6580
  const root = await realpath(abs);
6550
6581
  return { root, ok: true };
6551
6582
  }),
6552
- deletePath: protectedProcedure.input(z27.object({ cwd: CWD_SCHEMA2, path: REL_PATH_SCHEMA })).mutation(async ({ input }) => {
6583
+ deletePath: protectedProcedure.input(z28.object({ cwd: CWD_SCHEMA2, path: REL_PATH_SCHEMA })).mutation(async ({ input }) => {
6553
6584
  const root = await resolveRoot(input.cwd);
6554
6585
  const target = await resolveSafePath(root, input.path, true);
6555
6586
  if (target === root) {