@runeya/runeya 2.0.120 → 2.0.121

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 (280) hide show
  1. package/agent/index.js +17 -2
  2. package/agent/index.js.map +1 -1
  3. package/agent-manager-4HBMLHXU.js +10 -0
  4. package/{chat-PXMMZIAY.js → chat-VL6BIVO5.js} +7 -6
  5. package/{chunk-GIHR3BGT.js → chunk-3N55WR7F.js} +32 -3
  6. package/chunk-3N55WR7F.js.map +1 -0
  7. package/{chunk-2WXQIUVC.js → chunk-CNTL6NVU.js} +50 -44
  8. package/chunk-CNTL6NVU.js.map +1 -0
  9. package/{chunk-22RJM654.js → chunk-HJUFIZ7H.js} +41 -13
  10. package/chunk-HJUFIZ7H.js.map +1 -0
  11. package/{chunk-NYKFDU76.js → chunk-OVV52N5F.js} +91 -17
  12. package/chunk-OVV52N5F.js.map +1 -0
  13. package/{chunk-H6VIS4OY.js → chunk-T2BV5WZE.js} +18 -3
  14. package/chunk-T2BV5WZE.js.map +1 -0
  15. package/chunk-YZU5FNXR.js +43 -0
  16. package/chunk-YZU5FNXR.js.map +1 -0
  17. package/{companion-4RQ3AMOL.js → companion-AUMA6RGX.js} +5 -4
  18. package/{desktop-launcher-ADGRYF4S.js → desktop-launcher-EGGVXXKV.js} +2 -2
  19. package/index.js +4 -4
  20. package/package.json +1 -1
  21. package/settings-manager-ROWQ5GC2.js +10 -0
  22. package/{src-NRKK27F3.js → src-JIS3X4OU.js} +157 -213
  23. package/src-JIS3X4OU.js.map +1 -0
  24. package/web/assets/AgentScalarChatInterface.vue-DrcrJYKe.js +13 -0
  25. package/web/assets/AgentTerminalPage-BonnuSSS.js +1 -0
  26. package/web/assets/AiChatPage-DzTc9-iH.js +1 -0
  27. package/web/assets/AppLayout-DRTTSl7g.js +1 -0
  28. package/web/assets/{AppLayout-kIdcdJ2n.css → AppLayout-vWoE_P8T.css} +1 -1
  29. package/web/assets/AuditPage-CBWGaY0D.js +1 -0
  30. package/web/assets/CloudAccountPage-DTrPLz-p.js +1 -0
  31. package/web/assets/CloudAccountPage-DYOvfMjD.css +1 -0
  32. package/web/assets/CloudAccountPage-DvbOBtHJ.js +1 -0
  33. package/web/assets/CloudMessagingPage-BB-_RdEk.js +2 -0
  34. package/web/assets/DashboardPage-MdYRjTwv.js +164 -0
  35. package/web/assets/DirectoryPickerDialog-DROtNZ9T.js +1 -0
  36. package/web/assets/{EditorIcon-CdapdMgo.js → EditorIcon-LCl9V_-a.js} +2 -2
  37. package/web/assets/{EnvironmentForm-Dgrt5I5N.js → EnvironmentForm-BUadxutb.js} +2 -2
  38. package/web/assets/EnvironmentFormPage-Do3NwXL5.js +1 -0
  39. package/web/assets/EnvironmentListPage-DiG8nF1p.js +1 -0
  40. package/web/assets/KanbanBoardPage-_QCZ2A2f.js +4 -0
  41. package/web/assets/KanbanListPage-Dl-FpuPX.css +1 -0
  42. package/web/assets/KanbanListPage-nyfKMn50.js +1 -0
  43. package/web/assets/LaunchProjectPage-VHAUZ-cq.js +1 -0
  44. package/web/assets/LaunchServicesPage-CRv2zJxH.js +1 -0
  45. package/web/assets/LogViewer-DcoQF_33.js +3 -0
  46. package/web/assets/OrgKeyPrompt-X9hHtpi9.js +1 -0
  47. package/web/assets/{ProcessControls-DRyD5bQg.js → ProcessControls-PKQWukd7.js} +1 -1
  48. package/web/assets/ProcessDetailPage-DhFoi4DT.js +1 -0
  49. package/web/assets/{ProcessMetrics-D5SgFgFU.js → ProcessMetrics-CMewzyxA.js} +2 -2
  50. package/web/assets/RandomJobTestPage-CErdKP1K.js +2 -0
  51. package/web/assets/ScenarioEditorPage-CpRlfU3g.js +14 -0
  52. package/web/assets/SendToChatDialog-DIp62wvw.js +1 -0
  53. package/web/assets/ServiceControlsBar-Bk4M-tKR.js +1 -0
  54. package/web/assets/ServiceDetailPage-BxAZTqFu.js +2 -0
  55. package/web/assets/ServiceFormPage-Dr_e9QMM.js +1 -0
  56. package/web/assets/SettingsPage-Dx1eYZKP.js +2063 -0
  57. package/web/assets/UnlockPage-CgynzFN3.js +1 -0
  58. package/web/assets/UnlockPage-DU3hoV78.css +1 -0
  59. package/web/assets/VaultMigrationPage-Cw--n60U.js +1 -0
  60. package/web/assets/VersionBadge-Ct-qYNDF.js +1 -0
  61. package/web/assets/WikiPage-D7N7nA2O.js +1 -0
  62. package/web/assets/WikiView-Izg2SvGt.js +1 -0
  63. package/web/assets/add-scalar-classes-BP_OZa5m.js +387 -0
  64. package/web/assets/{autocomplete-ByrzVX5h.js → autocomplete-DMfvn4sK.js} +3 -3
  65. package/web/assets/{basic-shape-diamond.svg-h2koobo1.js → basic-shape-diamond.svg-B5H1r2bp.js} +1 -1
  66. package/web/assets/{basic-shape-hexagon.svg--IMj5O6H.js → basic-shape-hexagon.svg-CYAjKF0z.js} +1 -1
  67. package/web/assets/{basic-shape-primary-circle-ellipse-round.svg-B0JqtIPK.js → basic-shape-primary-circle-ellipse-round.svg-CgleCAf-.js} +1 -1
  68. package/web/assets/{basic-shape-primary-square-rectangle.svg-nMUFcz3q.js → basic-shape-primary-square-rectangle.svg-1Oa48Hhs.js} +1 -1
  69. package/web/assets/{basic-shape-shield.svg-B01_o2Y1.js → basic-shape-shield.svg-F6dZwVUJ.js} +1 -1
  70. package/web/assets/{browser-OPkfGEHD.js → browser-CmPAWcJ7.js} +1 -1
  71. package/web/assets/{browser-DcLBGCAS.js → browser-D3KJ0m2n.js} +1 -1
  72. package/web/assets/card-Ciw7uU90.js +32 -0
  73. package/web/assets/{checkbox-DGCPu95-.js → checkbox-BCCx0Nu6.js} +3 -3
  74. package/web/assets/{chip-Chk5tAnb.js → chip-JRh6DXig.js} +2 -2
  75. package/web/assets/client-BIlYBe0s.js +24 -0
  76. package/web/assets/cloud-chat.store-BUYi4kYT.js +1 -0
  77. package/web/assets/cloud-client-CujRC6FF.js +1 -0
  78. package/web/assets/cloud-session-CSIV9Uvx.js +1 -0
  79. package/web/assets/{cloud-session-CnTOFA6T.js → cloud-session-CZWto5y3.js} +2 -2
  80. package/web/assets/column-DSBHw97f.js +763 -0
  81. package/web/assets/{computer-device-desktop-monitor.svg-CfTbcAFd.js → computer-device-desktop-monitor.svg-D7wu2cQ4.js} +1 -1
  82. package/web/assets/{computer-device-desktop.svg-Cl-xv361.js → computer-device-desktop.svg-BtVwjOEG.js} +1 -1
  83. package/web/assets/{computer-device-laptop.svg-ukRjIyMq.js → computer-device-laptop.svg-f3tFeUHj.js} +1 -1
  84. package/web/assets/{computer-device-mobile-phone-android-samsung-back.svg-CoDvI0SU.js → computer-device-mobile-phone-android-samsung-back.svg-CmJcGkrL.js} +1 -1
  85. package/web/assets/{computer-device-mobile-phone-android-samsung.svg-BQWjk4Zt.js → computer-device-mobile-phone-android-samsung.svg-C2ke6Sbg.js} +1 -1
  86. package/web/assets/{computer-device-mobile-phone-iphone-x-back.svg-DAoSG317.js → computer-device-mobile-phone-iphone-x-back.svg-DxMqUXKE.js} +1 -1
  87. package/web/assets/{computer-device-mobile-phone-iphone-x.svg-BPjvW-EA.js → computer-device-mobile-phone-iphone-x.svg-DkbKlrh8.js} +1 -1
  88. package/web/assets/{computer-device-mobile-tablet-touch.svg-BYEFFDGJ.js → computer-device-mobile-tablet-touch.svg-DP0uXMda.js} +1 -1
  89. package/web/assets/{computer-device-mobile-tablet.svg-DNLPmtgI.js → computer-device-mobile-tablet.svg-C064ZFQm.js} +1 -1
  90. package/web/assets/{computer-device-network-ethernet-cat6.svg-BLWV1j_N.js → computer-device-network-ethernet-cat6.svg-Dwzl7zBN.js} +1 -1
  91. package/web/assets/{computer-device-network-lan-www.svg-BOoU0zpo.js → computer-device-network-lan-www.svg-BgErom5w.js} +1 -1
  92. package/web/assets/{computer-device-network-wifi-connection.svg-DGwn0IjA.js → computer-device-network-wifi-connection.svg-ByqNsV6y.js} +1 -1
  93. package/web/assets/{computer-device-network-wifi-router.svg-C5g_K48A.js → computer-device-network-wifi-router.svg-AySGITbi.js} +1 -1
  94. package/web/assets/{cssMode-Cx5qrxXy.js → cssMode-BqrZ4SB-.js} +1 -1
  95. package/web/assets/{divider-BrS14lDG.js → divider-BswZTb8q.js} +2 -2
  96. package/web/assets/{docx-preview-DAPpQjxw.js → docx-preview-t_oOha_C.js} +1 -1
  97. package/web/assets/{ecology-science-erlenmeyer-flask.svg-DomVqm74.js → ecology-science-erlenmeyer-flask.svg-Keg4ZY0z.js} +1 -1
  98. package/web/assets/{fieldset-C0CmkHzJ.js → fieldset-DaWy9FsL.js} +2 -2
  99. package/web/assets/{freemarker2-183f16_T.js → freemarker2-Br0kiufp.js} +1 -1
  100. package/web/assets/{handlebars-Ck2u5MRS.js → handlebars-BrATzKUL.js} +1 -1
  101. package/web/assets/{html-RFHCet7g.js → html-LWTJcTM2.js} +1 -1
  102. package/web/assets/{htmlMode-MLvTePcj.js → htmlMode-A23pWfMP.js} +1 -1
  103. package/web/assets/{image-flash-lightning.svg-C_9EqK2Z.js → image-flash-lightning.svg-uQfoT6Ex.js} +1 -1
  104. package/web/assets/{image-picture-flower.svg-Cw0p4SDa.js → image-picture-flower.svg-XxD1bCHC.js} +1 -1
  105. package/web/assets/{index-De7vzwYE.js → index-e5dmzMc-.js} +362 -362
  106. package/web/assets/{index-qjiWPMcS.css → index-rUoTy8xc.css} +1 -1
  107. package/web/assets/{interface-alert-exclamation-diamond.svg-D_7jQp52.js → interface-alert-exclamation-diamond.svg-gQAlkILu.js} +1 -1
  108. package/web/assets/{interface-alert-exclamation-triangle-warning.svg-slrQHD7Z.js → interface-alert-exclamation-triangle-warning.svg-Ga2rsl6o.js} +1 -1
  109. package/web/assets/{interface-alert-information-circle.svg-D6HZsCxj.js → interface-alert-information-circle.svg-BS0N2R1M.js} +1 -1
  110. package/web/assets/{interface-award-crown.svg-C8KlpCo8.js → interface-award-crown.svg-CtLbK4Gl.js} +1 -1
  111. package/web/assets/{interface-bookmark.svg-CcHEFyZI.js → interface-bookmark-tag.svg-Dfd6eXAX.js} +1 -1
  112. package/web/assets/{interface-bookmark-tag.svg-4m7iWpFd.js → interface-bookmark.svg-Clt6TTov.js} +1 -1
  113. package/web/assets/{interface-calendar-date-one.svg-B-NpBZQW.js → interface-calendar-date-one.svg-BmFNLrzR.js} +1 -1
  114. package/web/assets/{interface-content-book-open-pages.svg-D6JSr0DE.js → interface-content-book-open-pages.svg-u8kJbc3N.js} +1 -1
  115. package/web/assets/{interface-content-book-page.svg-4JwHKP99.js → interface-content-book-page.svg-Csk8d0R8.js} +1 -1
  116. package/web/assets/{interface-content-file.svg-dDsVtuW0.js → interface-content-file.svg-DIoD1UhJ.js} +1 -1
  117. package/web/assets/interface-content-folder.svg-BPZbNQNK.js +1 -0
  118. package/web/assets/{interface-content-folder.svg-VlaIOWsg.js → interface-content-folder.svg-ipO7hYM2.js} +1 -1
  119. package/web/assets/{interface-copy-clipboard.svg-C8NaVJTP.js → interface-copy-clipboard.svg-BaK2fHKS.js} +1 -1
  120. package/web/assets/{interface-edit-attachment.svg-DLv3r8Ta.js → interface-edit-attachment.svg-CrpyP6c6.js} +1 -1
  121. package/web/assets/{interface-edit-binocular.svg-Dn_isC0z.js → interface-edit-binocular.svg-Cw-YeqUQ.js} +1 -1
  122. package/web/assets/{interface-edit-magic-wand.svg-D7nDtfWR.js → interface-edit-magic-wand.svg-BPa49t_4.js} +1 -1
  123. package/web/assets/{interface-edit-tool-paint-roller.svg-pvqfHBhq.js → interface-edit-tool-paint-roller.svg-Cfag7vxY.js} +1 -1
  124. package/web/assets/{interface-edit-tool-pencil.svg-65sH97q4.js → interface-edit-tool-pencil.svg-BNAmX0d_.js} +1 -1
  125. package/web/assets/{interface-favorite-award.svg-ByKr9sn6.js → interface-favorite-award.svg-CIMvocAv.js} +1 -1
  126. package/web/assets/{interface-favorite-flag.svg-Dw-AP2Bq.js → interface-favorite-flag.svg-8C3GXK06.js} +1 -1
  127. package/web/assets/{interface-favorite-heart.svg-B_rIv8ZF.js → interface-favorite-heart.svg-CEU_IALn.js} +1 -1
  128. package/web/assets/{interface-favorite-star.svg-DdSC1aGg.js → interface-favorite-star.svg-Bs0RUtgk.js} +1 -1
  129. package/web/assets/{interface-favorite-stars-sparkles.svg-B2P_fEQm.js → interface-favorite-stars-sparkles.svg-CZYZ5qkH.js} +1 -1
  130. package/web/assets/{interface-hierarchy-flowchart.svg-Dn7xVcha.js → interface-hierarchy-flowchart.svg-DOgEXHV2.js} +1 -1
  131. package/web/assets/{interface-home-house.svg-CPV7dtoL.js → interface-home-house.svg-lDERGk8q.js} +1 -1
  132. package/web/assets/{interface-hyperlink.svg-BxEpW0yS.js → interface-hyperlink.svg-CAZrs64U.js} +1 -1
  133. package/web/assets/{interface-lighting-brightness.svg-CHwx5muE.js → interface-lighting-brightness.svg-CVANBB7i.js} +1 -1
  134. package/web/assets/{interface-lock-closed.svg-Ct9YyvGT.js → interface-lock-closed.svg-qDLyceL-.js} +1 -1
  135. package/web/assets/{interface-lock-open-unlock.svg-DuuZ9seB.js → interface-lock-open-unlock.svg-Bc-cq6eU.js} +1 -1
  136. package/web/assets/{interface-login-key.svg-DwQq_1hs.js → interface-login-key.svg-D6wZBYEi.js} +1 -1
  137. package/web/assets/{interface-search.svg-Cd9FPHXP.js → interface-search.svg-BVM6kkvA.js} +1 -1
  138. package/web/assets/{interface-setting-cog.svg-C2oUvcZk.js → interface-setting-cog.svg-uJYqlmKx.js} +1 -1
  139. package/web/assets/{interface-share-megaphone-bullhorn.svg-D_sqPbcr.js → interface-share-megaphone-bullhorn.svg-CgBVBu7Z.js} +1 -1
  140. package/web/assets/{interface-share-rocket.svg-DHw9o1DN.js → interface-share-rocket.svg-C1iCXMlX.js} +1 -1
  141. package/web/assets/{interface-share-satellite.svg-CYuWbhdH.js → interface-share-satellite.svg-uH-Cvq9d.js} +1 -1
  142. package/web/assets/{interface-share-space-ship.svg-CsQbvDGw.js → interface-share-space-ship.svg-81lauyV5.js} +1 -1
  143. package/web/assets/{interface-share.svg-CxR58P36.js → interface-share.svg-DO85t-F0.js} +1 -1
  144. package/web/assets/{interface-signal-square.svg-BFCAMIlM.js → interface-signal-square.svg-CFAni6lY.js} +1 -1
  145. package/web/assets/{interface-time-clock-circle.svg-BMtmcI_Z.js → interface-time-clock-circle.svg-BUQfluh7.js} +1 -1
  146. package/web/assets/{interface-time-hour-glass.svg-F_74mbfe.js → interface-time-hour-glass.svg-BAZDU-C5.js} +1 -1
  147. package/web/assets/{interface-users-multiple.svg-GqG3hBlb.js → interface-users-multiple.svg-Bj0AvF2-.js} +1 -1
  148. package/web/assets/{interface-weather-moon.svg-By26aJ-s.js → interface-weather-moon.svg-Cxz-5thD.js} +1 -1
  149. package/web/assets/{javascript-DWG-shUz.js → javascript-CuP68vN5.js} +1 -1
  150. package/web/assets/{jsonMode-c7o5Rqeq.js → jsonMode-CdGjze9r.js} +1 -1
  151. package/web/assets/{liquid-DqJ-7gUQ.js → liquid-fJJZPdJb.js} +1 -1
  152. package/web/assets/{lspLanguageFeatures-C_r6rVue.js → lspLanguageFeatures-YzzH9q9a.js} +3 -3
  153. package/web/assets/{mail-chat-bubble-square.svg-1OECQtwZ.js → mail-chat-bubble-square.svg-DY1-sN8v.js} +1 -1
  154. package/web/assets/{mail-send-email-paper-airplane.svg-DGa9kXqg.js → mail-send-email-paper-airplane.svg-6zVEUG2-.js} +1 -1
  155. package/web/assets/{mail-send-envelope.svg-DOnW83Qn.js → mail-send-envelope.svg-DNpA7Auy.js} +1 -1
  156. package/web/assets/{mdx-BmXiyjsf.js → mdx-CphM-wvX.js} +1 -1
  157. package/web/assets/{minus-Bva6o6mu.js → minus-DD84SZSh.js} +2 -2
  158. package/web/assets/modal-CKGM8Wb3.js +5 -0
  159. package/web/assets/modal-Dd5rzDUd.js +1 -0
  160. package/web/assets/{money-cashier-receipt.svg-C9S8E9Gs.js → money-cashier-receipt.svg-ChxLUMT0.js} +1 -1
  161. package/web/assets/{money-currency-dollar-pay.svg-CXNYqgJd.js → money-currency-dollar-pay.svg-CcPdfv1E.js} +1 -1
  162. package/web/assets/{money-graph-arrow-increase.svg-DVTCnF_9.js → money-graph-arrow-increase.svg-BsmXO8yM.js} +1 -1
  163. package/web/assets/{money-graph-bar-chart-increase.svg-CIlyGCUY.js → money-graph-bar-chart-increase.svg-QVk3zD8i.js} +1 -1
  164. package/web/assets/multiselect-3cR58mLz.js +251 -0
  165. package/web/assets/{nature-ecology-leaf.svg-xc6FzauK.js → nature-ecology-leaf.svg-nzup63P6.js} +1 -1
  166. package/web/assets/{password-B_HLITFe.js → password-CCYLOu-C.js} +4 -4
  167. package/web/assets/{phone-telephone.svg-D6y6im-g.js → phone-telephone.svg-BLtgdZw-.js} +1 -1
  168. package/web/assets/{plus-DJr2QEgS.js → plus-jk73RdzY.js} +5 -5
  169. package/web/assets/process.store-jsfEBwiA.js +1 -0
  170. package/web/assets/{programming-bug.svg-jKhqPvQ0.js → programming-bug.svg-BCN6lOn1.js} +1 -1
  171. package/web/assets/{programming-cloud.svg-C1_us4-8.js → programming-cloud.svg-DHNBRNkQ.js} +1 -1
  172. package/web/assets/{programming-computer-database-server.svg-C_8mq7k2.js → programming-computer-database-server.svg-C4DheEbm.js} +1 -1
  173. package/web/assets/{programming-computer-database.svg-Cc445gb5.js → programming-computer-database.svg-cD2w2ZZ6.js} +1 -1
  174. package/web/assets/{programming-module-four-layout.svg-B5fbcAO3.js → programming-module-four-layout.svg-D6_P2rTG.js} +1 -1
  175. package/web/assets/{programming-module-three.svg-J7fncT0c.js → programming-module-three.svg-Dc076Z_f.js} +1 -1
  176. package/web/assets/{programming-module.svg-BVjzZRgZ.js → programming-module.svg-D0c9akII.js} +1 -1
  177. package/web/assets/{programming-script-code.svg-By609kb5.js → programming-script-code.svg-BrT3KZQe.js} +1 -1
  178. package/web/assets/project-launch.store-Bp7vasUu.js +1 -0
  179. package/web/assets/project.store-DuZriz9o.js +1 -0
  180. package/web/assets/{python-jVn8dPRY.js → python-DMw-TRDY.js} +1 -1
  181. package/web/assets/{radiobutton-erK19fCL.js → radiobutton-CnoEo0qc.js} +2 -2
  182. package/web/assets/{razor-BJoJ2H1P.js → razor-BTS4Lk96.js} +1 -1
  183. package/web/assets/router-BU2tqcBm.js +1 -0
  184. package/web/assets/settings-scope-Bg_X1n_Y.js +1 -0
  185. package/web/assets/{settings.store-CcYfFedF.js → settings.store-DeGpnclr.js} +1 -1
  186. package/web/assets/{shopping-cart.svg-a8Rjk8rK.js → shopping-cart.svg-pvFNKXP_.js} +1 -1
  187. package/web/assets/{shopping-gift-present.svg-BIN9jnEb.js → shopping-gift-present.svg-PYJ4_vdS.js} +1 -1
  188. package/web/assets/{shopping-shipping-box-parcel-package.svg-05MVPg3v.js → shopping-shipping-box-parcel-package.svg-KMRd9Rmg.js} +1 -1
  189. package/web/assets/src-BsadAol0.js +572 -0
  190. package/web/assets/{src-DCcw9sU3.css → src-DU1mBjF-.css} +1 -1
  191. package/web/assets/src-NXursDRf.js +1 -0
  192. package/web/assets/{tabpanel-BIAV4aKH.js → tabpanel-CKudNnqo.js} +3 -3
  193. package/web/assets/{tag-new-circle.svg-ehKpryNe.js → tag-new-circle.svg-Bf83DYRq.js} +1 -1
  194. package/web/assets/theme-D6M00FyZ.js +1 -0
  195. package/web/assets/{toggleswitch-qhHjeH7s.js → toggleswitch-Cv0supU2.js} +2 -2
  196. package/web/assets/{travel-map-earth-globe.svg-D0Dk72so.js → travel-map-earth-globe.svg-WxnFDzEH.js} +1 -1
  197. package/web/assets/trpc-mWVODCs2.js +1 -0
  198. package/web/assets/{tsMode-B-s4JVyR.js → tsMode-CfruLmor.js} +5 -5
  199. package/web/assets/{typescript-CToySho3.js → typescript-BvsjNfHT.js} +1 -1
  200. package/web/assets/useAiChatDrawer-vNey6IKe.js +1 -0
  201. package/web/assets/useCloudOrg-B0o8vN4e.js +1 -0
  202. package/web/assets/useEnvVarAutocomplete-DJMTIim7.js +1 -0
  203. package/web/assets/useProjectCatalog-B6GXBDDA.js +1 -0
  204. package/web/assets/{useProjectCloudOrg-DOTcwa9I.js → useProjectCloudOrg-BwLsTiz0.js} +1 -1
  205. package/web/assets/useServiceUrlHost-CE4Qoy-J.js +1 -0
  206. package/web/assets/{xml-BMt9wg3H.js → xml-BTID20Kj.js} +1 -1
  207. package/web/assets/{yaml-RmzWffCM.js → yaml-BtOf_8je.js} +1 -1
  208. package/web/index.html +2 -2
  209. package/agent-manager-ACPQWUZ5.js +0 -9
  210. package/chunk-22RJM654.js.map +0 -1
  211. package/chunk-2WXQIUVC.js.map +0 -1
  212. package/chunk-GIHR3BGT.js.map +0 -1
  213. package/chunk-H6VIS4OY.js.map +0 -1
  214. package/chunk-NYKFDU76.js.map +0 -1
  215. package/settings-manager-2C7RY6ZC.js +0 -9
  216. package/src-NRKK27F3.js.map +0 -1
  217. package/web/assets/AgentScalarChatInterface.vue-Lgml1vhh.js +0 -13
  218. package/web/assets/AgentTerminalPage-CwxbyQxm.js +0 -1
  219. package/web/assets/AiChatPage-CknE-NOo.js +0 -1
  220. package/web/assets/AppLayout-DT6bb__K.js +0 -1
  221. package/web/assets/AuditPage-DzK5Tp3Z.js +0 -1
  222. package/web/assets/CloudAccountPage-BDQpVEAX.js +0 -1
  223. package/web/assets/CloudAccountPage-CWdxZvAC.js +0 -1
  224. package/web/assets/CloudAccountPage-CfMY69pk.css +0 -1
  225. package/web/assets/CloudMessagingPage-BX0QPzkR.js +0 -2
  226. package/web/assets/DashboardPage-BNBzT2zb.js +0 -164
  227. package/web/assets/DirectoryPickerDialog-ZT-tL_4A.js +0 -1
  228. package/web/assets/EnvironmentFormPage-B7uerFJ0.js +0 -1
  229. package/web/assets/EnvironmentListPage-tTe_1yh-.js +0 -1
  230. package/web/assets/KanbanBoardPage-DTZVqxd6.js +0 -4
  231. package/web/assets/KanbanListPage-C5rbZ1eL.css +0 -1
  232. package/web/assets/KanbanListPage-D82HSRy7.js +0 -1
  233. package/web/assets/LaunchProjectPage-DgaslasQ.js +0 -1
  234. package/web/assets/LaunchServicesPage-I2HCqujc.js +0 -1
  235. package/web/assets/LogViewer-CYuoSJAN.js +0 -3
  236. package/web/assets/OrgKeyPrompt-Asz6FlrN.js +0 -1
  237. package/web/assets/ProcessDetailPage-DHmTCgj8.js +0 -1
  238. package/web/assets/RandomJobTestPage-COLLiJzt.js +0 -2
  239. package/web/assets/ScenarioEditorPage-rDIB08Ap.js +0 -14
  240. package/web/assets/SendToChatDialog-BvUmZhUU.js +0 -1
  241. package/web/assets/ServiceControlsBar-DGTsbA5Q.js +0 -1
  242. package/web/assets/ServiceDetailPage-Ddko3DNN.js +0 -2
  243. package/web/assets/ServiceFormPage-oVVmtWjt.js +0 -1
  244. package/web/assets/SettingsPage-BcQruhk1.js +0 -2063
  245. package/web/assets/UnlockPage-CpysPhlT.css +0 -1
  246. package/web/assets/UnlockPage-OH7UV01L.js +0 -1
  247. package/web/assets/VaultMigrationPage-B4a0WihW.js +0 -1
  248. package/web/assets/VersionBadge-URtOAd5L.js +0 -1
  249. package/web/assets/WikiPage-BotpKBAY.js +0 -1
  250. package/web/assets/WikiView-DQCs79lu.js +0 -1
  251. package/web/assets/add-scalar-classes-CnAomA8D.js +0 -387
  252. package/web/assets/card-C3Xots9M.js +0 -32
  253. package/web/assets/client-CbBJUuyt.js +0 -24
  254. package/web/assets/cloud-chat.store-COR3nnYR.js +0 -1
  255. package/web/assets/cloud-client-DZFY1sze.js +0 -1
  256. package/web/assets/cloud-session-CCJUvzk1.js +0 -1
  257. package/web/assets/column-ROcesBUs.js +0 -763
  258. package/web/assets/interface-content-folder.svg-CagI3wg0.js +0 -1
  259. package/web/assets/modal-AUS2ksVq.js +0 -5
  260. package/web/assets/modal-BR3MAJDn.js +0 -1
  261. package/web/assets/multiselect-aPow7kzy.js +0 -251
  262. package/web/assets/process.store-CVrBwiRB.js +0 -1
  263. package/web/assets/project-launch.store-DCuERm8z.js +0 -1
  264. package/web/assets/project.store-D0oo8kyl.js +0 -1
  265. package/web/assets/router-0UcfydXq.js +0 -1
  266. package/web/assets/settings-scope-DdLe151G.js +0 -1
  267. package/web/assets/src-BiwZaAz3.js +0 -1
  268. package/web/assets/src-OmBj_GBQ.js +0 -572
  269. package/web/assets/theme-DiK_jXoN.js +0 -1
  270. package/web/assets/trpc-DOYpfRgV.js +0 -1
  271. package/web/assets/useAiChatDrawer-BSlDU8P0.js +0 -1
  272. package/web/assets/useCloudOrg-_EGQ6eUY.js +0 -1
  273. package/web/assets/useEnvVarAutocomplete-B4h_6ylX.js +0 -1
  274. package/web/assets/useProjectCatalog-B3GacZkf.js +0 -1
  275. package/web/assets/useServiceUrlHost-B-38dOxY.js +0 -1
  276. /package/{agent-manager-ACPQWUZ5.js.map → agent-manager-4HBMLHXU.js.map} +0 -0
  277. /package/{chat-PXMMZIAY.js.map → chat-VL6BIVO5.js.map} +0 -0
  278. /package/{companion-4RQ3AMOL.js.map → companion-AUMA6RGX.js.map} +0 -0
  279. /package/{desktop-launcher-ADGRYF4S.js.map → desktop-launcher-EGGVXXKV.js.map} +0 -0
  280. /package/{settings-manager-2C7RY6ZC.js.map → settings-manager-ROWQ5GC2.js.map} +0 -0
@@ -64,7 +64,7 @@ import {
64
64
  soleAccountScope,
65
65
  startCliSession,
66
66
  vaultOfProject
67
- } from "./chunk-22RJM654.js";
67
+ } from "./chunk-HJUFIZ7H.js";
68
68
  import {
69
69
  resolveCliInvocation,
70
70
  whichCommand
@@ -87,7 +87,7 @@ import {
87
87
  stopClaudeTranscriptWatcher,
88
88
  stopCodexTranscriptWatcher,
89
89
  verifyJwt
90
- } from "./chunk-NYKFDU76.js";
90
+ } from "./chunk-OVV52N5F.js";
91
91
  import "./chunk-MD3VW4HQ.js";
92
92
  import {
93
93
  agentManager,
@@ -98,7 +98,6 @@ import {
98
98
  clearVaultLock,
99
99
  decryptValue,
100
100
  decryptValueWith,
101
- describeInstance,
102
101
  encryptValue,
103
102
  encryptValueWith,
104
103
  ensureEncryptionKey,
@@ -126,10 +125,11 @@ import {
126
125
  stableEncryptValue,
127
126
  traefikManager,
128
127
  unregisterInstance
129
- } from "./chunk-2WXQIUVC.js";
128
+ } from "./chunk-CNTL6NVU.js";
130
129
  import {
131
130
  settingsManager
132
- } from "./chunk-GIHR3BGT.js";
131
+ } from "./chunk-3N55WR7F.js";
132
+ import "./chunk-YZU5FNXR.js";
133
133
  import {
134
134
  AGENT_LONG_FETCH_TIMEOUT,
135
135
  AGENT_STOP_FETCH_TIMEOUT,
@@ -163,7 +163,7 @@ import {
163
163
  readEntity,
164
164
  serviceSlug,
165
165
  writeEntity
166
- } from "./chunk-H6VIS4OY.js";
166
+ } from "./chunk-T2BV5WZE.js";
167
167
  import {
168
168
  env,
169
169
  forgetOrgLogo,
@@ -1167,6 +1167,63 @@ var projectRouter = router({
1167
1167
  await projectPathStore.set(project, input.path);
1168
1168
  await auditService.log({ userId: "local", action: "update", entityType: "project", entityId: input.id, metadata: { localPath: input.path } });
1169
1169
  return { path: input.path };
1170
+ }),
1171
+ /**
1172
+ * Ce qui a changé dans les stores, à mesure que ça change.
1173
+ *
1174
+ * Un projet, un service ou un environnement n'arrive pas toujours de
1175
+ * l'utilisateur assis devant : il descend du cloud quand un collègue le
1176
+ * pousse, ou d'une autre Runeya de cette machine. Les stores étaient déjà
1177
+ * prévenus — la synchronisation s'appuie sur les mêmes signaux — mais rien ne
1178
+ * portait l'information jusqu'à l'écran, qui gardait donc ce qu'il avait
1179
+ * chargé à l'ouverture de la vue.
1180
+ *
1181
+ * Ce flux annonce les collections touchées, pas leur contenu. Chacune a déjà
1182
+ * sa route, avec ses règles — un service ne sort jamais d'ici sans être
1183
+ * expurgé de ses secrets — et les redire ici en ferait une seconde version à
1184
+ * tenir d'accord avec la première.
1185
+ *
1186
+ * Les réveils sont groupés : une synchronisation qui descend un projet touche
1187
+ * ses trois collections coup sur coup, et trois annonces feraient trois
1188
+ * rechargements là où un seul suffit.
1189
+ */
1190
+ onDataChanged: protectedProcedure.subscription(async function* ({ signal }) {
1191
+ const touched = /* @__PURE__ */ new Set();
1192
+ let wake = null;
1193
+ const mark = (collection) => () => {
1194
+ touched.add(collection);
1195
+ if (wake) {
1196
+ wake();
1197
+ wake = null;
1198
+ }
1199
+ };
1200
+ const onProjects = mark("projects");
1201
+ projectStore.events.on("saved", onProjects);
1202
+ const offs = [serviceStore.onChange(mark("services")), environmentStore.onChange(mark("environments"))];
1203
+ const onAbort = () => {
1204
+ if (wake) {
1205
+ wake();
1206
+ wake = null;
1207
+ }
1208
+ };
1209
+ signal?.addEventListener("abort", onAbort);
1210
+ try {
1211
+ while (!signal?.aborted) {
1212
+ if (touched.size > 0) {
1213
+ const collections = Array.from(touched);
1214
+ touched.clear();
1215
+ yield { collections };
1216
+ } else {
1217
+ await new Promise((resolve4) => {
1218
+ wake = resolve4;
1219
+ });
1220
+ }
1221
+ }
1222
+ } finally {
1223
+ projectStore.events.off("saved", onProjects);
1224
+ for (const off of offs) off();
1225
+ signal?.removeEventListener("abort", onAbort);
1226
+ }
1170
1227
  })
1171
1228
  });
1172
1229
 
@@ -6523,82 +6580,8 @@ async function reconcileOrgCanary(orgId) {
6523
6580
 
6524
6581
  // ../server/src/services/cloud-sync-bridge.ts
6525
6582
  import { randomUUID as randomUUID5 } from "crypto";
6526
- import { mkdir as mkdir8, rm as rm3 } from "fs/promises";
6583
+ import { mkdir as mkdir7, rm as rm3 } from "fs/promises";
6527
6584
  import * as Y from "yjs";
6528
-
6529
- // ../server/src/services/org-lock.ts
6530
- import { open, readFile as readFile4, unlink, mkdir as mkdir7 } from "fs/promises";
6531
- import { readFileSync, unlinkSync } from "fs";
6532
- import { join as join10 } from "path";
6533
- var held = /* @__PURE__ */ new Set();
6534
- function lockPath(orgId) {
6535
- return join10(orgVaultRoot(orgId), "org.lock");
6536
- }
6537
- function isRunning(pid) {
6538
- if (!Number.isInteger(pid) || pid <= 0) return false;
6539
- try {
6540
- process.kill(pid, 0);
6541
- return true;
6542
- } catch (err) {
6543
- return err.code === "EPERM";
6544
- }
6545
- }
6546
- async function readLock(path) {
6547
- try {
6548
- const parsed = JSON.parse(await readFile4(path, "utf-8"));
6549
- return typeof parsed?.pid === "number" ? parsed : null;
6550
- } catch {
6551
- return null;
6552
- }
6553
- }
6554
- async function acquireOrgLock(orgId) {
6555
- const path = lockPath(orgId);
6556
- await mkdir7(orgVaultRoot(orgId), { recursive: true });
6557
- for (let attempt = 0; attempt < 2; attempt++) {
6558
- try {
6559
- const handle = await open(path, "wx");
6560
- try {
6561
- const contents = { pid: process.pid, startedAt: (/* @__PURE__ */ new Date()).toISOString() };
6562
- await handle.writeFile(JSON.stringify(contents), "utf-8");
6563
- } finally {
6564
- await handle.close();
6565
- }
6566
- held.add(orgId);
6567
- return { acquired: true };
6568
- } catch (err) {
6569
- if (err.code !== "EEXIST") throw err;
6570
- }
6571
- const holder2 = await readLock(path);
6572
- if (holder2 && holder2.pid !== process.pid && isRunning(holder2.pid)) {
6573
- return { acquired: false, heldBy: holder2.pid };
6574
- }
6575
- await unlink(path).catch(() => {
6576
- });
6577
- }
6578
- const holder = await readLock(path);
6579
- return holder ? { acquired: false, heldBy: holder.pid } : { acquired: true };
6580
- }
6581
- async function releaseOrgLock(orgId) {
6582
- held.delete(orgId);
6583
- const path = lockPath(orgId);
6584
- const holder = await readLock(path);
6585
- if (holder && holder.pid !== process.pid) return;
6586
- await unlink(path).catch(() => {
6587
- });
6588
- }
6589
- function releaseAllOrgLocksSync() {
6590
- for (const orgId of held) {
6591
- const path = lockPath(orgId);
6592
- try {
6593
- const holder = JSON.parse(readFileSync(path, "utf-8"));
6594
- if (holder.pid === process.pid) unlinkSync(path);
6595
- } catch {
6596
- }
6597
- }
6598
- held.clear();
6599
- }
6600
-
6601
- // ../server/src/services/cloud-sync-bridge.ts
6602
6585
  var LOCAL_ORIGIN = "local-bridge";
6603
6586
  var REMOTE_ORIGIN = "remote";
6604
6587
  var RECONNECT_DELAY_MS = 3e3;
@@ -6971,7 +6954,7 @@ var OrgSyncConnection = class {
6971
6954
  }
6972
6955
  const isLocal = existing?.orgId === this.link.orgId;
6973
6956
  if (!inDoc && !isLocal) return false;
6974
- await mkdir8(projectVaultRoot(this.link.orgId, projectId), { recursive: true });
6957
+ await mkdir7(projectVaultRoot(this.link.orgId, projectId), { recursive: true });
6975
6958
  this.tracked.add(projectId);
6976
6959
  if (inDoc) await this.pullFromDoc([projectId]);
6977
6960
  else await this.reconcileLocalToDoc();
@@ -7012,6 +6995,7 @@ var OrgSyncConnection = class {
7012
6995
  } finally {
7013
6996
  this.pulling = false;
7014
6997
  }
6998
+ await serviceStore.relocateAll();
7015
6999
  await this.reconcileLocalToDoc();
7016
7000
  }
7017
7001
  // ---- Local ↔ Doc reconciliation --------------------------------------
@@ -7243,21 +7227,12 @@ var OrgSyncConnection = class {
7243
7227
  };
7244
7228
  var CloudSyncBridge = class {
7245
7229
  connections = /* @__PURE__ */ new Map();
7246
- /**
7247
- * Orgs another instance holds the lock on — reported, not retried blindly.
7248
- *
7249
- * Le pid du détenteur, et non un simple drapeau : « un autre Runeya de cette
7250
- * machine » ne dit pas lequel fermer, et l'utilisateur en a souvent trois.
7251
- * Le port se déduit du pid par le registre d'instances, au moment de rendre
7252
- * l'état — jamais mémorisé ici, où il vieillirait.
7253
- */
7254
- locked = /* @__PURE__ */ new Map();
7255
7230
  /**
7256
7231
  * Orgs whose key this machine does not have.
7257
7232
  *
7258
- * Held here for the same reason as `locked`: the connection is never opened,
7259
- * so there is nothing to ask for its state and an org that cannot sync
7260
- * until a human supplies a key must not read as merely "stopped".
7233
+ * Tenues à part : la connexion n'est jamais ouverte, donc il n'y a rien à qui
7234
+ * demander son état et une organisation qui ne peut pas synchroniser tant
7235
+ * qu'un humain n'a pas fourni de clé ne doit pas se lire « arrêtée ».
7261
7236
  */
7262
7237
  keyMismatch = /* @__PURE__ */ new Set();
7263
7238
  started = false;
@@ -7341,22 +7316,14 @@ var CloudSyncBridge = class {
7341
7316
  const live = Array.from(this.connections.entries()).map(([orgId, conn]) => ({
7342
7317
  orgId,
7343
7318
  state: conn.getState(),
7344
- lastIncompatibleVersion: conn.getLastIncompatibleVersion(),
7345
- heldByPid: null
7346
- }));
7347
- const locked = Array.from(this.locked).filter(([orgId]) => !this.connections.has(orgId)).map(([orgId, pid]) => ({
7348
- orgId,
7349
- state: "locked",
7350
- lastIncompatibleVersion: null,
7351
- heldByPid: pid
7319
+ lastIncompatibleVersion: conn.getLastIncompatibleVersion()
7352
7320
  }));
7353
7321
  const mismatched = Array.from(this.keyMismatch).filter((orgId) => !this.connections.has(orgId)).map((orgId) => ({
7354
7322
  orgId,
7355
7323
  state: "key-mismatch",
7356
- lastIncompatibleVersion: null,
7357
- heldByPid: null
7324
+ lastIncompatibleVersion: null
7358
7325
  }));
7359
- return [...live, ...locked, ...mismatched];
7326
+ return [...live, ...mismatched];
7360
7327
  }
7361
7328
  /**
7362
7329
  * Follow one project of an org on this machine, pulling it now.
@@ -7402,20 +7369,6 @@ var CloudSyncBridge = class {
7402
7369
  );
7403
7370
  }
7404
7371
  this.keyMismatch.delete(link.orgId);
7405
- const lock = await acquireOrgLock(link.orgId).catch((err) => {
7406
- console.error("[cloud-sync] could not take the lock for org %s:", link.orgId, err.message);
7407
- return { acquired: false, heldBy: 0 };
7408
- });
7409
- if (!lock.acquired) {
7410
- console.error(
7411
- "[cloud-sync] org %s is already being synced by another Runeya (pid %d) \u2014 not syncing it here",
7412
- link.orgId,
7413
- lock.heldBy
7414
- );
7415
- this.locked.set(link.orgId, lock.heldBy);
7416
- return;
7417
- }
7418
- this.locked.delete(link.orgId);
7419
7372
  const conn = new OrgSyncConnection(link);
7420
7373
  this.connections.set(link.orgId, conn);
7421
7374
  try {
@@ -7429,22 +7382,19 @@ var CloudSyncBridge = class {
7429
7382
  if (existing) {
7430
7383
  existing.stop();
7431
7384
  this.connections.delete(orgId);
7432
- void releaseOrgLock(orgId);
7433
7385
  }
7434
7386
  }
7435
7387
  stopAll() {
7436
7388
  for (const conn of this.connections.values()) conn.stop();
7437
7389
  this.connections.clear();
7438
- this.locked.clear();
7439
7390
  this.keyMismatch.clear();
7440
- releaseAllOrgLocksSync();
7441
7391
  }
7442
7392
  };
7443
7393
  var cloudSyncBridge = new CloudSyncBridge();
7444
7394
 
7445
7395
  // ../server/src/services/key-adoption.ts
7446
- import { readdir as readdir3, readFile as readFile5, writeFile as writeFile6, mkdir as mkdir9, copyFile, rename as rename4, stat as stat5 } from "fs/promises";
7447
- import { join as join11 } from "path";
7396
+ import { readdir as readdir3, readFile as readFile4, writeFile as writeFile6, mkdir as mkdir8, copyFile, rename as rename4, stat as stat5 } from "fs/promises";
7397
+ import { join as join10 } from "path";
7448
7398
  import { createCipheriv as createCipheriv2, createDecipheriv as createDecipheriv2, randomBytes as randomBytes2 } from "crypto";
7449
7399
  var ALGORITHM = "aes-256-gcm";
7450
7400
  function isAgentTriplet(value) {
@@ -7524,10 +7474,10 @@ async function adoptOrgKey(orgId, newKey, masterPassword, now) {
7524
7474
  const touchedRoots = /* @__PURE__ */ new Set();
7525
7475
  for (const vaultRoot of await rootsOfOrg(orgId)) {
7526
7476
  for (const name of await jsonFilesIn(vaultRoot)) {
7527
- const path = join11(vaultRoot, name);
7477
+ const path = join10(vaultRoot, name);
7528
7478
  let parsed;
7529
7479
  try {
7530
- parsed = JSON.parse(await readFile5(path, "utf-8"));
7480
+ parsed = JSON.parse(await readFile4(path, "utf-8"));
7531
7481
  } catch {
7532
7482
  continue;
7533
7483
  }
@@ -7541,14 +7491,14 @@ async function adoptOrgKey(orgId, newKey, masterPassword, now) {
7541
7491
  const stamp = now.toISOString().replace(/[:.]/g, "-").substring(0, 19);
7542
7492
  const backups = [];
7543
7493
  for (const vaultRoot of touchedRoots) {
7544
- const backupDir = join11(vaultRoot, `backup-key-${stamp}`);
7545
- await mkdir9(backupDir, { recursive: true });
7494
+ const backupDir = join10(vaultRoot, `backup-key-${stamp}`);
7495
+ await mkdir8(backupDir, { recursive: true });
7546
7496
  for (const name of await jsonFilesIn(vaultRoot)) {
7547
- await copyFile(join11(vaultRoot, name), join11(backupDir, name));
7497
+ await copyFile(join10(vaultRoot, name), join10(backupDir, name));
7548
7498
  }
7549
7499
  for (const name of [".encryption.key.enc", ".runeya-verify"]) {
7550
- if (await exists(join11(vaultRoot, name))) {
7551
- await copyFile(join11(vaultRoot, name), join11(backupDir, name));
7500
+ if (await exists(join10(vaultRoot, name))) {
7501
+ await copyFile(join10(vaultRoot, name), join10(backupDir, name));
7552
7502
  }
7553
7503
  }
7554
7504
  backups.push(backupDir);
@@ -7612,10 +7562,6 @@ async function assertOrgKey(orgId) {
7612
7562
  function syncState(orgId) {
7613
7563
  return cloudSyncBridge.states().find((s) => s.orgId === orgId)?.state ?? "stopped";
7614
7564
  }
7615
- async function syncLockHolder(orgId) {
7616
- const pid = cloudSyncBridge.states().find((s) => s.orgId === orgId)?.heldByPid;
7617
- return pid ? describeInstance(pid) : null;
7618
- }
7619
7565
  var cloudSyncRouter = router({
7620
7566
  /**
7621
7567
  * Follow one more project of an org, and pull it now.
@@ -7650,7 +7596,7 @@ var cloudSyncRouter = router({
7650
7596
  }
7651
7597
  try {
7652
7598
  const pulled = await cloudSyncBridge.followProject(input.orgId, input.projectId);
7653
- return { pulled, state: syncState(input.orgId), heldBy: await syncLockHolder(input.orgId) };
7599
+ return { pulled, state: syncState(input.orgId) };
7654
7600
  } catch (err) {
7655
7601
  if (err instanceof ProjectHeldElsewhereError) {
7656
7602
  throw new TRPCError19({ code: "CONFLICT", message: err.code, cause: err });
@@ -7987,9 +7933,8 @@ var cloudSyncRouter = router({
7987
7933
  list: protectedProcedure.query(async () => {
7988
7934
  const links = await orgsToSync();
7989
7935
  const states = new Map(cloudSyncBridge.states().map((s) => [s.orgId, s]));
7990
- return Promise.all(links.map(async (l) => {
7936
+ return links.map((l) => {
7991
7937
  const found = states.get(l.orgId);
7992
- const heldBy = found?.heldByPid ? await describeInstance(found.heldByPid) : null;
7993
7938
  return {
7994
7939
  orgId: l.orgId,
7995
7940
  cloudUrl: l.cloudUrl,
@@ -7997,10 +7942,9 @@ var cloudSyncRouter = router({
7997
7942
  // Renseigné seulement quand le cloud a refusé cette app comme trop
7998
7943
  // ancienne : c'est lui qui publie le plancher, on ne le devine pas. La
7999
7944
  // borne est exclusive — il faut strictement plus récent que ce numéro.
8000
- lastIncompatibleVersion: found?.lastIncompatibleVersion ?? null,
8001
- heldBy
7945
+ lastIncompatibleVersion: found?.lastIncompatibleVersion ?? null
8002
7946
  };
8003
- }));
7947
+ });
8004
7948
  }),
8005
7949
  /**
8006
7950
  * The cloud instance behind every org vault on this machine.
@@ -8019,13 +7963,13 @@ var cloudSyncRouter = router({
8019
7963
  // ../server/src/trpc/routers/filesystem.ts
8020
7964
  import { readdir as readdir4, stat as stat6 } from "fs/promises";
8021
7965
  import { homedir as homedir3 } from "os";
8022
- import { isAbsolute, join as join12, resolve as resolve2, dirname as dirname4, basename } from "path";
7966
+ import { isAbsolute, join as join11, resolve as resolve2, dirname as dirname4, basename } from "path";
8023
7967
  import { z as z24 } from "zod";
8024
7968
  var MAX_ENTRIES2 = 500;
8025
7969
  var PATH_SCHEMA = z24.string().min(1).max(4096);
8026
7970
  function safeResolve(input) {
8027
7971
  if (input.includes("\0")) throw new Error("Chemin invalide");
8028
- const expanded = input.startsWith("~") ? join12(homedir3(), input.slice(1)) : input;
7972
+ const expanded = input.startsWith("~") ? join11(homedir3(), input.slice(1)) : input;
8029
7973
  if (!isAbsolute(expanded)) throw new Error("Le chemin doit \xEAtre absolu");
8030
7974
  return resolve2(expanded);
8031
7975
  }
@@ -8061,7 +8005,7 @@ var filesystemRouter = router({
8061
8005
  const truncated = names.length > MAX_ENTRIES2;
8062
8006
  const entries2 = [];
8063
8007
  for (const name of names.slice(0, MAX_ENTRIES2)) {
8064
- const path = join12(dir, name);
8008
+ const path = join11(dir, name);
8065
8009
  entries2.push({ name, path, hasRuneyaProject: await holdsRuneyaProject(path) });
8066
8010
  }
8067
8011
  return {
@@ -8322,8 +8266,8 @@ async function ensureFilePermissions() {
8322
8266
  }
8323
8267
 
8324
8268
  // ../server/src/services/vault-migration.ts
8325
- import { readdir as readdir5, readFile as readFile6, writeFile as writeFile7, mkdir as mkdir10, copyFile as copyFile2, unlink as unlink2, rename as rename5, stat as stat8 } from "fs/promises";
8326
- import { join as join13 } from "path";
8269
+ import { readdir as readdir5, readFile as readFile5, writeFile as writeFile7, mkdir as mkdir9, copyFile as copyFile2, unlink, rename as rename5, stat as stat8 } from "fs/promises";
8270
+ import { join as join12 } from "path";
8327
8271
  var KEY_FILES = [".encryption.key.enc", ".runeya-verify"];
8328
8272
  var MACHINE_FILES = [
8329
8273
  "agents.json",
@@ -8353,17 +8297,17 @@ async function openLegacyVault(legacyRoot, masterPassword) {
8353
8297
  }
8354
8298
  async function migrateLegacyVault(legacyRoot, machineRootDir, legacyKey, machineKey, now) {
8355
8299
  const stamp = now.toISOString().replace(/[:.]/g, "-").substring(0, 19);
8356
- const backupDir = join13(legacyRoot, `backup-${stamp}`);
8357
- await mkdir10(backupDir, { recursive: true });
8300
+ const backupDir = join12(legacyRoot, `backup-${stamp}`);
8301
+ await mkdir9(backupDir, { recursive: true });
8358
8302
  const jsonFiles = await vaultJsonFiles(legacyRoot);
8359
8303
  for (const name of [...jsonFiles, ...KEY_FILES]) {
8360
- if (await exists2(join13(legacyRoot, name))) {
8361
- await copyFile2(join13(legacyRoot, name), join13(backupDir, name));
8304
+ if (await exists2(join12(legacyRoot, name))) {
8305
+ await copyFile2(join12(legacyRoot, name), join12(backupDir, name));
8362
8306
  }
8363
8307
  }
8364
8308
  const rekeyed = [];
8365
8309
  for (const name of jsonFiles) {
8366
- const raw = await readFile6(join13(legacyRoot, name), "utf-8");
8310
+ const raw = await readFile5(join12(legacyRoot, name), "utf-8");
8367
8311
  let parsed;
8368
8312
  try {
8369
8313
  parsed = JSON.parse(raw);
@@ -8373,13 +8317,13 @@ async function migrateLegacyVault(legacyRoot, machineRootDir, legacyKey, machine
8373
8317
  const counter = { n: 0 };
8374
8318
  const converted = rekeyValue(parsed, legacyKey, machineKey, counter);
8375
8319
  if (counter.n === 0) continue;
8376
- const tmp = join13(legacyRoot, `${name}.tmp`);
8320
+ const tmp = join12(legacyRoot, `${name}.tmp`);
8377
8321
  await writeFile7(tmp, JSON.stringify(converted, null, 2), "utf-8");
8378
- await rename5(tmp, join13(legacyRoot, name));
8322
+ await rename5(tmp, join12(legacyRoot, name));
8379
8323
  rekeyed.push({ file: name, values: counter.n });
8380
8324
  }
8381
8325
  for (const { file, values } of rekeyed) {
8382
- const parsed = JSON.parse(await readFile6(join13(legacyRoot, file), "utf-8"));
8326
+ const parsed = JSON.parse(await readFile5(join12(legacyRoot, file), "utf-8"));
8383
8327
  const check = { n: 0 };
8384
8328
  rekeyValue(parsed, machineKey, machineKey, check);
8385
8329
  if (check.n !== values) {
@@ -8388,31 +8332,31 @@ async function migrateLegacyVault(legacyRoot, machineRootDir, legacyKey, machine
8388
8332
  );
8389
8333
  }
8390
8334
  }
8391
- await mkdir10(machineRootDir, { recursive: true });
8335
+ await mkdir9(machineRootDir, { recursive: true });
8392
8336
  const moved = [];
8393
8337
  const skipped = [];
8394
8338
  for (const name of MACHINE_FILES) {
8395
- const from = join13(legacyRoot, name);
8339
+ const from = join12(legacyRoot, name);
8396
8340
  if (!await exists2(from)) continue;
8397
- const to = join13(machineRootDir, name);
8341
+ const to = join12(machineRootDir, name);
8398
8342
  if (await exists2(to)) {
8399
8343
  skipped.push(name);
8400
8344
  continue;
8401
8345
  }
8402
8346
  await copyFile2(from, to);
8403
- await unlink2(from);
8347
+ await unlink(from);
8404
8348
  moved.push(name);
8405
8349
  }
8406
8350
  for (const name of KEY_FILES) {
8407
- const path = join13(legacyRoot, name);
8408
- if (await exists2(path)) await unlink2(path);
8351
+ const path = join12(legacyRoot, name);
8352
+ if (await exists2(path)) await unlink(path);
8409
8353
  }
8410
8354
  return { backupDir, rekeyed, moved, skipped };
8411
8355
  }
8412
8356
 
8413
8357
  // ../server/src/services/settings-migration.ts
8414
- import { readFile as readFile7, writeFile as writeFile8, rename as rename6, unlink as unlink3, mkdir as mkdir11, chmod as chmod4, stat as stat9 } from "fs/promises";
8415
- import { join as join14 } from "path";
8358
+ import { readFile as readFile6, writeFile as writeFile8, rename as rename6, unlink as unlink2, mkdir as mkdir10, chmod as chmod4, stat as stat9 } from "fs/promises";
8359
+ import { join as join13 } from "path";
8416
8360
  var SETTINGS_FILE = "settings.json";
8417
8361
  var SETTINGS_PRIVATE_FILE = "settings.private.json";
8418
8362
  async function exists3(path) {
@@ -8425,14 +8369,14 @@ async function legacySource(filename) {
8425
8369
  return null;
8426
8370
  }
8427
8371
  async function moveInto(root, filename, from) {
8428
- await mkdir11(root, { recursive: true });
8429
- const to = join14(root, filename);
8430
- const contents = await readFile7(from, "utf-8");
8372
+ await mkdir10(root, { recursive: true });
8373
+ const to = join13(root, filename);
8374
+ const contents = await readFile6(from, "utf-8");
8431
8375
  const tmp = to + ".tmp";
8432
8376
  await writeFile8(tmp, contents, "utf-8");
8433
8377
  await rename6(tmp, to);
8434
8378
  await chmod4(to, 384);
8435
- await unlink3(from);
8379
+ await unlink2(from);
8436
8380
  }
8437
8381
  async function migrateSettingsIntoVaults() {
8438
8382
  const report = { movedTo: null, files: [], ambiguous: [] };
@@ -8451,7 +8395,7 @@ async function migrateSettingsIntoVaults() {
8451
8395
  const orgId = orgs[0];
8452
8396
  const root = orgVaultRoot(orgId);
8453
8397
  for (const { filename, from } of sources) {
8454
- if (await exists3(join14(root, filename))) continue;
8398
+ if (await exists3(join13(root, filename))) continue;
8455
8399
  await moveInto(root, filename, from);
8456
8400
  report.files.push(filename);
8457
8401
  }
@@ -8467,14 +8411,14 @@ import { createRequire } from "module";
8467
8411
  import { randomBytes as randomBytes3, createCipheriv as createCipheriv3, createDecipheriv as createDecipheriv3 } from "crypto";
8468
8412
  import { randomUUID as randomUUID6 } from "crypto";
8469
8413
  import {
8470
- readFile as readFile8,
8414
+ readFile as readFile7,
8471
8415
  writeFile as writeFile9,
8472
8416
  rename as rename7,
8473
- mkdir as mkdir12,
8417
+ mkdir as mkdir11,
8474
8418
  access as access2,
8475
8419
  readdir as readdir6
8476
8420
  } from "fs/promises";
8477
- import { join as join15, dirname as dirname5 } from "path";
8421
+ import { join as join14, dirname as dirname5 } from "path";
8478
8422
  var _require = createRequire(import.meta.url);
8479
8423
  var PARSER_ID_MAP = {
8480
8424
  "stack-monitor-parser-jsons": "native:json",
@@ -8591,7 +8535,7 @@ async function getSodium() {
8591
8535
  return _sodium;
8592
8536
  }
8593
8537
  async function decryptLegacyFile(filePath, key, sodium) {
8594
- const raw = (await readFile8(filePath, "utf-8")).trim();
8538
+ const raw = (await readFile7(filePath, "utf-8")).trim();
8595
8539
  if (!raw || raw === "[]" || raw === "{}") {
8596
8540
  try {
8597
8541
  return JSON.parse(raw);
@@ -8616,7 +8560,7 @@ async function atomicWrite(path, data) {
8616
8560
  }
8617
8561
  async function runLegacyMigration(dataDir) {
8618
8562
  const legacyRoot = env.DATA_DIR;
8619
- const legacyKeyPath = join15(legacyRoot, "dbs", "encryption-key.json");
8563
+ const legacyKeyPath = join14(legacyRoot, "dbs", "encryption-key.json");
8620
8564
  try {
8621
8565
  await access2(legacyKeyPath);
8622
8566
  } catch {
@@ -8626,18 +8570,18 @@ async function runLegacyMigration(dataDir) {
8626
8570
  const timestamp = (/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "-").substring(0, 19);
8627
8571
  const legacyTmp = `${legacyRoot}-tmp`;
8628
8572
  await rename7(legacyRoot, legacyTmp);
8629
- await mkdir12(dataDir, { recursive: true });
8630
- const legacyOld = join15(dataDir, `backup-${timestamp}`);
8573
+ await mkdir11(dataDir, { recursive: true });
8574
+ const legacyOld = join14(dataDir, `backup-${timestamp}`);
8631
8575
  await rename7(legacyTmp, legacyOld);
8632
8576
  console.log(`[legacy-migration] Legacy data backed up to ${legacyOld}`);
8633
- const keyJson = JSON.parse(await readFile8(join15(legacyOld, "dbs", "encryption-key.json"), "utf-8"));
8577
+ const keyJson = JSON.parse(await readFile7(join14(legacyOld, "dbs", "encryption-key.json"), "utf-8"));
8634
8578
  const sodium = await getSodium();
8635
8579
  const sodiumKey = sodium.from_base64(keyJson.encryptionKey);
8636
8580
  const keyBuffer = Buffer.from(sodiumKey);
8637
8581
  const runyeaKeyHex = keyBuffer.toString("hex");
8638
8582
  await setEncryptionKey(runyeaKeyHex);
8639
8583
  console.log("[legacy-migration] Encryption key loaded in memory (temporary)");
8640
- const dbsDir = join15(legacyOld, "dbs");
8584
+ const dbsDir = join14(legacyOld, "dbs");
8641
8585
  async function readEncrypted(filePath) {
8642
8586
  try {
8643
8587
  return await decryptLegacyFile(filePath, sodiumKey, sodium);
@@ -8646,29 +8590,29 @@ async function runLegacyMigration(dataDir) {
8646
8590
  return null;
8647
8591
  }
8648
8592
  }
8649
- const envsDir = join15(dbsDir, "envs");
8593
+ const envsDir = join14(dbsDir, "envs");
8650
8594
  const envFiles = (await readdir6(envsDir).catch(() => [])).filter((f) => f.endsWith(".encrypted.json"));
8651
8595
  const legacyEnvs = {};
8652
8596
  for (const file of envFiles) {
8653
8597
  const name = file.replace(".encrypted.json", "");
8654
- legacyEnvs[name] = await readEncrypted(join15(envsDir, file));
8598
+ legacyEnvs[name] = await readEncrypted(join14(envsDir, file));
8655
8599
  }
8656
- const servicesDir = join15(dbsDir, "services");
8600
+ const servicesDir = join14(dbsDir, "services");
8657
8601
  const serviceFiles = (await readdir6(servicesDir).catch(() => [])).filter((f) => f.endsWith(".encrypted.json"));
8658
8602
  const legacyServices = {};
8659
8603
  for (const file of serviceFiles) {
8660
8604
  const name = file.replace(".encrypted.json", "");
8661
8605
  if (!name) continue;
8662
- const data = await readEncrypted(join15(servicesDir, file));
8606
+ const data = await readEncrypted(join14(servicesDir, file));
8663
8607
  if (data?.label) legacyServices[name] = data;
8664
8608
  }
8665
- const overridesDir = join15(dbsDir, "overrides");
8609
+ const overridesDir = join14(dbsDir, "overrides");
8666
8610
  const overrideFiles = (await readdir6(overridesDir).catch(() => [])).filter((f) => f.endsWith(".encrypted.json"));
8667
8611
  const legacyServiceOverrides = {};
8668
8612
  const legacyEnvOverrides = {};
8669
8613
  for (const file of overrideFiles) {
8670
8614
  const baseName = file.replace(".encrypted.json", "");
8671
- const data = await readEncrypted(join15(overridesDir, file));
8615
+ const data = await readEncrypted(join14(overridesDir, file));
8672
8616
  if (!data) continue;
8673
8617
  if (baseName.endsWith("-envs")) {
8674
8618
  legacyServiceOverrides[baseName.slice(0, -5)] = data;
@@ -8676,11 +8620,11 @@ async function runLegacyMigration(dataDir) {
8676
8620
  legacyEnvOverrides[baseName.slice(0, -12)] = data;
8677
8621
  }
8678
8622
  }
8679
- const parsersDir = join15(dbsDir, "parsers");
8623
+ const parsersDir = join14(dbsDir, "parsers");
8680
8624
  const parserFiles = (await readdir6(parsersDir).catch(() => [])).filter((f) => f.endsWith(".encrypted.json"));
8681
8625
  const legacyParsers = [];
8682
8626
  for (const file of parserFiles) {
8683
- const data = await readEncrypted(join15(parsersDir, file));
8627
+ const data = await readEncrypted(join14(parsersDir, file));
8684
8628
  if (data?.id) legacyParsers.push(data);
8685
8629
  }
8686
8630
  const projectMonoId = randomUUID6();
@@ -9021,7 +8965,7 @@ async function runLegacyMigration(dataDir) {
9021
8965
  }
9022
8966
  let existingSettings = {};
9023
8967
  try {
9024
- existingSettings = JSON.parse(await readFile8(join15(dataDir, "settings.json"), "utf-8"));
8968
+ existingSettings = JSON.parse(await readFile7(join14(dataDir, "settings.json"), "utf-8"));
9025
8969
  } catch {
9026
8970
  }
9027
8971
  const migratedParsers = legacyParsers.map((p) => ({
@@ -9042,11 +8986,11 @@ ${p.transform ?? ""}`,
9042
8986
  ...migratedParsers
9043
8987
  ]
9044
8988
  };
9045
- await atomicWrite(join15(dataDir, "projects.json"), runeProjects);
9046
- await atomicWrite(join15(dataDir, "services.json"), runeServices);
9047
- await atomicWrite(join15(dataDir, "environments.json"), runeEnvs);
9048
- await atomicWrite(join15(dataDir, "environment-overrides.json"), flatOverrides);
9049
- await atomicWrite(join15(dataDir, "settings.json"), newSettings);
8989
+ await atomicWrite(join14(dataDir, "projects.json"), runeProjects);
8990
+ await atomicWrite(join14(dataDir, "services.json"), runeServices);
8991
+ await atomicWrite(join14(dataDir, "environments.json"), runeEnvs);
8992
+ await atomicWrite(join14(dataDir, "environment-overrides.json"), flatOverrides);
8993
+ await atomicWrite(join14(dataDir, "settings.json"), newSettings);
9050
8994
  const svcEnvCount = runeEnvs.filter((e) => e.scope === "service").length;
9051
8995
  console.log(`[legacy-migration] Written: ${runeProjects.length} projects, ${runeServices.length} services, ${runeEnvs.length} environments (${svcEnvCount} service-scoped)`);
9052
8996
  console.log(`[legacy-migration] Overrides: ${Object.keys(flatOverrides).length}, custom parsers: ${migratedParsers.length} (all disabled \u2014 rewrite required)`);
@@ -9060,9 +9004,9 @@ async function findLegacyKeyInBackup(dataDir) {
9060
9004
  const entries2 = await readdir6(dataDir);
9061
9005
  const backupDirs = entries2.filter((e) => e.startsWith("backup-")).sort((a, b) => a < b ? -1 : a > b ? 1 : 0).reverse();
9062
9006
  for (const dir of backupDirs) {
9063
- const keyJsonPath = join15(dataDir, dir, "dbs", "encryption-key.json");
9007
+ const keyJsonPath = join14(dataDir, dir, "dbs", "encryption-key.json");
9064
9008
  try {
9065
- const raw = await readFile8(keyJsonPath, "utf-8");
9009
+ const raw = await readFile7(keyJsonPath, "utf-8");
9066
9010
  const parsed = JSON.parse(raw);
9067
9011
  if (!parsed.encryptionKey) continue;
9068
9012
  const sodium = await getSodium();
@@ -9083,8 +9027,8 @@ async function runOverrideOnlyMigration(dataDir) {
9083
9027
  const { resolve: resolve4 } = await import("path");
9084
9028
  const abDataDir = resolve4(dataDir);
9085
9029
  const candidateDirs = [
9086
- join15(dirname5(env.DATA_DIR), ".runeya", "dbs", "overrides"),
9087
- join15(abDataDir, "dbs", "overrides")
9030
+ join14(dirname5(env.DATA_DIR), ".runeya", "dbs", "overrides"),
9031
+ join14(abDataDir, "dbs", "overrides")
9088
9032
  ];
9089
9033
  let overridesDir = null;
9090
9034
  let overrideFiles = [];
@@ -9100,7 +9044,7 @@ async function runOverrideOnlyMigration(dataDir) {
9100
9044
  }
9101
9045
  }
9102
9046
  if (!overridesDir || overrideFiles.length === 0) return false;
9103
- const legacyKeyPath = join15(overridesDir, "..", "encryption-key.json");
9047
+ const legacyKeyPath = join14(overridesDir, "..", "encryption-key.json");
9104
9048
  try {
9105
9049
  await access2(legacyKeyPath);
9106
9050
  return false;
@@ -9118,7 +9062,7 @@ async function runOverrideOnlyMigration(dataDir) {
9118
9062
  const envNameToId = {};
9119
9063
  let envsRaw;
9120
9064
  try {
9121
- envsRaw = JSON.parse(await readFile8(join15(abDataDir, "environments.json"), "utf-8"));
9065
+ envsRaw = JSON.parse(await readFile7(join14(abDataDir, "environments.json"), "utf-8"));
9122
9066
  for (const _env of envsRaw) {
9123
9067
  const env2 = _env;
9124
9068
  if (env2["name"] && env2["id"]) {
@@ -9137,7 +9081,7 @@ async function runOverrideOnlyMigration(dataDir) {
9137
9081
  let servicesRaw = [];
9138
9082
  const serviceNameToId = {};
9139
9083
  try {
9140
- servicesRaw = JSON.parse(await readFile8(join15(abDataDir, "services.json"), "utf-8"));
9084
+ servicesRaw = JSON.parse(await readFile7(join14(abDataDir, "services.json"), "utf-8"));
9141
9085
  for (const _svc of servicesRaw) {
9142
9086
  const svc = _svc;
9143
9087
  if (svc["name"] && svc["id"]) serviceNameToId[svc["name"]] = svc["id"];
@@ -9154,7 +9098,7 @@ async function runOverrideOnlyMigration(dataDir) {
9154
9098
  const envName = baseName.slice(0, -"-environment".length);
9155
9099
  let data;
9156
9100
  try {
9157
- data = await decryptLegacyFile(join15(overridesDir, file), sodiumKey, sodium);
9101
+ data = await decryptLegacyFile(join14(overridesDir, file), sodiumKey, sodium);
9158
9102
  } catch (err) {
9159
9103
  console.warn(`[override-migration] Failed to decrypt ${file}: ${err.message}`);
9160
9104
  continue;
@@ -9181,7 +9125,7 @@ async function runOverrideOnlyMigration(dataDir) {
9181
9125
  }
9182
9126
  }
9183
9127
  if (Object.keys(flatOverrides).length > 0) {
9184
- await atomicWrite(join15(abDataDir, "environment-overrides.json"), flatOverrides);
9128
+ await atomicWrite(join14(abDataDir, "environment-overrides.json"), flatOverrides);
9185
9129
  console.log(`[override-migration] Written ${Object.keys(flatOverrides).length} override(s) to environment-overrides.json`);
9186
9130
  }
9187
9131
  let envsModified = false;
@@ -9191,7 +9135,7 @@ async function runOverrideOnlyMigration(dataDir) {
9191
9135
  const serviceName = baseName.slice(0, -"-envs".length);
9192
9136
  let data;
9193
9137
  try {
9194
- data = await decryptLegacyFile(join15(overridesDir, file), sodiumKey, sodium);
9138
+ data = await decryptLegacyFile(join14(overridesDir, file), sodiumKey, sodium);
9195
9139
  } catch (err) {
9196
9140
  console.warn(`[override-migration] Failed to decrypt ${file}: ${err.message}`);
9197
9141
  continue;
@@ -9250,7 +9194,7 @@ async function runOverrideOnlyMigration(dataDir) {
9250
9194
  }
9251
9195
  }
9252
9196
  if (envsModified) {
9253
- await atomicWrite(join15(abDataDir, "environments.json"), envsRaw);
9197
+ await atomicWrite(join14(abDataDir, "environments.json"), envsRaw);
9254
9198
  console.log("[override-migration] Merged service overrides into environments.json");
9255
9199
  }
9256
9200
  const migratedDir = overridesDir.replace(/overrides$/, "overrides-migrated");
@@ -9265,7 +9209,7 @@ async function runOverrideOnlyMigration(dataDir) {
9265
9209
  }
9266
9210
 
9267
9211
  // ../server/src/services/server-state.ts
9268
- import { join as join16 } from "path";
9212
+ import { join as join15 } from "path";
9269
9213
  import { stat as stat10 } from "fs/promises";
9270
9214
  var ENCRYPTED_KEY_FILENAME2 = ".encryption.key.enc";
9271
9215
  var VERIFY_FILENAME2 = ".runeya-verify";
@@ -9275,22 +9219,22 @@ async function getServerState() {
9275
9219
  let hasVerify = false;
9276
9220
  let hasData = false;
9277
9221
  try {
9278
- await stat10(join16(dataDir, ENCRYPTED_KEY_FILENAME2));
9222
+ await stat10(join15(dataDir, ENCRYPTED_KEY_FILENAME2));
9279
9223
  hasEncFile = true;
9280
9224
  } catch {
9281
9225
  }
9282
9226
  try {
9283
- await stat10(join16(dataDir, VERIFY_FILENAME2));
9227
+ await stat10(join15(dataDir, VERIFY_FILENAME2));
9284
9228
  hasVerify = true;
9285
9229
  } catch {
9286
9230
  }
9287
9231
  try {
9288
- await stat10(join16(dataDir, "projects.json"));
9232
+ await stat10(join15(dataDir, "projects.json"));
9289
9233
  hasData = true;
9290
9234
  } catch {
9291
9235
  }
9292
9236
  try {
9293
- await stat10(join16(dataDir, "project.json"));
9237
+ await stat10(join15(dataDir, "project.json"));
9294
9238
  hasData = true;
9295
9239
  } catch {
9296
9240
  }
@@ -10442,7 +10386,7 @@ async function createLocalServer() {
10442
10386
  ]);
10443
10387
  console.log("[server] Shutdown complete");
10444
10388
  };
10445
- const { initCompanion } = await import("./companion-4RQ3AMOL.js");
10389
+ const { initCompanion } = await import("./companion-AUMA6RGX.js");
10446
10390
  initCompanion();
10447
10391
  return { app, server, wss, shutdown };
10448
10392
  }
@@ -10572,8 +10516,8 @@ function onTrayServicesChanged(listener) {
10572
10516
  }
10573
10517
 
10574
10518
  // ../server/src/services/tray-icon.ts
10575
- import { mkdir as mkdir13, writeFile as writeFile10, rename as rename8 } from "fs/promises";
10576
- import { join as join17 } from "path";
10519
+ import { mkdir as mkdir12, writeFile as writeFile10, rename as rename8 } from "fs/promises";
10520
+ import { join as join16 } from "path";
10577
10521
 
10578
10522
  // ../server/src/services/png-to-ico.ts
10579
10523
  function isPng(bytes) {
@@ -10733,7 +10677,7 @@ var FETCH_TIMEOUT_MS = 3e3;
10733
10677
  var CACHE_TTL_MS = 10 * 6e4;
10734
10678
  var cache2 = /* @__PURE__ */ new Map();
10735
10679
  function trayIconDir() {
10736
- return join17(machineRoot(), "tray-icons");
10680
+ return join16(machineRoot(), "tray-icons");
10737
10681
  }
10738
10682
  async function resolveTrayIcon(platform = process.platform) {
10739
10683
  const orgId = getCurrentProject()?.orgId;
@@ -10761,8 +10705,8 @@ async function renderThemedIcon(platform) {
10761
10705
  }
10762
10706
  async function writeTrayIcon(stem, png, platform) {
10763
10707
  const dir = trayIconDir();
10764
- await mkdir13(dir, { recursive: true });
10765
- const path = join17(dir, stem);
10708
+ await mkdir12(dir, { recursive: true });
10709
+ const path = join16(dir, stem);
10766
10710
  if (platform === "win32") {
10767
10711
  const ico = pngToIco(png);
10768
10712
  return ico ? writeAtomic(`${path}.ico`, ico) : null;
@@ -10889,4 +10833,4 @@ export {
10889
10833
  startProcess,
10890
10834
  stopProcess
10891
10835
  };
10892
- //# sourceMappingURL=src-NRKK27F3.js.map
10836
+ //# sourceMappingURL=src-JIS3X4OU.js.map