@runeya/runeya 2.0.102 → 2.0.104

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 (352) hide show
  1. package/agent-manager-4XJUIZKL.js +9 -0
  2. package/assets/icon-alert.ico +0 -0
  3. package/assets/icon-alert.png +0 -0
  4. package/assets/icon-alert.svg +19 -0
  5. package/{chat-OXRRBDB3.js → chat-3XDVULFH.js} +8 -7
  6. package/{chunk-F3HKV5AU.js → chunk-5GYBAMHV.js} +5 -3
  7. package/{chunk-F3HKV5AU.js.map → chunk-5GYBAMHV.js.map} +1 -1
  8. package/{chunk-PSTMO7EE.js → chunk-AAK7ACHG.js} +9 -7
  9. package/{chunk-PSTMO7EE.js.map → chunk-AAK7ACHG.js.map} +1 -1
  10. package/{chunk-BDVQB5RK.js → chunk-IOAGFK3P.js} +28 -20
  11. package/{chunk-BDVQB5RK.js.map → chunk-IOAGFK3P.js.map} +1 -1
  12. package/chunk-LTLOVQJQ.js +291 -0
  13. package/chunk-LTLOVQJQ.js.map +1 -0
  14. package/{chunk-BHLCBARP.js → chunk-NPORVPEO.js} +21 -3
  15. package/chunk-NPORVPEO.js.map +1 -0
  16. package/chunk-PH4E5WDN.js +137 -0
  17. package/chunk-PH4E5WDN.js.map +1 -0
  18. package/{chunk-NDO5VFZY.js → chunk-QRMG6GMX.js} +694 -917
  19. package/chunk-QRMG6GMX.js.map +1 -0
  20. package/{companion-JQGNL4U7.js → companion-MUFVXURV.js} +5 -4
  21. package/{desktop-launcher-FHNURZA7.js → desktop-launcher-N7WRF3LC.js} +11 -17
  22. package/desktop-launcher-N7WRF3LC.js.map +1 -0
  23. package/index.js +68 -2
  24. package/index.js.map +1 -1
  25. package/instances-command-KZ5UGXOR.js +17 -0
  26. package/package.json +4 -1
  27. package/settings-manager-Y4GNAXOH.js +9 -0
  28. package/settings-manager-Y4GNAXOH.js.map +1 -0
  29. package/{src-HZ2XO6TV.js → src-TEL7L4K2.js} +707 -249
  30. package/src-TEL7L4K2.js.map +1 -0
  31. package/tray-NZOXYN5G.js +307 -0
  32. package/tray-NZOXYN5G.js.map +1 -0
  33. package/vault-resolver-JR7TCITD.js +55 -0
  34. package/vault-resolver-JR7TCITD.js.map +1 -0
  35. package/web/assets/AgentScalarChatInterface.vue-CveVquKX.js +13 -0
  36. package/web/assets/AgentTerminalPage-DkNOUzXx.js +1 -0
  37. package/web/assets/AiChatPage-CTF8FIV4.js +1 -0
  38. package/web/assets/{AppLayout-DeWqCLuK.css → AppLayout-CYQBjQBU.css} +1 -1
  39. package/web/assets/AppLayout-agjOv6PY.js +1 -0
  40. package/web/assets/AuditPage-dgYwbpdR.js +1 -0
  41. package/web/assets/CloudAccountPage-Bx9gNcJQ.js +1 -0
  42. package/web/assets/CloudAccountPage-DEnVoeik.js +1 -0
  43. package/web/assets/CloudMessagingPage-qKrKfB-F.js +2 -0
  44. package/web/assets/DashboardPage-Bwq2Nhg2.js +1 -0
  45. package/web/assets/DirectoryPickerDialog-D8XDtgZh.js +1 -0
  46. package/web/assets/{EditorIcon-C9XKLhc7.js → EditorIcon-CA5ff6aq.js} +2 -2
  47. package/web/assets/{EnvironmentForm-bS48MK8k.js → EnvironmentForm-CzSZiA51.js} +2 -2
  48. package/web/assets/EnvironmentFormPage-CuSgaY1_.js +1 -0
  49. package/web/assets/EnvironmentListPage-Dsw3CJvc.js +1 -0
  50. package/web/assets/KanbanBoardPage-CUVcQ4YW.js +4 -0
  51. package/web/assets/KanbanListPage-CGhlz8Pe.js +1 -0
  52. package/web/assets/LaunchProjectPage-BveJC98q.js +1 -0
  53. package/web/assets/LaunchServicesPage-B0W02JDF.js +1 -0
  54. package/web/assets/LogViewer-Rr_WYaUa.js +3 -0
  55. package/web/assets/OrgKeyPrompt-CG2-L3Lf.js +1 -0
  56. package/web/assets/ProcessControls-DvSw2AQV.js +1 -0
  57. package/web/assets/ProcessDetailPage-Decf7LjW.js +1 -0
  58. package/web/assets/{ProcessMetrics-CBPR5ozp.js → ProcessMetrics-xWpkhjoe.js} +2 -2
  59. package/web/assets/ProjectDetailPage-xg7x2vFI.js +1 -0
  60. package/web/assets/ProjectListPage-Bv2fwGla.js +1 -0
  61. package/web/assets/RandomJobTestPage-BEn1gSo3.js +2 -0
  62. package/web/assets/ScenarioEditorPage-CLiTQe4B.js +14 -0
  63. package/web/assets/SendToChatDialog-DdvfNdWg.js +1 -0
  64. package/web/assets/ServiceControlsBar-DKc2e9Ns.js +1 -0
  65. package/web/assets/ServiceDetailPage-BfkVlUEh.js +2 -0
  66. package/web/assets/ServiceFormPage-BTJBk_wB.js +1 -0
  67. package/web/assets/SettingsPage-BlOHIALT.js +2063 -0
  68. package/web/assets/SettingsPage-Dw6tbcbw.css +1 -0
  69. package/web/assets/UnlockPage-u3Zqu1aU.js +1 -0
  70. package/web/assets/VariablesTable-MFZSG4LV.js +1 -0
  71. package/web/assets/VaultMigrationPage-CTMCgOtW.js +1 -0
  72. package/web/assets/VersionBadge-D5zxX_zs.js +1 -0
  73. package/web/assets/WikiPage-BkQZP60x.js +1 -0
  74. package/web/assets/WikiView-CFX5gG2s.js +1 -0
  75. package/web/assets/add-scalar-classes-ClMP-KRl.js +387 -0
  76. package/web/assets/{autocomplete-CtIxw1IN.js → autocomplete-CBY4HTQR.js} +3 -3
  77. package/web/assets/{basic-shape-diamond.svg-BErisM9Y.js → basic-shape-diamond.svg-irIu-f9l.js} +1 -1
  78. package/web/assets/{basic-shape-hexagon.svg-yC7RoYpa.js → basic-shape-hexagon.svg-DasEKbDT.js} +1 -1
  79. package/web/assets/{basic-shape-primary-circle-ellipse-round.svg-DRmanUIO.js → basic-shape-primary-circle-ellipse-round.svg-DFanDXAm.js} +1 -1
  80. package/web/assets/{basic-shape-primary-square-rectangle.svg-DxuoouSj.js → basic-shape-primary-square-rectangle.svg-Dkyo9dlJ.js} +1 -1
  81. package/web/assets/{basic-shape-shield.svg-Cy_Frn-W.js → basic-shape-shield.svg-3imE69mJ.js} +1 -1
  82. package/web/assets/{browser-h0mxWbci.js → browser-Aa5s7rfo.js} +1 -1
  83. package/web/assets/{browser-Dj3qxJqB.js → browser-DUQZPder.js} +1 -1
  84. package/web/assets/card-D-ziPwAg.js +32 -0
  85. package/web/assets/{checkbox-CTw-YDe_.js → checkbox-tdxfIWhT.js} +3 -3
  86. package/web/assets/{chip-DwSSTlaC.js → chip-DQ2M3lMV.js} +2 -2
  87. package/web/assets/{client-DYNnTrNm.js → client-w--F512m.js} +2 -2
  88. package/web/assets/cloud-chat.store-DwSl7oKq.js +1 -0
  89. package/web/assets/cloud-session-Do-zjE8q.js +1 -0
  90. package/web/assets/column-Bv9vDejf.js +907 -0
  91. package/web/assets/{computer-device-desktop-monitor.svg-TLZAKrIM.js → computer-device-desktop-monitor.svg-CYOP3WaB.js} +1 -1
  92. package/web/assets/{computer-device-desktop.svg-YRcL_Qxn.js → computer-device-desktop.svg-qlrBIvQY.js} +1 -1
  93. package/web/assets/{computer-device-laptop.svg-CZUEbqra.js → computer-device-laptop.svg-IHPj_lEm.js} +1 -1
  94. package/web/assets/{computer-device-mobile-phone-android-samsung-back.svg-CcsmeFGb.js → computer-device-mobile-phone-android-samsung-back.svg-DKPSbT77.js} +1 -1
  95. package/web/assets/{computer-device-mobile-phone-android-samsung.svg-CXjVvTBT.js → computer-device-mobile-phone-android-samsung.svg-s5qvH0rw.js} +1 -1
  96. package/web/assets/{computer-device-mobile-phone-iphone-x-back.svg-BQQXUoZZ.js → computer-device-mobile-phone-iphone-x-back.svg-B77oIjAn.js} +1 -1
  97. package/web/assets/{computer-device-mobile-phone-iphone-x.svg-CG8VbAP-.js → computer-device-mobile-phone-iphone-x.svg-Cnz0nuie.js} +1 -1
  98. package/web/assets/{computer-device-mobile-tablet-touch.svg-DDMUt0S4.js → computer-device-mobile-tablet-touch.svg-CGw0OJdZ.js} +1 -1
  99. package/web/assets/{computer-device-mobile-tablet.svg-CBXtF47n.js → computer-device-mobile-tablet.svg-BllNUwYz.js} +1 -1
  100. package/web/assets/{computer-device-network-ethernet-cat6.svg-ObjUhwds.js → computer-device-network-ethernet-cat6.svg-CDcu8JSm.js} +1 -1
  101. package/web/assets/{computer-device-network-lan-www.svg-NGYEGuba.js → computer-device-network-lan-www.svg-Cr2Mzrgm.js} +1 -1
  102. package/web/assets/{computer-device-network-wifi-connection.svg-CSnNdKGm.js → computer-device-network-wifi-connection.svg-BdIGk-iA.js} +1 -1
  103. package/web/assets/{computer-device-network-wifi-router.svg-CG7iHt_n.js → computer-device-network-wifi-router.svg-ChrqaXoE.js} +1 -1
  104. package/web/assets/{cssMode-Bclh_xI1.js → cssMode-DQ3QWGDZ.js} +1 -1
  105. package/web/assets/{divider-Bb31-CFf.js → divider-BnVkpmcn.js} +2 -2
  106. package/web/assets/{docx-preview-seOy1U3d.js → docx-preview-DOVrOL2W.js} +1 -1
  107. package/web/assets/{ecology-science-erlenmeyer-flask.svg-B8emvJ_p.js → ecology-science-erlenmeyer-flask.svg-Bz0bzqPi.js} +1 -1
  108. package/web/assets/{fieldset-Czp1Leik.js → fieldset-CaBT4en1.js} +2 -2
  109. package/web/assets/{freemarker2-D87vjb6-.js → freemarker2-e7ZK44f9.js} +1 -1
  110. package/web/assets/{handlebars-CjY4u0vA.js → handlebars-BunSmNEk.js} +1 -1
  111. package/web/assets/{html-C5pOjLe-.js → html-t6Ga4VcA.js} +1 -1
  112. package/web/assets/{htmlMode-CunB4Bjm.js → htmlMode-CjsAz81L.js} +1 -1
  113. package/web/assets/{image-flash-lightning.svg-7dRFt_k5.js → image-flash-lightning.svg-CSanVzgy.js} +1 -1
  114. package/web/assets/{image-picture-flower.svg-ATG6mf9B.js → image-picture-flower.svg-DUlCxHzi.js} +1 -1
  115. package/web/assets/{index-BMuqGGPP.js → index-CNqv4qMO.js} +287 -287
  116. package/web/assets/{interface-alert-exclamation-diamond.svg-DuAtIVtT.js → interface-alert-exclamation-diamond.svg-C-uhPFKN.js} +1 -1
  117. package/web/assets/{interface-alert-exclamation-triangle-warning.svg-Bg9-FBLP.js → interface-alert-exclamation-triangle-warning.svg-BnSCXw68.js} +1 -1
  118. package/web/assets/{interface-alert-information-circle.svg-C5etvhA3.js → interface-alert-information-circle.svg-CTGCb0Yf.js} +1 -1
  119. package/web/assets/{interface-award-crown.svg-zuAFLs7y.js → interface-award-crown.svg-T-Lov9NP.js} +1 -1
  120. package/web/assets/{interface-bookmark.svg-CfBz0NE3.js → interface-bookmark-tag.svg-DLjS0Lnz.js} +1 -1
  121. package/web/assets/{interface-bookmark-tag.svg-C3EKMHOq.js → interface-bookmark.svg-CZekkdj9.js} +1 -1
  122. package/web/assets/{interface-calendar-date-one.svg-DGYz2Prk.js → interface-calendar-date-one.svg-DmD4yfdS.js} +1 -1
  123. package/web/assets/{interface-content-book-open-pages.svg-DGiJpxy1.js → interface-content-book-open-pages.svg-wHqGX15c.js} +1 -1
  124. package/web/assets/{interface-content-book-page.svg-DydK46P0.js → interface-content-book-page.svg-MCSanA32.js} +1 -1
  125. package/web/assets/{interface-content-file.svg-D0pUOvAN.js → interface-content-file.svg-DBpf8dcs.js} +1 -1
  126. package/web/assets/{interface-content-folder.svg-DiJ3Pfaa.js → interface-content-folder.svg-DZSoYO0L.js} +1 -1
  127. package/web/assets/interface-content-folder.svg-ZujlG0Az.js +1 -0
  128. package/web/assets/{interface-copy-clipboard.svg-Dl3aROYy.js → interface-copy-clipboard.svg-C1-sJNwr.js} +1 -1
  129. package/web/assets/{interface-edit-attachment.svg-UmDFMIt5.js → interface-edit-attachment.svg-CpxThva3.js} +1 -1
  130. package/web/assets/{interface-edit-binocular.svg-Bp_8Pfer.js → interface-edit-binocular.svg-BHfWW26z.js} +1 -1
  131. package/web/assets/{interface-edit-magic-wand.svg-B2A8V7mt.js → interface-edit-magic-wand.svg-DcC6CJBy.js} +1 -1
  132. package/web/assets/{interface-edit-tool-paint-roller.svg-DKjdsVsS.js → interface-edit-tool-paint-roller.svg-BhReRG-a.js} +1 -1
  133. package/web/assets/{interface-edit-tool-pencil.svg-DuUybI4h.js → interface-edit-tool-pencil.svg-CztZ4Olx.js} +1 -1
  134. package/web/assets/{interface-favorite-award.svg-DHeTFQv8.js → interface-favorite-award.svg-C0kleqGy.js} +1 -1
  135. package/web/assets/{interface-favorite-flag.svg-kKzUSQkq.js → interface-favorite-flag.svg-B-VJ_w7p.js} +1 -1
  136. package/web/assets/{interface-favorite-heart.svg-CqMgA2mm.js → interface-favorite-heart.svg-CuRtXB-S.js} +1 -1
  137. package/web/assets/{interface-favorite-star.svg-CuLj8HV6.js → interface-favorite-star.svg-DtEkT0h3.js} +1 -1
  138. package/web/assets/{interface-favorite-stars-sparkles.svg-lFQTnGOR.js → interface-favorite-stars-sparkles.svg-ffOT-I95.js} +1 -1
  139. package/web/assets/{interface-hierarchy-flowchart.svg-CBbliSZq.js → interface-hierarchy-flowchart.svg-C5eB0vng.js} +1 -1
  140. package/web/assets/{interface-home-house.svg-BoFlxzre.js → interface-home-house.svg-Djr3DBJk.js} +1 -1
  141. package/web/assets/{interface-hyperlink.svg-DcKs1Vcm.js → interface-hyperlink.svg-BaesgCsY.js} +1 -1
  142. package/web/assets/{interface-lighting-brightness.svg-BSNKEyEg.js → interface-lighting-brightness.svg-CiNPNypw.js} +1 -1
  143. package/web/assets/{interface-lock-closed.svg-DSP-B9Ze.js → interface-lock-closed.svg-Dk3IIjH4.js} +1 -1
  144. package/web/assets/{interface-lock-open-unlock.svg-Bzg-oBHY.js → interface-lock-open-unlock.svg-DGG8lod0.js} +1 -1
  145. package/web/assets/{interface-login-key.svg-DG61Q1lR.js → interface-login-key.svg-ZREdsGBv.js} +1 -1
  146. package/web/assets/{interface-search.svg-CODjdPxd.js → interface-search.svg-AF3hFV8X.js} +1 -1
  147. package/web/assets/{interface-setting-cog.svg-CgiaBO1E.js → interface-setting-cog.svg-CxjXHOho.js} +1 -1
  148. package/web/assets/{interface-share-megaphone-bullhorn.svg-DM0PsgtH.js → interface-share-megaphone-bullhorn.svg-C-Ou9l0X.js} +1 -1
  149. package/web/assets/{interface-share-rocket.svg-B0geTs35.js → interface-share-rocket.svg-CERB2Bts.js} +1 -1
  150. package/web/assets/{interface-share-satellite.svg-v9Q6QwAp.js → interface-share-satellite.svg-BfHWK0sr.js} +1 -1
  151. package/web/assets/{interface-share-space-ship.svg-CLdqgzgZ.js → interface-share-space-ship.svg-lWM8H0aF.js} +1 -1
  152. package/web/assets/{interface-share.svg-Cx3VhLuj.js → interface-share.svg-CFf-5WEt.js} +1 -1
  153. package/web/assets/{interface-signal-square.svg-By_pQLw8.js → interface-signal-square.svg-BIiI1WkB.js} +1 -1
  154. package/web/assets/{interface-time-clock-circle.svg-Co3P-TM3.js → interface-time-clock-circle.svg-MloMulBj.js} +1 -1
  155. package/web/assets/{interface-time-hour-glass.svg-BYSOzVeD.js → interface-time-hour-glass.svg-BOxCCGI2.js} +1 -1
  156. package/web/assets/{interface-users-multiple.svg-moFZaev3.js → interface-users-multiple.svg-4T9srtFC.js} +1 -1
  157. package/web/assets/{interface-weather-moon.svg-DhyTNivv.js → interface-weather-moon.svg-CKHzp1q9.js} +1 -1
  158. package/web/assets/{javascript-B1fZNcy6.js → javascript-D9xsJ3Az.js} +1 -1
  159. package/web/assets/{jsonMode-BxZ6OjkS.js → jsonMode-DuBcXIAs.js} +2 -2
  160. package/web/assets/{liquid-B58z0z3s.js → liquid-DEC7GfIV.js} +1 -1
  161. package/web/assets/{lspLanguageFeatures-VksJLqpV.js → lspLanguageFeatures-BWtjzx_b.js} +3 -3
  162. package/web/assets/{mail-chat-bubble-square.svg-DU4TDENX.js → mail-chat-bubble-square.svg-Bnr_lHI8.js} +1 -1
  163. package/web/assets/{mail-send-email-paper-airplane.svg-jk90Puk3.js → mail-send-email-paper-airplane.svg-BX3SaAOF.js} +1 -1
  164. package/web/assets/{mail-send-envelope.svg-CrEPc3pm.js → mail-send-envelope.svg-ZUoORksb.js} +1 -1
  165. package/web/assets/{mdx-l-DSKi30.js → mdx-HOoxTDWS.js} +1 -1
  166. package/web/assets/{minus-CjETE6Jb.js → minus-BBEVgxJH.js} +2 -2
  167. package/web/assets/modal-DM9X_PVj.js +5 -0
  168. package/web/assets/modal-lOChu0a6.js +1 -0
  169. package/web/assets/{money-cashier-receipt.svg-veUsiwvj.js → money-cashier-receipt.svg-DZ3PFTDB.js} +1 -1
  170. package/web/assets/{money-currency-dollar-pay.svg-C5PNkn4j.js → money-currency-dollar-pay.svg-MP_zZSsR.js} +1 -1
  171. package/web/assets/{money-graph-arrow-increase.svg-BkCcnTWU.js → money-graph-arrow-increase.svg-zF1qoCJ1.js} +1 -1
  172. package/web/assets/{money-graph-bar-chart-increase.svg-BDiFSuKt.js → money-graph-bar-chart-increase.svg-BDD2RhNd.js} +1 -1
  173. package/web/assets/multiselect-BGmyQeLC.js +251 -0
  174. package/web/assets/{nature-ecology-leaf.svg-CHyv9oDB.js → nature-ecology-leaf.svg-C8ROcT5o.js} +1 -1
  175. package/web/assets/{password-BYosjMhB.js → password-4B0Jk2Id.js} +4 -4
  176. package/web/assets/{phone-telephone.svg-Ce1dgyK9.js → phone-telephone.svg-DKK-lUXQ.js} +1 -1
  177. package/web/assets/{plus-CVoE_j-e.js → plus-CTzNAMSa.js} +6 -6
  178. package/web/assets/process.store-hTCiNh-E.js +1 -0
  179. package/web/assets/{programming-bug.svg-D87My2Ok.js → programming-bug.svg-D2E8tMFA.js} +1 -1
  180. package/web/assets/{programming-cloud.svg-jUe8apKw.js → programming-cloud.svg-BGnh40iK.js} +1 -1
  181. package/web/assets/{programming-computer-database-server.svg-D4etrIBX.js → programming-computer-database-server.svg-BVAuZnpu.js} +1 -1
  182. package/web/assets/{programming-computer-database.svg-BtfkmLTx.js → programming-computer-database.svg-Cw61nQGg.js} +1 -1
  183. package/web/assets/{programming-module-four-layout.svg-BkzsDKDq.js → programming-module-four-layout.svg-DoU0KSeo.js} +1 -1
  184. package/web/assets/{programming-module-three.svg-CpzTvjGS.js → programming-module-three.svg-DVhh6Qdu.js} +1 -1
  185. package/web/assets/{programming-module.svg-wyvB3tSR.js → programming-module.svg-DvJfoHtJ.js} +1 -1
  186. package/web/assets/{programming-script-code.svg-Dek4khNq.js → programming-script-code.svg-C-tp6SrH.js} +1 -1
  187. package/web/assets/{python-IeHrvMxp.js → python--BJI87h8.js} +1 -1
  188. package/web/assets/{razor-CMgDmoNn.js → razor-CyKegkVq.js} +1 -1
  189. package/web/assets/router-CjeDvoXv.js +1 -0
  190. package/web/assets/settings-scope-78RP25Qh.js +1 -0
  191. package/web/assets/settings.store-D0Rg-dsM.js +1 -0
  192. package/web/assets/{shopping-cart.svg-DeBhxyDX.js → shopping-cart.svg-LfGHmiMy.js} +1 -1
  193. package/web/assets/{shopping-gift-present.svg-Bt0oKBk9.js → shopping-gift-present.svg-DQxn6jVj.js} +1 -1
  194. package/web/assets/{shopping-shipping-box-parcel-package.svg-BEQNmjMi.js → shopping-shipping-box-parcel-package.svg-0_aBSgUi.js} +1 -1
  195. package/web/assets/src-BVvRi5bZ.js +1 -0
  196. package/web/assets/src-COTZAWP1.js +572 -0
  197. package/web/assets/{src-C3dPv05m.js → src-DmAdua1A.js} +13 -13
  198. package/web/assets/tabpanel-DHCbTagN.js +150 -0
  199. package/web/assets/{tag-new-circle.svg-B1i0Y1yt.js → tag-new-circle.svg-83yDHm_4.js} +1 -1
  200. package/web/assets/theme-CDWRcPhl.js +1 -0
  201. package/web/assets/{toggleswitch-CcQEgLiT.js → toggleswitch-98WbJy1b.js} +2 -2
  202. package/web/assets/{travel-map-earth-globe.svg-CB5sqhKh.js → travel-map-earth-globe.svg-Ih5Yi-jq.js} +1 -1
  203. package/web/assets/trpc-BOcC0r-H.js +1 -0
  204. package/web/assets/{tsMode-DoUs-yH0.js → tsMode-ocCX3Kwn.js} +6 -6
  205. package/web/assets/{typescript-fw9OMJ0N.js → typescript-BNLFcH9T.js} +1 -1
  206. package/web/assets/useAiChatDrawer-DVacYOFX.js +1 -0
  207. package/web/assets/{useCloudOrg-CRpEZ-iE.js → useCloudOrg-D_o0-v2z.js} +1 -1
  208. package/web/assets/useProjectCatalog-CSqoTWGy.js +1 -0
  209. package/web/assets/useProjectCloudOrg-iblWkaw9.js +1 -0
  210. package/web/assets/{xml-Df6_yGan.js → xml-DcSXqrs-.js} +1 -1
  211. package/web/assets/{yaml-LMvM57fn.js → yaml-BNINCoLr.js} +1 -1
  212. package/web/index.html +1 -1
  213. package/agent-manager-SNVPZNLC.js +0 -8
  214. package/chunk-BHLCBARP.js.map +0 -1
  215. package/chunk-NDO5VFZY.js.map +0 -1
  216. package/desktop-launcher-FHNURZA7.js.map +0 -1
  217. package/settings-manager-YHQ5YHUH.js +0 -8
  218. package/src-HZ2XO6TV.js.map +0 -1
  219. package/web/assets/AgentScalarChatInterface.vue-CxmPaQaj.js +0 -13
  220. package/web/assets/AgentTerminalPage-Bbx4zyQY.js +0 -1
  221. package/web/assets/AiChatPage-GPPQggxZ.js +0 -1
  222. package/web/assets/AppLayout-BuwGeA1p.js +0 -1
  223. package/web/assets/AuditPage-CDsJsoKA.js +0 -1
  224. package/web/assets/CloudAccountPage-BCP8icYZ.js +0 -1
  225. package/web/assets/CloudAccountPage-DzpS3_gc.js +0 -1
  226. package/web/assets/CloudMessagingPage-01hLQzZ5.js +0 -2
  227. package/web/assets/DashboardPage-CKo-sf8A.js +0 -1
  228. package/web/assets/DirectoryPickerDialog-B1tSWoOM.js +0 -1
  229. package/web/assets/EnvironmentFormPage-9yxN-uI3.js +0 -1
  230. package/web/assets/EnvironmentListPage-BbfptXAU.js +0 -1
  231. package/web/assets/KanbanBoardPage-BWkqTc1a.js +0 -4
  232. package/web/assets/KanbanListPage-GxI1nlON.js +0 -1
  233. package/web/assets/LaunchProjectPage-DKMoGXIC.js +0 -1
  234. package/web/assets/LaunchServicesPage-6dfxPQMB.js +0 -1
  235. package/web/assets/LogViewer-DAzGy_T2.js +0 -3
  236. package/web/assets/OrgKeyPrompt-CQ087D4g.js +0 -1
  237. package/web/assets/ProcessControls-D8uc4x7M.js +0 -1
  238. package/web/assets/ProcessDetailPage-BPxLPGeh.js +0 -1
  239. package/web/assets/ProjectDetailPage-CnZ_CpVU.js +0 -1
  240. package/web/assets/ProjectListPage-D8Svc5e3.js +0 -1
  241. package/web/assets/RandomJobTestPage-BdEiEnSi.js +0 -2
  242. package/web/assets/ScenarioEditorPage-COrL715B.js +0 -14
  243. package/web/assets/SendToChatDialog-D8YB5RM6.js +0 -1
  244. package/web/assets/ServiceControlsBar-BKwvqgHw.js +0 -1
  245. package/web/assets/ServiceDetailPage-BmPRfQN6.js +0 -2
  246. package/web/assets/ServiceFormPage-rVvnwWkb.js +0 -1
  247. package/web/assets/SettingsPage-C-OfBHjn.css +0 -1
  248. package/web/assets/SettingsPage-DmQB6t1_.js +0 -2063
  249. package/web/assets/UnlockPage-BgVF3XMO.js +0 -1
  250. package/web/assets/VariablesTable-D4_sssPN.js +0 -1
  251. package/web/assets/VaultMigrationPage-BRZJnfVg.js +0 -1
  252. package/web/assets/VersionBadge-Df7iJWvF.js +0 -1
  253. package/web/assets/WikiPage-UkaH8BqR.js +0 -1
  254. package/web/assets/WikiView-BQqP4b9A.js +0 -1
  255. package/web/assets/add-scalar-classes-B9WxxjAm.js +0 -387
  256. package/web/assets/card-nJdNoKgd.js +0 -32
  257. package/web/assets/cloud-chat.store-_qILavCL.js +0 -1
  258. package/web/assets/cloud-session-Ml5g5J1-.js +0 -1
  259. package/web/assets/column-Bc4-F_tF.js +0 -907
  260. package/web/assets/interface-content-folder.svg-bb6GV0G0.js +0 -1
  261. package/web/assets/modal-D2-cZ2mf.js +0 -5
  262. package/web/assets/modal-DmgVDXcS.js +0 -1
  263. package/web/assets/multiselect-CDBfo7-0.js +0 -251
  264. package/web/assets/process.store-BsCJ-VuI.js +0 -1
  265. package/web/assets/router-KIdzwvCZ.js +0 -1
  266. package/web/assets/settings-scope-D8l1sq9K.js +0 -1
  267. package/web/assets/settings.store-VVqF8QkO.js +0 -1
  268. package/web/assets/src-CJFQ3yWc.js +0 -1
  269. package/web/assets/src-Cgn_TWXn.js +0 -572
  270. package/web/assets/tabpanel-B8oBjoSG.js +0 -150
  271. package/web/assets/trpc-B1bTQz_t.js +0 -1
  272. package/web/assets/useAiChatDrawer-BpR9XWop.js +0 -1
  273. package/web/assets/useProjectCatalog-mk8A95KQ.js +0 -1
  274. package/web/assets/useProjectCloudOrg-CKgvcUWI.js +0 -1
  275. /package/{agent-manager-SNVPZNLC.js.map → agent-manager-4XJUIZKL.js.map} +0 -0
  276. /package/{chat-OXRRBDB3.js.map → chat-3XDVULFH.js.map} +0 -0
  277. /package/{companion-JQGNL4U7.js.map → companion-MUFVXURV.js.map} +0 -0
  278. /package/{settings-manager-YHQ5YHUH.js.map → instances-command-KZ5UGXOR.js.map} +0 -0
  279. /package/web/assets/{abap-BvxTqXT2.js → abap-PT-N0eyj.js} +0 -0
  280. /package/web/assets/{apex-CIPCCkBr.js → apex-BYovhaVz.js} +0 -0
  281. /package/web/assets/{azcli-Rs0NIwkA.js → azcli-DOxZ9r2f.js} +0 -0
  282. /package/web/assets/{bat-BxAhM6gR.js → bat-B29juGG4.js} +0 -0
  283. /package/web/assets/{bicep-oV_ehPcG.js → bicep-7-ApPSlE.js} +0 -0
  284. /package/web/assets/{browser-DNbnH79q.js → browser-N7UrAcvB.js} +0 -0
  285. /package/web/assets/{cameligo-CJLaUyQs.js → cameligo-BipBUQCp.js} +0 -0
  286. /package/web/assets/{clojure-CjvMureh.js → clojure-DBgUdyK0.js} +0 -0
  287. /package/web/assets/{coffee-motWC5XQ.js → coffee-DIU_x8Zp.js} +0 -0
  288. /package/web/assets/{cpp-DiWIfYNM.js → cpp-CAPjLTys.js} +0 -0
  289. /package/web/assets/{csharp-GBlGBeai.js → csharp-kFCIHjec.js} +0 -0
  290. /package/web/assets/{csp-tSyK5eO1.js → csp-BFKsjgRE.js} +0 -0
  291. /package/web/assets/{css-BkFK9HG_.js → css-C3uiAvXV.js} +0 -0
  292. /package/web/assets/{cypher-Bcp8PXr2.js → cypher-BC8El989.js} +0 -0
  293. /package/web/assets/{dart-uz9Rxe0M.js → dart-BAClpSRO.js} +0 -0
  294. /package/web/assets/{dockerfile-iJizx3Zp.js → dockerfile-DVZSJ3rq.js} +0 -0
  295. /package/web/assets/{ecl-BalaS36Z.js → ecl-Dis7T_5W.js} +0 -0
  296. /package/web/assets/{elixir-D6CLrLGy.js → elixir-B0xfsmfq.js} +0 -0
  297. /package/web/assets/{flow9-CFt3-vVY.js → flow9-DbTJxEBz.js} +0 -0
  298. /package/web/assets/{fsharp-DGa7raxa.js → fsharp-DTOqftZo.js} +0 -0
  299. /package/web/assets/{go-wlqInk4z.js → go-KWOR5hag.js} +0 -0
  300. /package/web/assets/{graphql-CP1guigM.js → graphql-DjYFSl6G.js} +0 -0
  301. /package/web/assets/{hcl-CK0UkKD0.js → hcl-D8RrENjV.js} +0 -0
  302. /package/web/assets/{ini-Ch56nrUj.js → ini-BOtkgeoY.js} +0 -0
  303. /package/web/assets/{java-C9_WIayl.js → java-DKd4_eEX.js} +0 -0
  304. /package/web/assets/{julia-Can2_mhR.js → julia-XpEGblEj.js} +0 -0
  305. /package/web/assets/{kotlin-DUvGf_BX.js → kotlin-BZv3QweN.js} +0 -0
  306. /package/web/assets/{less-DoTbG-rc.js → less-H5kV6pUj.js} +0 -0
  307. /package/web/assets/{lexon-BFMO2_kL.js → lexon-Bg4gEB0s.js} +0 -0
  308. /package/web/assets/{lua-CC-QtBo7.js → lua-D7eb4Dnq.js} +0 -0
  309. /package/web/assets/{m3-C51MyH5Q.js → m3-BjDYXZ0c.js} +0 -0
  310. /package/web/assets/{markdown-CDwLHhgZ.js → markdown-Cl5YxO_y.js} +0 -0
  311. /package/web/assets/{mips-YuxZtPGU.js → mips-sklxJ87A.js} +0 -0
  312. /package/web/assets/{msdax-CJjWhmte.js → msdax-C0nZ2Nk3.js} +0 -0
  313. /package/web/assets/{mysql-B1riwLaD.js → mysql-D6eZPdeQ.js} +0 -0
  314. /package/web/assets/{objective-c-drXT-gmc.js → objective-c-W10E2fSz.js} +0 -0
  315. /package/web/assets/{pascal-KUYgrN-Z.js → pascal-Cd0rtL9J.js} +0 -0
  316. /package/web/assets/{pascaligo-DQmQJP-r.js → pascaligo-BbE09f5f.js} +0 -0
  317. /package/web/assets/{perl-09XLBmCS.js → perl-bnuvlUCT.js} +0 -0
  318. /package/web/assets/{pgsql-BFj9IFFu.js → pgsql-BETeeS25.js} +0 -0
  319. /package/web/assets/{php-UnC5BqwY.js → php-zaSPUC-m.js} +0 -0
  320. /package/web/assets/{pla-BFuYrPHG.js → pla-ChOKgzpJ.js} +0 -0
  321. /package/web/assets/{postiats-n4ft3jnO.js → postiats-By_SllB5.js} +0 -0
  322. /package/web/assets/{powerquery-D-s-oFSc.js → powerquery-CB5gIeJ1.js} +0 -0
  323. /package/web/assets/{powershell-CTboTf93.js → powershell-CgdaEQwq.js} +0 -0
  324. /package/web/assets/{protobuf-Dt62GuJP.js → protobuf-P7fNUpCt.js} +0 -0
  325. /package/web/assets/{pug-CEFWkUzw.js → pug-DZaxV_Nc.js} +0 -0
  326. /package/web/assets/{qsharp-B0DUmgPZ.js → qsharp-BdkO9QAN.js} +0 -0
  327. /package/web/assets/{r-BVnF0c4T.js → r-C-pPWc3R.js} +0 -0
  328. /package/web/assets/{redis-DLl3KQXi.js → redis-BT1HxrEq.js} +0 -0
  329. /package/web/assets/{redshift-cif1I7h1.js → redshift-CDnJNPnz.js} +0 -0
  330. /package/web/assets/{restructuredtext-PNfql36m.js → restructuredtext-Bt8v-MuE.js} +0 -0
  331. /package/web/assets/{ruby-j3jxDjUN.js → ruby-BLxqHkKg.js} +0 -0
  332. /package/web/assets/{rust-BaIO-mAt.js → rust-CIh7vugr.js} +0 -0
  333. /package/web/assets/{sb-D8XNVNUQ.js → sb-eE41pfwD.js} +0 -0
  334. /package/web/assets/{scala-DiK9Ps90.js → scala-COBuWHwn.js} +0 -0
  335. /package/web/assets/{scheme-DPKqXHmF.js → scheme-BsGc_ajc.js} +0 -0
  336. /package/web/assets/{scss-DpMwfP2H.js → scss-DLmucKJk.js} +0 -0
  337. /package/web/assets/{shared-sse-CTMtESqe.js → shared-sse---by8uTc.js} +0 -0
  338. /package/web/assets/{shell-Dw9mKVg2.js → shell-8IUXMVcg.js} +0 -0
  339. /package/web/assets/{solidity-DTxo-7fe.js → solidity-DUTott7T.js} +0 -0
  340. /package/web/assets/{sophia-BjA3Q87y.js → sophia-GqIrTWz8.js} +0 -0
  341. /package/web/assets/{sparql-q1EpMUqb.js → sparql-BfkJA0CL.js} +0 -0
  342. /package/web/assets/{sql-CjcQ4wIr.js → sql-BF_o1CCN.js} +0 -0
  343. /package/web/assets/{st-AuOpxVl7.js → st-B6_wiXyW.js} +0 -0
  344. /package/web/assets/{swift-BUWnv6f7.js → swift-BHDD2Ajh.js} +0 -0
  345. /package/web/assets/{systemverilog-FhXn-3OZ.js → systemverilog-BG_Ebh2a.js} +0 -0
  346. /package/web/assets/{tcl-B0lqcTtS.js → tcl-ocTQVTM_.js} +0 -0
  347. /package/web/assets/{twig-B0OeGPVa.js → twig-CF5whnDX.js} +0 -0
  348. /package/web/assets/{typespec-Bmh6VX11.js → typespec-5BWfbhTE.js} +0 -0
  349. /package/web/assets/{uuid-Q0SWZmaT.js → uuid-FpfcaBnR.js} +0 -0
  350. /package/web/assets/{vb-bmgX6veu.js → vb-agPNUcOk.js} +0 -0
  351. /package/web/assets/{w3c-keyname-2TLn3EjF.js → w3c-keyname-2_K_z_q5.js} +0 -0
  352. /package/web/assets/{wgsl-FflLnFqI.js → wgsl-CufoMn6o.js} +0 -0
@@ -0,0 +1,137 @@
1
+ // src/instances-command.ts
2
+ import { homedir } from "os";
3
+ function parseInstancesArgs(rest) {
4
+ const [verb, ...tail] = rest;
5
+ if (verb === void 0 || verb === "--json") {
6
+ return { kind: "list", json: verb === "--json" };
7
+ }
8
+ if (verb === "open" || verb === "stop" || verb === "restart") {
9
+ const raw = tail[0];
10
+ if (raw === void 0) {
11
+ return { kind: "error", message: `\xAB instances ${verb} \xBB attend un pid (voir \xAB runeya instances \xBB).` };
12
+ }
13
+ if (!/^[0-9]+$/.test(raw)) {
14
+ return { kind: "error", message: `Pid invalide : ${JSON.stringify(raw)} (un entier positif est attendu).` };
15
+ }
16
+ const pid = Number(raw);
17
+ if (pid <= 0) {
18
+ return { kind: "error", message: `Pid invalide : ${JSON.stringify(raw)} (un entier positif est attendu).` };
19
+ }
20
+ return { kind: verb, pid };
21
+ }
22
+ return { kind: "error", message: `Sous-commande inconnue : ${JSON.stringify(verb)} (attendu : open, stop, restart).` };
23
+ }
24
+ function formatUptime(ms) {
25
+ if (ms === null || !Number.isFinite(ms) || ms < 0) return "\u2014";
26
+ const seconds = Math.floor(ms / 1e3);
27
+ if (seconds < 60) return `${seconds} s`;
28
+ const minutes = Math.floor(seconds / 60);
29
+ if (minutes < 60) return `${minutes} min`;
30
+ const hours = Math.floor(minutes / 60);
31
+ if (hours < 24) return `${hours} h ${minutes % 60} min`;
32
+ return `${Math.floor(hours / 24)} j ${hours % 24} h`;
33
+ }
34
+ function shortenPath(cwd, home = homedir()) {
35
+ if (!home) return cwd;
36
+ if (cwd === home) return "~";
37
+ const rest = cwd.slice(home.length);
38
+ if (cwd.startsWith(home) && (rest.startsWith("/") || rest.startsWith("\\"))) return `~${rest}`;
39
+ return cwd;
40
+ }
41
+ var segmenter = new Intl.Segmenter();
42
+ function width(value) {
43
+ return [...segmenter.segment(value)].length;
44
+ }
45
+ function pad(value, size) {
46
+ return value + " ".repeat(Math.max(0, size - width(value)));
47
+ }
48
+ function renderInstances(instances) {
49
+ if (instances.length === 0) {
50
+ return "Aucune Runeya ne tourne sur cette machine.";
51
+ }
52
+ const header = ["PID", "PORT", "VERSION", "DEPUIS", "DOSSIER"];
53
+ const rows = instances.map((i) => [
54
+ String(i.pid),
55
+ String(i.port),
56
+ i.version ?? "\u2014",
57
+ formatUptime(i.uptimeMs),
58
+ shortenPath(i.cwd)
59
+ ]);
60
+ const sizes = header.map((_, col) => Math.max(...[header, ...rows].map((r) => width(r[col] ?? ""))));
61
+ const line = (cells) => cells.map((c, col) => col === cells.length - 1 ? c : pad(c, sizes[col] ?? 0)).join(" ").trimEnd();
62
+ const body = [line(header), ...rows.map(line)];
63
+ const blocked = instances.filter((i) => !i.restartable);
64
+ if (blocked.length > 0) {
65
+ body.push("");
66
+ body.push(
67
+ `Non red\xE9marrable${blocked.length > 1 ? "s" : ""} depuis ici : ${blocked.map((i) => i.pid).join(", ")} (${NOT_RESTARTABLE_REASON}).`
68
+ );
69
+ }
70
+ body.push("");
71
+ body.push("runeya instances open|stop|restart <pid>");
72
+ return body.join("\n");
73
+ }
74
+ function instanceUrl(port) {
75
+ return `http://localhost:${port}`;
76
+ }
77
+ async function selectInstance(pid, deps) {
78
+ return (await deps.listInstances()).find((i) => i.pid === pid) ?? null;
79
+ }
80
+ var NOT_RESTARTABLE_REASON = "lanc\xE9e avant le registre, ou porteuse d\u2019un secret que le registre ne conserve pas";
81
+ async function runInstancesCommand(rest, deps) {
82
+ const action = parseInstancesArgs(rest);
83
+ if (action.kind === "error") {
84
+ deps.warn(`Erreur : ${action.message}`);
85
+ return 1;
86
+ }
87
+ if (action.kind === "list") {
88
+ const instances = await deps.listInstances();
89
+ deps.log(action.json ? JSON.stringify(instances, null, 2) : renderInstances(instances));
90
+ return 0;
91
+ }
92
+ const target = await selectInstance(action.pid, deps);
93
+ if (!target) {
94
+ deps.warn(`Erreur : aucune Runeya vivante avec le pid ${action.pid} (voir \xAB runeya instances \xBB).`);
95
+ return 1;
96
+ }
97
+ if (action.kind === "open") {
98
+ const url = instanceUrl(target.port);
99
+ await deps.openUrl(url);
100
+ deps.log(`Ouverture de ${url}`);
101
+ return 0;
102
+ }
103
+ if (action.kind === "stop") {
104
+ const result2 = await deps.stopInstance(action.pid);
105
+ if (result2.server === "denied") {
106
+ deps.warn(`Arr\xEAt refus\xE9 par le syst\xE8me pour le pid ${action.pid} (droits insuffisants).`);
107
+ return 1;
108
+ }
109
+ if (result2.server === "failed") {
110
+ deps.warn(`Le pid ${action.pid} n\u2019a pas pu \xEAtre arr\xEAt\xE9.`);
111
+ return 1;
112
+ }
113
+ deps.log(`Instance ${action.pid} arr\xEAt\xE9e (port ${target.port}).`);
114
+ return 0;
115
+ }
116
+ if (!target.restartable) {
117
+ deps.warn(
118
+ `Erreur : l\u2019instance ${action.pid} ne peut pas \xEAtre red\xE9marr\xE9e depuis ici \u2014 ${NOT_RESTARTABLE_REASON}. La relancer \xE0 la main depuis son dossier reste possible.`
119
+ );
120
+ return 1;
121
+ }
122
+ const result = await deps.restartInstance(action.pid);
123
+ deps.log(
124
+ result.portReleased ? `Instance ${action.pid} red\xE9marr\xE9e (nouveau pid ${result.pid}, port ${target.port}).` : `Instance ${action.pid} red\xE9marr\xE9e (nouveau pid ${result.pid}), mais le port ${target.port} n\u2019avait pas encore \xE9t\xE9 rendu \u2014 elle peut avoir d\xE9marr\xE9 sur un autre port.`
125
+ );
126
+ return 0;
127
+ }
128
+
129
+ export {
130
+ parseInstancesArgs,
131
+ formatUptime,
132
+ shortenPath,
133
+ renderInstances,
134
+ instanceUrl,
135
+ runInstancesCommand
136
+ };
137
+ //# sourceMappingURL=chunk-PH4E5WDN.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/instances-command.ts"],"sourcesContent":["/**\n * `runeya instances` — voir et piloter les Runeya de la machine depuis un\n * terminal, sans passer par l'interface d'une instance ouverte.\n *\n * C'est le socle : le registre machine (`~/.runeya/instances`) est déjà la\n * source de vérité, et le routeur tRPC `diagnostics` s'en sert pour l'écran de\n * diagnostics. Cette façade-ci n'ajoute aucune logique de découverte — elle lit\n * le même `listInstances()` — parce qu'un second recensement à côté du premier\n * dupliquerait aussi ses bogues.\n *\n * L'icône de barre système, elle, ne décrit que l'instance qui l'héberge : ces\n * deux vues sont complémentaires, et c'est celle-ci qui montre tout, partout —\n * y compris là où aucune barre système n'existe.\n */\nimport { homedir } from 'node:os';\n\n/**\n * La forme dont cette commande a besoin, et rien de plus.\n *\n * Volontairement plus étroite que `DetectedInstance` : le registre porte aussi\n * de quoi relancer une instance (argv, environnement), qui ne s'affiche pas et\n * n'a pas à traverser ce module.\n */\n/**\n * `current` de `DetectedInstance` est délibérément absent : il vaut\n * « ce record est MON process », et cette commande tourne dans un process qui\n * n'est pas une instance. Il serait donc toujours faux ici, et un marqueur qui\n * ne s'allume jamais est pire qu'un marqueur absent.\n */\nexport type InstanceRow = {\n pid: number;\n port: number;\n cwd: string;\n version?: string | undefined;\n uptimeMs: number | null;\n restartable: boolean;\n};\n\nexport type InstancesAction =\n | { kind: 'list'; json: boolean }\n | { kind: 'open' | 'stop' | 'restart'; pid: number }\n | { kind: 'error'; message: string };\n\n/**\n * Analyse les arguments qui suivent `instances`.\n *\n * Un pid absent ou mal formé rend une erreur plutôt qu'un `NaN` qu'on\n * transporterait jusqu'au registre : le pid est un sélecteur, et un sélecteur\n * illisible doit s'arrêter ici.\n */\nexport function parseInstancesArgs(rest: string[]): InstancesAction {\n const [verb, ...tail] = rest;\n\n if (verb === undefined || verb === '--json') {\n return { kind: 'list', json: verb === '--json' };\n }\n\n if (verb === 'open' || verb === 'stop' || verb === 'restart') {\n const raw = tail[0];\n if (raw === undefined) {\n return { kind: 'error', message: `« instances ${verb} » attend un pid (voir « runeya instances »).` };\n }\n // Number() accepterait \" 12 \", \"0x10\" et \"1e3\" — tous illisibles comme pid.\n if (!/^[0-9]+$/.test(raw)) {\n return { kind: 'error', message: `Pid invalide : ${JSON.stringify(raw)} (un entier positif est attendu).` };\n }\n const pid = Number(raw);\n if (pid <= 0) {\n return { kind: 'error', message: `Pid invalide : ${JSON.stringify(raw)} (un entier positif est attendu).` };\n }\n return { kind: verb, pid };\n }\n\n return { kind: 'error', message: `Sous-commande inconnue : ${JSON.stringify(verb)} (attendu : open, stop, restart).` };\n}\n\n/**\n * Durée courte et sans dépendance : ce qui compte à l'œil, c'est l'ordre de\n * grandeur — « tourne depuis ce matin » ou « vient de démarrer ».\n */\nexport function formatUptime(ms: number | null): string {\n if (ms === null || !Number.isFinite(ms) || ms < 0) return '—';\n const seconds = Math.floor(ms / 1000);\n if (seconds < 60) return `${seconds} s`;\n const minutes = Math.floor(seconds / 60);\n if (minutes < 60) return `${minutes} min`;\n const hours = Math.floor(minutes / 60);\n if (hours < 24) return `${hours} h ${minutes % 60} min`;\n return `${Math.floor(hours / 24)} j ${hours % 24} h`;\n}\n\n/**\n * Abrège le home en `~`. Purement cosmétique : le chemin sert à reconnaître sa\n * pile d'un coup d'œil, et un tableau qui déborde ne se lit plus.\n */\nexport function shortenPath(cwd: string, home = homedir()): string {\n if (!home) return cwd;\n if (cwd === home) return '~';\n // Les deux séparateurs, parce que le home de Windows s'écrit avec « \\ » :\n // ne tester que « / » ferait taire l'abréviation là-bas sans rien dire.\n // Il en faut un : sinon « /home/moi-bis » serait vu comme dans « /home/moi ».\n const rest = cwd.slice(home.length);\n if (cwd.startsWith(home) && (rest.startsWith('/') || rest.startsWith('\\\\'))) return `~${rest}`;\n return cwd;\n}\n\n/**\n * Largeur d'affichage d'une colonne.\n *\n * Compte les graphèmes, pas les unités UTF-16 : un chemin accentué — ou portant\n * un emoji, ce qu'un nom de dossier autorise — désaligne sinon tout le tableau,\n * parce que `length` compte les moitiés de paire de substitution.\n */\nconst segmenter = new Intl.Segmenter();\nfunction width(value: string): number {\n return [...segmenter.segment(value)].length;\n}\n\nfunction pad(value: string, size: number): string {\n return value + ' '.repeat(Math.max(0, size - width(value)));\n}\n\n/** Le tableau, aligné sur son contenu. */\nexport function renderInstances(instances: InstanceRow[]): string {\n if (instances.length === 0) {\n return 'Aucune Runeya ne tourne sur cette machine.';\n }\n\n const header = ['PID', 'PORT', 'VERSION', 'DEPUIS', 'DOSSIER'];\n const rows = instances.map((i) => [\n String(i.pid),\n String(i.port),\n i.version ?? '—',\n formatUptime(i.uptimeMs),\n shortenPath(i.cwd),\n ]);\n\n const sizes = header.map((_, col) => Math.max(...[header, ...rows].map((r) => width(r[col] ?? ''))));\n // La dernière colonne n'est pas complétée : des espaces en fin de ligne se\n // collent au presse-papier sans rien apporter.\n const line = (cells: string[]): string =>\n cells.map((c, col) => (col === cells.length - 1 ? c : pad(c, sizes[col] ?? 0))).join(' ').trimEnd();\n\n const body = [line(header), ...rows.map(line)];\n\n const blocked = instances.filter((i) => !i.restartable);\n if (blocked.length > 0) {\n body.push('');\n body.push(\n `Non redémarrable${blocked.length > 1 ? 's' : ''} depuis ici : ${blocked.map((i) => i.pid).join(', ')} ` +\n `(${NOT_RESTARTABLE_REASON}).`,\n );\n }\n\n body.push('');\n body.push('runeya instances open|stop|restart <pid>');\n\n return body.join('\\n');\n}\n\n/** L'URL d'une instance. Le registre ne porte que le port : tout est en local. */\nexport function instanceUrl(port: number): string {\n return `http://localhost:${port}`;\n}\n\n/**\n * Ce que la commande a besoin du monde extérieur.\n *\n * Injecté plutôt qu'importé : le registre parle au système de fichiers et\n * envoie des signaux, et un test qui devrait démarrer de vraies Runeya pour\n * vérifier un message d'erreur ne tiendrait pas sous les cinq secondes.\n */\nexport type InstancesDeps = {\n listInstances: () => Promise<InstanceRow[]>;\n stopInstance: (pid: number) => Promise<{ agent: string; server: string }>;\n restartInstance: (pid: number) => Promise<{ pid: number; portReleased: boolean }>;\n openUrl: (url: string) => Promise<unknown>;\n log: (message: string) => void;\n warn: (message: string) => void;\n};\n\n/**\n * Le pid visé, cherché dans la liste que le registre vient de valider.\n *\n * Le pid est un sélecteur, jamais une instruction : ce qui n'est pas dans cette\n * liste ne reçoit ni signal ni relancement.\n */\nasync function selectInstance(pid: number, deps: Pick<InstancesDeps, 'listInstances'>): Promise<InstanceRow | null> {\n return (await deps.listInstances()).find((i) => i.pid === pid) ?? null;\n}\n\n/** Pourquoi un redémarrage est refusé — dit pareil partout dans la commande. */\nconst NOT_RESTARTABLE_REASON =\n 'lancée avant le registre, ou porteuse d’un secret que le registre ne conserve pas';\n\n/**\n * Exécute `runeya instances …` et rend le code de sortie.\n *\n * Rendu plutôt qu'appliqué par `process.exit()` : c'est l'appelant qui sort, et\n * un test peut vérifier qu'un échec sort bien en non-zéro.\n */\nexport async function runInstancesCommand(rest: string[], deps: InstancesDeps): Promise<number> {\n const action = parseInstancesArgs(rest);\n\n if (action.kind === 'error') {\n deps.warn(`Erreur : ${action.message}`);\n return 1;\n }\n\n if (action.kind === 'list') {\n const instances = await deps.listInstances();\n deps.log(action.json ? JSON.stringify(instances, null, 2) : renderInstances(instances));\n return 0;\n }\n\n const target = await selectInstance(action.pid, deps);\n if (!target) {\n deps.warn(`Erreur : aucune Runeya vivante avec le pid ${action.pid} (voir « runeya instances »).`);\n return 1;\n }\n\n if (action.kind === 'open') {\n const url = instanceUrl(target.port);\n await deps.openUrl(url);\n deps.log(`Ouverture de ${url}`);\n return 0;\n }\n\n if (action.kind === 'stop') {\n const result = await deps.stopInstance(action.pid);\n if (result.server === 'denied') {\n deps.warn(`Arrêt refusé par le système pour le pid ${action.pid} (droits insuffisants).`);\n return 1;\n }\n if (result.server === 'failed') {\n deps.warn(`Le pid ${action.pid} n’a pas pu être arrêté.`);\n return 1;\n }\n deps.log(`Instance ${action.pid} arrêtée (port ${target.port}).`);\n return 0;\n }\n\n if (!target.restartable) {\n deps.warn(\n `Erreur : l’instance ${action.pid} ne peut pas être redémarrée depuis ici — ${NOT_RESTARTABLE_REASON}. ` +\n 'La relancer à la main depuis son dossier reste possible.',\n );\n return 1;\n }\n\n const result = await deps.restartInstance(action.pid);\n deps.log(\n result.portReleased\n ? `Instance ${action.pid} redémarrée (nouveau pid ${result.pid}, port ${target.port}).`\n : `Instance ${action.pid} redémarrée (nouveau pid ${result.pid}), mais le port ${target.port} ` +\n 'n’avait pas encore été rendu — elle peut avoir démarré sur un autre port.',\n );\n return 0;\n}\n"],"mappings":"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","names":["result"]}