@runeya/runeya 2.0.129 → 2.0.131

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 (356) hide show
  1. package/agent/index.js +245 -177
  2. package/agent/index.js.map +1 -1
  3. package/agent-manager-QQHA3TUB.js +11 -0
  4. package/{chat-6ETYBINN.js → chat-VIVAFYYS.js} +7 -7
  5. package/{chunk-B7MABGQN.js → chunk-4RMM2OUU.js} +29 -2
  6. package/chunk-4RMM2OUU.js.map +1 -0
  7. package/{chunk-RDE3X3J4.js → chunk-B3QQGYKU.js} +83 -12
  8. package/chunk-B3QQGYKU.js.map +1 -0
  9. package/{chunk-K2KSZRSI.js → chunk-CVVAQTMF.js} +6 -6
  10. package/{chunk-J2L6VONF.js → chunk-GAK3Q3J4.js} +13 -53
  11. package/chunk-GAK3Q3J4.js.map +1 -0
  12. package/{chunk-TTJNHZ6U.js → chunk-GNVQH3VG.js} +2 -2
  13. package/{chunk-7GBSCYXU.js → chunk-IYPYVSY5.js} +79 -14
  14. package/chunk-IYPYVSY5.js.map +1 -0
  15. package/{companion-SH4HLD6G.js → companion-2VDWE5SP.js} +5 -4
  16. package/{desktop-launcher-7UZF7PFH.js → desktop-launcher-RSRAXX6B.js} +2 -2
  17. package/index.js +5 -5
  18. package/mcp-server/index.js +132 -28
  19. package/mcp-server/index.js.map +1 -1
  20. package/{node-ILM6MV56.js → node-JU7A5NDT.js} +6 -2
  21. package/package.json +1 -1
  22. package/{settings-manager-XD6U4QN3.js → settings-manager-3LMN34IT.js} +3 -3
  23. package/{src-BNWVTXCY.js → src-B4AVQCOQ.js} +43 -15
  24. package/src-B4AVQCOQ.js.map +1 -0
  25. package/web/assets/{AgentScalarChatInterface.vue-CSnavtlu.js → AgentScalarChatInterface.vue-CsQIfwOB.js} +3 -3
  26. package/web/assets/AgentTerminalPage-MFiSz_rt.js +1 -0
  27. package/web/assets/AiChatPage-YYiU2Rua.js +1 -0
  28. package/web/assets/AppLayout-CNeI8_tj.js +1 -0
  29. package/web/assets/AuditPage-Dpy84SYO.js +1 -0
  30. package/web/assets/CloudAccountPage-CmsKXPgr.js +1 -0
  31. package/web/assets/CloudAccountPage-vlTrRoPG.js +1 -0
  32. package/web/assets/CloudMessagingPage-DtPDjm-i.js +2 -0
  33. package/web/assets/DashboardPage-BfGv9gYt.js +1 -0
  34. package/web/assets/DirectoryPickerDialog-DrR_sBln.js +1 -0
  35. package/web/assets/{EditorIcon-CtAICHdD.js → EditorIcon-CDOVftY6.js} +2 -2
  36. package/web/assets/EnvironmentForm-CyNV0uZa.js +108 -0
  37. package/web/assets/EnvironmentFormPage-DWDvoFtt.js +1 -0
  38. package/web/assets/EnvironmentListPage-B-2RGzi7.js +1 -0
  39. package/web/assets/KanbanBoardPage-ByPh1kiv.css +1 -0
  40. package/web/assets/KanbanBoardPage-ClTruaQ9.js +4 -0
  41. package/web/assets/KanbanListPage-Bl21zyCc.js +1 -0
  42. package/web/assets/KanbanListPage-pCWYPwBv.css +1 -0
  43. package/web/assets/LaunchProjectPage-Cxx-fhzO.js +1 -0
  44. package/web/assets/LaunchServicesPage-VdZTXZlX.js +1 -0
  45. package/web/assets/LogViewer-MDkKX5-F.js +3 -0
  46. package/web/assets/OrgKeyPrompt-BbPXlqYa.js +1 -0
  47. package/web/assets/OrgLogo-DFdWtiJh.js +1 -0
  48. package/web/assets/ProcessControls-BpwS8iyb.js +1 -0
  49. package/web/assets/ProcessDetailPage-Cx3RFAvr.js +1 -0
  50. package/web/assets/{ProcessMetrics-D4CYOC7y.js → ProcessMetrics-DJ5p8cOH.js} +2 -2
  51. package/web/assets/RandomJobTestPage-CN8v2j2H.js +2 -0
  52. package/web/assets/ScenarioEditorPage-DE4kRBuV.js +14 -0
  53. package/web/assets/SendToChatDialog-8baAtZJn.js +1 -0
  54. package/web/assets/ServiceControlsBar-CvcG0cX2.js +1 -0
  55. package/web/assets/ServiceDetailPage-Dhr3CMPx.js +2 -0
  56. package/web/assets/ServiceFormPage-BpKSXmQj.js +1 -0
  57. package/web/assets/SettingsPage-EHsyWY9H.js +2063 -0
  58. package/web/assets/UnlockPage-BEyjPuiA.js +1 -0
  59. package/web/assets/VaultMigrationPage-BL1-Q6M-.js +1 -0
  60. package/web/assets/VersionBadge-C4M_NoTo.js +1 -0
  61. package/web/assets/WikiPage-BIy78RnQ.js +1 -0
  62. package/web/assets/WikiView-hMl0Jo_9.js +1 -0
  63. package/web/assets/add-scalar-classes-CfYvUPFK.js +387 -0
  64. package/web/assets/{autocomplete-C3lpxqut.js → autocomplete-DwJDpd_3.js} +3 -3
  65. package/web/assets/{basic-shape-diamond.svg-ClLmXFVS.js → basic-shape-diamond.svg-BHIWRSBW.js} +1 -1
  66. package/web/assets/{basic-shape-hexagon.svg-Cag0ncSY.js → basic-shape-hexagon.svg-BCqMu4vI.js} +1 -1
  67. package/web/assets/{basic-shape-primary-circle-ellipse-round.svg--KHtWYXD.js → basic-shape-primary-circle-ellipse-round.svg-DkTApMxk.js} +1 -1
  68. package/web/assets/{basic-shape-primary-square-rectangle.svg-BPCtuGhT.js → basic-shape-primary-square-rectangle.svg-Bk_gOdKn.js} +1 -1
  69. package/web/assets/{basic-shape-shield.svg-CLqZM1B0.js → basic-shape-shield.svg-BEFRYMev.js} +1 -1
  70. package/web/assets/{browser-DIa6q3Vr.js → browser-CRhcCyEg.js} +1 -1
  71. package/web/assets/{browser-C1T_MRFP.js → browser-CrG_hVEM.js} +1 -1
  72. package/web/assets/card-DM6OLGrd.js +32 -0
  73. package/web/assets/{checkbox-_b4TMklW.js → checkbox-BXP57wuC.js} +3 -3
  74. package/web/assets/{chip-B-w-r79z.js → chip-usPF87e4.js} +2 -2
  75. package/web/assets/{client-D3ljCsOD.js → client-DbOX6SLW.js} +2 -2
  76. package/web/assets/cloud-chat.store-D_tehZfH.js +1 -0
  77. package/web/assets/cloud-client-D_2Ghoat.js +1 -0
  78. package/web/assets/cloud-session-5zD-9FVh.js +1 -0
  79. package/web/assets/{cloud-session-DwRT1TUx.js → cloud-session-BjxvzZ5_.js} +2 -2
  80. package/web/assets/column-BpmV6tZf.js +763 -0
  81. package/web/assets/composables-Biguv8GA.js +1 -0
  82. package/web/assets/{computer-device-desktop-monitor.svg-CJd6rSnq.js → computer-device-desktop-monitor.svg-CMCr-EbE.js} +1 -1
  83. package/web/assets/{computer-device-desktop.svg-BKuN8rEx.js → computer-device-desktop.svg-bHjL2yIc.js} +1 -1
  84. package/web/assets/{computer-device-laptop.svg-BnP-6SWj.js → computer-device-laptop.svg-CMIGmOQb.js} +1 -1
  85. package/web/assets/{computer-device-mobile-phone-android-samsung-back.svg-C_LwWGml.js → computer-device-mobile-phone-android-samsung-back.svg-BmDp3ARt.js} +1 -1
  86. package/web/assets/{computer-device-mobile-phone-android-samsung.svg-DyLuuVRr.js → computer-device-mobile-phone-android-samsung.svg-BE8rx7DK.js} +1 -1
  87. package/web/assets/{computer-device-mobile-phone-iphone-x-back.svg-CV8PoCn1.js → computer-device-mobile-phone-iphone-x-back.svg-Cp8Dbmih.js} +1 -1
  88. package/web/assets/{computer-device-mobile-phone-iphone-x.svg-Bnnn0L-m.js → computer-device-mobile-phone-iphone-x.svg-CXXBfAWJ.js} +1 -1
  89. package/web/assets/{computer-device-mobile-tablet-touch.svg-P64zwUoG.js → computer-device-mobile-tablet-touch.svg-CeynlokP.js} +1 -1
  90. package/web/assets/{computer-device-mobile-tablet.svg-LMxuwUja.js → computer-device-mobile-tablet.svg-D5XjPVoW.js} +1 -1
  91. package/web/assets/{computer-device-network-ethernet-cat6.svg-DwdZZW5b.js → computer-device-network-ethernet-cat6.svg-Cbs45-9L.js} +1 -1
  92. package/web/assets/{computer-device-network-lan-www.svg-CeDIIipH.js → computer-device-network-lan-www.svg-Rexix5Rm.js} +1 -1
  93. package/web/assets/{computer-device-network-wifi-connection.svg-DbcpscUN.js → computer-device-network-wifi-connection.svg-3vuo7eWK.js} +1 -1
  94. package/web/assets/{computer-device-network-wifi-router.svg-lMEz8IbU.js → computer-device-network-wifi-router.svg-B_MKwO49.js} +1 -1
  95. package/web/assets/{cssMode-BzrUX3y9.js → cssMode-BqcfXzGG.js} +1 -1
  96. package/web/assets/{divider-DYwsSqGG.js → divider-BRuXeRHe.js} +2 -2
  97. package/web/assets/{docx-preview-DUjMjOuO.js → docx-preview-BoM3W7oO.js} +1 -1
  98. package/web/assets/{ecology-science-erlenmeyer-flask.svg-aaOpq7_y.js → ecology-science-erlenmeyer-flask.svg-D1XKaTkC.js} +1 -1
  99. package/web/assets/{fieldset-D69VQ3vX.js → fieldset-CGCve6DD.js} +2 -2
  100. package/web/assets/{freemarker2-Do4liMSN.js → freemarker2-C6nb9fM5.js} +1 -1
  101. package/web/assets/{handlebars-DpU4uL8Y.js → handlebars-DE3S5TjS.js} +1 -1
  102. package/web/assets/{html-B9I8fdv5.js → html-CY7hz01Y.js} +1 -1
  103. package/web/assets/{htmlMode-kOiElG85.js → htmlMode-Ce4CB2KU.js} +1 -1
  104. package/web/assets/{image-flash-lightning.svg-D5c1hsb-.js → image-flash-lightning.svg-b9sFr9AB.js} +1 -1
  105. package/web/assets/{image-picture-flower.svg--K0KlQyl.js → image-picture-flower.svg-Dr_wEXj0.js} +1 -1
  106. package/web/assets/{index-Bul9Aylo.js → index-94C9mIJ-.js} +367 -367
  107. package/web/assets/{interface-alert-exclamation-diamond.svg-C_w5a3q7.js → interface-alert-exclamation-diamond.svg-DqSTZgNx.js} +1 -1
  108. package/web/assets/{interface-alert-exclamation-triangle-warning.svg-DMDyHWRK.js → interface-alert-exclamation-triangle-warning.svg-tR6mkG18.js} +1 -1
  109. package/web/assets/{interface-alert-information-circle.svg-B3w162oJ.js → interface-alert-information-circle.svg-CWK4PaRe.js} +1 -1
  110. package/web/assets/{interface-award-crown.svg-DKX_jl0S.js → interface-award-crown.svg-CH5gPwR6.js} +1 -1
  111. package/web/assets/{interface-bookmark.svg-e90beY5z.js → interface-bookmark-tag.svg-B8EJS7Ye.js} +1 -1
  112. package/web/assets/{interface-bookmark-tag.svg-D0fSBPjO.js → interface-bookmark.svg-DMekWOuD.js} +1 -1
  113. package/web/assets/{interface-calendar-date-one.svg-C6qc0Sl8.js → interface-calendar-date-one.svg-DWVB9WFa.js} +1 -1
  114. package/web/assets/{interface-content-book-open-pages.svg-BnljSGNK.js → interface-content-book-open-pages.svg-B6WD8yc0.js} +1 -1
  115. package/web/assets/{interface-content-book-page.svg-h9r3eRfx.js → interface-content-book-page.svg-Dfh4LPoI.js} +1 -1
  116. package/web/assets/{interface-content-file.svg-CHVFR7pp.js → interface-content-file.svg-DLxukAGD.js} +1 -1
  117. package/web/assets/interface-content-folder.svg-6goG-PKT.js +1 -0
  118. package/web/assets/{interface-content-folder.svg-ClpRom-Y.js → interface-content-folder.svg-mZbluscP.js} +1 -1
  119. package/web/assets/{interface-copy-clipboard.svg-CleRJUrm.js → interface-copy-clipboard.svg-DPWOJX2E.js} +1 -1
  120. package/web/assets/{interface-edit-attachment.svg-CKY3sa16.js → interface-edit-attachment.svg-BR_Sil6I.js} +1 -1
  121. package/web/assets/{interface-edit-binocular.svg-tz_rgKBc.js → interface-edit-binocular.svg-CVEd4vYc.js} +1 -1
  122. package/web/assets/{interface-edit-magic-wand.svg-CpO_jPEw.js → interface-edit-magic-wand.svg-DGp4DsbI.js} +1 -1
  123. package/web/assets/{interface-edit-tool-paint-roller.svg-CfsNGXGA.js → interface-edit-tool-paint-roller.svg-D0WlzqI4.js} +1 -1
  124. package/web/assets/{interface-edit-tool-pencil.svg-DAQ1Ekxm.js → interface-edit-tool-pencil.svg-ehfPBOGD.js} +1 -1
  125. package/web/assets/{interface-favorite-award.svg-D4uWI5Eo.js → interface-favorite-award.svg-Be7yHimT.js} +1 -1
  126. package/web/assets/{interface-favorite-flag.svg-BhDP9KZs.js → interface-favorite-flag.svg-3fARRMMR.js} +1 -1
  127. package/web/assets/{interface-favorite-heart.svg-CCVhz65j.js → interface-favorite-heart.svg-5isgI-U6.js} +1 -1
  128. package/web/assets/{interface-favorite-star.svg-TiGy7_Dz.js → interface-favorite-star.svg-lezozzmW.js} +1 -1
  129. package/web/assets/{interface-favorite-stars-sparkles.svg-Bleiokcx.js → interface-favorite-stars-sparkles.svg-oLtfcK6W.js} +1 -1
  130. package/web/assets/{interface-hierarchy-flowchart.svg-3lRctSSk.js → interface-hierarchy-flowchart.svg-C7k-UAZM.js} +1 -1
  131. package/web/assets/{interface-home-house.svg-DiCjd5wk.js → interface-home-house.svg-m-Ka02ss.js} +1 -1
  132. package/web/assets/{interface-hyperlink.svg-_8aS5L2n.js → interface-hyperlink.svg-Bt31gmVw.js} +1 -1
  133. package/web/assets/{interface-lighting-brightness.svg-w9w5UTai.js → interface-lighting-brightness.svg-n2I1uunc.js} +1 -1
  134. package/web/assets/{interface-lock-closed.svg-DetdV2Gl.js → interface-lock-closed.svg-DeS-CJrc.js} +1 -1
  135. package/web/assets/{interface-lock-open-unlock.svg-BvJFyP6t.js → interface-lock-open-unlock.svg-CdDWPuMJ.js} +1 -1
  136. package/web/assets/{interface-login-key.svg-CIXme1iF.js → interface-login-key.svg-CvEFMs4P.js} +1 -1
  137. package/web/assets/{interface-search.svg-CBDGg8fP.js → interface-search.svg-Cxo-DctG.js} +1 -1
  138. package/web/assets/{interface-setting-cog.svg-BFSZ-Okv.js → interface-setting-cog.svg-9-YFTxcs.js} +1 -1
  139. package/web/assets/{interface-share-megaphone-bullhorn.svg-B7Zua94j.js → interface-share-megaphone-bullhorn.svg-FHVAX6dI.js} +1 -1
  140. package/web/assets/{interface-share-rocket.svg-CzRpGdWQ.js → interface-share-rocket.svg-1jFzVaHL.js} +1 -1
  141. package/web/assets/{interface-share-satellite.svg-BCqYuJ38.js → interface-share-satellite.svg-DJLNcOP6.js} +1 -1
  142. package/web/assets/{interface-share-space-ship.svg-CrVISqJx.js → interface-share-space-ship.svg-pl6k0DBO.js} +1 -1
  143. package/web/assets/{interface-share.svg-CD8UuO99.js → interface-share.svg-ed08i2oG.js} +1 -1
  144. package/web/assets/{interface-signal-square.svg-Gkheru1O.js → interface-signal-square.svg-De4LGj0W.js} +1 -1
  145. package/web/assets/{interface-time-clock-circle.svg-CJcRzzea.js → interface-time-clock-circle.svg-CEJLWUZ3.js} +1 -1
  146. package/web/assets/{interface-time-hour-glass.svg-BsatRAlX.js → interface-time-hour-glass.svg-o76dSnkN.js} +1 -1
  147. package/web/assets/{interface-users-multiple.svg-5CyJhDJN.js → interface-users-multiple.svg-CoqKFb_U.js} +1 -1
  148. package/web/assets/{interface-weather-moon.svg-Bz82ayq0.js → interface-weather-moon.svg-DilewmQl.js} +1 -1
  149. package/web/assets/{javascript-D6oQ3hd5.js → javascript-BXeBAiG8.js} +1 -1
  150. package/web/assets/{jsonMode-B7DwD1nk.js → jsonMode-BqyfnSvw.js} +2 -2
  151. package/web/assets/{liquid-CwyDbpBP.js → liquid-DReW7YnO.js} +1 -1
  152. package/web/assets/{lspLanguageFeatures-T0jAxgTl.js → lspLanguageFeatures-Chp8gGOd.js} +3 -3
  153. package/web/assets/{mail-chat-bubble-square.svg-a_hiTrgs.js → mail-chat-bubble-square.svg-BGfaxE3Z.js} +1 -1
  154. package/web/assets/{mail-send-email-paper-airplane.svg-C-zatHzn.js → mail-send-email-paper-airplane.svg-Behyq64U.js} +1 -1
  155. package/web/assets/{mail-send-envelope.svg-q37OXzBm.js → mail-send-envelope.svg-Bxrgi1uS.js} +1 -1
  156. package/web/assets/{mdx-DHj3k_zA.js → mdx-DlDWnOnw.js} +1 -1
  157. package/web/assets/{minus-BeeT2iDC.js → minus-TTIwv6X7.js} +2 -2
  158. package/web/assets/modal-1yF5hlWc.js +1 -0
  159. package/web/assets/modal-BmOXV_GD.js +5 -0
  160. package/web/assets/{money-cashier-receipt.svg-BvVMygIT.js → money-cashier-receipt.svg-C-cvnfPn.js} +1 -1
  161. package/web/assets/{money-currency-dollar-pay.svg-CRhhH_kZ.js → money-currency-dollar-pay.svg-CvwqB_Us.js} +1 -1
  162. package/web/assets/{money-graph-arrow-increase.svg-CYVM9Jd_.js → money-graph-arrow-increase.svg-U8piy6iJ.js} +1 -1
  163. package/web/assets/{money-graph-bar-chart-increase.svg-Ce0lJBl4.js → money-graph-bar-chart-increase.svg-Czsghch7.js} +1 -1
  164. package/web/assets/multiselect-BtsqfXUl.js +251 -0
  165. package/web/assets/{nature-ecology-leaf.svg-CDM_95dC.js → nature-ecology-leaf.svg-DusYKwpP.js} +1 -1
  166. package/web/assets/{password-CK1h81G7.js → password-D7zz_4x-.js} +4 -4
  167. package/web/assets/{phone-telephone.svg-BVt3gYGw.js → phone-telephone.svg-24q-zljc.js} +1 -1
  168. package/web/assets/{plus-D1CwPS5W.js → plus-QyL2zHhp.js} +6 -6
  169. package/web/assets/process.store-Di7QdGS6.js +1 -0
  170. package/web/assets/{programming-bug.svg-d7SqJEee.js → programming-bug.svg-ljzgC2y_.js} +1 -1
  171. package/web/assets/{programming-cloud.svg-CftGIPF_.js → programming-cloud.svg-DGSPYVKb.js} +1 -1
  172. package/web/assets/{programming-computer-database-server.svg-3O3MINe3.js → programming-computer-database-server.svg-DinsEUs2.js} +1 -1
  173. package/web/assets/{programming-computer-database.svg-lF-wgOh4.js → programming-computer-database.svg-Bi-KIHKo.js} +1 -1
  174. package/web/assets/{programming-module-four-layout.svg--_Np803U.js → programming-module-four-layout.svg-8adkNiA8.js} +1 -1
  175. package/web/assets/{programming-module-three.svg-DMayeKgJ.js → programming-module-three.svg-D05fexpq.js} +1 -1
  176. package/web/assets/{programming-module.svg-DNACg4f8.js → programming-module.svg-Bd_jG5Ld.js} +1 -1
  177. package/web/assets/{programming-script-code.svg-D7nxZDlK.js → programming-script-code.svg-BR0wfmxH.js} +1 -1
  178. package/web/assets/project-launch.store-C5sqtO8-.js +1 -0
  179. package/web/assets/project.store-BHFNvoBC.js +1 -0
  180. package/web/assets/{python-BvMZwnLc.js → python--XCKQ7Mj.js} +1 -1
  181. package/web/assets/{radiobutton-CIVJq1we.js → radiobutton-BGxBny0T.js} +2 -2
  182. package/web/assets/{razor-CzA3B_j-.js → razor-DmUJwoTy.js} +1 -1
  183. package/web/assets/router-BTMrAdGT.js +1 -0
  184. package/web/assets/selectbutton-BeX4M-IG.js +164 -0
  185. package/web/assets/settings-scope-DUOlLSMl.js +1 -0
  186. package/web/assets/settings.store-CbOGUuSM.js +1 -0
  187. package/web/assets/{shopping-cart.svg-B5Jl42Dt.js → shopping-cart.svg-CAlBJM1f.js} +1 -1
  188. package/web/assets/{shopping-gift-present.svg-C04uAz4d.js → shopping-gift-present.svg-CmakOhp5.js} +1 -1
  189. package/web/assets/{shopping-shipping-box-parcel-package.svg-BoumdNF9.js → shopping-shipping-box-parcel-package.svg-DMr-nOJL.js} +1 -1
  190. package/web/assets/src-DztOEh3e.css +1 -0
  191. package/web/assets/src-_lD-wMMD.js +2527 -0
  192. package/web/assets/src-mXN4EdYU.js +1 -0
  193. package/web/assets/{tabpanel-Vb83SrYF.js → tabpanel-DFw1JNiJ.js} +3 -3
  194. package/web/assets/{tag-new-circle.svg-CoaJ9MzB.js → tag-new-circle.svg-BL7H0XEp.js} +1 -1
  195. package/web/assets/theme-E9nfXtHG.js +1 -0
  196. package/web/assets/{toggleswitch-B1JOUIwi.js → toggleswitch-hCIOkIWD.js} +2 -2
  197. package/web/assets/{travel-map-earth-globe.svg-6aDjr2pn.js → travel-map-earth-globe.svg-DOsI_-VD.js} +1 -1
  198. package/web/assets/trpc-BskvL7g_.js +1 -0
  199. package/web/assets/{tsMode-BUqjXsVq.js → tsMode-DLtQZQME.js} +6 -6
  200. package/web/assets/{typescript-C0DrYHIX.js → typescript-BiwtK-KD.js} +1 -1
  201. package/web/assets/useAiChatDrawer-BIkMnJ15.js +1 -0
  202. package/web/assets/{useCloudOrg-tTzYkGcC.js → useCloudOrg-BOcbkFan.js} +1 -1
  203. package/web/assets/useEnvVarAutocomplete-B7JuI0eO.js +1 -0
  204. package/web/assets/{useProjectCatalog-BrszMm46.js → useProjectCatalog-BKnj5RtX.js} +1 -1
  205. package/web/assets/useProjectCloudOrg-DC78dk7F.js +1 -0
  206. package/web/assets/useServiceUrlHost-Bi8nVdMP.js +1 -0
  207. package/web/assets/{xml-urt_37co.js → xml-4zuO3zgc.js} +1 -1
  208. package/web/assets/{yaml-DQgQKRaA.js → yaml-D5Zw4FPr.js} +1 -1
  209. package/web/index.html +1 -1
  210. package/agent-manager-GFRVUJSI.js +0 -10
  211. package/chunk-7GBSCYXU.js.map +0 -1
  212. package/chunk-B7MABGQN.js.map +0 -1
  213. package/chunk-J2L6VONF.js.map +0 -1
  214. package/chunk-RDE3X3J4.js.map +0 -1
  215. package/src-BNWVTXCY.js.map +0 -1
  216. package/web/assets/AgentTerminalPage-C88TWOpv.js +0 -1
  217. package/web/assets/AiChatPage-C7Fwkm3H.js +0 -1
  218. package/web/assets/AppLayout-D5uzw5Lg.js +0 -1
  219. package/web/assets/AuditPage-LGN72fPt.js +0 -1
  220. package/web/assets/CloudAccountPage-NDf1HzKg.js +0 -1
  221. package/web/assets/CloudAccountPage-WIW6QDtJ.js +0 -1
  222. package/web/assets/CloudMessagingPage-CewyN6Br.js +0 -2
  223. package/web/assets/DashboardPage-BW6vTxoh.js +0 -164
  224. package/web/assets/DirectoryPickerDialog-CG1pl1FS.js +0 -1
  225. package/web/assets/EnvironmentForm-VSWiFSCk.js +0 -108
  226. package/web/assets/EnvironmentFormPage-C9ageHqI.js +0 -1
  227. package/web/assets/EnvironmentListPage-CH2lTuZa.js +0 -1
  228. package/web/assets/KanbanBoardPage-C8Wstz1K.css +0 -1
  229. package/web/assets/KanbanBoardPage-Dm0vlVJC.js +0 -4
  230. package/web/assets/KanbanListPage-Bn2e52T0.js +0 -1
  231. package/web/assets/KanbanListPage-C_zN70Af.css +0 -1
  232. package/web/assets/LaunchProjectPage-CsVEC9XK.js +0 -1
  233. package/web/assets/LaunchServicesPage-eqVt9k71.js +0 -1
  234. package/web/assets/LogViewer-BuEfKhGy.js +0 -3
  235. package/web/assets/OrgKeyPrompt-CP_twrjK.js +0 -1
  236. package/web/assets/OrgLogo-C9tIdIKQ.js +0 -1
  237. package/web/assets/ProcessControls-DtHM26HD.js +0 -1
  238. package/web/assets/ProcessDetailPage-CInTvQzk.js +0 -1
  239. package/web/assets/RandomJobTestPage-DvNT-fHM.js +0 -2
  240. package/web/assets/ScenarioEditorPage-Cy-mEocS.js +0 -14
  241. package/web/assets/SendToChatDialog-7yjimfM6.js +0 -1
  242. package/web/assets/ServiceControlsBar-BIw8gvT4.js +0 -1
  243. package/web/assets/ServiceDetailPage-Dh8heavF.js +0 -2
  244. package/web/assets/ServiceFormPage-CPvcHTvF.js +0 -1
  245. package/web/assets/SettingsPage-DIwUGrhc.js +0 -2063
  246. package/web/assets/UnlockPage-CaloUcpR.js +0 -1
  247. package/web/assets/VaultMigrationPage-CXpnpmtH.js +0 -1
  248. package/web/assets/VersionBadge-CDFKMmiB.js +0 -1
  249. package/web/assets/WikiPage-fprCcfQb.js +0 -1
  250. package/web/assets/WikiView-BSstJNUm.js +0 -1
  251. package/web/assets/add-scalar-classes-W7zkEwly.js +0 -387
  252. package/web/assets/card-DoiDmzQ4.js +0 -32
  253. package/web/assets/cloud-chat.store-6ZDTW64E.js +0 -1
  254. package/web/assets/cloud-client-MqmRMv1P.js +0 -1
  255. package/web/assets/cloud-session-CRBMHBfS.js +0 -1
  256. package/web/assets/column-DkPii5Hb.js +0 -763
  257. package/web/assets/interface-content-folder.svg-CDjqJkA6.js +0 -1
  258. package/web/assets/modal-D4uoXhc8.js +0 -1
  259. package/web/assets/modal-D_IYbQwG.js +0 -5
  260. package/web/assets/multiselect-BwtDM_SI.js +0 -251
  261. package/web/assets/process.store-CKag9k1W.js +0 -1
  262. package/web/assets/project-launch.store-Bq1mbmiC.js +0 -1
  263. package/web/assets/project.store-CPpr3pLf.js +0 -1
  264. package/web/assets/router-B5zQ1kEJ.js +0 -1
  265. package/web/assets/settings-scope-7icbsnqh.js +0 -1
  266. package/web/assets/settings.store-Cr09JQn2.js +0 -1
  267. package/web/assets/src-D3VR_y-X.js +0 -1
  268. package/web/assets/src-DUQBbN9_.js +0 -572
  269. package/web/assets/src-KwP86pAZ.css +0 -1
  270. package/web/assets/theme-B9SZBnza.js +0 -1
  271. package/web/assets/trpc-rld4yQko.js +0 -1
  272. package/web/assets/useAiChatDrawer-Co833XxT.js +0 -1
  273. package/web/assets/useEnvVarAutocomplete-D0iCOu68.js +0 -1
  274. package/web/assets/useProjectCloudOrg-CAg2yHZP.js +0 -1
  275. package/web/assets/useServiceUrlHost-DWJP4dsX.js +0 -1
  276. /package/{agent-manager-GFRVUJSI.js.map → agent-manager-QQHA3TUB.js.map} +0 -0
  277. /package/{chat-6ETYBINN.js.map → chat-VIVAFYYS.js.map} +0 -0
  278. /package/{chunk-K2KSZRSI.js.map → chunk-CVVAQTMF.js.map} +0 -0
  279. /package/{chunk-TTJNHZ6U.js.map → chunk-GNVQH3VG.js.map} +0 -0
  280. /package/{companion-SH4HLD6G.js.map → companion-2VDWE5SP.js.map} +0 -0
  281. /package/{desktop-launcher-7UZF7PFH.js.map → desktop-launcher-RSRAXX6B.js.map} +0 -0
  282. /package/{node-ILM6MV56.js.map → node-JU7A5NDT.js.map} +0 -0
  283. /package/{settings-manager-XD6U4QN3.js.map → settings-manager-3LMN34IT.js.map} +0 -0
  284. /package/web/assets/{abap-B8g_2xYy.js → abap-BMzrySmF.js} +0 -0
  285. /package/web/assets/{apex-Bm8w4T5A.js → apex-B-FTsm78.js} +0 -0
  286. /package/web/assets/{azcli-BqdUW6F8.js → azcli--oTP982j.js} +0 -0
  287. /package/web/assets/{bat-Bngf0lQU.js → bat-BoGrdVjd.js} +0 -0
  288. /package/web/assets/{bicep-DzO554JS.js → bicep-CzjrcFxJ.js} +0 -0
  289. /package/web/assets/{browser-BJX5ZrVN.js → browser-TSICzjSV.js} +0 -0
  290. /package/web/assets/{cameligo-Bcy3ohdb.js → cameligo-C5PP9BK8.js} +0 -0
  291. /package/web/assets/{clojure-CZbiqkDV.js → clojure-CQZ7UtVM.js} +0 -0
  292. /package/web/assets/{coffee-CDuhyV-7.js → coffee-D04oxsa9.js} +0 -0
  293. /package/web/assets/{cpp-BklV8f4x.js → cpp-CrdHZict.js} +0 -0
  294. /package/web/assets/{csharp-BelR_XiC.js → csharp-DEojCdJ9.js} +0 -0
  295. /package/web/assets/{csp-DUjeBS2K.js → csp-B_k4_rnT.js} +0 -0
  296. /package/web/assets/{css-CvbYbEko.js → css-pkVaNQ-t.js} +0 -0
  297. /package/web/assets/{cypher-Dwrbk-SP.js → cypher-InDI0ycO.js} +0 -0
  298. /package/web/assets/{dart-BW1E5h9O.js → dart-CMBDu6Jq.js} +0 -0
  299. /package/web/assets/{dockerfile-B41ilpF9.js → dockerfile-Dus6X0qp.js} +0 -0
  300. /package/web/assets/{ecl-BZE6Vxna.js → ecl-DcGwRpWZ.js} +0 -0
  301. /package/web/assets/{elixir-CtYg0bLh.js → elixir-BNgAfgpS.js} +0 -0
  302. /package/web/assets/{flow9-Sgvy48_I.js → flow9-b9BSTtId.js} +0 -0
  303. /package/web/assets/{fsharp-BzAfXfKg.js → fsharp-DsEl3ylC.js} +0 -0
  304. /package/web/assets/{go-D7oonABu.js → go-BVk-2zoJ.js} +0 -0
  305. /package/web/assets/{graphql-BEN-qkl0.js → graphql-CCOPKJOV.js} +0 -0
  306. /package/web/assets/{hcl-CE0OhwCq.js → hcl-Bk9fje7b.js} +0 -0
  307. /package/web/assets/{ini-CCLtcvjA.js → ini-Bfgwaf--.js} +0 -0
  308. /package/web/assets/{java-Bao8w_gp.js → java-X9tlBUoe.js} +0 -0
  309. /package/web/assets/{julia-Dr0hFYrl.js → julia-CSpUiZse.js} +0 -0
  310. /package/web/assets/{kotlin-Cbfu8lcM.js → kotlin-D9ZC3fV-.js} +0 -0
  311. /package/web/assets/{less-BU4gEpXr.js → less-D_gN2wJJ.js} +0 -0
  312. /package/web/assets/{lexon-GpBGGdTS.js → lexon-DQORBJ3L.js} +0 -0
  313. /package/web/assets/{lua-DIPKk37y.js → lua-cfsK9g-g.js} +0 -0
  314. /package/web/assets/{m3-CSOypKGf.js → m3-CqoRZqX5.js} +0 -0
  315. /package/web/assets/{markdown-VDqAgkyM.js → markdown-7m0w-Hon.js} +0 -0
  316. /package/web/assets/{mips-BJWI6dX7.js → mips-Jgck3TtW.js} +0 -0
  317. /package/web/assets/{msdax-BLpuE5Dc.js → msdax-DZzPcvtl.js} +0 -0
  318. /package/web/assets/{mysql-ZsxiEUoY.js → mysql-BDgvhBkY.js} +0 -0
  319. /package/web/assets/{objective-c-DcQa1iPc.js → objective-c-s7vO3TPA.js} +0 -0
  320. /package/web/assets/{pascal-u-hmXdyn.js → pascal-WgQqmw9E.js} +0 -0
  321. /package/web/assets/{pascaligo-DqbP-1C6.js → pascaligo-DdIoMHxz.js} +0 -0
  322. /package/web/assets/{perl-CUeQpRkH.js → perl-DscrjHeC.js} +0 -0
  323. /package/web/assets/{pgsql-CQ7FhAFN.js → pgsql-BoaUrFoQ.js} +0 -0
  324. /package/web/assets/{php-BEf_fu3E.js → php-CozsHsln.js} +0 -0
  325. /package/web/assets/{pla-CXNNbT0w.js → pla-BmgIF2rB.js} +0 -0
  326. /package/web/assets/{postiats-CIXLZwPb.js → postiats-kTIQO6-c.js} +0 -0
  327. /package/web/assets/{powerquery-DnGPASFA.js → powerquery-Bge8QN2f.js} +0 -0
  328. /package/web/assets/{powershell-1Y1kqIZS.js → powershell-C_EAICI2.js} +0 -0
  329. /package/web/assets/{protobuf-Cfo9haoG.js → protobuf-CeVRf2v4.js} +0 -0
  330. /package/web/assets/{pug-BujEZqmy.js → pug-v3OQoW7_.js} +0 -0
  331. /package/web/assets/{qsharp-BL9AqNGD.js → qsharp-B8FD4CzE.js} +0 -0
  332. /package/web/assets/{r-D0dhpGOM.js → r-DoTn9Ot2.js} +0 -0
  333. /package/web/assets/{redis-BMLwD7W9.js → redis-B9eZmNDt.js} +0 -0
  334. /package/web/assets/{redshift-CkHh73og.js → redshift-hkVOq3Na.js} +0 -0
  335. /package/web/assets/{restructuredtext-DZ-LF65W.js → restructuredtext-go0p3fHP.js} +0 -0
  336. /package/web/assets/{ruby-UzPHTzc9.js → ruby-DlJSZQx7.js} +0 -0
  337. /package/web/assets/{rust-ja9NGnXZ.js → rust-CS0ULEAB.js} +0 -0
  338. /package/web/assets/{sb-BNdOJbMY.js → sb-BWXLY6C5.js} +0 -0
  339. /package/web/assets/{scala-LlhkyN6l.js → scala-BnuniK5f.js} +0 -0
  340. /package/web/assets/{scheme-BAj99YIn.js → scheme-rpzgzOI1.js} +0 -0
  341. /package/web/assets/{scss-chS-xxB3.js → scss-CDZa-oHG.js} +0 -0
  342. /package/web/assets/{shared-sse-_VzlL_VX.js → shared-sse-DUHeXaFO.js} +0 -0
  343. /package/web/assets/{shell-CcH7eYIc.js → shell-Ddbp1LTu.js} +0 -0
  344. /package/web/assets/{solidity-cVvnqX-K.js → solidity-XL5oY4Gs.js} +0 -0
  345. /package/web/assets/{sophia-BBT-EdFw.js → sophia-C_FAm0DW.js} +0 -0
  346. /package/web/assets/{sparql-DGEqOrB6.js → sparql-Bkcu5lIB.js} +0 -0
  347. /package/web/assets/{sql-CcTErTxM.js → sql-hd2WP_Pl.js} +0 -0
  348. /package/web/assets/{st-Bjw-B4mN.js → st-DX23wqhB.js} +0 -0
  349. /package/web/assets/{swift-Bid-7bBd.js → swift-Uc9uURgY.js} +0 -0
  350. /package/web/assets/{systemverilog-CXju7Nd-.js → systemverilog-uwEj3oP7.js} +0 -0
  351. /package/web/assets/{tcl-D-Dw7JFz.js → tcl-CW0gNQFo.js} +0 -0
  352. /package/web/assets/{twig-BIPbzEWT.js → twig-C-fOaHGU.js} +0 -0
  353. /package/web/assets/{typespec-UJSutGCV.js → typespec-Cs66OMeg.js} +0 -0
  354. /package/web/assets/{uuid-Cro0aJm3.js → uuid-hYISTbX6.js} +0 -0
  355. /package/web/assets/{vb-oyG_LJw0.js → vb-f4DjbovN.js} +0 -0
  356. /package/web/assets/{wgsl-DXZ6ljB6.js → wgsl-D8hs7PJh.js} +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 z24 } from "zod";
63
+ import { z as z25 } from "zod";
64
64
  import { TRPCError as TRPCError2 } from "@trpc/server";
65
65
 
66
66
  // src/services/process-manager.ts
@@ -1246,35 +1246,100 @@ var UpdateCloudApiKeyInput = z20.object({
1246
1246
  boards: z20.array(z20.string().max(64)).max(200).nullable().optional()
1247
1247
  });
1248
1248
 
1249
- // ../../packages/shared/src/schemas/changelog.schema.ts
1249
+ // ../../packages/shared/src/schemas/integration.schema.ts
1250
1250
  import { z as z21 } from "zod";
1251
- var ChangelogSurfaceSchema = z21.enum(["app", "cloud"]);
1252
- var ChangelogChangeKindSchema = z21.enum(["feature", "improvement", "fix", "breaking"]);
1253
- var ChangelogTextSchema = z21.object({
1254
- fr: z21.string().min(1).max(500),
1255
- en: z21.string().min(1).max(500)
1251
+ var IntegrationProviderSchema = z21.enum(["intercom"]);
1252
+ var IntegrationConnectionSchema = z21.object({
1253
+ id: z21.string().max(128),
1254
+ organizationId: z21.string().max(128),
1255
+ provider: IntegrationProviderSchema,
1256
+ name: z21.string().min(1).max(200),
1257
+ /** Le tableau et la colonne de création — seulement avec la création automatique. */
1258
+ boardId: z21.string().max(64).nullable(),
1259
+ columnId: z21.string().max(128).nullable(),
1260
+ enabled: z21.boolean(),
1261
+ /**
1262
+ * L'URL complète du webhook à coller chez le fournisseur, construite par le
1263
+ * cloud (domaine public des webhooks). Elle contient un jeton imprévisible.
1264
+ */
1265
+ webhookUrl: z21.string().max(2048),
1266
+ /** Les quatre derniers caractères du secret de signature, pour le reconnaître. */
1267
+ secretPreview: z21.string().max(8),
1268
+ region: z21.string().max(16),
1269
+ /** Créer une carte pour toute conversation qui n'est encore liée nulle part. */
1270
+ autoCreate: z21.boolean(),
1271
+ createdBy: z21.object({ id: z21.string().max(128), name: z21.string().max(200) }),
1272
+ createdAt: z21.string().max(64),
1273
+ lastEventAt: z21.string().max(64).nullable()
1274
+ });
1275
+ var IntegrationConversationStateSchema = z21.enum(["open", "resolved"]);
1276
+ var IntegrationMessageSchema = z21.object({
1277
+ id: z21.string().max(256),
1278
+ author: z21.object({ name: z21.string().max(500), role: z21.enum(["customer", "agent"]) }),
1279
+ body: z21.string().max(1e5),
1280
+ internal: z21.boolean(),
1281
+ sentAt: z21.string().max(64),
1282
+ /** Fichiers joints et images, copiés dans Runeya : ils se lisent comme ceux d'une carte. */
1283
+ attachments: z21.array(KanbanAttachmentSchema).max(50),
1284
+ /** Noms des fichiers qui n'ont pas pu être copiés. */
1285
+ missingAttachments: z21.array(z21.string().max(500)).max(50)
1286
+ });
1287
+ var IntegrationConversationSchema = z21.object({
1288
+ id: z21.string().max(256),
1289
+ connectionId: z21.string().max(128),
1290
+ provider: IntegrationProviderSchema,
1291
+ externalId: z21.string().max(128),
1292
+ title: z21.string().max(500),
1293
+ url: z21.string().max(2e3).nullable(),
1294
+ state: IntegrationConversationStateSchema,
1295
+ updatedAt: z21.string().max(64)
1296
+ });
1297
+ var CardConversationSchema = IntegrationConversationSchema.extend({
1298
+ origin: z21.enum(["auto", "manual"]),
1299
+ linkedAt: z21.string().max(64),
1300
+ opening: z21.object({
1301
+ author: IntegrationMessageSchema.shape.author,
1302
+ body: z21.string().max(1e5),
1303
+ attachments: z21.array(KanbanAttachmentSchema).max(50),
1304
+ missingAttachments: z21.array(z21.string().max(500)).max(50)
1305
+ }).nullable(),
1306
+ messages: z21.array(IntegrationMessageSchema),
1307
+ otherCards: z21.array(z21.object({ boardId: z21.string().max(64), cardId: z21.string().max(64), title: z21.string().max(500) }))
1308
+ });
1309
+ var ConversationSearchHitSchema = IntegrationConversationSchema.extend({
1310
+ preview: z21.string().max(500),
1311
+ linkedCards: z21.array(z21.object({ boardId: z21.string().max(64), cardId: z21.string().max(64), title: z21.string().max(500) }))
1312
+ });
1313
+
1314
+ // ../../packages/shared/src/schemas/changelog.schema.ts
1315
+ import { z as z22 } from "zod";
1316
+ var ChangelogSurfaceSchema = z22.enum(["app", "cloud"]);
1317
+ var ChangelogChangeKindSchema = z22.enum(["feature", "improvement", "fix", "breaking"]);
1318
+ var ChangelogTextSchema = z22.object({
1319
+ fr: z22.string().min(1).max(500),
1320
+ en: z22.string().min(1).max(500)
1256
1321
  });
1257
- var ChangelogChangeSchema = z21.object({
1322
+ var ChangelogChangeSchema = z22.object({
1258
1323
  kind: ChangelogChangeKindSchema,
1259
1324
  text: ChangelogTextSchema
1260
1325
  });
1261
1326
  var ChangelogDraftSchema = ChangelogChangeSchema.extend({
1262
- date: z21.string().regex(/^\d{4}-\d{2}-\d{2}$/),
1327
+ date: z22.string().regex(/^\d{4}-\d{2}-\d{2}$/),
1263
1328
  title: ChangelogTextSchema.optional()
1264
1329
  });
1265
- var ChangelogReleaseSchema = z21.object({
1330
+ var ChangelogReleaseSchema = z22.object({
1266
1331
  surface: ChangelogSurfaceSchema,
1267
1332
  /** `1.4.2` pour l'app (version npm publiée), `2026-09-03` — ou `2026-09-03.2` — pour le cloud. */
1268
- version: z21.string().min(1).max(32).regex(/^[0-9][0-9.-]*$/),
1333
+ version: z22.string().min(1).max(32).regex(/^[0-9][0-9.-]*$/),
1269
1334
  /** Date de publication, `YYYY-MM-DD`. */
1270
- date: z21.string().regex(/^\d{4}-\d{2}-\d{2}$/),
1335
+ date: z22.string().regex(/^\d{4}-\d{2}-\d{2}$/),
1271
1336
  /** Facultatif : une version peut s'annoncer par son seul numéro. */
1272
1337
  title: ChangelogTextSchema.optional(),
1273
1338
  /** Une version sans changement n'a rien à annoncer : elle n'a pas sa place ici. */
1274
- changes: z21.array(ChangelogChangeSchema).min(1).max(50)
1339
+ changes: z22.array(ChangelogChangeSchema).min(1).max(50)
1275
1340
  });
1276
1341
  var ChangelogIndexItemSchema = ChangelogReleaseSchema.omit({ changes: true }).extend({
1277
- changeCount: z21.number().int().nonnegative()
1342
+ changeCount: z22.number().int().nonnegative()
1278
1343
  });
1279
1344
 
1280
1345
  // ../../packages/shared/src/utils/crypto.ts
@@ -3215,7 +3280,7 @@ import { execa as execa3 } from "execa";
3215
3280
  import { homedir as homedir4 } from "os";
3216
3281
 
3217
3282
  // src/trpc/routers/config.ts
3218
- import { z as z22 } from "zod";
3283
+ import { z as z23 } from "zod";
3219
3284
 
3220
3285
  // src/services/traefik-manager.ts
3221
3286
  import { spawn, execFile as execFile2 } from "child_process";
@@ -3593,13 +3658,13 @@ function resolvePassthroughEnv() {
3593
3658
  return result;
3594
3659
  }
3595
3660
  var configRouter = router({
3596
- setPassthroughEnv: protectedProcedure.input(z22.object({
3597
- names: z22.array(
3598
- z22.string().regex(/^[A-Za-z_][A-Za-z0-9_]*$/).max(256)
3661
+ setPassthroughEnv: protectedProcedure.input(z23.object({
3662
+ names: z23.array(
3663
+ z23.string().regex(/^[A-Za-z_][A-Za-z0-9_]*$/).max(256)
3599
3664
  ).max(100),
3600
- values: z22.record(
3601
- z22.string().regex(/^[A-Za-z_][A-Za-z0-9_]*$/).max(256),
3602
- z22.string().max(32768)
3665
+ values: z23.record(
3666
+ z23.string().regex(/^[A-Za-z_][A-Za-z0-9_]*$/).max(256),
3667
+ z23.string().max(32768)
3603
3668
  ).refine((obj) => Object.keys(obj).length <= 100, "Too many values").optional()
3604
3669
  })).mutation(({ input }) => {
3605
3670
  passthroughEnvNames = input.names;
@@ -3636,7 +3701,7 @@ var configRouter = router({
3636
3701
  getTraefikFileTree: protectedProcedure.query(async () => {
3637
3702
  return traefikManager.getFileTree();
3638
3703
  }),
3639
- getTraefikLogs: protectedProcedure.input(z22.object({ lines: z22.number().int().min(1).max(500).default(100) })).query(async ({ input }) => {
3704
+ getTraefikLogs: protectedProcedure.input(z23.object({ lines: z23.number().int().min(1).max(500).default(100) })).query(async ({ input }) => {
3640
3705
  const logs = await traefikManager.getLogs(input.lines);
3641
3706
  return { logs };
3642
3707
  })
@@ -3828,17 +3893,17 @@ var healthChecker = new HealthChecker();
3828
3893
  import killPort from "kill-port";
3829
3894
 
3830
3895
  // src/config/env.ts
3831
- import { z as z23 } from "zod";
3832
- var EnvSchema = z23.object({
3833
- RUNEYA_AGENT_PORT: z23.coerce.number().int().min(1).max(65535).default(4001),
3834
- RUNEYA_AGENT_HOST: z23.string().default("127.0.0.1"),
3835
- PASSPHRASE_OVERRIDE: z23.string().regex(/^[0-9a-f]+$/i, "Must be a hex string").optional(),
3836
- AGENT_ID: z23.string().optional(),
3896
+ import { z as z24 } from "zod";
3897
+ var EnvSchema = z24.object({
3898
+ RUNEYA_AGENT_PORT: z24.coerce.number().int().min(1).max(65535).default(4001),
3899
+ RUNEYA_AGENT_HOST: z24.string().default("127.0.0.1"),
3900
+ PASSPHRASE_OVERRIDE: z24.string().regex(/^[0-9a-f]+$/i, "Must be a hex string").optional(),
3901
+ AGENT_ID: z24.string().optional(),
3837
3902
  // Set by spawner or manually for remote agents
3838
- LOG_BUFFER_SIZE: z23.coerce.number().int().positive().default(LOG_BUFFER_SIZE),
3839
- METRICS_INTERVAL: z23.coerce.number().int().positive().default(METRICS_INTERVAL),
3840
- GRACE_PERIOD: z23.coerce.number().int().positive().default(GRACE_PERIOD),
3841
- HEALTH_WS_INTERVAL: z23.coerce.number().int().positive().default(HEALTH_WS_INTERVAL)
3903
+ LOG_BUFFER_SIZE: z24.coerce.number().int().positive().default(LOG_BUFFER_SIZE),
3904
+ METRICS_INTERVAL: z24.coerce.number().int().positive().default(METRICS_INTERVAL),
3905
+ GRACE_PERIOD: z24.coerce.number().int().positive().default(GRACE_PERIOD),
3906
+ HEALTH_WS_INTERVAL: z24.coerce.number().int().positive().default(HEALTH_WS_INTERVAL)
3842
3907
  });
3843
3908
  var env = EnvSchema.parse(process.env);
3844
3909
 
@@ -4626,7 +4691,7 @@ var processRouter = router({
4626
4691
  return processManager.listStatuses();
4627
4692
  }),
4628
4693
  /** Get a single process */
4629
- get: protectedProcedure.input(z24.object({ id: z24.string().max(128) })).query(({ input }) => {
4694
+ get: protectedProcedure.input(z25.object({ id: z25.string().max(128) })).query(({ input }) => {
4630
4695
  const status = processManager.getStatus(input.id);
4631
4696
  if (!status) {
4632
4697
  throw new TRPCError2({ code: "NOT_FOUND", message: `Process ${input.id} not found` });
@@ -4639,78 +4704,78 @@ var processRouter = router({
4639
4704
  return { id };
4640
4705
  }),
4641
4706
  /** Undeploy: stop + remove */
4642
- undeploy: protectedProcedure.input(z24.object({ id: z24.string().max(128) })).mutation(async ({ input }) => {
4707
+ undeploy: protectedProcedure.input(z25.object({ id: z25.string().max(128) })).mutation(async ({ input }) => {
4643
4708
  await processManager.undeploy(input.id);
4644
4709
  return { success: true };
4645
4710
  }),
4646
4711
  /** Update the service config for a deployed process */
4647
- updateConfig: protectedProcedure.input(z24.object({ serviceId: z24.string().max(128), config: ServiceConfigSchema })).mutation(({ input }) => {
4712
+ updateConfig: protectedProcedure.input(z25.object({ serviceId: z25.string().max(128), config: ServiceConfigSchema })).mutation(({ input }) => {
4648
4713
  processManager.updateConfig(input.serviceId, input.config);
4649
4714
  return { success: true };
4650
4715
  }),
4651
4716
  /** Start a deployed process */
4652
- start: protectedProcedure.input(z24.object({ id: z24.string().max(128) })).mutation(async ({ input }) => {
4717
+ start: protectedProcedure.input(z25.object({ id: z25.string().max(128) })).mutation(async ({ input }) => {
4653
4718
  console.log(`[agent] start service=${input.id}`);
4654
4719
  await processManager.start(input.id);
4655
4720
  return processManager.getStatus(input.id);
4656
4721
  }),
4657
4722
  /** Stop a running process */
4658
- stop: protectedProcedure.input(z24.object({ id: z24.string().max(128) })).mutation(async ({ input }) => {
4723
+ stop: protectedProcedure.input(z25.object({ id: z25.string().max(128) })).mutation(async ({ input }) => {
4659
4724
  console.log(`[agent] stop service=${input.id}`);
4660
4725
  await processManager.stop(input.id);
4661
4726
  return processManager.getStatus(input.id);
4662
4727
  }),
4663
4728
  /** Restart a process */
4664
- restart: protectedProcedure.input(z24.object({ id: z24.string().max(128) })).mutation(async ({ input }) => {
4729
+ restart: protectedProcedure.input(z25.object({ id: z25.string().max(128) })).mutation(async ({ input }) => {
4665
4730
  console.log(`[agent] restart service=${input.id}`);
4666
4731
  await processManager.restart(input.id);
4667
4732
  return processManager.getStatus(input.id);
4668
4733
  }),
4669
4734
  /** Get buffered logs for a process */
4670
- logs: protectedProcedure.input(z24.object({ id: z24.string().max(128) })).query(({ input }) => {
4735
+ logs: protectedProcedure.input(z25.object({ id: z25.string().max(128) })).query(({ input }) => {
4671
4736
  const logs = processManager.getLogs(input.id);
4672
4737
  return logs;
4673
4738
  }),
4674
4739
  /** Clear buffered logs for a process */
4675
- clearLogBuffer: protectedProcedure.input(z24.object({ id: z24.string().max(128) })).mutation(({ input }) => {
4740
+ clearLogBuffer: protectedProcedure.input(z25.object({ id: z25.string().max(128) })).mutation(({ input }) => {
4676
4741
  processManager.clearLogBuffer(input.id);
4677
4742
  return { success: true };
4678
4743
  }),
4679
4744
  /** Execute a shortcut command and stream output into the process log */
4680
- executeShortcut: protectedProcedure.input(z24.object({ id: z24.string().max(128), shortcut: ServiceShortcutSchema })).mutation(async ({ input }) => {
4745
+ executeShortcut: protectedProcedure.input(z25.object({ id: z25.string().max(128), shortcut: ServiceShortcutSchema })).mutation(async ({ input }) => {
4681
4746
  const result = await processManager.executeShortcut(input.id, input.shortcut);
4682
4747
  return result;
4683
4748
  }),
4684
4749
  /** Cancel a running shortcut command */
4685
- cancelShortcut: protectedProcedure.input(z24.object({ id: z24.string().max(128), shortcutId: z24.string().max(128) })).mutation(({ input }) => {
4750
+ cancelShortcut: protectedProcedure.input(z25.object({ id: z25.string().max(128), shortcutId: z25.string().max(128) })).mutation(({ input }) => {
4686
4751
  processManager.cancelShortcut(input.id, input.shortcutId);
4687
4752
  return { success: true };
4688
4753
  }),
4689
4754
  /** Cancel a running ad-hoc command */
4690
- cancelAdHocCommand: protectedProcedure.input(z24.object({ id: z24.string().max(128), commandId: z24.string().max(128).optional() })).mutation(({ input }) => {
4755
+ cancelAdHocCommand: protectedProcedure.input(z25.object({ id: z25.string().max(128), commandId: z25.string().max(128).optional() })).mutation(({ input }) => {
4691
4756
  processManager.cancelAdHocCommand(input.id, input.commandId);
4692
4757
  return { success: true };
4693
4758
  }),
4694
4759
  /** Execute an ad-hoc command and stream output into the process log */
4695
- executeAdHocCommand: protectedProcedure.input(z24.object({
4696
- id: z24.string().max(128),
4697
- command: z24.string().min(1).max(4096),
4698
- cwd: z24.string().max(4096).optional(),
4699
- commandId: z24.string().max(128).optional()
4760
+ executeAdHocCommand: protectedProcedure.input(z25.object({
4761
+ id: z25.string().max(128),
4762
+ command: z25.string().min(1).max(4096),
4763
+ cwd: z25.string().max(4096).optional(),
4764
+ commandId: z25.string().max(128).optional()
4700
4765
  })).mutation(async ({ input }) => {
4701
4766
  const result = await processManager.executeAdHocCommand(input.id, input.command, input.cwd, input.commandId);
4702
4767
  return result;
4703
4768
  }),
4704
4769
  /** List active log source types for a process */
4705
- logSources: protectedProcedure.input(z24.object({ processId: z24.string().max(128) })).query(({ input }) => {
4770
+ logSources: protectedProcedure.input(z25.object({ processId: z25.string().max(128) })).query(({ input }) => {
4706
4771
  return processManager.getLogSourceTypes(input.processId);
4707
4772
  }),
4708
4773
  /** Get current metrics for a process */
4709
- metrics: protectedProcedure.input(z24.object({ id: z24.string().max(128) })).query(async ({ input }) => {
4774
+ metrics: protectedProcedure.input(z25.object({ id: z25.string().max(128) })).query(async ({ input }) => {
4710
4775
  return processManager.getMetrics(input.id);
4711
4776
  }),
4712
4777
  /** Subscribe to real-time log stream (yields batches of ParsedLog[]) */
4713
- onLog: protectedProcedure.input(z24.object({ processId: z24.string().max(128).optional() }).optional()).subscription(async function* ({ input }) {
4778
+ onLog: protectedProcedure.input(z25.object({ processId: z25.string().max(128).optional() }).optional()).subscription(async function* ({ input }) {
4714
4779
  const queue = [];
4715
4780
  let resolve2 = null;
4716
4781
  const handler = (batch) => {
@@ -4739,7 +4804,7 @@ var processRouter = router({
4739
4804
  }
4740
4805
  }),
4741
4806
  /** Subscribe to real-time status changes */
4742
- onStatus: protectedProcedure.input(z24.object({ processId: z24.string().max(128).optional() }).optional()).subscription(async function* ({ input }) {
4807
+ onStatus: protectedProcedure.input(z25.object({ processId: z25.string().max(128).optional() }).optional()).subscription(async function* ({ input }) {
4743
4808
  console.debug("[agent] onStatus subscription started", input?.processId ? `for process ${input.processId}` : "(all processes)");
4744
4809
  const queue = [];
4745
4810
  let resolve2 = null;
@@ -4771,7 +4836,7 @@ var processRouter = router({
4771
4836
  }
4772
4837
  }),
4773
4838
  /** Subscribe to real-time health status changes */
4774
- onHealth: protectedProcedure.input(z24.object({ processId: z24.string().max(128).optional() }).optional()).subscription(async function* ({ input }) {
4839
+ onHealth: protectedProcedure.input(z25.object({ processId: z25.string().max(128).optional() }).optional()).subscription(async function* ({ input }) {
4775
4840
  const queue = [];
4776
4841
  let resolve2 = null;
4777
4842
  const handler = (healthData) => {
@@ -4801,7 +4866,7 @@ var processRouter = router({
4801
4866
  }
4802
4867
  }),
4803
4868
  /** Subscribe to real-time metrics */
4804
- onMetrics: protectedProcedure.input(z24.object({ processId: z24.string().max(128).optional() }).optional()).subscription(async function* ({ input }) {
4869
+ onMetrics: protectedProcedure.input(z25.object({ processId: z25.string().max(128).optional() }).optional()).subscription(async function* ({ input }) {
4805
4870
  const queue = [];
4806
4871
  let resolve2 = null;
4807
4872
  const handler = (metrics) => {
@@ -4976,6 +5041,9 @@ async function isCliAvailable(cli, timeoutMs = 5e3) {
4976
5041
  });
4977
5042
  }
4978
5043
 
5044
+ // ../../packages/shared/src/node/aes-gcm.ts
5045
+ import { randomBytes as randomBytes2, createCipheriv as createCipheriv2, createDecipheriv as createDecipheriv2 } from "crypto";
5046
+
4979
5047
  // src/trpc/routers/health.ts
4980
5048
  var startedAt = Date.now();
4981
5049
  function getLanIp2() {
@@ -5022,7 +5090,7 @@ var healthRouter = router({
5022
5090
  });
5023
5091
 
5024
5092
  // src/trpc/routers/terminal.ts
5025
- import { z as z25 } from "zod";
5093
+ import { z as z26 } from "zod";
5026
5094
  import { TRPCError as TRPCError3 } from "@trpc/server";
5027
5095
 
5028
5096
  // src/services/terminal-manager.ts
@@ -5115,11 +5183,11 @@ var terminalManager = new TerminalManager();
5115
5183
  // src/trpc/routers/terminal.ts
5116
5184
  var terminalRouter = router({
5117
5185
  /** Spawn a new PTY shell session, returns a sessionId */
5118
- create: protectedProcedure.input(z25.object({
5119
- cwd: z25.string().max(512).optional(),
5120
- cols: z25.number().int().min(1).max(512).optional(),
5121
- rows: z25.number().int().min(1).max(256).optional(),
5122
- title: z25.string().max(128).optional()
5186
+ create: protectedProcedure.input(z26.object({
5187
+ cwd: z26.string().max(512).optional(),
5188
+ cols: z26.number().int().min(1).max(512).optional(),
5189
+ rows: z26.number().int().min(1).max(256).optional(),
5190
+ title: z26.string().max(128).optional()
5123
5191
  })).mutation(({ input }) => {
5124
5192
  const sessionId = terminalManager.create(input.cwd, input.cols, input.rows, input.title);
5125
5193
  return { sessionId };
@@ -5127,34 +5195,34 @@ var terminalRouter = router({
5127
5195
  /** Les sessions encore vivantes : un onglet fermé côté web se retrouve ici */
5128
5196
  list: protectedProcedure.query(() => ({ sessions: terminalManager.list() })),
5129
5197
  /** Renommer un onglet */
5130
- rename: protectedProcedure.input(z25.object({ sessionId: z25.string().max(128), title: z25.string().max(128) })).mutation(({ input }) => {
5198
+ rename: protectedProcedure.input(z26.object({ sessionId: z26.string().max(128), title: z26.string().max(128) })).mutation(({ input }) => {
5131
5199
  terminalManager.rename(input.sessionId, input.title);
5132
5200
  return { ok: true };
5133
5201
  }),
5134
5202
  /** Write data (keystrokes) to a PTY session */
5135
- write: protectedProcedure.input(z25.object({ sessionId: z25.string().max(128), data: z25.string().max(65536) })).mutation(({ input }) => {
5203
+ write: protectedProcedure.input(z26.object({ sessionId: z26.string().max(128), data: z26.string().max(65536) })).mutation(({ input }) => {
5136
5204
  terminalManager.write(input.sessionId, input.data);
5137
5205
  return { ok: true };
5138
5206
  }),
5139
5207
  /** Resize a PTY session */
5140
- resize: protectedProcedure.input(z25.object({
5141
- sessionId: z25.string().max(128),
5142
- cols: z25.number().int().min(1).max(512),
5143
- rows: z25.number().int().min(1).max(256)
5208
+ resize: protectedProcedure.input(z26.object({
5209
+ sessionId: z26.string().max(128),
5210
+ cols: z26.number().int().min(1).max(512),
5211
+ rows: z26.number().int().min(1).max(256)
5144
5212
  })).mutation(({ input }) => {
5145
5213
  terminalManager.resize(input.sessionId, input.cols, input.rows);
5146
5214
  return { ok: true };
5147
5215
  }),
5148
5216
  /** Destroy a PTY session */
5149
- destroy: protectedProcedure.input(z25.object({ sessionId: z25.string().max(128) })).mutation(({ input }) => {
5217
+ destroy: protectedProcedure.input(z26.object({ sessionId: z26.string().max(128) })).mutation(({ input }) => {
5150
5218
  terminalManager.destroy(input.sessionId);
5151
5219
  return { ok: true };
5152
5220
  }),
5153
5221
  /** Stream PTY output for a session (async generator subscription) */
5154
- onData: protectedProcedure.input(z25.object({
5155
- sessionId: z25.string().max(128),
5222
+ onData: protectedProcedure.input(z26.object({
5223
+ sessionId: z26.string().max(128),
5156
5224
  /** Rejouer l'historique avant le flux : c'est ce qui rend l'onglet persistant. */
5157
- replay: z25.boolean().optional()
5225
+ replay: z26.boolean().optional()
5158
5226
  })).subscription(async function* ({ input }) {
5159
5227
  const emitter = terminalManager.getEmitter(input.sessionId);
5160
5228
  if (!emitter) {
@@ -5199,7 +5267,7 @@ var terminalRouter = router({
5199
5267
  });
5200
5268
 
5201
5269
  // src/trpc/routers/git.ts
5202
- import { z as z26 } from "zod";
5270
+ import { z as z27 } from "zod";
5203
5271
  import { TRPCError as TRPCError4 } from "@trpc/server";
5204
5272
  import { execFile as execFile6, spawn as spawn3 } from "child_process";
5205
5273
  import { promisify as promisify3 } from "util";
@@ -5267,12 +5335,12 @@ async function sameGitRemote(a, b, resolveHost = resolveSshHost) {
5267
5335
  var execFileAsync3 = promisify3(execFile6);
5268
5336
  var GIT_TIMEOUT = 15e3;
5269
5337
  var DIFF_MAX_BYTES = 512 * 1024;
5270
- var CWD_SCHEMA = z26.string().min(1).max(4096);
5271
- var SAFE_PATH_SCHEMA = z26.string().min(1).max(4096).refine((p) => !p.startsWith("/") && !p.includes("../"), {
5338
+ var CWD_SCHEMA = z27.string().min(1).max(4096);
5339
+ var SAFE_PATH_SCHEMA = z27.string().min(1).max(4096).refine((p) => !p.startsWith("/") && !p.includes("../"), {
5272
5340
  message: "Path must be relative and not traverse up"
5273
5341
  });
5274
- var REMOTE_SCHEMA = z26.string().min(1).max(128).regex(/^[a-zA-Z0-9_\-.]+$/);
5275
- var BRANCH_SCHEMA = z26.string().min(1).max(256).regex(/^[a-zA-Z0-9._\-/]+$/);
5342
+ var REMOTE_SCHEMA = z27.string().min(1).max(128).regex(/^[a-zA-Z0-9_\-.]+$/);
5343
+ var BRANCH_SCHEMA = z27.string().min(1).max(256).regex(/^[a-zA-Z0-9._\-/]+$/);
5276
5344
  function gitSafeEnv() {
5277
5345
  const env2 = {
5278
5346
  GIT_TERMINAL_PROMPT: "0",
@@ -5390,10 +5458,10 @@ async function getGitStatus(cwd) {
5390
5458
  }
5391
5459
  var gitRouter = router({
5392
5460
  /** Check if a working directory exists and optionally verify its git remote */
5393
- checkCwd: protectedProcedure.input(z26.object({
5461
+ checkCwd: protectedProcedure.input(z27.object({
5394
5462
  cwd: CWD_SCHEMA,
5395
- remote: z26.string().max(2048).optional(),
5396
- checkReachability: z26.boolean().optional()
5463
+ remote: z27.string().max(2048).optional(),
5464
+ checkReachability: z27.boolean().optional()
5397
5465
  })).query(async ({ input }) => {
5398
5466
  const resolvedCwd = expandEnvVar(input.cwd);
5399
5467
  const unresolvedVars = [...resolvedCwd.matchAll(/\$\{?(\w+)\}?/g)].map((m) => m[1]);
@@ -5415,8 +5483,8 @@ var gitRouter = router({
5415
5483
  return { exists, actualRemote, remoteMatches, unreachable: false, resolvedCwd: absoluteCwd, unresolvedVars: [] };
5416
5484
  }),
5417
5485
  /** Clone a git repository into a target directory */
5418
- clone: protectedProcedure.input(z26.object({
5419
- remote: z26.string().min(1).max(2048),
5486
+ clone: protectedProcedure.input(z27.object({
5487
+ remote: z27.string().min(1).max(2048),
5420
5488
  cwd: CWD_SCHEMA
5421
5489
  })).mutation(async ({ input }) => {
5422
5490
  const absoluteCwd = resolvePath2(expandEnvVar(input.cwd));
@@ -5437,13 +5505,13 @@ var gitRouter = router({
5437
5505
  return { success: true };
5438
5506
  }),
5439
5507
  /** Get full git status */
5440
- status: protectedProcedure.input(z26.object({ cwd: CWD_SCHEMA })).query(async ({ input }) => {
5508
+ status: protectedProcedure.input(z27.object({ cwd: CWD_SCHEMA })).query(async ({ input }) => {
5441
5509
  const cwd = assertCwdExists(input.cwd);
5442
5510
  await assertGitRepo(cwd);
5443
5511
  return getGitStatus(cwd);
5444
5512
  }),
5445
5513
  /** Watch .git/ for changes and stream updated status */
5446
- onStatusChange: protectedProcedure.input(z26.object({ cwd: CWD_SCHEMA })).subscription(async function* ({ input }) {
5514
+ onStatusChange: protectedProcedure.input(z27.object({ cwd: CWD_SCHEMA })).subscription(async function* ({ input }) {
5447
5515
  const cwd = assertCwdExists(input.cwd);
5448
5516
  await assertGitRepo(cwd);
5449
5517
  const gitDir = (await git(["rev-parse", "--git-dir"], cwd, true)).trim();
@@ -5494,7 +5562,7 @@ var gitRouter = router({
5494
5562
  }
5495
5563
  }),
5496
5564
  /** Get commit log */
5497
- log: protectedProcedure.input(z26.object({ cwd: CWD_SCHEMA, limit: z26.number().int().min(1).max(200).default(50) })).query(async ({ input }) => {
5565
+ log: protectedProcedure.input(z27.object({ cwd: CWD_SCHEMA, limit: z27.number().int().min(1).max(200).default(50) })).query(async ({ input }) => {
5498
5566
  const cwd = assertCwdExists(input.cwd);
5499
5567
  await assertGitRepo(cwd);
5500
5568
  const format = "%H%h%an%ae%ai%s";
@@ -5505,7 +5573,7 @@ var gitRouter = router({
5505
5573
  });
5506
5574
  }),
5507
5575
  /** List local and remote branches */
5508
- branches: protectedProcedure.input(z26.object({ cwd: CWD_SCHEMA })).query(async ({ input }) => {
5576
+ branches: protectedProcedure.input(z27.object({ cwd: CWD_SCHEMA })).query(async ({ input }) => {
5509
5577
  const cwd = assertCwdExists(input.cwd);
5510
5578
  await assertGitRepo(cwd);
5511
5579
  const current = (await git(["rev-parse", "--abbrev-ref", "HEAD"], cwd, true)).trim();
@@ -5517,7 +5585,7 @@ var gitRouter = router({
5517
5585
  return { current, branches };
5518
5586
  }),
5519
5587
  /** Checkout a branch */
5520
- checkout: protectedProcedure.input(z26.object({ cwd: CWD_SCHEMA, branch: BRANCH_SCHEMA, create: z26.boolean().default(false) })).mutation(async ({ input }) => {
5588
+ checkout: protectedProcedure.input(z27.object({ cwd: CWD_SCHEMA, branch: BRANCH_SCHEMA, create: z27.boolean().default(false) })).mutation(async ({ input }) => {
5521
5589
  const cwd = assertCwdExists(input.cwd);
5522
5590
  await assertGitRepo(cwd);
5523
5591
  const args = input.create ? ["checkout", "-b", input.branch] : ["checkout", input.branch];
@@ -5525,42 +5593,42 @@ var gitRouter = router({
5525
5593
  return { ok: true };
5526
5594
  }),
5527
5595
  /** Stage files */
5528
- stage: protectedProcedure.input(z26.object({ cwd: CWD_SCHEMA, paths: z26.array(SAFE_PATH_SCHEMA).min(1).max(500) })).mutation(async ({ input }) => {
5596
+ stage: protectedProcedure.input(z27.object({ cwd: CWD_SCHEMA, paths: z27.array(SAFE_PATH_SCHEMA).min(1).max(500) })).mutation(async ({ input }) => {
5529
5597
  const cwd = assertCwdExists(input.cwd);
5530
5598
  await assertGitRepo(cwd);
5531
5599
  await git(["add", "--", ...input.paths], cwd);
5532
5600
  return { ok: true };
5533
5601
  }),
5534
5602
  /** Stage all files */
5535
- stageAll: protectedProcedure.input(z26.object({ cwd: CWD_SCHEMA })).mutation(async ({ input }) => {
5603
+ stageAll: protectedProcedure.input(z27.object({ cwd: CWD_SCHEMA })).mutation(async ({ input }) => {
5536
5604
  const cwd = assertCwdExists(input.cwd);
5537
5605
  await assertGitRepo(cwd);
5538
5606
  await git(["add", "-A"], cwd);
5539
5607
  return { ok: true };
5540
5608
  }),
5541
5609
  /** Unstage files */
5542
- unstage: protectedProcedure.input(z26.object({ cwd: CWD_SCHEMA, paths: z26.array(SAFE_PATH_SCHEMA).min(1).max(500) })).mutation(async ({ input }) => {
5610
+ unstage: protectedProcedure.input(z27.object({ cwd: CWD_SCHEMA, paths: z27.array(SAFE_PATH_SCHEMA).min(1).max(500) })).mutation(async ({ input }) => {
5543
5611
  const cwd = assertCwdExists(input.cwd);
5544
5612
  await assertGitRepo(cwd);
5545
5613
  await git(["restore", "--staged", "--", ...input.paths], cwd);
5546
5614
  return { ok: true };
5547
5615
  }),
5548
5616
  /** Unstage all files */
5549
- unstageAll: protectedProcedure.input(z26.object({ cwd: CWD_SCHEMA })).mutation(async ({ input }) => {
5617
+ unstageAll: protectedProcedure.input(z27.object({ cwd: CWD_SCHEMA })).mutation(async ({ input }) => {
5550
5618
  const cwd = assertCwdExists(input.cwd);
5551
5619
  await assertGitRepo(cwd);
5552
5620
  await git(["reset", "--"], cwd);
5553
5621
  return { ok: true };
5554
5622
  }),
5555
5623
  /** Commit staged changes */
5556
- commit: protectedProcedure.input(z26.object({ cwd: CWD_SCHEMA, message: z26.string().min(1).max(4096) })).mutation(async ({ input }) => {
5624
+ commit: protectedProcedure.input(z27.object({ cwd: CWD_SCHEMA, message: z27.string().min(1).max(4096) })).mutation(async ({ input }) => {
5557
5625
  const cwd = assertCwdExists(input.cwd);
5558
5626
  await assertGitRepo(cwd);
5559
5627
  const output = await git(["commit", "-m", input.message], cwd);
5560
5628
  return { ok: true, output: output.trim() };
5561
5629
  }),
5562
5630
  /** Push to remote */
5563
- push: protectedProcedure.input(z26.object({ cwd: CWD_SCHEMA, remote: REMOTE_SCHEMA.default("origin"), setUpstream: z26.boolean().default(false) })).mutation(async ({ input }) => {
5631
+ push: protectedProcedure.input(z27.object({ cwd: CWD_SCHEMA, remote: REMOTE_SCHEMA.default("origin"), setUpstream: z27.boolean().default(false) })).mutation(async ({ input }) => {
5564
5632
  const cwd = assertCwdExists(input.cwd);
5565
5633
  await assertGitRepo(cwd);
5566
5634
  const branch = (await git(["rev-parse", "--abbrev-ref", "HEAD"], cwd, true)).trim();
@@ -5569,25 +5637,25 @@ var gitRouter = router({
5569
5637
  return { ok: true, output: output.trim() };
5570
5638
  }),
5571
5639
  /** Pull from remote */
5572
- pull: protectedProcedure.input(z26.object({ cwd: CWD_SCHEMA, remote: REMOTE_SCHEMA.default("origin") })).mutation(async ({ input }) => {
5640
+ pull: protectedProcedure.input(z27.object({ cwd: CWD_SCHEMA, remote: REMOTE_SCHEMA.default("origin") })).mutation(async ({ input }) => {
5573
5641
  const cwd = assertCwdExists(input.cwd);
5574
5642
  await assertGitRepo(cwd);
5575
5643
  const output = await git(["pull", input.remote], cwd);
5576
5644
  return { ok: true, output: output.trim() };
5577
5645
  }),
5578
5646
  /** Fetch from remote */
5579
- fetch: protectedProcedure.input(z26.object({ cwd: CWD_SCHEMA, remote: REMOTE_SCHEMA.default("origin") })).mutation(async ({ input }) => {
5647
+ fetch: protectedProcedure.input(z27.object({ cwd: CWD_SCHEMA, remote: REMOTE_SCHEMA.default("origin") })).mutation(async ({ input }) => {
5580
5648
  const cwd = assertCwdExists(input.cwd);
5581
5649
  await assertGitRepo(cwd);
5582
5650
  const output = await git(["fetch", input.remote], cwd);
5583
5651
  return { ok: true, output: output.trim() };
5584
5652
  }),
5585
5653
  /** Get diff for a file or the whole index */
5586
- diff: protectedProcedure.input(z26.object({
5654
+ diff: protectedProcedure.input(z27.object({
5587
5655
  cwd: CWD_SCHEMA,
5588
- path: z26.string().max(4096).optional(),
5589
- staged: z26.boolean().default(false),
5590
- untracked: z26.boolean().default(false)
5656
+ path: z27.string().max(4096).optional(),
5657
+ staged: z27.boolean().default(false),
5658
+ untracked: z27.boolean().default(false)
5591
5659
  })).query(async ({ input }) => {
5592
5660
  const cwd = assertCwdExists(input.cwd);
5593
5661
  await assertGitRepo(cwd);
@@ -5635,21 +5703,21 @@ var gitRouter = router({
5635
5703
  };
5636
5704
  }),
5637
5705
  /** Discard changes to working tree files */
5638
- discard: protectedProcedure.input(z26.object({ cwd: CWD_SCHEMA, paths: z26.array(SAFE_PATH_SCHEMA).min(1).max(500) })).mutation(async ({ input }) => {
5706
+ discard: protectedProcedure.input(z27.object({ cwd: CWD_SCHEMA, paths: z27.array(SAFE_PATH_SCHEMA).min(1).max(500) })).mutation(async ({ input }) => {
5639
5707
  const cwd = assertCwdExists(input.cwd);
5640
5708
  await assertGitRepo(cwd);
5641
5709
  await git(["restore", "--", ...input.paths], cwd);
5642
5710
  return { ok: true };
5643
5711
  }),
5644
5712
  /** Get staged diff (used by server for AI commit message generation) */
5645
- stagedDiff: protectedProcedure.input(z26.object({ cwd: CWD_SCHEMA })).query(async ({ input }) => {
5713
+ stagedDiff: protectedProcedure.input(z27.object({ cwd: CWD_SCHEMA })).query(async ({ input }) => {
5646
5714
  const cwd = assertCwdExists(input.cwd);
5647
5715
  await assertGitRepo(cwd);
5648
5716
  const diff = await git(["diff", "--staged"], cwd, true);
5649
5717
  return { diff: diff.slice(0, 3e4) };
5650
5718
  }),
5651
5719
  /** Merge a branch into the current branch */
5652
- merge: protectedProcedure.input(z26.object({ cwd: CWD_SCHEMA, branch: BRANCH_SCHEMA, noFf: z26.boolean().default(false) })).mutation(async ({ input }) => {
5720
+ merge: protectedProcedure.input(z27.object({ cwd: CWD_SCHEMA, branch: BRANCH_SCHEMA, noFf: z27.boolean().default(false) })).mutation(async ({ input }) => {
5653
5721
  const cwd = assertCwdExists(input.cwd);
5654
5722
  await assertGitRepo(cwd);
5655
5723
  const args = input.noFf ? ["merge", "--no-ff", input.branch] : ["merge", input.branch];
@@ -5657,14 +5725,14 @@ var gitRouter = router({
5657
5725
  return { ok: true, output: output.trim() };
5658
5726
  }),
5659
5727
  /** Rebase current branch onto another branch */
5660
- rebase: protectedProcedure.input(z26.object({ cwd: CWD_SCHEMA, branch: BRANCH_SCHEMA })).mutation(async ({ input }) => {
5728
+ rebase: protectedProcedure.input(z27.object({ cwd: CWD_SCHEMA, branch: BRANCH_SCHEMA })).mutation(async ({ input }) => {
5661
5729
  const cwd = assertCwdExists(input.cwd);
5662
5730
  await assertGitRepo(cwd);
5663
5731
  const output = await git(["rebase", input.branch], cwd);
5664
5732
  return { ok: true, output: output.trim() };
5665
5733
  }),
5666
5734
  /** List remotes */
5667
- remotes: protectedProcedure.input(z26.object({ cwd: CWD_SCHEMA })).query(async ({ input }) => {
5735
+ remotes: protectedProcedure.input(z27.object({ cwd: CWD_SCHEMA })).query(async ({ input }) => {
5668
5736
  const cwd = assertCwdExists(input.cwd);
5669
5737
  await assertGitRepo(cwd);
5670
5738
  const output = await git(["remote", "-v"], cwd, true);
@@ -5682,7 +5750,7 @@ var gitRouter = router({
5682
5750
  return remotes;
5683
5751
  }),
5684
5752
  /** List stash entries */
5685
- stashList: protectedProcedure.input(z26.object({ cwd: CWD_SCHEMA })).query(async ({ input }) => {
5753
+ stashList: protectedProcedure.input(z27.object({ cwd: CWD_SCHEMA })).query(async ({ input }) => {
5686
5754
  const cwd = assertCwdExists(input.cwd);
5687
5755
  await assertGitRepo(cwd);
5688
5756
  const output = await git(["stash", "list", "--format=%gd%s"], cwd, true);
@@ -5695,10 +5763,10 @@ var gitRouter = router({
5695
5763
  return entries;
5696
5764
  }),
5697
5765
  /** Stash current changes */
5698
- stashPush: protectedProcedure.input(z26.object({
5766
+ stashPush: protectedProcedure.input(z27.object({
5699
5767
  cwd: CWD_SCHEMA,
5700
- message: z26.string().max(4096).optional(),
5701
- includeUntracked: z26.boolean().default(true)
5768
+ message: z27.string().max(4096).optional(),
5769
+ includeUntracked: z27.boolean().default(true)
5702
5770
  })).mutation(async ({ input }) => {
5703
5771
  const cwd = assertCwdExists(input.cwd);
5704
5772
  await assertGitRepo(cwd);
@@ -5709,21 +5777,21 @@ var gitRouter = router({
5709
5777
  return { ok: true, output: output.trim() };
5710
5778
  }),
5711
5779
  /** Apply a stash entry and remove it from the list */
5712
- stashPop: protectedProcedure.input(z26.object({ cwd: CWD_SCHEMA, index: z26.number().int().min(0).max(1e3).default(0) })).mutation(async ({ input }) => {
5780
+ stashPop: protectedProcedure.input(z27.object({ cwd: CWD_SCHEMA, index: z27.number().int().min(0).max(1e3).default(0) })).mutation(async ({ input }) => {
5713
5781
  const cwd = assertCwdExists(input.cwd);
5714
5782
  await assertGitRepo(cwd);
5715
5783
  const output = await git(["stash", "pop", `stash@{${input.index}}`], cwd);
5716
5784
  return { ok: true, output: output.trim() };
5717
5785
  }),
5718
5786
  /** Apply a stash entry without removing it from the list */
5719
- stashApply: protectedProcedure.input(z26.object({ cwd: CWD_SCHEMA, index: z26.number().int().min(0).max(1e3).default(0) })).mutation(async ({ input }) => {
5787
+ stashApply: protectedProcedure.input(z27.object({ cwd: CWD_SCHEMA, index: z27.number().int().min(0).max(1e3).default(0) })).mutation(async ({ input }) => {
5720
5788
  const cwd = assertCwdExists(input.cwd);
5721
5789
  await assertGitRepo(cwd);
5722
5790
  const output = await git(["stash", "apply", `stash@{${input.index}}`], cwd);
5723
5791
  return { ok: true, output: output.trim() };
5724
5792
  }),
5725
5793
  /** Drop a stash entry */
5726
- stashDrop: protectedProcedure.input(z26.object({ cwd: CWD_SCHEMA, index: z26.number().int().min(0).max(1e3).default(0) })).mutation(async ({ input }) => {
5794
+ stashDrop: protectedProcedure.input(z27.object({ cwd: CWD_SCHEMA, index: z27.number().int().min(0).max(1e3).default(0) })).mutation(async ({ input }) => {
5727
5795
  const cwd = assertCwdExists(input.cwd);
5728
5796
  await assertGitRepo(cwd);
5729
5797
  const output = await git(["stash", "drop", `stash@{${input.index}}`], cwd);
@@ -5756,7 +5824,7 @@ function runGitRaw(args, timeoutMs, extraEnv) {
5756
5824
  }
5757
5825
 
5758
5826
  // src/trpc/routers/ai.ts
5759
- import { z as z27 } from "zod";
5827
+ import { z as z28 } from "zod";
5760
5828
  import { TRPCError as TRPCError5 } from "@trpc/server";
5761
5829
 
5762
5830
  // src/services/ai-spawn-manager.ts
@@ -6451,25 +6519,25 @@ var MAX_CONTEXT_FILE_BYTES = 1e6;
6451
6519
  var MAX_CONTEXT_TOTAL_BYTES = 5e6;
6452
6520
  var aiRouter = router({
6453
6521
  /** Spawn an AI CLI process. Returns a spawnId for streaming. */
6454
- spawn: protectedProcedure.input(z27.object({
6455
- cli: z27.string().max(64),
6456
- args: z27.array(z27.string().max(5e5)),
6457
- env: z27.record(z27.string().max(256), z27.string().max(5e5)).optional(),
6458
- cwd: z27.string().max(4096).optional(),
6459
- stdinData: z27.string().max(1e7).optional(),
6460
- enableMcp: z27.boolean().optional(),
6461
- mcpApiBaseUrl: z27.string().max(512).optional(),
6462
- mcpApiToken: z27.string().max(8192).optional(),
6463
- mcpProjectId: z27.string().max(128).optional(),
6464
- mcpOrgId: z27.string().max(128).optional()
6522
+ spawn: protectedProcedure.input(z28.object({
6523
+ cli: z28.string().max(64),
6524
+ args: z28.array(z28.string().max(5e5)),
6525
+ env: z28.record(z28.string().max(256), z28.string().max(5e5)).optional(),
6526
+ cwd: z28.string().max(4096).optional(),
6527
+ stdinData: z28.string().max(1e7).optional(),
6528
+ enableMcp: z28.boolean().optional(),
6529
+ mcpApiBaseUrl: z28.string().max(512).optional(),
6530
+ mcpApiToken: z28.string().max(8192).optional(),
6531
+ mcpProjectId: z28.string().max(128).optional(),
6532
+ mcpOrgId: z28.string().max(128).optional()
6465
6533
  })).mutation(({ input }) => {
6466
6534
  const spawnId = aiSpawnManager.spawn(input);
6467
6535
  return { spawnId };
6468
6536
  }),
6469
6537
  /** Stream stdout/stderr/exit chunks from offset. Reconnectable. */
6470
- stream: protectedProcedure.input(z27.object({
6471
- spawnId: z27.string().max(128),
6472
- fromOffset: z27.number().int().min(0).default(0)
6538
+ stream: protectedProcedure.input(z28.object({
6539
+ spawnId: z28.string().max(128),
6540
+ fromOffset: z28.number().int().min(0).default(0)
6473
6541
  })).subscription(async function* ({ input }) {
6474
6542
  try {
6475
6543
  for await (const item of aiSpawnManager.stream(input.spawnId, input.fromOffset)) {
@@ -6483,41 +6551,41 @@ var aiRouter = router({
6483
6551
  }
6484
6552
  }),
6485
6553
  /** Spawn an AI CLI process in a PTY (interactive mode). Returns spawnId. */
6486
- spawnPty: protectedProcedure.input(z27.object({
6487
- cli: z27.string().max(64),
6488
- args: z27.array(z27.string().max(5e5)),
6489
- env: z27.record(z27.string().max(256), z27.string().max(5e5)).optional(),
6490
- cwd: z27.string().max(4096).optional(),
6491
- cols: z27.number().int().min(1).max(1e3).optional(),
6492
- rows: z27.number().int().min(1).max(1e3).optional(),
6493
- sessionId: z27.string().max(128).optional(),
6494
- enableMcp: z27.boolean().optional(),
6495
- mcpApiBaseUrl: z27.string().max(512).optional(),
6496
- mcpApiToken: z27.string().max(8192).optional(),
6497
- mcpProjectId: z27.string().max(128).optional(),
6498
- mcpOrgId: z27.string().max(128).optional()
6554
+ spawnPty: protectedProcedure.input(z28.object({
6555
+ cli: z28.string().max(64),
6556
+ args: z28.array(z28.string().max(5e5)),
6557
+ env: z28.record(z28.string().max(256), z28.string().max(5e5)).optional(),
6558
+ cwd: z28.string().max(4096).optional(),
6559
+ cols: z28.number().int().min(1).max(1e3).optional(),
6560
+ rows: z28.number().int().min(1).max(1e3).optional(),
6561
+ sessionId: z28.string().max(128).optional(),
6562
+ enableMcp: z28.boolean().optional(),
6563
+ mcpApiBaseUrl: z28.string().max(512).optional(),
6564
+ mcpApiToken: z28.string().max(8192).optional(),
6565
+ mcpProjectId: z28.string().max(128).optional(),
6566
+ mcpOrgId: z28.string().max(128).optional()
6499
6567
  })).mutation(({ input }) => {
6500
6568
  const spawnId = aiSpawnManager.spawnPty(input);
6501
6569
  return { spawnId };
6502
6570
  }),
6503
6571
  /** Find a running PTY spawn by its logical sessionId (for re-attach). */
6504
- findPtyBySession: protectedProcedure.input(z27.object({ sessionId: z27.string().max(128) })).query(({ input }) => {
6572
+ findPtyBySession: protectedProcedure.input(z28.object({ sessionId: z28.string().max(128) })).query(({ input }) => {
6505
6573
  return aiSpawnManager.findPtyBySessionId(input.sessionId);
6506
6574
  }),
6507
6575
  /** Write input to a PTY spawn (user keystrokes). */
6508
- writePty: protectedProcedure.input(z27.object({
6509
- spawnId: z27.string().max(128),
6510
- data: z27.string().max(1e6)
6576
+ writePty: protectedProcedure.input(z28.object({
6577
+ spawnId: z28.string().max(128),
6578
+ data: z28.string().max(1e6)
6511
6579
  })).mutation(({ input }) => {
6512
6580
  const ok = aiSpawnManager.writePty(input.spawnId, input.data);
6513
6581
  return { ok };
6514
6582
  }),
6515
6583
  /** Write attached-context files for an AI session to a temp dir. Returns absolute paths. */
6516
- writeContextFiles: protectedProcedure.input(z27.object({
6517
- sessionId: z27.string().min(1).max(128),
6518
- files: z27.array(z27.object({
6519
- name: z27.string().min(1).max(256),
6520
- content: z27.string().max(MAX_CONTEXT_FILE_BYTES)
6584
+ writeContextFiles: protectedProcedure.input(z28.object({
6585
+ sessionId: z28.string().min(1).max(128),
6586
+ files: z28.array(z28.object({
6587
+ name: z28.string().min(1).max(256),
6588
+ content: z28.string().max(MAX_CONTEXT_FILE_BYTES)
6521
6589
  })).min(1).max(MAX_CONTEXT_FILES)
6522
6590
  }).refine(
6523
6591
  (val) => val.files.reduce((sum, f) => sum + f.content.length, 0) <= MAX_CONTEXT_TOTAL_BYTES,
@@ -6532,25 +6600,25 @@ var aiRouter = router({
6532
6600
  * which clipboard method (if any) succeeded — caller decides whether to send
6533
6601
  * Ctrl+V (\x16) or inject `@<path>` into the PTY.
6534
6602
  */
6535
- pasteImage: protectedProcedure.input(z27.object({
6536
- sessionId: z27.string().max(128).optional(),
6537
- mimeType: z27.string().max(64),
6538
- base64: z27.string().max(15e6)
6603
+ pasteImage: protectedProcedure.input(z28.object({
6604
+ sessionId: z28.string().max(128).optional(),
6605
+ mimeType: z28.string().max(64),
6606
+ base64: z28.string().max(15e6)
6539
6607
  })).mutation(async ({ input }) => {
6540
6608
  const res = await savePastedImage(input.base64, input.mimeType, input.sessionId);
6541
6609
  return res;
6542
6610
  }),
6543
6611
  /** Resize a PTY spawn. */
6544
- resizePty: protectedProcedure.input(z27.object({
6545
- spawnId: z27.string().max(128),
6546
- cols: z27.number().int().min(1).max(1e3),
6547
- rows: z27.number().int().min(1).max(1e3)
6612
+ resizePty: protectedProcedure.input(z28.object({
6613
+ spawnId: z28.string().max(128),
6614
+ cols: z28.number().int().min(1).max(1e3),
6615
+ rows: z28.number().int().min(1).max(1e3)
6548
6616
  })).mutation(({ input }) => {
6549
6617
  const ok = aiSpawnManager.resizePty(input.spawnId, input.cols, input.rows);
6550
6618
  return { ok };
6551
6619
  }),
6552
6620
  /** Kill a running AI spawn. */
6553
- kill: protectedProcedure.input(z27.object({ spawnId: z27.string().max(128) })).mutation(({ input }) => {
6621
+ kill: protectedProcedure.input(z28.object({ spawnId: z28.string().max(128) })).mutation(({ input }) => {
6554
6622
  const killed = aiSpawnManager.kill(input.spawnId);
6555
6623
  return { ok: killed };
6556
6624
  }),
@@ -6559,23 +6627,23 @@ var aiRouter = router({
6559
6627
  return aiSpawnManager.list();
6560
6628
  }),
6561
6629
  /** Acknowledge receipt of all data — agent can clean up after TTL. */
6562
- ack: protectedProcedure.input(z27.object({ spawnId: z27.string().max(128) })).mutation(({ input }) => {
6630
+ ack: protectedProcedure.input(z28.object({ spawnId: z28.string().max(128) })).mutation(({ input }) => {
6563
6631
  const acked = aiSpawnManager.ack(input.spawnId);
6564
6632
  return { ok: acked };
6565
6633
  }),
6566
6634
  /** Forward a JSON-RPC request to the local codex app-server. */
6567
- codexRequest: protectedProcedure.input(z27.object({
6568
- method: z27.string().max(256),
6569
- params: z27.record(z27.string(), z27.unknown()).default({}),
6570
- env: z27.record(z27.string().max(256), z27.string().max(5e5)).optional()
6635
+ codexRequest: protectedProcedure.input(z28.object({
6636
+ method: z28.string().max(256),
6637
+ params: z28.record(z28.string(), z28.unknown()).default({}),
6638
+ env: z28.record(z28.string().max(256), z28.string().max(5e5)).optional()
6571
6639
  })).mutation(async ({ input }) => {
6572
6640
  await codexAppServerManager.ensureConnected(input.env);
6573
6641
  const result = await codexAppServerManager.sendRequest(input.method, input.params);
6574
6642
  return { result };
6575
6643
  }),
6576
6644
  /** Stream notifications from the codex app-server. Optionally filter by threadId. */
6577
- codexNotifications: protectedProcedure.input(z27.object({
6578
- threadId: z27.string().max(256).optional()
6645
+ codexNotifications: protectedProcedure.input(z28.object({
6646
+ threadId: z28.string().max(256).optional()
6579
6647
  }).default({})).subscription(async function* ({ input, signal }) {
6580
6648
  await codexAppServerManager.ensureConnected();
6581
6649
  const queue = [];
@@ -6612,13 +6680,13 @@ var aiRouter = router({
6612
6680
  });
6613
6681
 
6614
6682
  // src/trpc/routers/wiki.ts
6615
- import { z as z28 } from "zod";
6683
+ import { z as z29 } from "zod";
6616
6684
  import { TRPCError as TRPCError6 } from "@trpc/server";
6617
6685
  import { readFile as readFile2, readdir, stat as stat2, realpath, writeFile as writeFile6, mkdir as mkdir6, rename as rename2, rm } from "fs/promises";
6618
6686
  import { dirname as dirname3 } from "path";
6619
6687
  import { resolve as resolvePath3, join as join6, relative, sep } from "path";
6620
- var CWD_SCHEMA2 = z28.string().min(1).max(4096);
6621
- var REL_PATH_SCHEMA = z28.string().min(1).max(512).regex(/^[A-Za-z0-9_./-]+$/).refine((p) => !p.includes("..") && !p.startsWith("/"), {
6688
+ var CWD_SCHEMA2 = z29.string().min(1).max(4096);
6689
+ var REL_PATH_SCHEMA = z29.string().min(1).max(512).regex(/^[A-Za-z0-9_./-]+$/).refine((p) => !p.includes("..") && !p.startsWith("/"), {
6622
6690
  message: "Path must be a relative path without traversal"
6623
6691
  });
6624
6692
  var MAX_FILES = 500;
@@ -6638,9 +6706,9 @@ var IGNORED_DIRS = /* @__PURE__ */ new Set([
6638
6706
  "target",
6639
6707
  "out"
6640
6708
  ]);
6641
- var RepoEntrySchema = z28.lazy(() => z28.union([
6642
- z28.object({ type: z28.literal("file"), name: z28.string(), path: z28.string() }),
6643
- z28.object({ type: z28.literal("dir"), name: z28.string(), path: z28.string(), children: z28.array(RepoEntrySchema) })
6709
+ var RepoEntrySchema = z29.lazy(() => z29.union([
6710
+ z29.object({ type: z29.literal("file"), name: z29.string(), path: z29.string() }),
6711
+ z29.object({ type: z29.literal("dir"), name: z29.string(), path: z29.string(), children: z29.array(RepoEntrySchema) })
6644
6712
  ]));
6645
6713
  async function walkMarkdown(root, dir, depth, counter) {
6646
6714
  if (depth > MAX_DEPTH || counter.n >= MAX_FILES) return [];
@@ -6710,13 +6778,13 @@ async function resolveRoot(cwd) {
6710
6778
  }
6711
6779
  }
6712
6780
  var wikiRouter = router({
6713
- listRepoMarkdown: protectedProcedure.input(z28.object({ cwd: CWD_SCHEMA2 })).query(async ({ input }) => {
6781
+ listRepoMarkdown: protectedProcedure.input(z29.object({ cwd: CWD_SCHEMA2 })).query(async ({ input }) => {
6714
6782
  const root = await resolveRoot(input.cwd);
6715
6783
  const counter = { n: 0 };
6716
6784
  const entries = await walkMarkdown(root, root, 0, counter);
6717
6785
  return { root, entries, truncated: counter.n >= MAX_FILES };
6718
6786
  }),
6719
- readRepoMarkdown: protectedProcedure.input(z28.object({ cwd: CWD_SCHEMA2, path: REL_PATH_SCHEMA })).query(async ({ input }) => {
6787
+ readRepoMarkdown: protectedProcedure.input(z29.object({ cwd: CWD_SCHEMA2, path: REL_PATH_SCHEMA })).query(async ({ input }) => {
6720
6788
  if (!/\.(md|markdown)$/i.test(input.path)) {
6721
6789
  throw new TRPCError6({ code: "BAD_REQUEST", message: "Seuls les .md sont autoris\xE9s" });
6722
6790
  }
@@ -6742,10 +6810,10 @@ var wikiRouter = router({
6742
6810
  const content = await readFile2(realTarget, "utf-8");
6743
6811
  return { path: input.path, content };
6744
6812
  }),
6745
- writeMarkdown: protectedProcedure.input(z28.object({
6813
+ writeMarkdown: protectedProcedure.input(z29.object({
6746
6814
  cwd: CWD_SCHEMA2,
6747
6815
  path: REL_PATH_SCHEMA,
6748
- content: z28.string().max(5e6)
6816
+ content: z29.string().max(5e6)
6749
6817
  })).mutation(async ({ input }) => {
6750
6818
  if (!/\.(md|markdown)$/i.test(input.path)) {
6751
6819
  throw new TRPCError6({ code: "BAD_REQUEST", message: "Seuls les .md/.markdown sont autoris\xE9s" });
@@ -6756,7 +6824,7 @@ var wikiRouter = router({
6756
6824
  await writeFile6(target, input.content, "utf-8");
6757
6825
  return { path: input.path, ok: true };
6758
6826
  }),
6759
- createFile: protectedProcedure.input(z28.object({ cwd: CWD_SCHEMA2, path: REL_PATH_SCHEMA })).mutation(async ({ input }) => {
6827
+ createFile: protectedProcedure.input(z29.object({ cwd: CWD_SCHEMA2, path: REL_PATH_SCHEMA })).mutation(async ({ input }) => {
6760
6828
  if (!/\.(md|markdown)$/i.test(input.path)) {
6761
6829
  throw new TRPCError6({ code: "BAD_REQUEST", message: "Seuls les .md/.markdown sont autoris\xE9s" });
6762
6830
  }
@@ -6772,13 +6840,13 @@ var wikiRouter = router({
6772
6840
  await writeFile6(target, "", "utf-8");
6773
6841
  return { path: input.path, ok: true };
6774
6842
  }),
6775
- createDir: protectedProcedure.input(z28.object({ cwd: CWD_SCHEMA2, path: REL_PATH_SCHEMA })).mutation(async ({ input }) => {
6843
+ createDir: protectedProcedure.input(z29.object({ cwd: CWD_SCHEMA2, path: REL_PATH_SCHEMA })).mutation(async ({ input }) => {
6776
6844
  const root = await resolveRoot(input.cwd);
6777
6845
  const target = await resolveSafePath(root, input.path, false);
6778
6846
  await mkdir6(target, { recursive: true });
6779
6847
  return { path: input.path, ok: true };
6780
6848
  }),
6781
- renamePath: protectedProcedure.input(z28.object({
6849
+ renamePath: protectedProcedure.input(z29.object({
6782
6850
  cwd: CWD_SCHEMA2,
6783
6851
  fromPath: REL_PATH_SCHEMA,
6784
6852
  toPath: REL_PATH_SCHEMA
@@ -6796,14 +6864,14 @@ var wikiRouter = router({
6796
6864
  await rename2(from, to);
6797
6865
  return { fromPath: input.fromPath, toPath: input.toPath, ok: true };
6798
6866
  }),
6799
- ensureRoot: protectedProcedure.input(z28.object({ cwd: CWD_SCHEMA2 })).mutation(async ({ input }) => {
6867
+ ensureRoot: protectedProcedure.input(z29.object({ cwd: CWD_SCHEMA2 })).mutation(async ({ input }) => {
6800
6868
  const expanded = expandEnvVar(input.cwd);
6801
6869
  const abs = resolvePath3(expanded);
6802
6870
  await mkdir6(abs, { recursive: true });
6803
6871
  const root = await realpath(abs);
6804
6872
  return { root, ok: true };
6805
6873
  }),
6806
- deletePath: protectedProcedure.input(z28.object({ cwd: CWD_SCHEMA2, path: REL_PATH_SCHEMA })).mutation(async ({ input }) => {
6874
+ deletePath: protectedProcedure.input(z29.object({ cwd: CWD_SCHEMA2, path: REL_PATH_SCHEMA })).mutation(async ({ input }) => {
6807
6875
  const root = await resolveRoot(input.cwd);
6808
6876
  const target = await resolveSafePath(root, input.path, true);
6809
6877
  if (target === root) {