@runeya/runeya 2.0.44 → 2.0.45

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 (305) hide show
  1. package/agent-manager-RQEJLSSF.js +7 -0
  2. package/{chunk-NJJMESIY.js → chunk-B6C5AXMK.js} +42 -10
  3. package/chunk-B6C5AXMK.js.map +1 -0
  4. package/index.js +1 -1
  5. package/package.json +1 -1
  6. package/{src-7CJJBMY3.js → src-ZKQETCHR.js} +229 -67
  7. package/src-ZKQETCHR.js.map +1 -0
  8. package/web/assets/AgentScalarChatInterface.vue-IDhv2vYG.js +13 -0
  9. package/web/assets/AgentTerminalPage-BNUuSKXa.js +1 -0
  10. package/web/assets/AiChatPage-i_HxoGlU.js +1 -0
  11. package/web/assets/{AppLayout-BBifPBJu.css → AppLayout-Bqs7ug1K.css} +1 -1
  12. package/web/assets/AppLayout-BtVQtKnv.js +1 -0
  13. package/web/assets/AuditPage-D__LOvkN.js +1 -0
  14. package/web/assets/CloudAccountPage-CEf5yWA2.js +1 -0
  15. package/web/assets/CloudAccountPage-ll1uAGyN.js +1 -0
  16. package/web/assets/CloudMessagingPage-B63PMN88.js +2 -0
  17. package/web/assets/DashboardPage-XFl45skz.js +1 -0
  18. package/web/assets/{EditorIcon-CNesALrK.js → EditorIcon-DHxnxi15.js} +2 -2
  19. package/web/assets/{EnvironmentForm-vcLpp9mR.js → EnvironmentForm-D_JXws5q.js} +2 -2
  20. package/web/assets/EnvironmentFormPage-7YhkQZnF.js +1 -0
  21. package/web/assets/EnvironmentListPage-DyNlU_ys.js +1 -0
  22. package/web/assets/EnvironmentSelector-zX2RSq7p.js +1 -0
  23. package/web/assets/KanbanBoardPage-CYiVnEsW.js +4 -0
  24. package/web/assets/KanbanListPage-DA8VLR_A.js +1 -0
  25. package/web/assets/LaunchProjectPage-B7ch8hBp.js +1 -0
  26. package/web/assets/LaunchServicesPage-BxbnthGj.js +1 -0
  27. package/web/assets/LogViewer-DfbwNIUv.js +3 -0
  28. package/web/assets/ProcessControls-CZV4iizX.js +1 -0
  29. package/web/assets/ProcessDetailPage-CeatPGNs.js +1 -0
  30. package/web/assets/{ProcessMetrics-dy3TGmKO.js → ProcessMetrics-C5U4PvOh.js} +2 -2
  31. package/web/assets/ProjectDetailPage-BaZIvewr.js +1 -0
  32. package/web/assets/ProjectListPage-BreaFS_h.js +1 -0
  33. package/web/assets/RandomJobTestPage-ycTTIaQd.js +2 -0
  34. package/web/assets/ScenarioEditorPage-C1EV-XSW.js +14 -0
  35. package/web/assets/SendToChatDialog-28Mlo-hb.js +1 -0
  36. package/web/assets/ServiceControlsBar-CdWFcbXZ.js +1 -0
  37. package/web/assets/ServiceDetailPage-DAq3ofhT.js +2 -0
  38. package/web/assets/ServiceFormPage-BER91b-6.js +1 -0
  39. package/web/assets/SettingsPage-B1jaxJGj.js +2062 -0
  40. package/web/assets/UnlockPage-DE_HJy8h.css +1 -0
  41. package/web/assets/UnlockPage-ktTtBOr2.js +1 -0
  42. package/web/assets/VariablesTable-B9Nhdk1_.js +1 -0
  43. package/web/assets/VaultMigrationPage-BGJ2PP-7.css +1 -0
  44. package/web/assets/VaultMigrationPage-Dy48s3x-.js +1 -0
  45. package/web/assets/VersionBadge-BdlVr8Tg.js +1 -0
  46. package/web/assets/WikiPage-CMqO84ak.js +1 -0
  47. package/web/assets/WikiView-CJDAiZr5.js +1 -0
  48. package/web/assets/add-scalar-classes-pA8osZfz.js +387 -0
  49. package/web/assets/auth-errors-B3tAiztt.js +1 -0
  50. package/web/assets/{autocomplete-egYkKgXN.js → autocomplete-N91is6wh.js} +4 -4
  51. package/web/assets/{basic-shape-diamond.svg-B4ql31Pl.js → basic-shape-diamond.svg-BllfU_oB.js} +1 -1
  52. package/web/assets/{basic-shape-hexagon.svg-Dse435xU.js → basic-shape-hexagon.svg-DW5bh6IP.js} +1 -1
  53. package/web/assets/{basic-shape-primary-circle-ellipse-round.svg-Ca80MM2U.js → basic-shape-primary-circle-ellipse-round.svg-9uuUiv5o.js} +1 -1
  54. package/web/assets/{basic-shape-primary-square-rectangle.svg-BzMOacCe.js → basic-shape-primary-square-rectangle.svg-B64Eo9nB.js} +1 -1
  55. package/web/assets/{basic-shape-shield.svg-CDpbzQoc.js → basic-shape-shield.svg-DOPLFilS.js} +1 -1
  56. package/web/assets/{browser-B6yA2X2D.js → browser-DueDd93t.js} +1 -1
  57. package/web/assets/{browser-CASFdUlr.js → browser-SZtn0i0X.js} +1 -1
  58. package/web/assets/card-COABLB3K.js +32 -0
  59. package/web/assets/{checkbox-DX42-aCG.js → checkbox-B_GT2gG5.js} +3 -3
  60. package/web/assets/{chip-CDVNzEoh.js → chip--NXSwDoR.js} +2 -2
  61. package/web/assets/{client-wwEU7lJc.js → client-BhFbvoQd.js} +2 -2
  62. package/web/assets/cloud-chat.store-DEKUnKhm.js +1 -0
  63. package/web/assets/cloud-session-BSsRB6P3.js +1 -0
  64. package/web/assets/column-BtS8Diqq.js +907 -0
  65. package/web/assets/{computer-device-desktop-monitor.svg-QvdUlZtb.js → computer-device-desktop-monitor.svg-BzjC7P3F.js} +1 -1
  66. package/web/assets/{computer-device-desktop.svg-C9Sr1yFe.js → computer-device-desktop.svg-BecVq71S.js} +1 -1
  67. package/web/assets/{computer-device-laptop.svg-CQbvy4qG.js → computer-device-laptop.svg-Dme_bl6m.js} +1 -1
  68. package/web/assets/{computer-device-mobile-phone-android-samsung-back.svg-DRwNxxcl.js → computer-device-mobile-phone-android-samsung-back.svg-DCxv5fub.js} +1 -1
  69. package/web/assets/{computer-device-mobile-phone-android-samsung.svg-DZiXwi21.js → computer-device-mobile-phone-android-samsung.svg--sSW4sfn.js} +1 -1
  70. package/web/assets/{computer-device-mobile-phone-iphone-x-back.svg-D1eMrnSS.js → computer-device-mobile-phone-iphone-x-back.svg-h5Po-TDX.js} +1 -1
  71. package/web/assets/{computer-device-mobile-phone-iphone-x.svg-MiK72cdg.js → computer-device-mobile-phone-iphone-x.svg-C2Uy1WjT.js} +1 -1
  72. package/web/assets/{computer-device-mobile-tablet-touch.svg-DkPhnoi4.js → computer-device-mobile-tablet-touch.svg-CaeEG4WK.js} +1 -1
  73. package/web/assets/{computer-device-mobile-tablet.svg-CDuR2wiu.js → computer-device-mobile-tablet.svg-BpXku7YF.js} +1 -1
  74. package/web/assets/{computer-device-network-ethernet-cat6.svg-BUBM3jji.js → computer-device-network-ethernet-cat6.svg-aNAbOQCS.js} +1 -1
  75. package/web/assets/{computer-device-network-lan-www.svg-28lu85cP.js → computer-device-network-lan-www.svg-ClT8Xavc.js} +1 -1
  76. package/web/assets/{computer-device-network-wifi-connection.svg-BGEvw9iY.js → computer-device-network-wifi-connection.svg-BBVSSCLm.js} +1 -1
  77. package/web/assets/{computer-device-network-wifi-router.svg-D8xYZAWK.js → computer-device-network-wifi-router.svg-DHEuRciK.js} +1 -1
  78. package/web/assets/{cssMode-Dvq-MecZ.js → cssMode-X03N01aE.js} +1 -1
  79. package/web/assets/{divider-B5VXYGmb.js → divider-B8p6MBJX.js} +2 -2
  80. package/web/assets/{ecology-science-erlenmeyer-flask.svg-Ct1P3ToA.js → ecology-science-erlenmeyer-flask.svg-2iSCfC0H.js} +1 -1
  81. package/web/assets/{fieldset-CIscNGD5.js → fieldset-B9fGvXQ_.js} +2 -2
  82. package/web/assets/{freemarker2-CqFs1Djg.js → freemarker2-BR_8OWIK.js} +1 -1
  83. package/web/assets/{handlebars-i2b7C1iO.js → handlebars-B3tZa--p.js} +1 -1
  84. package/web/assets/{html-BBmJW8Cg.js → html-BZBK1HMw.js} +1 -1
  85. package/web/assets/{htmlMode-DPAh_Y5y.js → htmlMode-BVt6cDn5.js} +1 -1
  86. package/web/assets/{image-flash-lightning.svg-BSAfy_cZ.js → image-flash-lightning.svg-CGclepmP.js} +1 -1
  87. package/web/assets/{image-picture-flower.svg-4AEEapQs.js → image-picture-flower.svg-Cl3xtcRn.js} +1 -1
  88. package/web/assets/{index-Br0Stb0u.js → index-BPW4FgHw.js} +299 -299
  89. package/web/assets/{interface-alert-exclamation-diamond.svg-DclDPUml.js → interface-alert-exclamation-diamond.svg-CmooSrfz.js} +1 -1
  90. package/web/assets/{interface-alert-exclamation-triangle-warning.svg-AQlrdI6-.js → interface-alert-exclamation-triangle-warning.svg-CkbjudIG.js} +1 -1
  91. package/web/assets/{interface-alert-information-circle.svg-C70b_ORM.js → interface-alert-information-circle.svg-BVOJniJB.js} +1 -1
  92. package/web/assets/{interface-award-crown.svg-D-uMX_D5.js → interface-award-crown.svg-BtCDhizx.js} +1 -1
  93. package/web/assets/{interface-bookmark.svg-DdNPAQF4.js → interface-bookmark-tag.svg-DpZpJCxG.js} +1 -1
  94. package/web/assets/{interface-bookmark-tag.svg-BBO8UdsI.js → interface-bookmark.svg-CI3C_CEm.js} +1 -1
  95. package/web/assets/{interface-calendar-date-one.svg-C5m8QsAn.js → interface-calendar-date-one.svg-DeSRwc9I.js} +1 -1
  96. package/web/assets/{interface-content-book-open-pages.svg-D9gk_nRv.js → interface-content-book-open-pages.svg-CsYHQiGg.js} +1 -1
  97. package/web/assets/{interface-content-book-page.svg-z_oQ-Kg8.js → interface-content-book-page.svg-DusdhNh8.js} +1 -1
  98. package/web/assets/{interface-content-file.svg-CLt_X895.js → interface-content-file.svg-BZpRl2vg.js} +1 -1
  99. package/web/assets/{interface-content-folder.svg-BW_H9jDi.js → interface-content-folder.svg-BHyjskUa.js} +1 -1
  100. package/web/assets/interface-content-folder.svg-CE1AjWC2.js +1 -0
  101. package/web/assets/{interface-copy-clipboard.svg-D89FD0hT.js → interface-copy-clipboard.svg-CU8KQ56k.js} +1 -1
  102. package/web/assets/{interface-edit-attachment.svg-CSax0FWg.js → interface-edit-attachment.svg-sLGtjIVg.js} +1 -1
  103. package/web/assets/{interface-edit-binocular.svg-C1t3PxkA.js → interface-edit-binocular.svg-Kr0btLKm.js} +1 -1
  104. package/web/assets/{interface-edit-magic-wand.svg-P-HVaqcv.js → interface-edit-magic-wand.svg-DuZj2AYt.js} +1 -1
  105. package/web/assets/{interface-edit-tool-paint-roller.svg-BCd-B5Li.js → interface-edit-tool-paint-roller.svg-Da6-5RAS.js} +1 -1
  106. package/web/assets/{interface-edit-tool-pencil.svg-Dy_8C148.js → interface-edit-tool-pencil.svg-BoPw8ms_.js} +1 -1
  107. package/web/assets/{interface-favorite-award.svg-BOUSPQD8.js → interface-favorite-award.svg-C3ITWbq3.js} +1 -1
  108. package/web/assets/{interface-favorite-flag.svg-yj88TNA3.js → interface-favorite-flag.svg-GCr6RXH0.js} +1 -1
  109. package/web/assets/{interface-favorite-heart.svg-CZCH_6x9.js → interface-favorite-heart.svg-BY9dqVB0.js} +1 -1
  110. package/web/assets/{interface-favorite-star.svg-CTyJilUu.js → interface-favorite-star.svg-uA4scusZ.js} +1 -1
  111. package/web/assets/{interface-favorite-stars-sparkles.svg-BOBjnmtV.js → interface-favorite-stars-sparkles.svg-BdSCoHYl.js} +1 -1
  112. package/web/assets/{interface-hierarchy-flowchart.svg-B0S-kTTJ.js → interface-hierarchy-flowchart.svg-CxNFchvq.js} +1 -1
  113. package/web/assets/{interface-home-house.svg-Dku5UxpT.js → interface-home-house.svg-DkrKouBb.js} +1 -1
  114. package/web/assets/{interface-hyperlink.svg-CJwD4AsW.js → interface-hyperlink.svg-I-GxkQJY.js} +1 -1
  115. package/web/assets/{interface-lighting-brightness.svg-DwLV7f-n.js → interface-lighting-brightness.svg-BJR3bOQ-.js} +1 -1
  116. package/web/assets/{interface-lock-closed.svg-9XB_WC1w.js → interface-lock-closed.svg-C0b_bVUd.js} +1 -1
  117. package/web/assets/{interface-lock-open-unlock.svg-DppiuvYV.js → interface-lock-open-unlock.svg-BtmiNLaj.js} +1 -1
  118. package/web/assets/{interface-login-key.svg-C4pLwiam.js → interface-login-key.svg-DmYxn7RL.js} +1 -1
  119. package/web/assets/{interface-search.svg-BfLZwjYy.js → interface-search.svg-C1pVTe7C.js} +1 -1
  120. package/web/assets/{interface-setting-cog.svg-Cv8hVyGq.js → interface-setting-cog.svg-C42e2OTW.js} +1 -1
  121. package/web/assets/{interface-share-megaphone-bullhorn.svg-BVlc-dhY.js → interface-share-megaphone-bullhorn.svg-o9tOlEh2.js} +1 -1
  122. package/web/assets/{interface-share-rocket.svg-ChHMNOi9.js → interface-share-rocket.svg-Da9sYj_t.js} +1 -1
  123. package/web/assets/{interface-share-satellite.svg-Bh7sMl8A.js → interface-share-satellite.svg-B20KpyfR.js} +1 -1
  124. package/web/assets/{interface-share-space-ship.svg-CcQ-3-tc.js → interface-share-space-ship.svg-B16T8uJ6.js} +1 -1
  125. package/web/assets/{interface-share.svg-CCg2aMOy.js → interface-share.svg-Bwk_5ajK.js} +1 -1
  126. package/web/assets/{interface-signal-square.svg-CU31YeuE.js → interface-signal-square.svg-CAVSymjP.js} +1 -1
  127. package/web/assets/{interface-time-clock-circle.svg-BUUuMbzp.js → interface-time-clock-circle.svg-fjss8ru1.js} +1 -1
  128. package/web/assets/{interface-time-hour-glass.svg-W7cfslag.js → interface-time-hour-glass.svg-DaTX8FMo.js} +1 -1
  129. package/web/assets/{interface-users-multiple.svg-DjyQMEmj.js → interface-users-multiple.svg-D-EFFOw7.js} +1 -1
  130. package/web/assets/{interface-weather-moon.svg-C2sv5n1P.js → interface-weather-moon.svg-CrrnEbU7.js} +1 -1
  131. package/web/assets/{javascript-D-ps7-Fj.js → javascript-C6MNjbYD.js} +1 -1
  132. package/web/assets/{jsonMode-C8spHQzS.js → jsonMode-CA2Tf-2T.js} +1 -1
  133. package/web/assets/{liquid-DqSbumgt.js → liquid-DBKs6KRv.js} +1 -1
  134. package/web/assets/{lspLanguageFeatures-CY8c9PkF.js → lspLanguageFeatures-BPpii0dk.js} +1 -1
  135. package/web/assets/{mail-chat-bubble-square.svg-C3X6jNwQ.js → mail-chat-bubble-square.svg-lR62-873.js} +1 -1
  136. package/web/assets/{mail-send-email-paper-airplane.svg-DAIGQOyP.js → mail-send-email-paper-airplane.svg-Bkg6W9qr.js} +1 -1
  137. package/web/assets/{mail-send-envelope.svg-CA0S-i50.js → mail-send-envelope.svg-CbNm7aaE.js} +1 -1
  138. package/web/assets/{mdx-DvZHY6Gn.js → mdx-nUeiRsUz.js} +1 -1
  139. package/web/assets/{message-Cj-E8qHk.js → message-D6qRK6Jo.js} +2 -2
  140. package/web/assets/{minus-Bk1xGw-l.js → minus-DoeouXPt.js} +2 -2
  141. package/web/assets/modal-OTFsRnDn.js +1 -0
  142. package/web/assets/modal-kvCAAvat.js +5 -0
  143. package/web/assets/{money-cashier-receipt.svg-TBP6hXoT.js → money-cashier-receipt.svg-DV9XlLpx.js} +1 -1
  144. package/web/assets/{money-currency-dollar-pay.svg-DYwjJWCD.js → money-currency-dollar-pay.svg-_jLRI9-z.js} +1 -1
  145. package/web/assets/{money-graph-arrow-increase.svg-BR1Gr97f.js → money-graph-arrow-increase.svg-Tnvl7X21.js} +1 -1
  146. package/web/assets/{money-graph-bar-chart-increase.svg-BNAoJq2R.js → money-graph-bar-chart-increase.svg-uo4bmQha.js} +1 -1
  147. package/web/assets/multiselect-BJUl25Yx.js +251 -0
  148. package/web/assets/{nature-ecology-leaf.svg-CHJE8I4R.js → nature-ecology-leaf.svg-CFuPp8bO.js} +1 -1
  149. package/web/assets/{password-tS13MOUm.js → password-Cmgp-gwd.js} +4 -4
  150. package/web/assets/{phone-telephone.svg-CJQLiuXQ.js → phone-telephone.svg-CPKz1YHt.js} +1 -1
  151. package/web/assets/{plus-CB_mX6Lf.js → plus-s_OJLoyY.js} +6 -6
  152. package/web/assets/process.store-dKQhHReg.js +1 -0
  153. package/web/assets/{programming-bug.svg-BXjb-M36.js → programming-bug.svg-fxsVnaeH.js} +1 -1
  154. package/web/assets/{programming-cloud.svg-gt7FIwaa.js → programming-cloud.svg-BnU51aLl.js} +1 -1
  155. package/web/assets/{programming-computer-database-server.svg-BtO4lpAh.js → programming-computer-database-server.svg-BZgDGKJW.js} +1 -1
  156. package/web/assets/{programming-computer-database.svg-DQ-dZqw4.js → programming-computer-database.svg-B5S5rAvT.js} +1 -1
  157. package/web/assets/{programming-module-four-layout.svg-laiWKIf7.js → programming-module-four-layout.svg-QRzEO0n6.js} +1 -1
  158. package/web/assets/{programming-module-three.svg--oNt7CzW.js → programming-module-three.svg-CM_P7Vlm.js} +1 -1
  159. package/web/assets/{programming-module.svg-C9Ai98wU.js → programming-module.svg-3GTFIIEX.js} +1 -1
  160. package/web/assets/{programming-script-code.svg-DhbU3qfH.js → programming-script-code.svg-KtOz6fyB.js} +1 -1
  161. package/web/assets/{python-BQIuDGub.js → python-Dm07kugX.js} +1 -1
  162. package/web/assets/{razor-C_wqRSVy.js → razor-bhq-c8Pc.js} +1 -1
  163. package/web/assets/router-BamtimoJ.js +1 -0
  164. package/web/assets/settings.store-DkR2x1Gd.js +1 -0
  165. package/web/assets/{shopping-cart.svg-D-mwPXiz.js → shopping-cart.svg-z5f-zUgD.js} +1 -1
  166. package/web/assets/{shopping-gift-present.svg-CplnpU1q.js → shopping-gift-present.svg-BuM8QoB9.js} +1 -1
  167. package/web/assets/{shopping-shipping-box-parcel-package.svg-D0k-fVoU.js → shopping-shipping-box-parcel-package.svg-CWw8lTQj.js} +1 -1
  168. package/web/assets/src-BNgzvl34.js +1 -0
  169. package/web/assets/{src-D0-roPyX.js → src-G9u1k3Z0.js} +33 -33
  170. package/web/assets/{tabpanel-BXlQXZ2Q.js → tabpanel-C_MAwvD8.js} +3 -3
  171. package/web/assets/{tag-new-circle.svg-msSLdpvt.js → tag-new-circle.svg-C2PwVxge.js} +1 -1
  172. package/web/assets/{travel-map-earth-globe.svg-BfNt3fj_.js → travel-map-earth-globe.svg-Cva7Lt5l.js} +1 -1
  173. package/web/assets/trpc-BdB_KPws.js +1 -0
  174. package/web/assets/{tsMode-B-iW-fA7.js → tsMode-CiozJEFc.js} +1 -1
  175. package/web/assets/{typescript-X0FI4nNI.js → typescript-DjFjYcp9.js} +1 -1
  176. package/web/assets/useAiChatDrawer-DpUd_4Sa.js +1 -0
  177. package/web/assets/useCloudOrg-DcDNmhwp.js +1 -0
  178. package/web/assets/{xml-BGZfBXt_.js → xml-_A4d3R4e.js} +1 -1
  179. package/web/assets/{yaml-Bu_QXl8g.js → yaml-B2BOTmvS.js} +1 -1
  180. package/web/index.html +1 -1
  181. package/agent-manager-2I47P7CA.js +0 -7
  182. package/chunk-NJJMESIY.js.map +0 -1
  183. package/src-7CJJBMY3.js.map +0 -1
  184. package/web/assets/AgentScalarChatInterface.vue-DJWCM29h.js +0 -13
  185. package/web/assets/AgentTerminalPage-DStCvPsn.js +0 -1
  186. package/web/assets/AiChatPage-B74k4w7z.js +0 -1
  187. package/web/assets/AppLayout-Crr8vrnA.js +0 -1
  188. package/web/assets/AuditPage-ya7Q_-y8.js +0 -1
  189. package/web/assets/CloudAccountPage--zPhBcyX.js +0 -1
  190. package/web/assets/CloudAccountPage-BsXQlx4x.js +0 -1
  191. package/web/assets/CloudMessagingPage-sXT8SLY4.js +0 -2
  192. package/web/assets/DashboardPage-y4tWdya9.js +0 -1
  193. package/web/assets/EnvironmentFormPage-BSeIsEH-.js +0 -1
  194. package/web/assets/EnvironmentListPage-DtSTzbmv.js +0 -1
  195. package/web/assets/EnvironmentSelector-Dbe1Ilq8.js +0 -1
  196. package/web/assets/KanbanBoardPage-PkAwHbvp.js +0 -4
  197. package/web/assets/KanbanListPage-BphN58qM.js +0 -1
  198. package/web/assets/LaunchProjectPage-ClVBkFsC.js +0 -1
  199. package/web/assets/LaunchServicesPage-C4C8l5wP.js +0 -1
  200. package/web/assets/LogViewer-DeWk02W9.js +0 -3
  201. package/web/assets/ProcessControls-uUzThwLe.js +0 -1
  202. package/web/assets/ProcessDetailPage-Dj9-KZqI.js +0 -1
  203. package/web/assets/ProjectDetailPage-Prcd6a6y.js +0 -1
  204. package/web/assets/ProjectListPage-C3-QvMAf.js +0 -1
  205. package/web/assets/RandomJobTestPage-B5USJ2CQ.js +0 -2
  206. package/web/assets/ScenarioEditorPage-D0XY_WOp.js +0 -14
  207. package/web/assets/SendToChatDialog-BSa5s8PE.js +0 -1
  208. package/web/assets/ServiceControlsBar-CRVx5mMr.js +0 -1
  209. package/web/assets/ServiceDetailPage-DzxAxNdH.js +0 -2
  210. package/web/assets/ServiceFormPage-_3cU1hqt.js +0 -1
  211. package/web/assets/SettingsPage-B0mpjswp.js +0 -2062
  212. package/web/assets/UnlockPage-DAvZd_hY.js +0 -1
  213. package/web/assets/UnlockPage-cWvMhfyi.css +0 -1
  214. package/web/assets/VariablesTable-CoeTpHQw.js +0 -1
  215. package/web/assets/VersionBadge-D_oFrbj6.js +0 -1
  216. package/web/assets/WikiPage-HEXd9iFN.js +0 -1
  217. package/web/assets/WikiView-D_gNl0pw.js +0 -1
  218. package/web/assets/add-scalar-classes-B5XCUsCH.js +0 -387
  219. package/web/assets/auth-errors-C44F3O24.js +0 -1
  220. package/web/assets/card-DLRYSKgj.js +0 -32
  221. package/web/assets/cloud-chat.store-2Mksi6iL.js +0 -1
  222. package/web/assets/cloud-session-C0DzgONu.js +0 -1
  223. package/web/assets/column-TZbNKWtE.js +0 -907
  224. package/web/assets/interface-content-folder.svg-BJQbuSNW.js +0 -1
  225. package/web/assets/modal-Bi7DAFyz.js +0 -1
  226. package/web/assets/modal-BtlOliEo.js +0 -5
  227. package/web/assets/multiselect-DI4UWQQc.js +0 -251
  228. package/web/assets/process.store-DCXMZqHz.js +0 -1
  229. package/web/assets/router-B5tVgvg3.js +0 -1
  230. package/web/assets/settings.store-p3x3oG-N.js +0 -1
  231. package/web/assets/src-B_ytlQOt.js +0 -1
  232. package/web/assets/trpc--zmPP0fK.js +0 -1
  233. package/web/assets/useAiChatDrawer-CmZm2O_C.js +0 -1
  234. package/web/assets/useCloudOrg-BsMHgwHL.js +0 -1
  235. /package/{agent-manager-2I47P7CA.js.map → agent-manager-RQEJLSSF.js.map} +0 -0
  236. /package/web/assets/{abap-B8xnHZJW.js → abap-lJFTLuI6.js} +0 -0
  237. /package/web/assets/{apex-B69W3sGq.js → apex-Bp0KWav8.js} +0 -0
  238. /package/web/assets/{azcli-Eaai8vgm.js → azcli-DBOe7Uvy.js} +0 -0
  239. /package/web/assets/{bat-CCyh2P9V.js → bat-Dk_NT_by.js} +0 -0
  240. /package/web/assets/{bicep-CyAc2Run.js → bicep-B07Mrlc7.js} +0 -0
  241. /package/web/assets/{cameligo-CJVuMDnv.js → cameligo-DL5eNXGn.js} +0 -0
  242. /package/web/assets/{clojure-DCWtDuXT.js → clojure-BzV2Yqu_.js} +0 -0
  243. /package/web/assets/{coffee-93zwCqZu.js → coffee-Bjlj5hmf.js} +0 -0
  244. /package/web/assets/{cpp-t1qXcBbB.js → cpp-C9oth5qz.js} +0 -0
  245. /package/web/assets/{csharp-Bu0-wvSx.js → csharp-HyGd049S.js} +0 -0
  246. /package/web/assets/{csp-AaiYnRi_.js → csp-DjCDOBuX.js} +0 -0
  247. /package/web/assets/{css-BS-T3bCT.js → css-DIL8RTJ3.js} +0 -0
  248. /package/web/assets/{cypher-QYdwWDet.js → cypher-DX1zPXL5.js} +0 -0
  249. /package/web/assets/{dart-DRQfRz5u.js → dart-BBQZd_ZZ.js} +0 -0
  250. /package/web/assets/{dockerfile-Cf422HaY.js → dockerfile-Cj0CaWYx.js} +0 -0
  251. /package/web/assets/{ecl-DKmCxEZC.js → ecl-BjmWCTJg.js} +0 -0
  252. /package/web/assets/{elixir-DXxuFQwb.js → elixir-3uWoEjXX.js} +0 -0
  253. /package/web/assets/{flow9-BhnEDmps.js → flow9-D4r739e9.js} +0 -0
  254. /package/web/assets/{fsharp-BcdMpySh.js → fsharp-B3ycAx5T.js} +0 -0
  255. /package/web/assets/{go-CUNzU43j.js → go-DFHBjfCl.js} +0 -0
  256. /package/web/assets/{graphql-0GEdoWdT.js → graphql-DBjIbM_e.js} +0 -0
  257. /package/web/assets/{hcl-7aT0BoBu.js → hcl-Buu_1Hsp.js} +0 -0
  258. /package/web/assets/{ini-C2uC_Kkd.js → ini-CgzZhgz_.js} +0 -0
  259. /package/web/assets/{java-BGh_orDD.js → java-BczDO0q5.js} +0 -0
  260. /package/web/assets/{julia-BMkYL7l7.js → julia-B142kn-7.js} +0 -0
  261. /package/web/assets/{kotlin-CaStfl8T.js → kotlin-42XMP7p1.js} +0 -0
  262. /package/web/assets/{less-CpP708lq.js → less-BCIsKRqU.js} +0 -0
  263. /package/web/assets/{lexon-n74w-VMa.js → lexon-DTDOH1dQ.js} +0 -0
  264. /package/web/assets/{lua-DV3MQq-H.js → lua-BrH-CeNs.js} +0 -0
  265. /package/web/assets/{m3-Cclze1bC.js → m3-D-eUeHOI.js} +0 -0
  266. /package/web/assets/{markdown-C8b0Ckdo.js → markdown-DwpSjZTn.js} +0 -0
  267. /package/web/assets/{mips-pWj6zxei.js → mips-DoGTrjVk.js} +0 -0
  268. /package/web/assets/{msdax-DvyywuD0.js → msdax-CQ8McnjQ.js} +0 -0
  269. /package/web/assets/{mysql-CZlMFPhf.js → mysql-Cj3do0ZO.js} +0 -0
  270. /package/web/assets/{objective-c-Dfzs1cqa.js → objective-c-BZbR8TG8.js} +0 -0
  271. /package/web/assets/{pascal-DnvBS6YC.js → pascal-23PRDHRq.js} +0 -0
  272. /package/web/assets/{pascaligo-BqQrNWHm.js → pascaligo-CxasKTLJ.js} +0 -0
  273. /package/web/assets/{perl-PmXI7PaC.js → perl-Dhxz2Lhx.js} +0 -0
  274. /package/web/assets/{pgsql-BSIv6vTg.js → pgsql-BIbUy7yD.js} +0 -0
  275. /package/web/assets/{php-DFl1Flu9.js → php-B5qS9qgM.js} +0 -0
  276. /package/web/assets/{pla-D85akHEG.js → pla-Bolz9fha.js} +0 -0
  277. /package/web/assets/{postiats-BENv2q_G.js → postiats-Ba6dE5lj.js} +0 -0
  278. /package/web/assets/{powerquery-BFkjDbIZ.js → powerquery-2jW3ONgo.js} +0 -0
  279. /package/web/assets/{powershell-YrWnOFV5.js → powershell-CMfBIiJp.js} +0 -0
  280. /package/web/assets/{protobuf-Defuvypk.js → protobuf-BpaquOUj.js} +0 -0
  281. /package/web/assets/{pug-U5vTkfZW.js → pug-cBG82Ydz.js} +0 -0
  282. /package/web/assets/{qsharp-CYAWcALE.js → qsharp-DtqL8Lmt.js} +0 -0
  283. /package/web/assets/{r-DfDvKIQI.js → r-CKLew4sj.js} +0 -0
  284. /package/web/assets/{redis-CfxXb5P7.js → redis-BdDxRU-N.js} +0 -0
  285. /package/web/assets/{redshift-C79hPgxo.js → redshift-X4a4MlqW.js} +0 -0
  286. /package/web/assets/{restructuredtext-8wPbRyeC.js → restructuredtext-LA4Fv05h.js} +0 -0
  287. /package/web/assets/{ruby-QxUAWasq.js → ruby-CibE_WVM.js} +0 -0
  288. /package/web/assets/{rust-HuSf37VN.js → rust-BK6RsiL0.js} +0 -0
  289. /package/web/assets/{sb-Sv7lt4AB.js → sb-BnCCt0Qj.js} +0 -0
  290. /package/web/assets/{scala-DKemzKKU.js → scala-oaBDrVqj.js} +0 -0
  291. /package/web/assets/{scheme-BzHyg2h9.js → scheme-C-wkLC01.js} +0 -0
  292. /package/web/assets/{scss-rEyGzHl_.js → scss-BceVGOJY.js} +0 -0
  293. /package/web/assets/{shell-B0M_8Ipp.js → shell-CxhBAFA5.js} +0 -0
  294. /package/web/assets/{solidity-DBlqOy8H.js → solidity-D9sXgTfx.js} +0 -0
  295. /package/web/assets/{sophia-CvF25coV.js → sophia-C4VBhIEM.js} +0 -0
  296. /package/web/assets/{sparql-Bh-bEONh.js → sparql-DbsK2s9y.js} +0 -0
  297. /package/web/assets/{sql-b2efFD_k.js → sql-CuGfE0wH.js} +0 -0
  298. /package/web/assets/{st-CZYKif4r.js → st-rB6Bqb2h.js} +0 -0
  299. /package/web/assets/{swift--G_pPFZi.js → swift-BtHGe_4T.js} +0 -0
  300. /package/web/assets/{systemverilog-lKrXkwoz.js → systemverilog-CgKnzwU4.js} +0 -0
  301. /package/web/assets/{tcl-BBD-NhPH.js → tcl-DyqQWf87.js} +0 -0
  302. /package/web/assets/{twig-Cp-9q602.js → twig-C980XO5P.js} +0 -0
  303. /package/web/assets/{typespec-CFPGsTQu.js → typespec-CVmA80px.js} +0 -0
  304. /package/web/assets/{vb-CF5A6m2D.js → vb-rdNQv5VQ.js} +0 -0
  305. /package/web/assets/{wgsl-DwzoWMFM.js → wgsl-64oVbimL.js} +0 -0
package/index.js CHANGED
@@ -201,7 +201,7 @@ function listenWithRetry(server, port, host, wss, maxRetries = 20, delay = 500)
201
201
  });
202
202
  }
203
203
  async function main() {
204
- const { createLocalServer, pullEnv, PullEnvError } = await import("./src-7CJJBMY3.js");
204
+ const { createLocalServer, pullEnv, PullEnvError } = await import("./src-ZKQETCHR.js");
205
205
  if (isPullEnv) {
206
206
  if (!serviceArg) {
207
207
  console.error("Error: --service (-s) is required with --pull-env");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@runeya/runeya",
3
- "version": "2.0.44",
3
+ "version": "2.0.45",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "runeya": "./index.js"
@@ -35,8 +35,10 @@ import {
35
35
  clearEncryptionKey,
36
36
  clearPendingLegacyKey,
37
37
  decryptValue,
38
+ decryptValueWith,
38
39
  decryptVariableSlots,
39
40
  encryptValue,
41
+ encryptValueWith,
40
42
  encryptVariableSlots,
41
43
  ensureEncryptionKey,
42
44
  ensureLocalVault,
@@ -54,6 +56,7 @@ import {
54
56
  keyRoot,
55
57
  keyedFilePath,
56
58
  legacyMachineFilePath,
59
+ legacyVaultRoot,
57
60
  listCloudVaults,
58
61
  loadFromEnv,
59
62
  localVaultRoot,
@@ -75,7 +78,7 @@ import {
75
78
  traefikManager,
76
79
  vaultFor,
77
80
  writeEntity
78
- } from "./chunk-NJJMESIY.js";
81
+ } from "./chunk-B6C5AXMK.js";
79
82
 
80
83
  // ../server/src/create-server.ts
81
84
  import express from "express";
@@ -1976,13 +1979,13 @@ var serviceRouter = router({
1976
1979
  remote: service.git?.remote,
1977
1980
  checkReachability: input.checkReachability
1978
1981
  });
1979
- const { exists, actualRemote, unreachable, resolvedCwd, unresolvedVars } = agentResult;
1982
+ const { exists: exists2, actualRemote, unreachable, resolvedCwd, unresolvedVars } = agentResult;
1980
1983
  if (unresolvedVars.length > 0) {
1981
1984
  return { exists: false, canClone: false, unresolvedVars, resolvedCwd, gitMismatch: null };
1982
1985
  }
1983
- const canClone = !!service.git?.remote && (!exists || actualRemote === null);
1986
+ const canClone = !!service.git?.remote && (!exists2 || actualRemote === null);
1984
1987
  let gitMismatch = null;
1985
- if (exists && service.git?.remote && !canClone) {
1988
+ if (exists2 && service.git?.remote && !canClone) {
1986
1989
  if (actualRemote === null) {
1987
1990
  gitMismatch = { actual: null, configured: service.git.remote };
1988
1991
  } else if (actualRemote !== service.git.remote) {
@@ -1991,7 +1994,7 @@ var serviceRouter = router({
1991
1994
  gitMismatch = { actual: actualRemote, configured: service.git.remote, unreachable: true };
1992
1995
  }
1993
1996
  }
1994
- return { exists, canClone, unresolvedVars: [], resolvedCwd, gitMismatch };
1997
+ return { exists: exists2, canClone, unresolvedVars: [], resolvedCwd, gitMismatch };
1995
1998
  }),
1996
1999
  cloneRepository: protectedProcedure.input(z3.object({ id: z3.string().max(128) })).mutation(async ({ input }) => {
1997
2000
  const service = await serviceStore.get(input.id);
@@ -6590,7 +6593,7 @@ function tailTranscript(opts) {
6590
6593
 
6591
6594
  // ../server/src/services/ai-runners/claude-pty-runner.ts
6592
6595
  async function getAgentManager() {
6593
- const { agentManager: agentManager2 } = await import("./agent-manager-2I47P7CA.js");
6596
+ const { agentManager: agentManager2 } = await import("./agent-manager-RQEJLSSF.js");
6594
6597
  return agentManager2;
6595
6598
  }
6596
6599
  function buildPtyArgs(params, sessionId, opts) {
@@ -7243,7 +7246,7 @@ async function shutdownCodexAppServer() {
7243
7246
  }
7244
7247
  }
7245
7248
  async function getAgentManager2() {
7246
- const { agentManager: agentManager2 } = await import("./agent-manager-2I47P7CA.js");
7249
+ const { agentManager: agentManager2 } = await import("./agent-manager-RQEJLSSF.js");
7247
7250
  return agentManager2;
7248
7251
  }
7249
7252
  function parseRuneyaCurlCommand(command) {
@@ -13147,19 +13150,129 @@ async function ensureFilePermissions() {
13147
13150
  }
13148
13151
  }
13149
13152
 
13153
+ // ../server/src/services/vault-migration.ts
13154
+ import { readdir as readdir7, readFile as readFile17, writeFile as writeFile16, mkdir as mkdir19, copyFile, unlink as unlink5, rename as rename13, stat as stat7 } from "fs/promises";
13155
+ import { join as join17 } from "path";
13156
+ var KEY_FILES = [".encryption.key.enc", ".runeya-verify"];
13157
+ var MACHINE_FILES = [
13158
+ "agents.json",
13159
+ "cloud-session.json",
13160
+ "conversations.private.json",
13161
+ "api-keys.json",
13162
+ "api-keys.private.json",
13163
+ "settings.private.json"
13164
+ ];
13165
+ function rekeyValue(value, from, to, counter) {
13166
+ if (typeof value === "string") {
13167
+ if (!isEncryptedValue(value)) return value;
13168
+ let plaintext;
13169
+ try {
13170
+ plaintext = decryptValueWith(from, value);
13171
+ } catch {
13172
+ return value;
13173
+ }
13174
+ counter.n += 1;
13175
+ return encryptValueWith(to, plaintext);
13176
+ }
13177
+ if (Array.isArray(value)) return value.map((v) => rekeyValue(v, from, to, counter));
13178
+ if (value && typeof value === "object") {
13179
+ const out = {};
13180
+ for (const [k, v] of Object.entries(value)) {
13181
+ out[k] = rekeyValue(v, from, to, counter);
13182
+ }
13183
+ return out;
13184
+ }
13185
+ return value;
13186
+ }
13187
+ async function vaultJsonFiles(root) {
13188
+ const entries = await readdir7(root, { withFileTypes: true });
13189
+ return entries.filter((e) => e.isFile() && e.name.endsWith(".json")).map((e) => e.name);
13190
+ }
13191
+ async function exists(path) {
13192
+ try {
13193
+ await stat7(path);
13194
+ return true;
13195
+ } catch {
13196
+ return false;
13197
+ }
13198
+ }
13199
+ async function openLegacyVault(legacyRoot, masterPassword) {
13200
+ const key = await readEncryptedKey(legacyRoot, masterPassword);
13201
+ await verifyEncryptionKey(legacyRoot, key);
13202
+ return key;
13203
+ }
13204
+ async function migrateLegacyVault(legacyRoot, machineRootDir, legacyKey, machineKey, now) {
13205
+ const stamp = now.toISOString().replace(/[:.]/g, "-").substring(0, 19);
13206
+ const backupDir = join17(legacyRoot, `backup-${stamp}`);
13207
+ await mkdir19(backupDir, { recursive: true });
13208
+ const jsonFiles = await vaultJsonFiles(legacyRoot);
13209
+ for (const name of [...jsonFiles, ...KEY_FILES]) {
13210
+ if (await exists(join17(legacyRoot, name))) {
13211
+ await copyFile(join17(legacyRoot, name), join17(backupDir, name));
13212
+ }
13213
+ }
13214
+ const rekeyed = [];
13215
+ for (const name of jsonFiles) {
13216
+ const raw = await readFile17(join17(legacyRoot, name), "utf-8");
13217
+ let parsed;
13218
+ try {
13219
+ parsed = JSON.parse(raw);
13220
+ } catch {
13221
+ continue;
13222
+ }
13223
+ const counter = { n: 0 };
13224
+ const converted = rekeyValue(parsed, legacyKey, machineKey, counter);
13225
+ if (counter.n === 0) continue;
13226
+ const tmp = join17(legacyRoot, `${name}.tmp`);
13227
+ await writeFile16(tmp, JSON.stringify(converted, null, 2), "utf-8");
13228
+ await rename13(tmp, join17(legacyRoot, name));
13229
+ rekeyed.push({ file: name, values: counter.n });
13230
+ }
13231
+ for (const { file, values } of rekeyed) {
13232
+ const parsed = JSON.parse(await readFile17(join17(legacyRoot, file), "utf-8"));
13233
+ const check = { n: 0 };
13234
+ rekeyValue(parsed, machineKey, machineKey, check);
13235
+ if (check.n !== values) {
13236
+ throw new Error(
13237
+ `V\xE9rification \xE9chou\xE9e pour ${file} : ${check.n} valeur(s) relisible(s) avec la cl\xE9 machine, ${values} attendue(s)`
13238
+ );
13239
+ }
13240
+ }
13241
+ await mkdir19(machineRootDir, { recursive: true });
13242
+ const moved = [];
13243
+ const skipped = [];
13244
+ for (const name of MACHINE_FILES) {
13245
+ const from = join17(legacyRoot, name);
13246
+ if (!await exists(from)) continue;
13247
+ const to = join17(machineRootDir, name);
13248
+ if (await exists(to)) {
13249
+ skipped.push(name);
13250
+ continue;
13251
+ }
13252
+ await copyFile(from, to);
13253
+ await unlink5(from);
13254
+ moved.push(name);
13255
+ }
13256
+ for (const name of KEY_FILES) {
13257
+ const path = join17(legacyRoot, name);
13258
+ if (await exists(path)) await unlink5(path);
13259
+ }
13260
+ return { backupDir, rekeyed, moved, skipped };
13261
+ }
13262
+
13150
13263
  // ../server/src/migrations/migrate-from-legacy.ts
13151
13264
  import { createRequire } from "module";
13152
13265
  import { randomBytes as randomBytes5, createCipheriv as createCipheriv2, createDecipheriv as createDecipheriv2 } from "crypto";
13153
13266
  import { randomUUID as randomUUID12 } from "crypto";
13154
13267
  import {
13155
- readFile as readFile17,
13156
- writeFile as writeFile16,
13157
- rename as rename13,
13158
- mkdir as mkdir19,
13268
+ readFile as readFile18,
13269
+ writeFile as writeFile17,
13270
+ rename as rename14,
13271
+ mkdir as mkdir20,
13159
13272
  access as access2,
13160
- readdir as readdir7
13273
+ readdir as readdir8
13161
13274
  } from "fs/promises";
13162
- import { join as join17 } from "path";
13275
+ import { join as join18 } from "path";
13163
13276
  var _require = createRequire(import.meta.url);
13164
13277
  var PARSER_ID_MAP = {
13165
13278
  "stack-monitor-parser-jsons": "native:json",
@@ -13268,7 +13381,7 @@ async function getSodium() {
13268
13381
  return _sodium;
13269
13382
  }
13270
13383
  async function decryptLegacyFile(filePath, key, sodium) {
13271
- const raw = (await readFile17(filePath, "utf-8")).trim();
13384
+ const raw = (await readFile18(filePath, "utf-8")).trim();
13272
13385
  if (!raw || raw === "[]" || raw === "{}") {
13273
13386
  try {
13274
13387
  return JSON.parse(raw);
@@ -13288,14 +13401,14 @@ async function decryptLegacyFile(filePath, key, sodium) {
13288
13401
  }
13289
13402
  async function atomicWrite(path, data) {
13290
13403
  const tmp = path + ".tmp";
13291
- await writeFile16(tmp, JSON.stringify(data, null, 2), "utf-8");
13292
- await rename13(tmp, path);
13404
+ await writeFile17(tmp, JSON.stringify(data, null, 2), "utf-8");
13405
+ await rename14(tmp, path);
13293
13406
  }
13294
13407
  async function runLegacyMigration(dataDir) {
13295
13408
  const { resolve: resolve6 } = await import("path");
13296
13409
  const abCwd = resolve6(process.cwd());
13297
- const legacyRoot = join17(abCwd, env.DATA_DIR);
13298
- const legacyKeyPath = join17(legacyRoot, "dbs", "encryption-key.json");
13410
+ const legacyRoot = join18(abCwd, env.DATA_DIR);
13411
+ const legacyKeyPath = join18(legacyRoot, "dbs", "encryption-key.json");
13299
13412
  try {
13300
13413
  await access2(legacyKeyPath);
13301
13414
  } catch {
@@ -13303,20 +13416,20 @@ async function runLegacyMigration(dataDir) {
13303
13416
  }
13304
13417
  console.log("[legacy-migration] Legacy Runeya data detected, starting migration\u2026");
13305
13418
  const timestamp = (/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "-").substring(0, 19);
13306
- const legacyTmp = join17(abCwd, ".runeya-tmp");
13307
- await rename13(legacyRoot, legacyTmp);
13308
- await mkdir19(dataDir, { recursive: true });
13309
- const legacyOld = join17(dataDir, `backup-${timestamp}`);
13310
- await rename13(legacyTmp, legacyOld);
13419
+ const legacyTmp = join18(abCwd, ".runeya-tmp");
13420
+ await rename14(legacyRoot, legacyTmp);
13421
+ await mkdir20(dataDir, { recursive: true });
13422
+ const legacyOld = join18(dataDir, `backup-${timestamp}`);
13423
+ await rename14(legacyTmp, legacyOld);
13311
13424
  console.log(`[legacy-migration] Legacy data backed up to ${legacyOld}`);
13312
- const keyJson = JSON.parse(await readFile17(join17(legacyOld, "dbs", "encryption-key.json"), "utf-8"));
13425
+ const keyJson = JSON.parse(await readFile18(join18(legacyOld, "dbs", "encryption-key.json"), "utf-8"));
13313
13426
  const sodium = await getSodium();
13314
13427
  const sodiumKey = sodium.from_base64(keyJson.encryptionKey);
13315
13428
  const keyBuffer = Buffer.from(sodiumKey);
13316
13429
  const runyeaKeyHex = keyBuffer.toString("hex");
13317
13430
  await setEncryptionKey(runyeaKeyHex);
13318
13431
  console.log("[legacy-migration] Encryption key loaded in memory (temporary)");
13319
- const dbsDir = join17(legacyOld, "dbs");
13432
+ const dbsDir = join18(legacyOld, "dbs");
13320
13433
  async function readEncrypted(filePath) {
13321
13434
  try {
13322
13435
  return await decryptLegacyFile(filePath, sodiumKey, sodium);
@@ -13325,29 +13438,29 @@ async function runLegacyMigration(dataDir) {
13325
13438
  return null;
13326
13439
  }
13327
13440
  }
13328
- const envsDir = join17(dbsDir, "envs");
13329
- const envFiles = (await readdir7(envsDir).catch(() => [])).filter((f) => f.endsWith(".encrypted.json"));
13441
+ const envsDir = join18(dbsDir, "envs");
13442
+ const envFiles = (await readdir8(envsDir).catch(() => [])).filter((f) => f.endsWith(".encrypted.json"));
13330
13443
  const legacyEnvs = {};
13331
13444
  for (const file of envFiles) {
13332
13445
  const name = file.replace(".encrypted.json", "");
13333
- legacyEnvs[name] = await readEncrypted(join17(envsDir, file));
13446
+ legacyEnvs[name] = await readEncrypted(join18(envsDir, file));
13334
13447
  }
13335
- const servicesDir = join17(dbsDir, "services");
13336
- const serviceFiles = (await readdir7(servicesDir).catch(() => [])).filter((f) => f.endsWith(".encrypted.json"));
13448
+ const servicesDir = join18(dbsDir, "services");
13449
+ const serviceFiles = (await readdir8(servicesDir).catch(() => [])).filter((f) => f.endsWith(".encrypted.json"));
13337
13450
  const legacyServices = {};
13338
13451
  for (const file of serviceFiles) {
13339
13452
  const name = file.replace(".encrypted.json", "");
13340
13453
  if (!name) continue;
13341
- const data = await readEncrypted(join17(servicesDir, file));
13454
+ const data = await readEncrypted(join18(servicesDir, file));
13342
13455
  if (data?.label) legacyServices[name] = data;
13343
13456
  }
13344
- const overridesDir = join17(dbsDir, "overrides");
13345
- const overrideFiles = (await readdir7(overridesDir).catch(() => [])).filter((f) => f.endsWith(".encrypted.json"));
13457
+ const overridesDir = join18(dbsDir, "overrides");
13458
+ const overrideFiles = (await readdir8(overridesDir).catch(() => [])).filter((f) => f.endsWith(".encrypted.json"));
13346
13459
  const legacyServiceOverrides = {};
13347
13460
  const legacyEnvOverrides = {};
13348
13461
  for (const file of overrideFiles) {
13349
13462
  const baseName = file.replace(".encrypted.json", "");
13350
- const data = await readEncrypted(join17(overridesDir, file));
13463
+ const data = await readEncrypted(join18(overridesDir, file));
13351
13464
  if (!data) continue;
13352
13465
  if (baseName.endsWith("-envs")) {
13353
13466
  legacyServiceOverrides[baseName.slice(0, -5)] = data;
@@ -13355,11 +13468,11 @@ async function runLegacyMigration(dataDir) {
13355
13468
  legacyEnvOverrides[baseName.slice(0, -12)] = data;
13356
13469
  }
13357
13470
  }
13358
- const parsersDir = join17(dbsDir, "parsers");
13359
- const parserFiles = (await readdir7(parsersDir).catch(() => [])).filter((f) => f.endsWith(".encrypted.json"));
13471
+ const parsersDir = join18(dbsDir, "parsers");
13472
+ const parserFiles = (await readdir8(parsersDir).catch(() => [])).filter((f) => f.endsWith(".encrypted.json"));
13360
13473
  const legacyParsers = [];
13361
13474
  for (const file of parserFiles) {
13362
- const data = await readEncrypted(join17(parsersDir, file));
13475
+ const data = await readEncrypted(join18(parsersDir, file));
13363
13476
  if (data?.id) legacyParsers.push(data);
13364
13477
  }
13365
13478
  const projectMonoId = randomUUID12();
@@ -13700,7 +13813,7 @@ async function runLegacyMigration(dataDir) {
13700
13813
  }
13701
13814
  let existingSettings = {};
13702
13815
  try {
13703
- existingSettings = JSON.parse(await readFile17(join17(dataDir, "settings.json"), "utf-8"));
13816
+ existingSettings = JSON.parse(await readFile18(join18(dataDir, "settings.json"), "utf-8"));
13704
13817
  } catch {
13705
13818
  }
13706
13819
  const migratedParsers = legacyParsers.map((p) => ({
@@ -13721,11 +13834,11 @@ ${p.transform ?? ""}`,
13721
13834
  ...migratedParsers
13722
13835
  ]
13723
13836
  };
13724
- await atomicWrite(join17(dataDir, "projects.json"), runeProjects);
13725
- await atomicWrite(join17(dataDir, "services.json"), runeServices);
13726
- await atomicWrite(join17(dataDir, "environments.json"), runeEnvs);
13727
- await atomicWrite(join17(dataDir, "environment-overrides.json"), flatOverrides);
13728
- await atomicWrite(join17(dataDir, "settings.json"), newSettings);
13837
+ await atomicWrite(join18(dataDir, "projects.json"), runeProjects);
13838
+ await atomicWrite(join18(dataDir, "services.json"), runeServices);
13839
+ await atomicWrite(join18(dataDir, "environments.json"), runeEnvs);
13840
+ await atomicWrite(join18(dataDir, "environment-overrides.json"), flatOverrides);
13841
+ await atomicWrite(join18(dataDir, "settings.json"), newSettings);
13729
13842
  const svcEnvCount = runeEnvs.filter((e) => e.scope === "service").length;
13730
13843
  console.log(`[legacy-migration] Written: ${runeProjects.length} projects, ${runeServices.length} services, ${runeEnvs.length} environments (${svcEnvCount} service-scoped)`);
13731
13844
  console.log(`[legacy-migration] Overrides: ${Object.keys(flatOverrides).length}, custom parsers: ${migratedParsers.length} (all disabled \u2014 rewrite required)`);
@@ -13736,12 +13849,12 @@ ${p.transform ?? ""}`,
13736
13849
  }
13737
13850
  async function findLegacyKeyInBackup(dataDir) {
13738
13851
  try {
13739
- const entries = await readdir7(dataDir);
13852
+ const entries = await readdir8(dataDir);
13740
13853
  const backupDirs = entries.filter((e) => e.startsWith("backup-")).sort((a, b) => a < b ? -1 : a > b ? 1 : 0).reverse();
13741
13854
  for (const dir of backupDirs) {
13742
- const keyJsonPath = join17(dataDir, dir, "dbs", "encryption-key.json");
13855
+ const keyJsonPath = join18(dataDir, dir, "dbs", "encryption-key.json");
13743
13856
  try {
13744
- const raw = await readFile17(keyJsonPath, "utf-8");
13857
+ const raw = await readFile18(keyJsonPath, "utf-8");
13745
13858
  const parsed = JSON.parse(raw);
13746
13859
  if (!parsed.encryptionKey) continue;
13747
13860
  const sodium = await getSodium();
@@ -13763,14 +13876,14 @@ async function runOverrideOnlyMigration(dataDir) {
13763
13876
  const abDataDir = resolve6(dataDir);
13764
13877
  const abCwd = resolve6(process.cwd());
13765
13878
  const candidateDirs = [
13766
- join17(abCwd, ".runeya", "dbs", "overrides"),
13767
- join17(abDataDir, "dbs", "overrides")
13879
+ join18(abCwd, ".runeya", "dbs", "overrides"),
13880
+ join18(abDataDir, "dbs", "overrides")
13768
13881
  ];
13769
13882
  let overridesDir = null;
13770
13883
  let overrideFiles = [];
13771
13884
  for (const dir of candidateDirs) {
13772
13885
  try {
13773
- const files = (await readdir7(dir)).filter((f) => f.endsWith(".encrypted.json"));
13886
+ const files = (await readdir8(dir)).filter((f) => f.endsWith(".encrypted.json"));
13774
13887
  if (files.length > 0) {
13775
13888
  overridesDir = dir;
13776
13889
  overrideFiles = files;
@@ -13780,7 +13893,7 @@ async function runOverrideOnlyMigration(dataDir) {
13780
13893
  }
13781
13894
  }
13782
13895
  if (!overridesDir || overrideFiles.length === 0) return false;
13783
- const legacyKeyPath = join17(overridesDir, "..", "encryption-key.json");
13896
+ const legacyKeyPath = join18(overridesDir, "..", "encryption-key.json");
13784
13897
  try {
13785
13898
  await access2(legacyKeyPath);
13786
13899
  return false;
@@ -13798,7 +13911,7 @@ async function runOverrideOnlyMigration(dataDir) {
13798
13911
  const envNameToId = {};
13799
13912
  let envsRaw;
13800
13913
  try {
13801
- envsRaw = JSON.parse(await readFile17(join17(abDataDir, "environments.json"), "utf-8"));
13914
+ envsRaw = JSON.parse(await readFile18(join18(abDataDir, "environments.json"), "utf-8"));
13802
13915
  for (const _env of envsRaw) {
13803
13916
  const env2 = _env;
13804
13917
  if (env2["name"] && env2["id"]) {
@@ -13817,7 +13930,7 @@ async function runOverrideOnlyMigration(dataDir) {
13817
13930
  let servicesRaw = [];
13818
13931
  const serviceNameToId = {};
13819
13932
  try {
13820
- servicesRaw = JSON.parse(await readFile17(join17(abDataDir, "services.json"), "utf-8"));
13933
+ servicesRaw = JSON.parse(await readFile18(join18(abDataDir, "services.json"), "utf-8"));
13821
13934
  for (const _svc of servicesRaw) {
13822
13935
  const svc = _svc;
13823
13936
  if (svc["name"] && svc["id"]) serviceNameToId[svc["name"]] = svc["id"];
@@ -13834,7 +13947,7 @@ async function runOverrideOnlyMigration(dataDir) {
13834
13947
  const envName = baseName.slice(0, -"-environment".length);
13835
13948
  let data;
13836
13949
  try {
13837
- data = await decryptLegacyFile(join17(overridesDir, file), sodiumKey, sodium);
13950
+ data = await decryptLegacyFile(join18(overridesDir, file), sodiumKey, sodium);
13838
13951
  } catch (err) {
13839
13952
  console.warn(`[override-migration] Failed to decrypt ${file}: ${err.message}`);
13840
13953
  continue;
@@ -13861,7 +13974,7 @@ async function runOverrideOnlyMigration(dataDir) {
13861
13974
  }
13862
13975
  }
13863
13976
  if (Object.keys(flatOverrides).length > 0) {
13864
- await atomicWrite(join17(abDataDir, "environment-overrides.json"), flatOverrides);
13977
+ await atomicWrite(join18(abDataDir, "environment-overrides.json"), flatOverrides);
13865
13978
  console.log(`[override-migration] Written ${Object.keys(flatOverrides).length} override(s) to environment-overrides.json`);
13866
13979
  }
13867
13980
  let envsModified = false;
@@ -13871,7 +13984,7 @@ async function runOverrideOnlyMigration(dataDir) {
13871
13984
  const serviceName = baseName.slice(0, -"-envs".length);
13872
13985
  let data;
13873
13986
  try {
13874
- data = await decryptLegacyFile(join17(overridesDir, file), sodiumKey, sodium);
13987
+ data = await decryptLegacyFile(join18(overridesDir, file), sodiumKey, sodium);
13875
13988
  } catch (err) {
13876
13989
  console.warn(`[override-migration] Failed to decrypt ${file}: ${err.message}`);
13877
13990
  continue;
@@ -13930,12 +14043,12 @@ async function runOverrideOnlyMigration(dataDir) {
13930
14043
  }
13931
14044
  }
13932
14045
  if (envsModified) {
13933
- await atomicWrite(join17(abDataDir, "environments.json"), envsRaw);
14046
+ await atomicWrite(join18(abDataDir, "environments.json"), envsRaw);
13934
14047
  console.log("[override-migration] Merged service overrides into environments.json");
13935
14048
  }
13936
14049
  const migratedDir = overridesDir.replace(/overrides$/, "overrides-migrated");
13937
14050
  try {
13938
- await rename13(overridesDir, migratedDir);
14051
+ await rename14(overridesDir, migratedDir);
13939
14052
  console.log(`[override-migration] Moved overrides/ \u2192 overrides-migrated/`);
13940
14053
  } catch (err) {
13941
14054
  console.warn(`[override-migration] Could not rename overrides dir: ${err.message}`);
@@ -13945,8 +14058,8 @@ async function runOverrideOnlyMigration(dataDir) {
13945
14058
  }
13946
14059
 
13947
14060
  // ../server/src/services/server-state.ts
13948
- import { join as join18 } from "path";
13949
- import { stat as stat7 } from "fs/promises";
14061
+ import { join as join19 } from "path";
14062
+ import { stat as stat8 } from "fs/promises";
13950
14063
  var ENCRYPTED_KEY_FILENAME2 = ".encryption.key.enc";
13951
14064
  var VERIFY_FILENAME2 = ".runeya-verify";
13952
14065
  async function getServerState() {
@@ -13955,36 +14068,43 @@ async function getServerState() {
13955
14068
  let hasVerify = false;
13956
14069
  let hasData = false;
13957
14070
  try {
13958
- await stat7(join18(dataDir, ENCRYPTED_KEY_FILENAME2));
14071
+ await stat8(join19(dataDir, ENCRYPTED_KEY_FILENAME2));
13959
14072
  hasEncFile = true;
13960
14073
  } catch {
13961
14074
  }
13962
14075
  try {
13963
- await stat7(join18(dataDir, VERIFY_FILENAME2));
14076
+ await stat8(join19(dataDir, VERIFY_FILENAME2));
13964
14077
  hasVerify = true;
13965
14078
  } catch {
13966
14079
  }
13967
14080
  try {
13968
- await stat7(join18(dataDir, "projects.json"));
14081
+ await stat8(join19(dataDir, "projects.json"));
13969
14082
  hasData = true;
13970
14083
  } catch {
13971
14084
  }
13972
14085
  try {
13973
- await stat7(join18(dataDir, "project.json"));
14086
+ await stat8(join19(dataDir, "project.json"));
13974
14087
  hasData = true;
13975
14088
  } catch {
13976
14089
  }
13977
14090
  if (hasEncryptionKey()) {
13978
- return { state: "unlocked", hasVerifyFile: false, isLegacyMigration: false, hasExistingData: hasData };
14091
+ return {
14092
+ state: "unlocked",
14093
+ hasVerifyFile: false,
14094
+ isLegacyMigration: false,
14095
+ hasExistingData: hasData,
14096
+ legacyVault: await legacyVaultRoot()
14097
+ };
13979
14098
  }
13980
14099
  if (hasEncFile) {
13981
- return { state: "locked", hasVerifyFile: hasVerify, isLegacyMigration: false, hasExistingData: hasData };
14100
+ return { state: "locked", hasVerifyFile: hasVerify, isLegacyMigration: false, hasExistingData: hasData, legacyVault: null };
13982
14101
  }
13983
14102
  return {
13984
14103
  state: "setup",
13985
14104
  hasVerifyFile: hasVerify,
13986
14105
  isLegacyMigration: hasPendingLegacyKey(),
13987
- hasExistingData: hasData
14106
+ hasExistingData: hasData,
14107
+ legacyVault: null
13988
14108
  };
13989
14109
  }
13990
14110
 
@@ -14730,6 +14850,48 @@ async function createLocalServer() {
14730
14850
  }
14731
14851
  }
14732
14852
  });
14853
+ app.post("/api/migrate-vault", authLimiter, csrfMiddleware, express.json({ limit: "10kb" }), async (req, res) => {
14854
+ try {
14855
+ const jwt = typeof req.headers.authorization === "string" && req.headers.authorization.startsWith("Bearer ") ? req.headers.authorization.slice(7) : "";
14856
+ if (!isCiMode()) {
14857
+ try {
14858
+ await verifyJwt(jwt);
14859
+ } catch {
14860
+ res.status(401).json({ error: "Session invalide" });
14861
+ return;
14862
+ }
14863
+ }
14864
+ const machineKey = getEncryptionKey();
14865
+ if (!machineKey) {
14866
+ res.status(409).json({ error: "Serveur verrouill\xE9" });
14867
+ return;
14868
+ }
14869
+ const legacyRoot = await legacyVaultRoot();
14870
+ if (!legacyRoot) {
14871
+ res.status(409).json({ error: "Aucun coffre \xE0 migrer dans ce r\xE9pertoire" });
14872
+ return;
14873
+ }
14874
+ const body = req.body;
14875
+ const masterPassword = body.masterPassword;
14876
+ if (typeof masterPassword !== "string" || masterPassword.length < 1 || masterPassword.length > 1024) {
14877
+ res.status(400).json({ error: "masterPassword invalide" });
14878
+ return;
14879
+ }
14880
+ let legacyKey;
14881
+ try {
14882
+ legacyKey = await openLegacyVault(legacyRoot, masterPassword);
14883
+ } catch {
14884
+ res.status(401).json({ error: "Ancien master password incorrect" });
14885
+ return;
14886
+ }
14887
+ const report = await migrateLegacyVault(legacyRoot, machineRoot(), legacyKey, machineKey, /* @__PURE__ */ new Date());
14888
+ console.log(`[vault-migration] ${legacyRoot} migr\xE9 \u2014 sauvegarde : ${report.backupDir}`);
14889
+ res.json(report);
14890
+ } catch (err) {
14891
+ console.error("[server] Vault migration error:", err);
14892
+ res.status(500).json({ error: err instanceof Error ? err.message : "Erreur interne" });
14893
+ }
14894
+ });
14733
14895
  app.get("/:apikey/llms.txt", llmsLimiter, async (req, res) => {
14734
14896
  const apikey = Array.isArray(req.params["apikey"]) ? req.params["apikey"][0] : req.params["apikey"];
14735
14897
  if (!apikey || !/^[0-9a-f]{64}$/i.test(apikey)) {
@@ -15134,4 +15296,4 @@ export {
15134
15296
  createLocalServer,
15135
15297
  pullEnv
15136
15298
  };
15137
- //# sourceMappingURL=src-7CJJBMY3.js.map
15299
+ //# sourceMappingURL=src-ZKQETCHR.js.map