@runeya/runeya 2.0.56 → 2.0.58

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 (338) hide show
  1. package/agent/index.js +154 -103
  2. package/agent/index.js.map +1 -1
  3. package/agent-manager-EDFP4VXP.js +7 -0
  4. package/assets/icon.icns +0 -0
  5. package/assets/icon.ico +0 -0
  6. package/assets/icon.png +0 -0
  7. package/assets/icon.svg +5 -0
  8. package/{chunk-Q2WY6PYX.js → chunk-NLVDO4EC.js} +180 -10
  9. package/chunk-NLVDO4EC.js.map +1 -0
  10. package/chunk-O2KOX4LU.js +66 -0
  11. package/chunk-O2KOX4LU.js.map +1 -0
  12. package/desktop-launcher-TM7AABMC.js +256 -0
  13. package/desktop-launcher-TM7AABMC.js.map +1 -0
  14. package/desktop-wizard-4CYANX2O.js +209 -0
  15. package/desktop-wizard-4CYANX2O.js.map +1 -0
  16. package/free-port-565NMFIZ.js +13 -0
  17. package/free-port-565NMFIZ.js.map +1 -0
  18. package/index.js +101 -2
  19. package/index.js.map +1 -1
  20. package/package.json +1 -1
  21. package/{src-WCSXKTXA.js → src-V3J62F6F.js} +2976 -2474
  22. package/src-V3J62F6F.js.map +1 -0
  23. package/startup-failure-FOO7BLHD.js +180 -0
  24. package/startup-failure-FOO7BLHD.js.map +1 -0
  25. package/web/assets/AgentScalarChatInterface.vue-EIqnE2D0.js +13 -0
  26. package/web/assets/AgentTerminalPage-5kH1RTj6.js +1 -0
  27. package/web/assets/AiChatPage-DvPM0b-g.js +1 -0
  28. package/web/assets/AppLayout-CxU9x6en.js +1 -0
  29. package/web/assets/{AppLayout-CDh-jiJ3.css → AppLayout-Dj8YOvMQ.css} +1 -1
  30. package/web/assets/AuditPage-BrqreO8a.js +1 -0
  31. package/web/assets/CloudAccountPage-CzUpIjdc.js +1 -0
  32. package/web/assets/CloudAccountPage-DRcN1jNp.css +1 -0
  33. package/web/assets/CloudAccountPage-DS3ZfENB.js +1 -0
  34. package/web/assets/CloudMessagingPage-D8gBnkFY.js +2 -0
  35. package/web/assets/DashboardPage-BiskmF6R.js +1 -0
  36. package/web/assets/DirectoryPickerDialog-Bny02api.css +1 -0
  37. package/web/assets/DirectoryPickerDialog-CtKWj2hx.js +1 -0
  38. package/web/assets/{EditorIcon-CZLL1qox.js → EditorIcon-B58cXgvK.js} +2 -2
  39. package/web/assets/EnvironmentForm-DZXx9r78.js +108 -0
  40. package/web/assets/EnvironmentFormPage-Dl7pdkEM.js +1 -0
  41. package/web/assets/EnvironmentListPage-B0WX_Hq7.js +1 -0
  42. package/web/assets/KanbanBoardPage-CBJs26gZ.js +4 -0
  43. package/web/assets/KanbanListPage-Cz-tlLWA.js +1 -0
  44. package/web/assets/LaunchProjectPage-8SDkFiLE.js +1 -0
  45. package/web/assets/LaunchServicesPage-B-ncX3rd.js +1 -0
  46. package/web/assets/LogViewer-BJNqKt3I.js +3 -0
  47. package/web/assets/{ProcessControls-BKUKb6vL.js → ProcessControls-NA6_my0q.js} +1 -1
  48. package/web/assets/ProcessDetailPage-6galJRdd.js +1 -0
  49. package/web/assets/ProcessDetailPage-CFJfjneL.css +1 -0
  50. package/web/assets/{ProcessMetrics-4aaZekKw.js → ProcessMetrics-CUDjJ4s_.js} +2 -2
  51. package/web/assets/ProjectDetailPage-CLbj9ZT4.css +1 -0
  52. package/web/assets/ProjectDetailPage-DKHoFXjW.js +1 -0
  53. package/web/assets/ProjectListPage-C1xSP6Bq.js +1 -0
  54. package/web/assets/RandomJobTestPage-BAuT49yE.js +2 -0
  55. package/web/assets/ScenarioEditorPage-CROCV83A.js +14 -0
  56. package/web/assets/SendToChatDialog-BfaLVfzw.js +1 -0
  57. package/web/assets/ServiceControlsBar-DE0In-jH.js +1 -0
  58. package/web/assets/ServiceDetailPage-0iIv9RqU.js +2 -0
  59. package/web/assets/{ServiceDetailPage-BRg1byDZ.css → ServiceDetailPage-DDSyACSv.css} +1 -1
  60. package/web/assets/ServiceFormPage-D-tLX8jE.js +1 -0
  61. package/web/assets/SettingsPage-ClNw9uEA.js +2063 -0
  62. package/web/assets/{SettingsPage-BY3dG-wn.css → SettingsPage-ySsQCeYE.css} +1 -1
  63. package/web/assets/UnlockPage-flNU5Iky.js +1 -0
  64. package/web/assets/VariablesTable-BnCSYLD4.js +1 -0
  65. package/web/assets/VaultMigrationPage-BSv9anTA.js +1 -0
  66. package/web/assets/VersionBadge-zyKx_N_w.js +1 -0
  67. package/web/assets/WikiPage-C9Bruew6.js +1 -0
  68. package/web/assets/WikiView-BZZ5mybT.js +1 -0
  69. package/web/assets/add-scalar-classes-DZb8OCPH.js +387 -0
  70. package/web/assets/auth-errors-CU6pB2jP.js +1 -0
  71. package/web/assets/autocomplete-DGLJp6Xx.js +308 -0
  72. package/web/assets/{basic-shape-diamond.svg-DH2telU3.js → basic-shape-diamond.svg-D7lBpWcu.js} +1 -1
  73. package/web/assets/{basic-shape-hexagon.svg-CkFORYUC.js → basic-shape-hexagon.svg-BIDPqohs.js} +1 -1
  74. package/web/assets/{basic-shape-primary-circle-ellipse-round.svg-BlV1CeJ6.js → basic-shape-primary-circle-ellipse-round.svg-iWUF3CNK.js} +1 -1
  75. package/web/assets/{basic-shape-primary-square-rectangle.svg-BaAO9T6a.js → basic-shape-primary-square-rectangle.svg-BQy8tY9i.js} +1 -1
  76. package/web/assets/{basic-shape-shield.svg-CAX-F0Ai.js → basic-shape-shield.svg-Dcov5U2N.js} +1 -1
  77. package/web/assets/{browser-DPOAuokj.js → browser-Dc4T6GL2.js} +1 -1
  78. package/web/assets/{browser-CgnxRAK6.js → browser-DrMkXWE3.js} +1 -1
  79. package/web/assets/{card-BinmfAW6.js → card-DADdd2-i.js} +2 -2
  80. package/web/assets/{checkbox-DRF4pbAa.js → checkbox-By0TwAz_.js} +3 -3
  81. package/web/assets/{chip-Dvt1MVQM.js → chip-W5HkUiZA.js} +2 -2
  82. package/web/assets/{client-BqPXDxC1.js → client-Be8SiY8s.js} +2 -2
  83. package/web/assets/cloud-chat.store-GKWq9kin.js +1 -0
  84. package/web/assets/cloud-session-CJ4n3dbT.js +1 -0
  85. package/web/assets/column-P4Yoqttz.js +907 -0
  86. package/web/assets/{computer-device-desktop-monitor.svg-CJMZ28bk.js → computer-device-desktop-monitor.svg-BjBC4Q_B.js} +1 -1
  87. package/web/assets/{computer-device-desktop.svg-BedAMKhR.js → computer-device-desktop.svg-C7H8X0sb.js} +1 -1
  88. package/web/assets/{computer-device-laptop.svg-DdhI-EdQ.js → computer-device-laptop.svg-GDU5987h.js} +1 -1
  89. package/web/assets/{computer-device-mobile-phone-android-samsung-back.svg-C5diuYjt.js → computer-device-mobile-phone-android-samsung-back.svg-BcWod8vA.js} +1 -1
  90. package/web/assets/{computer-device-mobile-phone-android-samsung.svg-DGHCufqU.js → computer-device-mobile-phone-android-samsung.svg-Cj58lY5g.js} +1 -1
  91. package/web/assets/{computer-device-mobile-phone-iphone-x-back.svg-CMWyPtt9.js → computer-device-mobile-phone-iphone-x-back.svg-CtJM7Ul_.js} +1 -1
  92. package/web/assets/{computer-device-mobile-phone-iphone-x.svg-BRy5W1In.js → computer-device-mobile-phone-iphone-x.svg-BiSi4riW.js} +1 -1
  93. package/web/assets/{computer-device-mobile-tablet-touch.svg-BGnBo8Ih.js → computer-device-mobile-tablet-touch.svg-BAMVDwHH.js} +1 -1
  94. package/web/assets/{computer-device-mobile-tablet.svg-xSg_XplW.js → computer-device-mobile-tablet.svg-quWU62em.js} +1 -1
  95. package/web/assets/{computer-device-network-ethernet-cat6.svg-hz-jiJFA.js → computer-device-network-ethernet-cat6.svg-eoCbNWkF.js} +1 -1
  96. package/web/assets/{computer-device-network-lan-www.svg-BF6NF79C.js → computer-device-network-lan-www.svg-AR5jmH9w.js} +1 -1
  97. package/web/assets/{computer-device-network-wifi-connection.svg-gwpaLcz6.js → computer-device-network-wifi-connection.svg-C3-i1o4I.js} +1 -1
  98. package/web/assets/{computer-device-network-wifi-router.svg-B4oSiJHk.js → computer-device-network-wifi-router.svg-D8_62H2U.js} +1 -1
  99. package/web/assets/{cssMode-HHg8IzQM.js → cssMode-CfDickSl.js} +1 -1
  100. package/web/assets/{divider-C5a--3VK.js → divider-DOwWKUnp.js} +2 -2
  101. package/web/assets/{ecology-science-erlenmeyer-flask.svg-DkoOes8O.js → ecology-science-erlenmeyer-flask.svg-bmj1315r.js} +1 -1
  102. package/web/assets/{fieldset-c3hO4nzt.js → fieldset-CM6GY5DX.js} +2 -2
  103. package/web/assets/{freemarker2-BJSUPPPz.js → freemarker2-B_0Gh4L-.js} +1 -1
  104. package/web/assets/{handlebars-BAY2_Hod.js → handlebars-D7Oha3sz.js} +1 -1
  105. package/web/assets/{html-CNW7z0dM.js → html-BDq-ql3l.js} +1 -1
  106. package/web/assets/{htmlMode-SpxSLWYn.js → htmlMode-DVuzX8LQ.js} +1 -1
  107. package/web/assets/{image-flash-lightning.svg-DzcaFZwQ.js → image-flash-lightning.svg-pdHiRywD.js} +1 -1
  108. package/web/assets/{image-picture-flower.svg-DbYkuhs0.js → image-picture-flower.svg-BJarIt4k.js} +1 -1
  109. package/web/assets/{index-BIjjyvxm.js → index-Dk3h9927.js} +282 -282
  110. package/web/assets/{interface-alert-exclamation-diamond.svg-VqQleX3x.js → interface-alert-exclamation-diamond.svg-CZUf0TtR.js} +1 -1
  111. package/web/assets/{interface-alert-exclamation-triangle-warning.svg-B4xCH3UD.js → interface-alert-exclamation-triangle-warning.svg-B1qbmOvN.js} +1 -1
  112. package/web/assets/{interface-alert-information-circle.svg-5k54XhJ-.js → interface-alert-information-circle.svg-DAH6I2Rk.js} +1 -1
  113. package/web/assets/{interface-award-crown.svg-BXVJGSgl.js → interface-award-crown.svg-Co-un_0E.js} +1 -1
  114. package/web/assets/{interface-bookmark.svg-D0afhfDQ.js → interface-bookmark-tag.svg-DCeSL4gX.js} +1 -1
  115. package/web/assets/{interface-bookmark-tag.svg-CBUeCBGD.js → interface-bookmark.svg-BoAQ5WAA.js} +1 -1
  116. package/web/assets/{interface-calendar-date-one.svg-CFO_cJx5.js → interface-calendar-date-one.svg-KM5TH_vj.js} +1 -1
  117. package/web/assets/{interface-content-book-open-pages.svg-D_VJNLAI.js → interface-content-book-open-pages.svg-2t-0H_Nl.js} +1 -1
  118. package/web/assets/{interface-content-book-page.svg-BxdaWR7b.js → interface-content-book-page.svg-Dx9U_5uo.js} +1 -1
  119. package/web/assets/{interface-content-file.svg-CCKgKAVi.js → interface-content-file.svg-CW_9AGDl.js} +1 -1
  120. package/web/assets/interface-content-folder.svg-C9_1n23c.js +1 -0
  121. package/web/assets/{interface-content-folder.svg-Dw0SKwbv.js → interface-content-folder.svg-DgU2KM8d.js} +1 -1
  122. package/web/assets/{interface-copy-clipboard.svg-Co7ESi9t.js → interface-copy-clipboard.svg-BXCY1wtO.js} +1 -1
  123. package/web/assets/{interface-edit-attachment.svg-DB4Fu5ck.js → interface-edit-attachment.svg-lJsBgdnd.js} +1 -1
  124. package/web/assets/{interface-edit-binocular.svg-DSEtWb7P.js → interface-edit-binocular.svg-N_us2_d_.js} +1 -1
  125. package/web/assets/{interface-edit-magic-wand.svg-Bh9JP-_u.js → interface-edit-magic-wand.svg-GlHpAoND.js} +1 -1
  126. package/web/assets/{interface-edit-tool-paint-roller.svg-DXODVJeW.js → interface-edit-tool-paint-roller.svg-B3s6tHLT.js} +1 -1
  127. package/web/assets/{interface-edit-tool-pencil.svg-gJSTl1EM.js → interface-edit-tool-pencil.svg-BhJltLPD.js} +1 -1
  128. package/web/assets/{interface-favorite-award.svg-Bv3Ditpr.js → interface-favorite-award.svg-CAC4qrCL.js} +1 -1
  129. package/web/assets/{interface-favorite-flag.svg-RU02g1Zi.js → interface-favorite-flag.svg-5dLI18uT.js} +1 -1
  130. package/web/assets/{interface-favorite-heart.svg-C9umX2vE.js → interface-favorite-heart.svg-DAWMqUS8.js} +1 -1
  131. package/web/assets/{interface-favorite-star.svg-CWsQ-mGb.js → interface-favorite-star.svg-C9DICFBb.js} +1 -1
  132. package/web/assets/{interface-favorite-stars-sparkles.svg-C5z_gPrX.js → interface-favorite-stars-sparkles.svg-zD5-a95u.js} +1 -1
  133. package/web/assets/{interface-hierarchy-flowchart.svg-CctM7HYF.js → interface-hierarchy-flowchart.svg-BzAAQM0v.js} +1 -1
  134. package/web/assets/{interface-home-house.svg-Cd6GJDkx.js → interface-home-house.svg-CB_mzszz.js} +1 -1
  135. package/web/assets/{interface-hyperlink.svg-RUZY_MPS.js → interface-hyperlink.svg-BUMVlOAE.js} +1 -1
  136. package/web/assets/{interface-lighting-brightness.svg-CoJei7Uh.js → interface-lighting-brightness.svg-wPXo2pZW.js} +1 -1
  137. package/web/assets/{interface-lock-closed.svg-DHBiQkRu.js → interface-lock-closed.svg-Qj4fLj5D.js} +1 -1
  138. package/web/assets/{interface-lock-open-unlock.svg-D9gUzkAe.js → interface-lock-open-unlock.svg-PaaFsUiU.js} +1 -1
  139. package/web/assets/{interface-login-key.svg-BGNkKSCc.js → interface-login-key.svg-By-IZ7EH.js} +1 -1
  140. package/web/assets/{interface-search.svg-a20xpUNh.js → interface-search.svg-D1s5Gsyk.js} +1 -1
  141. package/web/assets/{interface-setting-cog.svg-Du_6PHwV.js → interface-setting-cog.svg-BIjZVOwf.js} +1 -1
  142. package/web/assets/{interface-share-megaphone-bullhorn.svg-cUXjeKNG.js → interface-share-megaphone-bullhorn.svg-1oPoDdIL.js} +1 -1
  143. package/web/assets/{interface-share-rocket.svg-D5DY8-4Z.js → interface-share-rocket.svg-B07UdOH6.js} +1 -1
  144. package/web/assets/{interface-share-satellite.svg-CxZ9ENCv.js → interface-share-satellite.svg-AxSAr1JP.js} +1 -1
  145. package/web/assets/{interface-share-space-ship.svg-DxRCAuZe.js → interface-share-space-ship.svg-ghRJYkXG.js} +1 -1
  146. package/web/assets/{interface-share.svg-CJ86d8ve.js → interface-share.svg-jVvV5wf9.js} +1 -1
  147. package/web/assets/{interface-signal-square.svg-DaITtWso.js → interface-signal-square.svg-BB8KvxNI.js} +1 -1
  148. package/web/assets/{interface-time-clock-circle.svg-DOXyhrEi.js → interface-time-clock-circle.svg-Bt_vXLib.js} +1 -1
  149. package/web/assets/{interface-time-hour-glass.svg-DEzjXGhd.js → interface-time-hour-glass.svg-CqsWXDx3.js} +1 -1
  150. package/web/assets/{interface-users-multiple.svg-DuW2zZO9.js → interface-users-multiple.svg-DfZzhCkI.js} +1 -1
  151. package/web/assets/{interface-weather-moon.svg-CAJTRm96.js → interface-weather-moon.svg-B5X37fBl.js} +1 -1
  152. package/web/assets/{javascript-DoNH7W21.js → javascript-DWxMn_QC.js} +1 -1
  153. package/web/assets/{jsonMode-Ba_3RQUr.js → jsonMode-BWOZzM3d.js} +2 -2
  154. package/web/assets/{liquid-yqqVxQ3r.js → liquid-B0VtIwJX.js} +1 -1
  155. package/web/assets/{lspLanguageFeatures-DsNvNJOK.js → lspLanguageFeatures-DXFZNqLk.js} +3 -3
  156. package/web/assets/{mail-chat-bubble-square.svg-DxuFTrxl.js → mail-chat-bubble-square.svg-DVi8sPM-.js} +1 -1
  157. package/web/assets/{mail-send-email-paper-airplane.svg-fobU5Rru.js → mail-send-email-paper-airplane.svg-Dlk35rWL.js} +1 -1
  158. package/web/assets/{mail-send-envelope.svg-DjoyQmbK.js → mail-send-envelope.svg-DpEE06QS.js} +1 -1
  159. package/web/assets/{mdx-We_KeaPg.js → mdx-XjdLNHo4.js} +1 -1
  160. package/web/assets/{message-Cgzl10yY.js → message-TASaHoOx.js} +2 -2
  161. package/web/assets/{minus-CWad93a9.js → minus-BO9HwuhK.js} +2 -2
  162. package/web/assets/modal-B0K9qtIb.js +1 -0
  163. package/web/assets/modal-Dadfdblm.js +5 -0
  164. package/web/assets/{money-cashier-receipt.svg-Cd3vbq1N.js → money-cashier-receipt.svg-D3T1gdZO.js} +1 -1
  165. package/web/assets/{money-currency-dollar-pay.svg-q2PhWmHi.js → money-currency-dollar-pay.svg-RhoFWz8z.js} +1 -1
  166. package/web/assets/{money-graph-arrow-increase.svg-DFoTvPe7.js → money-graph-arrow-increase.svg-BENn1K5R.js} +1 -1
  167. package/web/assets/{money-graph-bar-chart-increase.svg-N1y-bW8g.js → money-graph-bar-chart-increase.svg-COGPwero.js} +1 -1
  168. package/web/assets/{multiselect-DlPZQWML.js → multiselect-QI9V-o7t.js} +3 -3
  169. package/web/assets/{nature-ecology-leaf.svg-B759TwbF.js → nature-ecology-leaf.svg-CyQJuX9P.js} +1 -1
  170. package/web/assets/{password-Bbkf0Avi.js → password-68lVUSdj.js} +4 -4
  171. package/web/assets/{phone-telephone.svg-BAjrImUz.js → phone-telephone.svg-Cp49xUlu.js} +1 -1
  172. package/web/assets/{plus-CSmkO4gT.js → plus-CtAUJUu2.js} +6 -6
  173. package/web/assets/process.store-DkO9CCEs.js +1 -0
  174. package/web/assets/{programming-bug.svg-C9yxLgbr.js → programming-bug.svg-DJCw-G7S.js} +1 -1
  175. package/web/assets/{programming-cloud.svg-Brnt7HfW.js → programming-cloud.svg-Dawch6nl.js} +1 -1
  176. package/web/assets/{programming-computer-database-server.svg-CA5tIDJ_.js → programming-computer-database-server.svg-wM3gh9nl.js} +1 -1
  177. package/web/assets/{programming-computer-database.svg-BJ_fk-M0.js → programming-computer-database.svg-B-CBQ4FN.js} +1 -1
  178. package/web/assets/{programming-module-four-layout.svg-DULdtPL4.js → programming-module-four-layout.svg-B8K3IYUP.js} +1 -1
  179. package/web/assets/{programming-module-three.svg-B1vBli33.js → programming-module-three.svg-BVHpxetj.js} +1 -1
  180. package/web/assets/{programming-module.svg-DpVKFxMS.js → programming-module.svg-CXID9wrd.js} +1 -1
  181. package/web/assets/{programming-script-code.svg-CTNuSx8y.js → programming-script-code.svg-lSz-9Xfp.js} +1 -1
  182. package/web/assets/{python-B0GPM7en.js → python-DL0o4ZFa.js} +1 -1
  183. package/web/assets/{razor-YCIzBEVM.js → razor-1T_DtFYV.js} +1 -1
  184. package/web/assets/router-BKOiPGCa.js +1 -0
  185. package/web/assets/settings-scope-DrVQNSTC.js +1 -0
  186. package/web/assets/settings.store-xvHd8xGI.js +1 -0
  187. package/web/assets/{shopping-cart.svg-DinVLM6s.js → shopping-cart.svg-TZA8HEQB.js} +1 -1
  188. package/web/assets/{shopping-gift-present.svg-CzHOD4sx.js → shopping-gift-present.svg-CRGiXfBk.js} +1 -1
  189. package/web/assets/{shopping-shipping-box-parcel-package.svg-Ct0cSZV2.js → shopping-shipping-box-parcel-package.svg-BuEMZoGf.js} +1 -1
  190. package/web/assets/src-Be-L2-AH.js +1 -0
  191. package/web/assets/{src-DsmqQeZ9.js → src-Dy-bHT95.js} +11 -11
  192. package/web/assets/tabpanel-BP3edJSv.js +150 -0
  193. package/web/assets/{tag-new-circle.svg-DszV9Yu3.js → tag-new-circle.svg-CsOt9-U5.js} +1 -1
  194. package/web/assets/toggleswitch-B49OhBFD.js +115 -0
  195. package/web/assets/{travel-map-earth-globe.svg-DJS5nR0r.js → travel-map-earth-globe.svg-BTR5ahca.js} +1 -1
  196. package/web/assets/trpc-hOuUVUMw.js +1 -0
  197. package/web/assets/{tsMode-DAiF0SK5.js → tsMode-BUrbWgsu.js} +5 -5
  198. package/web/assets/{typescript-Bs2RtJDr.js → typescript-tKGzqX3Z.js} +1 -1
  199. package/web/assets/useAiChatDrawer-CZS0RLp8.js +1 -0
  200. package/web/assets/useCloudOrg-0VY86rgI.js +93 -0
  201. package/web/assets/useCloudOrg-CDe4gvZH.css +1 -0
  202. package/web/assets/{useProjectCatalog-OUh8Jzm4.js → useProjectCatalog-C2BH8Bnr.js} +1 -1
  203. package/web/assets/{xml-DNJakbU1.js → xml-4CdtJV3Y.js} +1 -1
  204. package/web/assets/{yaml-CuCgMv5w.js → yaml-Cj7LK0oJ.js} +1 -1
  205. package/web/index.html +1 -1
  206. package/agent-manager-LSAJSO3X.js +0 -7
  207. package/chunk-Q2WY6PYX.js.map +0 -1
  208. package/src-WCSXKTXA.js.map +0 -1
  209. package/web/assets/AgentScalarChatInterface.vue-CBm8pMxm.js +0 -13
  210. package/web/assets/AgentTerminalPage-Cu2yebw0.js +0 -1
  211. package/web/assets/AiChatPage-D_QT__oC.js +0 -1
  212. package/web/assets/AppLayout-B-JzLiuN.js +0 -1
  213. package/web/assets/AuditPage-O5w_rRoF.js +0 -1
  214. package/web/assets/CloudAccountPage-8iUKumU1.js +0 -1
  215. package/web/assets/CloudAccountPage-CVAMkCOF.css +0 -1
  216. package/web/assets/CloudAccountPage-CxclkzzF.js +0 -1
  217. package/web/assets/CloudMessagingPage-Cn4mBsGb.js +0 -2
  218. package/web/assets/DashboardPage-CBPAacTy.js +0 -1
  219. package/web/assets/EnvironmentForm-A41dAsGK.js +0 -108
  220. package/web/assets/EnvironmentFormPage-seMzTipP.js +0 -1
  221. package/web/assets/EnvironmentListPage-Bx_8aQ7W.js +0 -1
  222. package/web/assets/EnvironmentSelector-B9SZvB3I.css +0 -1
  223. package/web/assets/EnvironmentSelector-GuLEFkas.js +0 -1
  224. package/web/assets/KanbanBoardPage-BV-1mFti.js +0 -4
  225. package/web/assets/KanbanListPage-BHmn0L7d.js +0 -1
  226. package/web/assets/LaunchProjectPage-0x_cAt48.js +0 -1
  227. package/web/assets/LaunchServicesPage-wC2HNYAu.js +0 -1
  228. package/web/assets/LogViewer-BRsgOXsv.js +0 -3
  229. package/web/assets/ProcessDetailPage-CzGUsQM9.css +0 -1
  230. package/web/assets/ProcessDetailPage-DqInQZoM.js +0 -1
  231. package/web/assets/ProjectDetailPage-DWdYGIm5.js +0 -1
  232. package/web/assets/ProjectDetailPage-hcU-rKhJ.css +0 -1
  233. package/web/assets/ProjectListPage-XKb11ZSl.js +0 -1
  234. package/web/assets/RandomJobTestPage-D3mNVwkH.js +0 -2
  235. package/web/assets/ScenarioEditorPage-Bhp_uvLq.js +0 -14
  236. package/web/assets/SendToChatDialog-DdjtI7RN.js +0 -1
  237. package/web/assets/ServiceControlsBar-CRzSTSbf.js +0 -1
  238. package/web/assets/ServiceDetailPage-ChZVB2uY.js +0 -2
  239. package/web/assets/ServiceFormPage-CXrwDYXc.js +0 -1
  240. package/web/assets/SettingsPage-BKImNNGC.js +0 -2062
  241. package/web/assets/UnlockPage-IF_kNWCK.js +0 -1
  242. package/web/assets/VariablesTable-BnfdPTJs.js +0 -1
  243. package/web/assets/VaultMigrationPage-Dzn-moG9.js +0 -1
  244. package/web/assets/VersionBadge-DJlVV7r7.js +0 -1
  245. package/web/assets/WikiPage-DNm8r3l9.js +0 -1
  246. package/web/assets/WikiView-DCuU1ES2.js +0 -1
  247. package/web/assets/add-scalar-classes-DGIbkQ1f.js +0 -387
  248. package/web/assets/auth-errors-DQYwI7Ju.js +0 -1
  249. package/web/assets/autocomplete-BIqGkkg7.js +0 -422
  250. package/web/assets/cloud-chat.store-DqrDy_y_.js +0 -1
  251. package/web/assets/cloud-session-BPYJmCDW.js +0 -1
  252. package/web/assets/column-DFi06tD3.js +0 -907
  253. package/web/assets/interface-content-folder.svg-DnPIUwnJ.js +0 -1
  254. package/web/assets/modal-BwAKEIsn.js +0 -5
  255. package/web/assets/modal-tmtc9vXB.js +0 -1
  256. package/web/assets/process.store-f72KyYo3.js +0 -1
  257. package/web/assets/router-CRcngiuT.js +0 -1
  258. package/web/assets/settings-scope-BIR0n6j3.js +0 -1
  259. package/web/assets/settings.store-DuwB5egt.js +0 -1
  260. package/web/assets/src-HJHc4vH7.js +0 -1
  261. package/web/assets/tabpanel-C4RQhLki.js +0 -150
  262. package/web/assets/trpc-CTOLa5Ye.js +0 -1
  263. package/web/assets/useAiChatDrawer-CFsO_u5Q.js +0 -1
  264. package/web/assets/useCloudOrg-Ds7-Bvva.js +0 -1
  265. package/web/assets/useCloudOrg-zVC74FRC.css +0 -1
  266. /package/{agent-manager-LSAJSO3X.js.map → agent-manager-EDFP4VXP.js.map} +0 -0
  267. /package/web/assets/{abap-DT2sAUGb.js → abap-BftohFSP.js} +0 -0
  268. /package/web/assets/{apex-BqR8ejP0.js → apex-BvK6mslj.js} +0 -0
  269. /package/web/assets/{azcli-DK_jNPxf.js → azcli-sP_xqaje.js} +0 -0
  270. /package/web/assets/{bat-BLmcleEN.js → bat-BVOfLmAN.js} +0 -0
  271. /package/web/assets/{bicep-DkR6Nnyy.js → bicep-BlQUrQRt.js} +0 -0
  272. /package/web/assets/{cameligo-DfT1QA_V.js → cameligo-Hsiv8If_.js} +0 -0
  273. /package/web/assets/{clojure-BbsGZ_q_.js → clojure-BJCEwD5Z.js} +0 -0
  274. /package/web/assets/{coffee-CZQPrkXM.js → coffee-DaIzfLck.js} +0 -0
  275. /package/web/assets/{cpp-CZLFjmrQ.js → cpp-D1D8tync.js} +0 -0
  276. /package/web/assets/{csharp-CljM85nx.js → csharp-aJ5U4ZX-.js} +0 -0
  277. /package/web/assets/{csp-B7ItwhrE.js → csp-Dl6_9F5u.js} +0 -0
  278. /package/web/assets/{css-CIuVviKc.js → css-vCyBaqZs.js} +0 -0
  279. /package/web/assets/{cypher-Lk1MiloH.js → cypher-3AJUSxML.js} +0 -0
  280. /package/web/assets/{dart-B83vLjrb.js → dart-CTkotL3V.js} +0 -0
  281. /package/web/assets/{dockerfile--LImnfYW.js → dockerfile-D5-w2qBp.js} +0 -0
  282. /package/web/assets/{ecl-C1mPHzto.js → ecl-Bv13-VWP.js} +0 -0
  283. /package/web/assets/{elixir-F7VkySYx.js → elixir-tGAhMDbc.js} +0 -0
  284. /package/web/assets/{flow9-CyDLjcIP.js → flow9-BGyqHZGG.js} +0 -0
  285. /package/web/assets/{fsharp-BtAy52j8.js → fsharp-CNmn9I-8.js} +0 -0
  286. /package/web/assets/{go-nAky3Nvu.js → go-Ci34O9J5.js} +0 -0
  287. /package/web/assets/{graphql-BFHB5AhE.js → graphql-MnWRwivv.js} +0 -0
  288. /package/web/assets/{hcl-DiNGWUmy.js → hcl-CHOlr9Wk.js} +0 -0
  289. /package/web/assets/{ini-D1Fg5XrG.js → ini-DbnmjBHk.js} +0 -0
  290. /package/web/assets/{java-C-10mSK7.js → java-BfYu7xZq.js} +0 -0
  291. /package/web/assets/{julia-Bqx3lIQk.js → julia-DLtmkb8l.js} +0 -0
  292. /package/web/assets/{kotlin-BBx7H7X0.js → kotlin-DcvmgooU.js} +0 -0
  293. /package/web/assets/{less-BFHUOKEO.js → less-BcK61AQc.js} +0 -0
  294. /package/web/assets/{lexon-CZNaGS2_.js → lexon-CTymSfIj.js} +0 -0
  295. /package/web/assets/{lua-iuAeZ15y.js → lua-RfM_CC1S.js} +0 -0
  296. /package/web/assets/{m3-Dotjo0U8.js → m3-BUMcu6kl.js} +0 -0
  297. /package/web/assets/{markdown-B_31SQ_4.js → markdown-D43qGxMI.js} +0 -0
  298. /package/web/assets/{mips-Dp4rVQ6A.js → mips-DraL1zR7.js} +0 -0
  299. /package/web/assets/{msdax-DGvgi_My.js → msdax-DwsT9zOV.js} +0 -0
  300. /package/web/assets/{mysql-jqX2Izgu.js → mysql-CI0Y1SVo.js} +0 -0
  301. /package/web/assets/{objective-c-KWePe42v.js → objective-c-DFGG0hMZ.js} +0 -0
  302. /package/web/assets/{pascal-k9Augcc6.js → pascal-BwDR4uJo.js} +0 -0
  303. /package/web/assets/{pascaligo-CijZuMoC.js → pascaligo-BIFJ11Dr.js} +0 -0
  304. /package/web/assets/{perl-CtKbbdqv.js → perl-BA3RVdIi.js} +0 -0
  305. /package/web/assets/{pgsql-IYBGBY8p.js → pgsql-CQdJ7fT6.js} +0 -0
  306. /package/web/assets/{php-CZgzKas5.js → php-aksMphIw.js} +0 -0
  307. /package/web/assets/{pla-DxEUZCU5.js → pla-oY2ZYZjq.js} +0 -0
  308. /package/web/assets/{postiats-Cf9oispl.js → postiats-B6K4WFxG.js} +0 -0
  309. /package/web/assets/{powerquery-Cyri2j7y.js → powerquery-BEv8gWXV.js} +0 -0
  310. /package/web/assets/{powershell-CezsOW84.js → powershell-Dh31ZyY5.js} +0 -0
  311. /package/web/assets/{protobuf-BVSVLozM.js → protobuf-IOe1WZKr.js} +0 -0
  312. /package/web/assets/{pug-tdDHxxGI.js → pug-BoF2xjem.js} +0 -0
  313. /package/web/assets/{qsharp-BbxYBU73.js → qsharp-Cg-pSrKC.js} +0 -0
  314. /package/web/assets/{r-CMiogh24.js → r-CXVSpnOi.js} +0 -0
  315. /package/web/assets/{redis-Be7YRs2n.js → redis-Ds37g3HK.js} +0 -0
  316. /package/web/assets/{redshift-BMtedC4Y.js → redshift-Bc3XVP9_.js} +0 -0
  317. /package/web/assets/{restructuredtext-BeqA_Nw7.js → restructuredtext-DEe8sZRY.js} +0 -0
  318. /package/web/assets/{ruby-DQh1qjXf.js → ruby-rR6GK4gP.js} +0 -0
  319. /package/web/assets/{rust-Dtb7SJq9.js → rust-DIavTiQB.js} +0 -0
  320. /package/web/assets/{sb-YjmuT7ii.js → sb-DTmnd4yY.js} +0 -0
  321. /package/web/assets/{scala-3ZhdCU1r.js → scala-1g7pYkrn.js} +0 -0
  322. /package/web/assets/{scheme-Ck6PwJVN.js → scheme-DrHHAHD4.js} +0 -0
  323. /package/web/assets/{scss-CdSZkceb.js → scss-TmmHVu6S.js} +0 -0
  324. /package/web/assets/{shell-D951-SzL.js → shell-heJIehx2.js} +0 -0
  325. /package/web/assets/{solidity-BtE4jdUZ.js → solidity-DaFcLbgd.js} +0 -0
  326. /package/web/assets/{sophia-CPgh17t9.js → sophia-CXbpjkzF.js} +0 -0
  327. /package/web/assets/{sparql-D5V7fRaF.js → sparql-fPaD1mrB.js} +0 -0
  328. /package/web/assets/{sql-CIe64i2G.js → sql-AsIRMoxc.js} +0 -0
  329. /package/web/assets/{st-BUZL4NkZ.js → st-BzrDXems.js} +0 -0
  330. /package/web/assets/{swift-BGpAy-yZ.js → swift-BllUhPGN.js} +0 -0
  331. /package/web/assets/{systemverilog-CYBqw_20.js → systemverilog-DNQlsb2M.js} +0 -0
  332. /package/web/assets/{tcl-CqmcDc3_.js → tcl-Cw_eJI2v.js} +0 -0
  333. /package/web/assets/{twig-BWVIPIPE.js → twig-vw9mFGZ-.js} +0 -0
  334. /package/web/assets/{typespec-mTM8EdlQ.js → typespec-BshQoZSA.js} +0 -0
  335. /package/web/assets/{uuid-aTVnbu2y.js → uuid-egnMxzmj.js} +0 -0
  336. /package/web/assets/{vb-xvgQ7mYU.js → vb-CmPDgk6r.js} +0 -0
  337. /package/web/assets/{w3c-keyname-CjzYiphr.js → w3c-keyname-WZPedoVd.js} +0 -0
  338. /package/web/assets/{wgsl-C8m-CvBD.js → wgsl-CewGSgNG.js} +0 -0
@@ -0,0 +1,7 @@
1
+ import {
2
+ agentManager
3
+ } from "./chunk-NLVDO4EC.js";
4
+ export {
5
+ agentManager
6
+ };
7
+ //# sourceMappingURL=agent-manager-EDFP4VXP.js.map
Binary file
Binary file
Binary file
@@ -0,0 +1,5 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28">
2
+ <rect width="28" height="28" rx="8" fill="#6366f1"/>
3
+ <path d="M7 20 L14 8 L21 20" stroke="white" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"/>
4
+ <path d="M10 16 L18 16" stroke="white" stroke-width="2.5" stroke-linecap="round"/>
5
+ </svg>
@@ -36,6 +36,10 @@ var EnvSchema = z.object({
36
36
  RUNEYA_MODE: z.enum(["local-simple", "cloud"]).default("local-simple"),
37
37
  RUNEYA_CORS_ORIGIN: z.string().nullable().default(null),
38
38
  RUNEYA_LAN_PROXY: z.preprocess((v) => v === "true" || v === "1", z.boolean()).default(false),
39
+ // Set by the CLI when it was started from a desktop launcher rather than a
40
+ // terminal. The web app surfaces it so the user knows which Runeya they are
41
+ // looking at when several are running.
42
+ RUNEYA_FROM_DESKTOP: z.preprocess((v) => v === "true" || v === "1", z.boolean()).default(false),
39
43
  // Label shown for this machine in the cloud's "linked machines" screen.
40
44
  // Defaults to the hostname (see `getDeviceName`); set it explicitly when a
41
45
  // single host runs several instances and you want to tell them apart.
@@ -63,7 +67,8 @@ var EnvSchema = z.object({
63
67
  CLOUD_APP_URL: data.RUNEYA_CLOUD_APP_URL,
64
68
  CORS_ORIGIN: data.RUNEYA_CORS_ORIGIN,
65
69
  AGENT_BINARY_PATH: data.RUNEYA_AGENT_BINARY_PATH,
66
- DEVICE_NAME: data.RUNEYA_DEVICE_NAME
70
+ DEVICE_NAME: data.RUNEYA_DEVICE_NAME,
71
+ FROM_DESKTOP: data.RUNEYA_FROM_DESKTOP
67
72
  }));
68
73
  var env = EnvSchema.parse(process.env);
69
74
 
@@ -103,10 +108,35 @@ function vaultFor(target) {
103
108
  return { root: projectVaultRoot(target.orgId, target.id) };
104
109
  }
105
110
  var ORG_CLOUD_FILE = "cloud.json";
106
- async function stampOrgCloud(orgId, cloudUrl) {
111
+ async function stampOrgCloud(orgId, cloudUrl, name) {
107
112
  const root = orgVaultRoot(orgId);
108
113
  await mkdir(root, { recursive: true });
109
- await writeFile(join(root, ORG_CLOUD_FILE), JSON.stringify({ cloudUrl }, null, 2), "utf-8");
114
+ const known = name ?? (await readOrgNames())[orgId];
115
+ const stamp = known ? { cloudUrl, name: known } : { cloudUrl };
116
+ await writeFile(join(root, ORG_CLOUD_FILE), JSON.stringify(stamp, null, 2), "utf-8");
117
+ }
118
+ async function rememberOrgName(orgId, name) {
119
+ const file = join(orgVaultRoot(orgId), ORG_CLOUD_FILE);
120
+ let stamp;
121
+ try {
122
+ stamp = JSON.parse(await readFile(file, "utf-8"));
123
+ } catch {
124
+ return;
125
+ }
126
+ if (stamp["name"] === name) return;
127
+ await writeFile(file, JSON.stringify({ ...stamp, name }, null, 2), "utf-8");
128
+ }
129
+ async function readOrgNames() {
130
+ const out = {};
131
+ for (const orgId of await listOrgVaults()) {
132
+ try {
133
+ const raw = await readFile(join(orgVaultRoot(orgId), ORG_CLOUD_FILE), "utf-8");
134
+ const name = JSON.parse(raw).name;
135
+ if (typeof name === "string" && name) out[orgId] = name;
136
+ } catch {
137
+ }
138
+ }
139
+ return out;
110
140
  }
111
141
  async function readOrgClouds() {
112
142
  const orgsDir = join(machineRoot(), "orgs");
@@ -264,6 +294,9 @@ function markVaultLocked(vault) {
264
294
  lockedVaults.add(vault);
265
295
  keyring.delete(vault);
266
296
  }
297
+ function isVaultLocked(vault) {
298
+ return lockedVaults.has(vault);
299
+ }
267
300
  function clearVaultLock(vault) {
268
301
  lockedVaults.delete(vault);
269
302
  }
@@ -650,6 +683,28 @@ import { randomUUID as randomUUID2 } from "crypto";
650
683
  import { readFile as readFile3, writeFile as writeFile3, rename as rename2, mkdir as mkdir3, chmod as chmod2, rm } from "fs/promises";
651
684
  import { join as join3 } from "path";
652
685
 
686
+ // ../server/src/services/disk-freshness.ts
687
+ import { stat } from "fs/promises";
688
+ var seen = /* @__PURE__ */ new Map();
689
+ async function rememberFile(path) {
690
+ try {
691
+ const s = await stat(path);
692
+ seen.set(path, { mtimeMs: s.mtimeMs, size: s.size });
693
+ } catch {
694
+ seen.delete(path);
695
+ }
696
+ }
697
+ async function hasChangedSinceRead(path) {
698
+ const known = seen.get(path);
699
+ if (!known) return true;
700
+ try {
701
+ const s = await stat(path);
702
+ return s.mtimeMs !== known.mtimeMs || s.size !== known.size;
703
+ } catch {
704
+ return true;
705
+ }
706
+ }
707
+
653
708
  // ../server/src/services/crypto-helpers.ts
654
709
  import { randomBytes as randomBytes2, createCipheriv as createCipheriv2, createDecipheriv as createDecipheriv2 } from "crypto";
655
710
  var ALGORITHM2 = "aes-256-gcm";
@@ -1204,7 +1259,17 @@ var ProcessStatusSchema = z9.object({
1204
1259
  startedAt: z9.coerce.date().nullable().optional(),
1205
1260
  restartCount: z9.number().int().nonnegative().default(0),
1206
1261
  uptime: z9.number().nonnegative().default(0),
1207
- healthStatus: HealthStatusSchema.default("unknown")
1262
+ healthStatus: HealthStatusSchema.default("unknown"),
1263
+ /**
1264
+ * Le répertoire où le processus s'exécute VRAIMENT, absolutisé par l'agent.
1265
+ *
1266
+ * Rapporté par l'agent plutôt que déduit de la config : entre le `cwd` de la
1267
+ * commande, celui du service, l'ancrage sur le projet et les variables que
1268
+ * l'agent étend lui-même, la valeur affichée n'aurait rien prouvé. Ce qui
1269
+ * intéresse quand un service tourne contre le mauvais dépôt, c'est le chemin
1270
+ * final — y compris quand il retombe sur le répertoire de l'agent.
1271
+ */
1272
+ cwd: z9.string().max(4096).nullable().optional()
1208
1273
  });
1209
1274
 
1210
1275
  // ../../packages/shared/src/schemas/log.schema.ts
@@ -1566,6 +1631,22 @@ var KanbanCardSchema = z20.object({
1566
1631
  /** Files attached to the card — stored out of band, referenced here. */
1567
1632
  attachments: z20.array(KanbanAttachmentSchema).max(50).default([]),
1568
1633
  order: z20.number().int(),
1634
+ /**
1635
+ * La priorité de la carte, de 1 à 10 — 10 étant le plus urgent.
1636
+ *
1637
+ * Facultative, et absente veut dire « pas de priorité », pas « la plus
1638
+ * basse » : une carte qu'on n'a pas encore arbitrée ne doit pas se ranger
1639
+ * d'office au fond de la pile.
1640
+ */
1641
+ priority: z20.number().int().min(1).max(10).optional(),
1642
+ /**
1643
+ * Les groupes de la carte — des étiquettes libres, posées par l'équipe.
1644
+ *
1645
+ * Rien ne les déclare ailleurs : un groupe existe parce qu'une carte le
1646
+ * porte, et disparaît avec la dernière qui le portait. C'est ce qui permet
1647
+ * d'en créer un en le tapant, sans passer par un écran d'administration.
1648
+ */
1649
+ groups: z20.array(z20.string().min(1).max(60)).max(30).optional(),
1569
1650
  /**
1570
1651
  * La couleur de la carte, en hexadécimal (`#RRGGBB`) — un liseré en haut de
1571
1652
  * la carte, et rien d'autre : ce qu'elle veut dire appartient à l'équipe.
@@ -1993,12 +2074,12 @@ function applyToArray(arr, next) {
1993
2074
  const wanted = next.map(identityOf);
1994
2075
  const wantedCount = /* @__PURE__ */ new Map();
1995
2076
  for (const k of wanted) wantedCount.set(k, (wantedCount.get(k) ?? 0) + 1);
1996
- const seen = /* @__PURE__ */ new Map();
2077
+ const seen2 = /* @__PURE__ */ new Map();
1997
2078
  for (let i = arr.length - 1; i >= 0; i--) {
1998
2079
  const key = identityOfY(arr.get(i));
1999
- const used = seen.get(key) ?? 0;
2080
+ const used = seen2.get(key) ?? 0;
2000
2081
  if (used >= (wantedCount.get(key) ?? 0)) arr.delete(i, 1);
2001
- else seen.set(key, used + 1);
2082
+ else seen2.set(key, used + 1);
2002
2083
  }
2003
2084
  for (let j = 0; j < next.length; j++) {
2004
2085
  const key = wanted[j];
@@ -2059,6 +2140,15 @@ var EnvironmentStore = class {
2059
2140
  * chiffrée : c'est ce que retient cette liste. Voir `keepUnreadableSecrets`.
2060
2141
  */
2061
2142
  unreadableSecrets = /* @__PURE__ */ new Map();
2143
+ /**
2144
+ * Coffres dont le fichier a bougé depuis la lecture.
2145
+ *
2146
+ * On ne les réécrit pas. Ni avec notre copie — elle décrirait l'état d'avant
2147
+ * la réparation — ni sans elle, ce qui effacerait les secrets qu'elle
2148
+ * protège. Entre les deux, la seule issue sûre est de ne pas toucher au
2149
+ * fichier et de laisser le prochain chargement faire foi.
2150
+ */
2151
+ staleRoots = /* @__PURE__ */ new Set();
2062
2152
  listeners = /* @__PURE__ */ new Set();
2063
2153
  /** Notified after every persisted mutation, for the cloud sync bridge. */
2064
2154
  onChange(fn) {
@@ -2075,6 +2165,43 @@ var EnvironmentStore = class {
2075
2165
  roots = /* @__PURE__ */ new Map();
2076
2166
  /** L'organisation d'où vient un environnement reçu du cloud — voir `vaultOf`. */
2077
2167
  remoteOrgs = /* @__PURE__ */ new Map();
2168
+ /**
2169
+ * Oublier ce qui a été lu, pour tout relire sous la clé courante.
2170
+ *
2171
+ * Appelé après l'adoption d'une clé d'organisation : le disque vient d'être
2172
+ * re-chiffré sous les pieds du store, si bien que sa mémoire décrit un état
2173
+ * qui n'existe plus. La laisser en place n'affichait pas seulement des
2174
+ * comptes périmés — la sauvegarde suivante réécrivait l'ancien chiffré
2175
+ * par-dessus le nouveau, et défaisait l'adoption.
2176
+ */
2177
+ resetCache() {
2178
+ this.environments.clear();
2179
+ this.diskEncryptedSlots.clear();
2180
+ this.unreadableSecrets.clear();
2181
+ this.roots.clear();
2182
+ this.remoteOrgs.clear();
2183
+ this.loaded = false;
2184
+ this.notify();
2185
+ }
2186
+ /**
2187
+ * Combien de secrets ce coffre garde chiffrés sans savoir les ouvrir, par
2188
+ * organisation (`null` pour la machine).
2189
+ *
2190
+ * Ils sont déjà préservés à l'écriture (`keepUnreadableSecrets`) ; ce qui
2191
+ * manquait, c'est de le dire. Un secret qui s'affiche vide et se sauvegarde
2192
+ * intact est rassurant sur le disque et déroutant à l'écran.
2193
+ */
2194
+ async unreadableByVault() {
2195
+ await this.load();
2196
+ const out = /* @__PURE__ */ new Map();
2197
+ for (const [environmentId, failed] of this.unreadableSecrets) {
2198
+ if (!failed.size) continue;
2199
+ const environment = this.environments.get(environmentId);
2200
+ const vault = (environment ? this.vaultOf(environment) : void 0) ?? null;
2201
+ out.set(vault, (out.get(vault) ?? 0) + failed.size);
2202
+ }
2203
+ return out;
2204
+ }
2078
2205
  getFilePath(root) {
2079
2206
  return join3(root, FILENAME2);
2080
2207
  }
@@ -2218,6 +2345,7 @@ var EnvironmentStore = class {
2218
2345
  for (const root of await allVaultRoots()) {
2219
2346
  try {
2220
2347
  const raw = await readFile3(this.getFilePath(root), "utf-8");
2348
+ await rememberFile(this.getFilePath(root));
2221
2349
  const data = JSON.parse(raw);
2222
2350
  const clash = data.find((e) => this.environments.has(e.id) && this.roots.get(e.id) !== root);
2223
2351
  if (clash) {
@@ -2226,9 +2354,9 @@ var EnvironmentStore = class {
2226
2354
  }
2227
2355
  for (const e of data) {
2228
2356
  this.diskEncryptedSlots.set(e.id, this.extractEncryptedCache(e));
2229
- const decrypted = this.decryptEnvironment(e);
2230
- this.environments.set(e.id, decrypted);
2231
2357
  this.roots.set(e.id, root);
2358
+ const decrypted = this.decryptEnvironment(e, vaultIdOfRoot(root));
2359
+ this.environments.set(e.id, decrypted);
2232
2360
  }
2233
2361
  } catch {
2234
2362
  }
@@ -2241,7 +2369,20 @@ var EnvironmentStore = class {
2241
2369
  * another vault must not survive in the old one, and a `[]` left behind would
2242
2370
  * keep (or recreate) a `.runeya` in a directory that holds nothing.
2243
2371
  */
2372
+ /**
2373
+ * Repérer les coffres réparés sous nos pieds, avant d'écrire.
2374
+ *
2375
+ * Le test est fait ici, une fois par sauvegarde, plutôt que par
2376
+ * environnement : c'est le fichier du coffre qui change, pas la variable.
2377
+ */
2378
+ async markStaleRoots() {
2379
+ this.staleRoots.clear();
2380
+ for (const root of new Set(this.roots.values())) {
2381
+ if (await hasChangedSinceRead(this.getFilePath(root))) this.staleRoots.add(root);
2382
+ }
2383
+ }
2244
2384
  async save() {
2385
+ await this.markStaleRoots();
2245
2386
  const byRoot = /* @__PURE__ */ new Map();
2246
2387
  for (const root of this.roots.values()) {
2247
2388
  if (!isVaultConflicted(root)) byRoot.set(root, []);
@@ -2258,6 +2399,12 @@ var EnvironmentStore = class {
2258
2399
  else byRoot.set(root, [prepared]);
2259
2400
  }
2260
2401
  for (const [root, environments] of byRoot) {
2402
+ if (this.staleRoots.has(root)) {
2403
+ console.warn(
2404
+ `[environment-store] ${this.getFilePath(root)} a chang\xE9 depuis sa lecture \u2014 \xE9criture ignor\xE9e pour ne pas \xE9craser une r\xE9paration faite en dehors du serveur.`
2405
+ );
2406
+ continue;
2407
+ }
2261
2408
  const filePath = this.getFilePath(root);
2262
2409
  if (environments.length === 0) {
2263
2410
  await rm(filePath, { force: true }).catch(() => {
@@ -2269,6 +2416,7 @@ var EnvironmentStore = class {
2269
2416
  await writeFile3(tmpPath, JSON.stringify(environments, null, 2), "utf-8");
2270
2417
  await rename2(tmpPath, filePath);
2271
2418
  await chmod2(filePath, 384);
2419
+ await rememberFile(filePath);
2272
2420
  }
2273
2421
  this.notify();
2274
2422
  }
@@ -2628,6 +2776,23 @@ var ServiceStore = class {
2628
2776
  * dit la même chose que le coffre.
2629
2777
  */
2630
2778
  remoteOrgs = /* @__PURE__ */ new Map();
2779
+ /**
2780
+ * Oublier ce qui a été lu, pour tout relire sous la clé courante.
2781
+ *
2782
+ * Appelé après l'adoption d'une clé d'organisation : le disque vient d'être
2783
+ * re-chiffré sous les pieds du store, si bien que sa mémoire décrit un état
2784
+ * qui n'existe plus. La laisser en place n'affichait pas seulement des
2785
+ * comptes périmés — la sauvegarde suivante réécrivait l'ancien chiffré
2786
+ * par-dessus le nouveau, et défaisait l'adoption.
2787
+ */
2788
+ resetCache() {
2789
+ this.services.clear();
2790
+ this.diskForm.clear();
2791
+ this.roots.clear();
2792
+ this.remoteOrgs.clear();
2793
+ this.loaded = false;
2794
+ this.notify();
2795
+ }
2631
2796
  getFilePath(root) {
2632
2797
  return join4(root, FILENAME3);
2633
2798
  }
@@ -3918,6 +4083,7 @@ export {
3918
4083
  hasEncryptionKey,
3919
4084
  getEncryptionKey,
3920
4085
  markVaultLocked,
4086
+ isVaultLocked,
3921
4087
  clearVaultLock,
3922
4088
  ensureEncryptionKey,
3923
4089
  setEncryptionKey,
@@ -3928,6 +4094,8 @@ export {
3928
4094
  vaultIdOfRoot,
3929
4095
  vaultFor,
3930
4096
  stampOrgCloud,
4097
+ rememberOrgName,
4098
+ readOrgNames,
3931
4099
  readOrgClouds,
3932
4100
  listOrgVaults,
3933
4101
  listCloudVaults,
@@ -3980,6 +4148,8 @@ export {
3980
4148
  decryptVariableSlots,
3981
4149
  extractEncryptedVariableSlots,
3982
4150
  isEncryptedValue,
4151
+ rememberFile,
4152
+ hasChangedSinceRead,
3983
4153
  projectKey,
3984
4154
  AmbiguousProjectError,
3985
4155
  registerProjectLoader,
@@ -3998,4 +4168,4 @@ export {
3998
4168
  traefikManager,
3999
4169
  agentManager
4000
4170
  };
4001
- //# sourceMappingURL=chunk-Q2WY6PYX.js.map
4171
+ //# sourceMappingURL=chunk-NLVDO4EC.js.map