@runeya/runeya 2.0.125 → 2.0.127

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 (281) hide show
  1. package/agent/index.js.map +1 -1
  2. package/agent-manager-FN6M6CLD.js +10 -0
  3. package/{chat-JIJQ7IJS.js → chat-VCHK77CW.js} +7 -7
  4. package/{chunk-HK5QNU6P.js → chunk-BDQOBEZ3.js} +18 -2
  5. package/chunk-BDQOBEZ3.js.map +1 -0
  6. package/{chunk-GKK3ACWB.js → chunk-LHVTBWM7.js} +599 -267
  7. package/chunk-LHVTBWM7.js.map +1 -0
  8. package/{chunk-N3ZI35SC.js → chunk-QPII36FL.js} +3 -3
  9. package/{chunk-T2BV5WZE.js → chunk-TTPL2M74.js} +87 -1
  10. package/chunk-TTPL2M74.js.map +1 -0
  11. package/{chunk-H22YLVQE.js → chunk-UKLNK5YA.js} +44 -20
  12. package/chunk-UKLNK5YA.js.map +1 -0
  13. package/{chunk-4PN7QBNM.js → chunk-WQWRTPPJ.js} +10 -5
  14. package/chunk-WQWRTPPJ.js.map +1 -0
  15. package/{companion-OZODV5BR.js → companion-YB3SDDTU.js} +7 -5
  16. package/{desktop-launcher-EGGVXXKV.js → desktop-launcher-J2BCSSGZ.js} +2 -2
  17. package/index.js +4 -4
  18. package/mcp-server/index.js +1469 -20
  19. package/mcp-server/index.js.map +1 -1
  20. package/package.json +1 -1
  21. package/settings-manager-4EDX7NIB.js +10 -0
  22. package/{src-SGSG2RSF.js → src-J3RBNMRJ.js} +268 -76
  23. package/src-J3RBNMRJ.js.map +1 -0
  24. package/web/assets/AgentScalarChatInterface.vue-86061Tlh.js +13 -0
  25. package/web/assets/AgentTerminalPage-DxGLu5uT.js +1 -0
  26. package/web/assets/AiChatPage-DmQKv6pr.js +1 -0
  27. package/web/assets/{AppLayout-vWoE_P8T.css → AppLayout-Do2CLgOr.css} +1 -1
  28. package/web/assets/AppLayout-DtK_nr-e.js +1 -0
  29. package/web/assets/AuditPage-CX5VJGlF.js +1 -0
  30. package/web/assets/CloudAccountPage-B_sjXlfl.js +1 -0
  31. package/web/assets/CloudAccountPage-ocHdrVEm.js +1 -0
  32. package/web/assets/CloudMessagingPage-BTfGWio6.js +2 -0
  33. package/web/assets/DashboardPage-7sATlyhd.js +164 -0
  34. package/web/assets/DashboardPage-DWA-1xgl.css +1 -0
  35. package/web/assets/DirectoryPickerDialog-DAJGNiRV.js +1 -0
  36. package/web/assets/{EditorIcon-BZyy2C12.js → EditorIcon-lzF8hPtZ.js} +2 -2
  37. package/web/assets/EnvironmentForm-DVWdFsE1.js +108 -0
  38. package/web/assets/EnvironmentFormPage-DoKBTKCU.js +1 -0
  39. package/web/assets/EnvironmentListPage-C9wGFZWU.js +1 -0
  40. package/web/assets/KanbanBoardPage-CoiDga7h.js +4 -0
  41. package/web/assets/KanbanListPage-xWYUu1P0.js +1 -0
  42. package/web/assets/LaunchProjectPage-DVXgnUYk.js +1 -0
  43. package/web/assets/LaunchServicesPage-CPN3Z3m5.css +1 -0
  44. package/web/assets/LaunchServicesPage-DM6keva3.js +1 -0
  45. package/web/assets/LogViewer-CMtuP1rB.js +3 -0
  46. package/web/assets/OrgKeyPrompt-BqVugrV1.js +1 -0
  47. package/web/assets/{ProcessControls-neMxqIY_.js → ProcessControls-DkaiMo0H.js} +1 -1
  48. package/web/assets/ProcessDetailPage-DJacy1ZE.js +1 -0
  49. package/web/assets/{ProcessMetrics-Bb7yNIVd.js → ProcessMetrics-D2lP9cEF.js} +2 -2
  50. package/web/assets/RandomJobTestPage-BOsChnPH.js +2 -0
  51. package/web/assets/ScenarioEditorPage-8XSWtwA5.js +14 -0
  52. package/web/assets/SendToChatDialog-DqPVoUgN.js +1 -0
  53. package/web/assets/ServiceControlsBar-QwLQLGFP.js +1 -0
  54. package/web/assets/ServiceControlsBar-lhuSKZqO.css +1 -0
  55. package/web/assets/ServiceDetailPage-DUw-ZZyD.js +2 -0
  56. package/web/assets/{ServiceDetailPage-BcFOlsU9.css → ServiceDetailPage-cQNK1uWq.css} +1 -1
  57. package/web/assets/ServiceFormPage-OYBr0pY4.js +1 -0
  58. package/web/assets/SettingsPage-BFoWbWhq.js +2063 -0
  59. package/web/assets/UnlockPage-DgLCLMkg.js +1 -0
  60. package/web/assets/VaultMigrationPage-C93bZgWb.js +1 -0
  61. package/web/assets/VersionBadge-2JJyjyFh.js +1 -0
  62. package/web/assets/WikiPage-DBinkJlt.js +1 -0
  63. package/web/assets/WikiView-DMyRUz16.js +1 -0
  64. package/web/assets/add-scalar-classes-C1s53GSo.js +387 -0
  65. package/web/assets/{autocomplete-BTMTTAk9.js → autocomplete-qVwP27uM.js} +3 -3
  66. package/web/assets/{basic-shape-diamond.svg-CZQG7mdB.js → basic-shape-diamond.svg-BwZ1Enqo.js} +1 -1
  67. package/web/assets/{basic-shape-hexagon.svg-BnLoXUmj.js → basic-shape-hexagon.svg-Cyko19l-.js} +1 -1
  68. package/web/assets/{basic-shape-primary-circle-ellipse-round.svg-DDU6pRYe.js → basic-shape-primary-circle-ellipse-round.svg-CWaxr-XS.js} +1 -1
  69. package/web/assets/{basic-shape-primary-square-rectangle.svg-Dq_Zdck2.js → basic-shape-primary-square-rectangle.svg-BueTJIhO.js} +1 -1
  70. package/web/assets/{basic-shape-shield.svg-DbFCxPmO.js → basic-shape-shield.svg-DiYXMUMt.js} +1 -1
  71. package/web/assets/{browser-CTYk99RA.js → browser-72mztbYe.js} +1 -1
  72. package/web/assets/{browser-DowFjZcI.js → browser-B8wHMk1o.js} +1 -1
  73. package/web/assets/{card-R4Q2Qr9t.js → card-CRMlmWrt.js} +2 -2
  74. package/web/assets/{checkbox-CfoV-T17.js → checkbox-BiDvmfqK.js} +3 -3
  75. package/web/assets/{chip-V3vhLdcF.js → chip-Cb6eK00K.js} +2 -2
  76. package/web/assets/client-3Q_o9QCm.js +24 -0
  77. package/web/assets/cloud-chat.store-DIxQd2ew.js +1 -0
  78. package/web/assets/cloud-client-Idzdbhu6.js +1 -0
  79. package/web/assets/cloud-session-CIGp7324.js +2 -0
  80. package/web/assets/cloud-session-Cj_Q0hKS.js +1 -0
  81. package/web/assets/column-4DnT4nYp.js +763 -0
  82. package/web/assets/{computer-device-desktop-monitor.svg-CRLfD7-U.js → computer-device-desktop-monitor.svg-DkL4R6oe.js} +1 -1
  83. package/web/assets/{computer-device-desktop.svg-CGKq4iih.js → computer-device-desktop.svg-DXRQ2Wl4.js} +1 -1
  84. package/web/assets/{computer-device-laptop.svg-bmeM_RDO.js → computer-device-laptop.svg-BwdMHvul.js} +1 -1
  85. package/web/assets/{computer-device-mobile-phone-android-samsung-back.svg-CFwMSjoP.js → computer-device-mobile-phone-android-samsung-back.svg-CzfVICvS.js} +1 -1
  86. package/web/assets/{computer-device-mobile-phone-android-samsung.svg-iIOhGZVY.js → computer-device-mobile-phone-android-samsung.svg-5mcZzPvQ.js} +1 -1
  87. package/web/assets/{computer-device-mobile-phone-iphone-x-back.svg-CLqnsMnT.js → computer-device-mobile-phone-iphone-x-back.svg-CovJE-GH.js} +1 -1
  88. package/web/assets/{computer-device-mobile-phone-iphone-x.svg-XECS9ZDX.js → computer-device-mobile-phone-iphone-x.svg-PgDuCiQq.js} +1 -1
  89. package/web/assets/{computer-device-mobile-tablet-touch.svg-CUR9IhGB.js → computer-device-mobile-tablet-touch.svg-1xFu6tBt.js} +1 -1
  90. package/web/assets/{computer-device-mobile-tablet.svg-BJGisjBt.js → computer-device-mobile-tablet.svg-lvKpoZnh.js} +1 -1
  91. package/web/assets/{computer-device-network-ethernet-cat6.svg-DzgiswAZ.js → computer-device-network-ethernet-cat6.svg-BJ6jNe-4.js} +1 -1
  92. package/web/assets/{computer-device-network-lan-www.svg-Dr1frFpv.js → computer-device-network-lan-www.svg-D2V9EO5w.js} +1 -1
  93. package/web/assets/{computer-device-network-wifi-connection.svg-DSj6qxT1.js → computer-device-network-wifi-connection.svg-DhFLYNK0.js} +1 -1
  94. package/web/assets/{computer-device-network-wifi-router.svg-8lGzw_-s.js → computer-device-network-wifi-router.svg-BGWV2N2B.js} +1 -1
  95. package/web/assets/{cssMode-sBjZEJAf.js → cssMode-Q_UQl6r1.js} +1 -1
  96. package/web/assets/{divider-p4BForJk.js → divider-D2zmU0b9.js} +2 -2
  97. package/web/assets/{docx-preview-D-bfEEBT.js → docx-preview-CAEo0pZg.js} +1 -1
  98. package/web/assets/{ecology-science-erlenmeyer-flask.svg-DhxVJRJ1.js → ecology-science-erlenmeyer-flask.svg-D4Cb7DOj.js} +1 -1
  99. package/web/assets/{fieldset-CCZ1tJUm.js → fieldset-CvPPXvgb.js} +2 -2
  100. package/web/assets/{freemarker2-C8iPD1fo.js → freemarker2-CCRi9jHA.js} +1 -1
  101. package/web/assets/{handlebars-BbBZAhwL.js → handlebars-4FU6Ze_N.js} +1 -1
  102. package/web/assets/{html-BQ_SV3Jd.js → html-1I40tTPC.js} +1 -1
  103. package/web/assets/{htmlMode-DReHoZFB.js → htmlMode-DQrNrxvx.js} +1 -1
  104. package/web/assets/{image-flash-lightning.svg-DbKHX2c2.js → image-flash-lightning.svg-Bh48o-tL.js} +1 -1
  105. package/web/assets/{image-picture-flower.svg-CEpqP8le.js → image-picture-flower.svg-CE0C3oid.js} +1 -1
  106. package/web/assets/{index-PMr5ScNs.js → index-SrQFBx_K.js} +36 -36
  107. package/web/assets/{interface-alert-exclamation-diamond.svg-CoNNtahD.js → interface-alert-exclamation-diamond.svg-Dzt9JrNZ.js} +1 -1
  108. package/web/assets/{interface-alert-exclamation-triangle-warning.svg-BHa7AW0u.js → interface-alert-exclamation-triangle-warning.svg-CET5JCIK.js} +1 -1
  109. package/web/assets/{interface-alert-information-circle.svg-CpRzO-l8.js → interface-alert-information-circle.svg-GX_R0hCS.js} +1 -1
  110. package/web/assets/{interface-award-crown.svg-BFOXAZFu.js → interface-award-crown.svg-BUS_3snr.js} +1 -1
  111. package/web/assets/{interface-bookmark.svg-DulnuoPg.js → interface-bookmark-tag.svg-GOtO3ous.js} +1 -1
  112. package/web/assets/{interface-bookmark-tag.svg-DpZGlSV4.js → interface-bookmark.svg-B1HfpZ9v.js} +1 -1
  113. package/web/assets/{interface-calendar-date-one.svg-CWQHbXWQ.js → interface-calendar-date-one.svg-W8G2NQFL.js} +1 -1
  114. package/web/assets/{interface-content-book-open-pages.svg-BH97UDUJ.js → interface-content-book-open-pages.svg-0dUMuEJV.js} +1 -1
  115. package/web/assets/{interface-content-book-page.svg-DmnJkpeN.js → interface-content-book-page.svg-BZ9dLtQQ.js} +1 -1
  116. package/web/assets/{interface-content-file.svg-DkouOQzj.js → interface-content-file.svg-C5JU1QaC.js} +1 -1
  117. package/web/assets/interface-content-folder.svg-BZAP22kT.js +1 -0
  118. package/web/assets/{interface-content-folder.svg-DK2esxIw.js → interface-content-folder.svg-DeWnODx9.js} +1 -1
  119. package/web/assets/{interface-copy-clipboard.svg-DuwyZprv.js → interface-copy-clipboard.svg-DneOONZN.js} +1 -1
  120. package/web/assets/{interface-edit-attachment.svg-C4lXPh7a.js → interface-edit-attachment.svg-BUDutqFa.js} +1 -1
  121. package/web/assets/{interface-edit-binocular.svg-CuA4f4ED.js → interface-edit-binocular.svg-DQ_sVWUa.js} +1 -1
  122. package/web/assets/{interface-edit-magic-wand.svg-D-Cc4zpI.js → interface-edit-magic-wand.svg-BqDEUbja.js} +1 -1
  123. package/web/assets/{interface-edit-tool-paint-roller.svg-MtAeMQ6k.js → interface-edit-tool-paint-roller.svg-CcbJr-sE.js} +1 -1
  124. package/web/assets/{interface-edit-tool-pencil.svg-ZAP8C3Sw.js → interface-edit-tool-pencil.svg-Dlmq9sMb.js} +1 -1
  125. package/web/assets/{interface-favorite-award.svg-DRZh5var.js → interface-favorite-award.svg-CfRf16yB.js} +1 -1
  126. package/web/assets/{interface-favorite-flag.svg-Dy0qBZak.js → interface-favorite-flag.svg-BeXa9l_o.js} +1 -1
  127. package/web/assets/{interface-favorite-heart.svg-Cjxi5AEp.js → interface-favorite-heart.svg-DWDXtfc-.js} +1 -1
  128. package/web/assets/{interface-favorite-star.svg-B1OPbNTd.js → interface-favorite-star.svg-D0my2O2z.js} +1 -1
  129. package/web/assets/{interface-favorite-stars-sparkles.svg-CvnZTUkf.js → interface-favorite-stars-sparkles.svg-DwnkpORM.js} +1 -1
  130. package/web/assets/{interface-hierarchy-flowchart.svg-GGCH0pvQ.js → interface-hierarchy-flowchart.svg-BS1qAEvQ.js} +1 -1
  131. package/web/assets/{interface-home-house.svg-DB_dC7eo.js → interface-home-house.svg-ByCGOgtp.js} +1 -1
  132. package/web/assets/{interface-hyperlink.svg-LlMqAHmb.js → interface-hyperlink.svg-D0RP2diO.js} +1 -1
  133. package/web/assets/{interface-lighting-brightness.svg-DutEgNfQ.js → interface-lighting-brightness.svg-B7Wir9fI.js} +1 -1
  134. package/web/assets/{interface-lock-closed.svg-DteyBWrL.js → interface-lock-closed.svg-D93wzWGY.js} +1 -1
  135. package/web/assets/{interface-lock-open-unlock.svg-D2g-W1Mn.js → interface-lock-open-unlock.svg-CEbreK15.js} +1 -1
  136. package/web/assets/{interface-login-key.svg-Dk1JjhYH.js → interface-login-key.svg-a_CUiiRx.js} +1 -1
  137. package/web/assets/{interface-search.svg-CDHAdhLc.js → interface-search.svg-CP6bN80a.js} +1 -1
  138. package/web/assets/{interface-setting-cog.svg-BXKxgm-B.js → interface-setting-cog.svg-C1yqB1H3.js} +1 -1
  139. package/web/assets/{interface-share-megaphone-bullhorn.svg-Fq3c3_sE.js → interface-share-megaphone-bullhorn.svg-BpEzN7dc.js} +1 -1
  140. package/web/assets/{interface-share-rocket.svg-BBIuiQ8_.js → interface-share-rocket.svg-CZTpH2do.js} +1 -1
  141. package/web/assets/{interface-share-satellite.svg-LZRzoY-Y.js → interface-share-satellite.svg-CDpvXyTq.js} +1 -1
  142. package/web/assets/{interface-share-space-ship.svg-C6EewxDh.js → interface-share-space-ship.svg-QXv4WQWa.js} +1 -1
  143. package/web/assets/{interface-share.svg-Bj60UW_t.js → interface-share.svg-DO9f8_w3.js} +1 -1
  144. package/web/assets/{interface-signal-square.svg-wJGg3ZJ7.js → interface-signal-square.svg-Dpbb94dT.js} +1 -1
  145. package/web/assets/{interface-time-clock-circle.svg-C2Ki_bgh.js → interface-time-clock-circle.svg-BOM8J4p-.js} +1 -1
  146. package/web/assets/{interface-time-hour-glass.svg-BeaTe2YW.js → interface-time-hour-glass.svg-B4wmuGrS.js} +1 -1
  147. package/web/assets/{interface-users-multiple.svg-ZNPhOLEJ.js → interface-users-multiple.svg-CX6Z1IAw.js} +1 -1
  148. package/web/assets/{interface-weather-moon.svg-CzOxK1E2.js → interface-weather-moon.svg-VjaROepI.js} +1 -1
  149. package/web/assets/{javascript-CV2jmATe.js → javascript-dnJjMqJl.js} +1 -1
  150. package/web/assets/{jsonMode-BpNATOZn.js → jsonMode-DIklAZzl.js} +2 -2
  151. package/web/assets/{liquid-Bkbhlfu6.js → liquid-DM3-T0fg.js} +1 -1
  152. package/web/assets/{lspLanguageFeatures-BIiCr6WR.js → lspLanguageFeatures-DtduOI48.js} +3 -3
  153. package/web/assets/{mail-chat-bubble-square.svg-B-R9ItyG.js → mail-chat-bubble-square.svg-BtQmLgyl.js} +1 -1
  154. package/web/assets/{mail-send-email-paper-airplane.svg-F4sC3JuQ.js → mail-send-email-paper-airplane.svg-DBzfHbzK.js} +1 -1
  155. package/web/assets/{mail-send-envelope.svg-BaE9bGol.js → mail-send-envelope.svg-ByoaJJai.js} +1 -1
  156. package/web/assets/{mdx-CsTzsRLc.js → mdx-COmjqkAf.js} +1 -1
  157. package/web/assets/{minus-CsIPqtIl.js → minus-CLTSMcUf.js} +2 -2
  158. package/web/assets/modal-BaVGcm8s.js +1 -0
  159. package/web/assets/modal-Cl434j6P.js +5 -0
  160. package/web/assets/{money-cashier-receipt.svg-C8rqn3qa.js → money-cashier-receipt.svg-D3I5UkrO.js} +1 -1
  161. package/web/assets/{money-currency-dollar-pay.svg-BW5dnMxx.js → money-currency-dollar-pay.svg-BEt_zoFT.js} +1 -1
  162. package/web/assets/{money-graph-arrow-increase.svg-fHNc8kor.js → money-graph-arrow-increase.svg-BFgo8Syp.js} +1 -1
  163. package/web/assets/{money-graph-bar-chart-increase.svg-65H_xZ15.js → money-graph-bar-chart-increase.svg-BPBRyqtM.js} +1 -1
  164. package/web/assets/{multiselect-Z0owdrkn.js → multiselect-Bd1n3-4t.js} +3 -3
  165. package/web/assets/{nature-ecology-leaf.svg-BIZVZEYz.js → nature-ecology-leaf.svg-DCIaflet.js} +1 -1
  166. package/web/assets/{password-Be5EVCzq.js → password-kxqyN9bC.js} +4 -4
  167. package/web/assets/{phone-telephone.svg-B1dHjXge.js → phone-telephone.svg-_P3X_Fym.js} +1 -1
  168. package/web/assets/{plus-BY4yX4ZS.js → plus-Cs39ICwL.js} +6 -6
  169. package/web/assets/process.store-m5afcW9w.js +1 -0
  170. package/web/assets/{programming-bug.svg-DJHBIgCF.js → programming-bug.svg-BGbIcZnS.js} +1 -1
  171. package/web/assets/{programming-cloud.svg-26MWe8cC.js → programming-cloud.svg-8TyU38aV.js} +1 -1
  172. package/web/assets/{programming-computer-database-server.svg-Dy7gdMab.js → programming-computer-database-server.svg-DBxTrFCn.js} +1 -1
  173. package/web/assets/{programming-computer-database.svg-3HsFit56.js → programming-computer-database.svg-Bi3RBUmB.js} +1 -1
  174. package/web/assets/{programming-module-four-layout.svg-CLumiwsC.js → programming-module-four-layout.svg-BicMHalL.js} +1 -1
  175. package/web/assets/{programming-module-three.svg-3DvVSvY_.js → programming-module-three.svg-D13tfKhT.js} +1 -1
  176. package/web/assets/{programming-module.svg-CgtgW8TW.js → programming-module.svg-HJDv8jeZ.js} +1 -1
  177. package/web/assets/{programming-script-code.svg-DdeXzy2-.js → programming-script-code.svg-oXFzvCKr.js} +1 -1
  178. package/web/assets/project-launch.store-Cgu622KX.js +1 -0
  179. package/web/assets/project.store-CM-kT9-z.js +1 -0
  180. package/web/assets/{python-YqWM3LFr.js → python-ejRXAr81.js} +1 -1
  181. package/web/assets/{radiobutton-Pm1c37Fw.js → radiobutton-BWBirQno.js} +2 -2
  182. package/web/assets/{razor-BtNiyC__.js → razor-CbzUoARP.js} +1 -1
  183. package/web/assets/router-o5ycRaEE.js +1 -0
  184. package/web/assets/settings-scope-CSLK3J2k.js +1 -0
  185. package/web/assets/settings.store-DDQmm1ig.js +1 -0
  186. package/web/assets/{shopping-cart.svg-ejbEU5yG.js → shopping-cart.svg-DL2Mf0BX.js} +1 -1
  187. package/web/assets/{shopping-gift-present.svg-RLuyvmga.js → shopping-gift-present.svg-keqzudV3.js} +1 -1
  188. package/web/assets/{shopping-shipping-box-parcel-package.svg-0GduEUbl.js → shopping-shipping-box-parcel-package.svg-BZ0Ri9AV.js} +1 -1
  189. package/web/assets/src-C1fYy9Ht.js +572 -0
  190. package/web/assets/src-DnhPQBBB.js +1 -0
  191. package/web/assets/{tabpanel-CssLXh-h.js → tabpanel-Bdw_XASI.js} +3 -3
  192. package/web/assets/{tag-new-circle.svg-CEdgH15R.js → tag-new-circle.svg-7tUBDDe7.js} +1 -1
  193. package/web/assets/theme-COzp71lh.js +1 -0
  194. package/web/assets/{toggleswitch-CEiGEBl3.js → toggleswitch-BhJmSx1t.js} +2 -2
  195. package/web/assets/{travel-map-earth-globe.svg-Dmwx1Lus.js → travel-map-earth-globe.svg-CfJb5_3k.js} +1 -1
  196. package/web/assets/trpc-Bn_6G8HK.js +1 -0
  197. package/web/assets/{tsMode-DpPT4F6s.js → tsMode-D5Gulgwd.js} +5 -5
  198. package/web/assets/{typescript-DoO0syM1.js → typescript-B73-3GtI.js} +1 -1
  199. package/web/assets/useAiChatDrawer-QOflawaX.js +1 -0
  200. package/web/assets/useCloudOrg-BZNmQ2Ek.js +1 -0
  201. package/web/assets/useEnvVarAutocomplete-DAxcV0jl.js +1 -0
  202. package/web/assets/useProjectCatalog-8u5wFtf-.js +1 -0
  203. package/web/assets/{useProjectCloudOrg-CG7seJKu.js → useProjectCloudOrg-Bkja4sed.js} +1 -1
  204. package/web/assets/useServiceUrlHost-biHEzQVv.js +1 -0
  205. package/web/assets/{xml-FoCdWVvH.js → xml-Mkua9fdo.js} +1 -1
  206. package/web/assets/{yaml-CgRsanOy.js → yaml-BP9pkdmT.js} +1 -1
  207. package/web/index.html +1 -1
  208. package/agent-manager-FZFFWISA.js +0 -10
  209. package/chunk-4PN7QBNM.js.map +0 -1
  210. package/chunk-GKK3ACWB.js.map +0 -1
  211. package/chunk-H22YLVQE.js.map +0 -1
  212. package/chunk-HK5QNU6P.js.map +0 -1
  213. package/chunk-T2BV5WZE.js.map +0 -1
  214. package/settings-manager-MAVD4GAS.js +0 -10
  215. package/src-SGSG2RSF.js.map +0 -1
  216. package/web/assets/AgentScalarChatInterface.vue-Bv7WQetq.js +0 -13
  217. package/web/assets/AgentTerminalPage-CMA5oI2T.js +0 -1
  218. package/web/assets/AiChatPage-C0Ho1rG3.js +0 -1
  219. package/web/assets/AppLayout-DBKRAp0R.js +0 -1
  220. package/web/assets/AuditPage-fZVhSJlE.js +0 -1
  221. package/web/assets/CloudAccountPage-2LiTQCKr.js +0 -1
  222. package/web/assets/CloudAccountPage-CunPTy1b.js +0 -1
  223. package/web/assets/CloudMessagingPage-DWciFn32.js +0 -2
  224. package/web/assets/DashboardPage-3psdQljM.js +0 -164
  225. package/web/assets/DashboardPage-DFaiJ4c-.css +0 -1
  226. package/web/assets/DirectoryPickerDialog-DiiAUQKg.js +0 -1
  227. package/web/assets/EnvironmentForm-MRC8U5op.js +0 -108
  228. package/web/assets/EnvironmentFormPage-gd8fGS8P.js +0 -1
  229. package/web/assets/EnvironmentListPage-DgbclvZs.js +0 -1
  230. package/web/assets/KanbanBoardPage-BBT0gqjT.js +0 -4
  231. package/web/assets/KanbanListPage-CidIQgAq.js +0 -1
  232. package/web/assets/LaunchProjectPage-DBtkrI-A.js +0 -1
  233. package/web/assets/LaunchServicesPage-DdmfVxYL.js +0 -1
  234. package/web/assets/LaunchServicesPage-zR9FoF4q.css +0 -1
  235. package/web/assets/LogViewer-CvDPgFjq.js +0 -3
  236. package/web/assets/OrgKeyPrompt-D3RmJEtb.js +0 -1
  237. package/web/assets/ProcessDetailPage-Dj0L8Jz0.js +0 -1
  238. package/web/assets/RandomJobTestPage-ohHAOaio.js +0 -2
  239. package/web/assets/ScenarioEditorPage-BIcmG3wo.js +0 -14
  240. package/web/assets/SendToChatDialog-oi4KFAVq.js +0 -1
  241. package/web/assets/ServiceControlsBar-BtnWYJmp.css +0 -1
  242. package/web/assets/ServiceControlsBar-GgoPszoH.js +0 -1
  243. package/web/assets/ServiceDetailPage-CIDlO0iu.js +0 -2
  244. package/web/assets/ServiceFormPage-p3AUhHLN.js +0 -1
  245. package/web/assets/SettingsPage-B_heumvd.js +0 -2063
  246. package/web/assets/UnlockPage-nz_1VQWy.js +0 -1
  247. package/web/assets/VaultMigrationPage-B_nZC8Cc.js +0 -1
  248. package/web/assets/VersionBadge-DJJK7bgD.js +0 -1
  249. package/web/assets/WikiPage-DiCUjWEu.js +0 -1
  250. package/web/assets/WikiView-vYMnLt41.js +0 -1
  251. package/web/assets/add-scalar-classes-_7NDhIUO.js +0 -387
  252. package/web/assets/client-DHQNUKOx.js +0 -24
  253. package/web/assets/cloud-chat.store-CaSRn8Mg.js +0 -1
  254. package/web/assets/cloud-client-CzGojtBl.js +0 -1
  255. package/web/assets/cloud-session-D71P4F3g.js +0 -2
  256. package/web/assets/cloud-session-DlLnrwVQ.js +0 -1
  257. package/web/assets/column-CjJa3tsz.js +0 -763
  258. package/web/assets/interface-content-folder.svg-BLBb2W1v.js +0 -1
  259. package/web/assets/modal-B_0-h4nC.js +0 -1
  260. package/web/assets/modal-KwmdNF_4.js +0 -5
  261. package/web/assets/process.store-B-PvNJQb.js +0 -1
  262. package/web/assets/project-launch.store-DtFeb4vv.js +0 -1
  263. package/web/assets/project.store-DcaBpnnB.js +0 -1
  264. package/web/assets/router-DnVYXVMw.js +0 -1
  265. package/web/assets/settings-scope-DR8NUZr5.js +0 -1
  266. package/web/assets/settings.store-CniuNQ3t.js +0 -1
  267. package/web/assets/src-BS3JGGS_.js +0 -1
  268. package/web/assets/src-BzZzroPd.js +0 -572
  269. package/web/assets/theme-C7HVmgEO.js +0 -1
  270. package/web/assets/trpc-C6zILEMh.js +0 -1
  271. package/web/assets/useAiChatDrawer-CnrYG1GW.js +0 -1
  272. package/web/assets/useCloudOrg-DWmP9gqs.js +0 -1
  273. package/web/assets/useEnvVarAutocomplete-Dkx7Cn9l.js +0 -1
  274. package/web/assets/useProjectCatalog-Cu3VZu2F.js +0 -1
  275. package/web/assets/useServiceUrlHost-ADKWqhx0.js +0 -1
  276. /package/{agent-manager-FZFFWISA.js.map → agent-manager-FN6M6CLD.js.map} +0 -0
  277. /package/{chat-JIJQ7IJS.js.map → chat-VCHK77CW.js.map} +0 -0
  278. /package/{chunk-N3ZI35SC.js.map → chunk-QPII36FL.js.map} +0 -0
  279. /package/{companion-OZODV5BR.js.map → companion-YB3SDDTU.js.map} +0 -0
  280. /package/{desktop-launcher-EGGVXXKV.js.map → desktop-launcher-J2BCSSGZ.js.map} +0 -0
  281. /package/{settings-manager-MAVD4GAS.js.map → settings-manager-4EDX7NIB.js.map} +0 -0
@@ -17,7 +17,9 @@ import {
17
17
  apiKeyStore,
18
18
  appVersion,
19
19
  applyPersistedLanMode,
20
+ attachServiceToProject,
20
21
  auditService,
22
+ buildServerBuiltins,
21
23
  canEnvAction,
22
24
  chatRouter,
23
25
  cloudAuthRouter,
@@ -29,6 +31,7 @@ import {
29
31
  environmentResolver,
30
32
  executeKanbanBoardCommands,
31
33
  executeKanbanCommands,
34
+ filterEnvForAi,
32
35
  generateLlmsTxt,
33
36
  getActiveProvider,
34
37
  getAllowedServiceIds,
@@ -62,7 +65,7 @@ import {
62
65
  soleAccountScope,
63
66
  startCliSession,
64
67
  vaultOfProject
65
- } from "./chunk-GKK3ACWB.js";
68
+ } from "./chunk-LHVTBWM7.js";
66
69
  import {
67
70
  resolveCliInvocation,
68
71
  whichCommand
@@ -85,7 +88,7 @@ import {
85
88
  stopClaudeTranscriptWatcher,
86
89
  stopCodexTranscriptWatcher,
87
90
  verifyJwt
88
- } from "./chunk-H22YLVQE.js";
91
+ } from "./chunk-UKLNK5YA.js";
89
92
  import "./chunk-MD3VW4HQ.js";
90
93
  import {
91
94
  agentManager,
@@ -127,15 +130,16 @@ import {
127
130
  stableEncryptValue,
128
131
  traefikManager,
129
132
  unregisterInstance
130
- } from "./chunk-4PN7QBNM.js";
133
+ } from "./chunk-WQWRTPPJ.js";
131
134
  import {
132
135
  settingsManager
133
- } from "./chunk-N3ZI35SC.js";
136
+ } from "./chunk-QPII36FL.js";
134
137
  import {
135
138
  atomicWriteSecure,
139
+ renameWithRetry,
136
140
  resolveConversationRunDir,
137
141
  sweepStaleTempFiles
138
- } from "./chunk-HK5QNU6P.js";
142
+ } from "./chunk-BDQOBEZ3.js";
139
143
  import {
140
144
  AGENT_LONG_FETCH_TIMEOUT,
141
145
  AGENT_STOP_FETCH_TIMEOUT,
@@ -160,16 +164,19 @@ import {
160
164
  UpdateEnvironmentSchema,
161
165
  VariableOverrideSchema,
162
166
  VariableSchema,
167
+ VariableSlotSchema,
163
168
  ambiguousServiceSlugs,
164
169
  crossServiceSlugsIn,
165
170
  deriveLauncherIdentity,
171
+ findUnresolvedReferences,
166
172
  getCollection,
167
173
  nativeParsers,
168
174
  primaryServiceLink,
169
175
  readEntity,
170
176
  serviceSlug,
177
+ suggestBuiltinReferences,
171
178
  writeEntity
172
- } from "./chunk-T2BV5WZE.js";
179
+ } from "./chunk-TTPL2M74.js";
173
180
  import {
174
181
  allVaultRoots,
175
182
  env,
@@ -541,7 +548,7 @@ import { mkdir } from "fs/promises";
541
548
 
542
549
  // ../server/src/services/master-password.ts
543
550
  import { randomBytes, createCipheriv, createDecipheriv } from "crypto";
544
- import { readFile, writeFile, chmod, stat, rename } from "fs/promises";
551
+ import { readFile, writeFile, chmod, stat } from "fs/promises";
545
552
  import { join as join2 } from "path";
546
553
  import { Entry } from "@napi-rs/keyring";
547
554
  import { hashRaw as argon2HashRaw } from "@node-rs/argon2";
@@ -587,7 +594,7 @@ async function writePepperToFile(dataDir, pepper) {
587
594
  const tmpPath = filePath + ".tmp";
588
595
  await writeFile(tmpPath, pepper.toString("hex"), "utf-8");
589
596
  await chmod(tmpPath, 384);
590
- await rename(tmpPath, filePath);
597
+ await renameWithRetry(tmpPath, filePath);
591
598
  }
592
599
  function tryKeyringGet() {
593
600
  try {
@@ -638,7 +645,7 @@ async function writeEncryptedKey(dataDir, masterPassword, encryptionKey, pepperD
638
645
  const tmpPath = filePath + ".tmp";
639
646
  await writeFile(tmpPath, encoded, "utf-8");
640
647
  await chmod(tmpPath, 384);
641
- await rename(tmpPath, filePath);
648
+ await renameWithRetry(tmpPath, filePath);
642
649
  }
643
650
  async function readEncryptedKey(dataDir, masterPassword, pepperDir = dataDir) {
644
651
  const filePath = join2(dataDir, ENCRYPTED_KEY_FILENAME);
@@ -664,7 +671,7 @@ async function writeVerifyFile(dataDir, encryptionKey) {
664
671
  const filePath = join2(dataDir, VERIFY_FILENAME);
665
672
  const tmpPath = filePath + ".tmp";
666
673
  await writeFile(tmpPath, payload.toString("base64"), "utf-8");
667
- await rename(tmpPath, filePath);
674
+ await renameWithRetry(tmpPath, filePath);
668
675
  }
669
676
  async function verifyEncryptionKey(dataDir, encryptionKey) {
670
677
  const filePath = join2(dataDir, VERIFY_FILENAME);
@@ -943,27 +950,10 @@ var projectRouter = router({
943
950
  orgId: z4.string().max(128).nullable().optional(),
944
951
  serviceId: z4.string().max(128)
945
952
  })).mutation(async ({ input }) => {
946
- const target = { id: input.projectId, orgId: input.orgId };
947
- const project = await projectStore.addService(target, input.serviceId);
953
+ const project = await attachServiceToProject({ id: input.projectId, orgId: input.orgId }, input.serviceId);
948
954
  if (!project) {
949
955
  throw new TRPCError2({ code: "NOT_FOUND", message: `Project ${input.projectId} not found` });
950
956
  }
951
- const service = await serviceStore.get(input.serviceId);
952
- if (service) {
953
- const globalEnvs = await environmentStore.listByScope(input.projectId, "global", input.orgId);
954
- for (const globalEnv of globalEnvs) {
955
- const svcEnv = await environmentStore.create({
956
- projectId: input.projectId,
957
- name: `${service.name} (${globalEnv.name})`,
958
- scope: "service",
959
- reference: input.serviceId,
960
- activateOn: globalEnv.id,
961
- parentIds: [globalEnv.id],
962
- variables: {}
963
- }, input.orgId);
964
- await projectStore.addEnvironment(target, svcEnv.id);
965
- }
966
- }
967
957
  await auditService.log({
968
958
  userId: "local",
969
959
  action: "update",
@@ -1926,8 +1916,86 @@ var setupRouter = router({
1926
1916
  });
1927
1917
 
1928
1918
  // ../server/src/trpc/routers/environment.ts
1919
+ import { randomUUID } from "crypto";
1929
1920
  import { z as z9 } from "zod";
1930
1921
  import { TRPCError as TRPCError6 } from "@trpc/server";
1922
+
1923
+ // ../server/src/services/ai-variable-write.ts
1924
+ var AiVariableWriteError = class extends Error {
1925
+ };
1926
+ function planAiVariableWrite(existing, input) {
1927
+ if (!existing) {
1928
+ return {
1929
+ key: input.key,
1930
+ value: VariableSlotSchema.parse({
1931
+ value: input.value ?? "",
1932
+ ...input.pre !== void 0 ? { pre: input.pre } : {},
1933
+ ...input.post !== void 0 ? { post: input.post } : {},
1934
+ isSecret: input.isSecret ?? false,
1935
+ ...input.description !== void 0 ? { description: input.description } : {}
1936
+ })
1937
+ };
1938
+ }
1939
+ const slot = existing.value;
1940
+ if (slot.isSecret && input.isSecret === false) {
1941
+ throw new AiVariableWriteError(`${input.key} is a secret: an AI cannot make it public. Ask the user to change it in Runeya.`);
1942
+ }
1943
+ if (slot.overrideOnly && input.value !== void 0) {
1944
+ throw new AiVariableWriteError(`${input.key} is override-only: it has no shared value, each machine sets its own. Ask the user to fill it in Runeya.`);
1945
+ }
1946
+ return {
1947
+ key: existing.key,
1948
+ value: {
1949
+ ...slot,
1950
+ ...input.value !== void 0 ? { value: input.value } : {},
1951
+ ...input.pre !== void 0 ? { pre: input.pre } : {},
1952
+ ...input.post !== void 0 ? { post: input.post } : {},
1953
+ ...input.isSecret ? { isSecret: true } : {},
1954
+ ...input.description !== void 0 ? { description: input.description } : {}
1955
+ }
1956
+ };
1957
+ }
1958
+
1959
+ // ../server/src/services/ai-environments.ts
1960
+ function describeEnvironmentsForAi(environments, context) {
1961
+ return environments.map((env2) => {
1962
+ const scope = env2.scope ?? "global";
1963
+ return {
1964
+ id: env2.id,
1965
+ name: env2.name,
1966
+ scope,
1967
+ active: env2.id === context.activeEnvironmentId,
1968
+ parentIds: env2.parentIds ?? [],
1969
+ ...scope === "service" && env2.reference ? { serviceId: env2.reference } : {},
1970
+ ...scope === "service" && env2.reference && context.serviceNames[env2.reference] ? { serviceName: context.serviceNames[env2.reference] } : {},
1971
+ ...env2.activateOn ? { activateOn: env2.activateOn } : {},
1972
+ ...scope === "service" && env2.activateOn ? { isolated: !(env2.parentIds ?? []).includes(env2.activateOn) } : {},
1973
+ variables: Object.values(env2.variables ?? {}).map((v) => ({
1974
+ key: v.key,
1975
+ secret: v.value.isSecret,
1976
+ required: v.value.required,
1977
+ overrideOnly: v.value.overrideOnly,
1978
+ ...v.value.description ? { description: v.value.description } : {}
1979
+ }))
1980
+ };
1981
+ });
1982
+ }
1983
+
1984
+ // ../server/src/trpc/routers/environment.ts
1985
+ async function builtinsForEnvironment(environment) {
1986
+ const project = await projectStore.get(environmentStore.projectRefOf(environment) ?? environment.projectId);
1987
+ if (!project) return {};
1988
+ const services = (await Promise.all(project.serviceIds.map((id) => serviceStore.get(id)))).filter((service) => service !== null);
1989
+ const own = environment.scope === "service" ? services.find((service) => service.id === environment.reference) : void 0;
1990
+ const subject = own ?? services[0];
1991
+ if (!subject) return {};
1992
+ const values = buildServerBuiltins({
1993
+ service: subject,
1994
+ siblings: services.filter((service) => service.id !== subject.id),
1995
+ host: env.HOST
1996
+ });
1997
+ return own ? values : Object.fromEntries(Object.entries(values).filter(([name]) => name.startsWith("services.")));
1998
+ }
1931
1999
  var environmentRouter = router({
1932
2000
  list: protectedProcedure.input(z9.object({
1933
2001
  projectId: z9.string().max(128),
@@ -2138,6 +2206,130 @@ var environmentRouter = router({
2138
2206
  if (!result) throw new TRPCError6({ code: "INTERNAL_SERVER_ERROR", message: "Failed to update variable" });
2139
2207
  return result;
2140
2208
  }),
2209
+ /**
2210
+ * Les environnements d'un projet pour une IA : où ranger une variable, qui
2211
+ * hérite de qui, lequel est actif — sans aucune valeur (`describeEnvironmentsForAi`).
2212
+ * Une clé d'API n'y voit que les environnements qu'elle peut lire.
2213
+ */
2214
+ listForAi: protectedProcedure.input(z9.object({
2215
+ projectId: z9.string().max(128),
2216
+ orgId: z9.string().max(128).nullable().optional()
2217
+ })).query(async ({ input, ctx }) => {
2218
+ const project = await projectStore.get({
2219
+ id: input.projectId,
2220
+ ...input.orgId !== void 0 ? { orgId: input.orgId } : {}
2221
+ });
2222
+ if (!project) throw new TRPCError6({ code: "NOT_FOUND", message: `Project ${input.projectId} not found` });
2223
+ const environments = (await environmentStore.list(input.projectId, input.orgId)).filter((env2) => canEnvAction(ctx, env2.id, "env:read"));
2224
+ const serviceNames = {};
2225
+ for (const serviceId of project.serviceIds) {
2226
+ const service = await serviceStore.get(serviceId);
2227
+ if (service) serviceNames[serviceId] = service.name;
2228
+ }
2229
+ return describeEnvironmentsForAi(environments, { activeEnvironmentId: project.activeEnvironmentId, serviceNames });
2230
+ }),
2231
+ /**
2232
+ * Ce que produit un environnement seul, parents et surcharges du poste
2233
+ * compris, tel qu'une IA peut le lire : secrets non partagés masqués par le
2234
+ * même filtre que `service.getEnv`. Les variables intégrées ne sont pas
2235
+ * remplies — elles dépendent du service qui les reçoit — mais une référence
2236
+ * qui ne correspond à rien est nommée.
2237
+ */
2238
+ resolveForAi: protectedProcedure.input(z9.object({ environmentId: z9.string().max(128) })).query(async ({ input, ctx }) => {
2239
+ requireEnvAction(ctx, input.environmentId, "env:read");
2240
+ const env2 = await environmentStore.get(input.environmentId);
2241
+ if (!env2) throw new TRPCError6({ code: "NOT_FOUND", message: `Environment ${input.environmentId} not found` });
2242
+ const [resolved, shared] = await Promise.all([
2243
+ environmentResolver.resolveEnvironment(input.environmentId),
2244
+ environmentResolver.resolveAiSharedKeys(input.environmentId)
2245
+ ]);
2246
+ const filtered = filterEnvForAi(resolved, shared);
2247
+ return {
2248
+ environmentId: env2.id,
2249
+ name: env2.name,
2250
+ scope: env2.scope ?? "global",
2251
+ ...filtered,
2252
+ unresolvedReferences: findUnresolvedReferences(resolved.env, { serverResolved: false, skipKeys: filtered.hiddenKeys })
2253
+ };
2254
+ }),
2255
+ /**
2256
+ * Écrire une variable pour le compte d'une IA, désignée par son nom.
2257
+ *
2258
+ * La route des outils IA (`set_environment_variable`) : les règles de
2259
+ * `planAiVariableWrite` y tiennent quel que soit l'appelant — une IA ne rend
2260
+ * pas un secret public et ne le partage jamais avec les IA. La réponse ne
2261
+ * porte aucune valeur : ce qui vient d'être écrit peut être un secret.
2262
+ */
2263
+ setVariableBlind: protectedProcedure.input(z9.object({
2264
+ environmentId: z9.string().max(128),
2265
+ key: z9.string().min(1).max(256),
2266
+ value: z9.string().max(8192).optional(),
2267
+ pre: z9.string().max(8192).optional(),
2268
+ post: z9.string().max(8192).optional(),
2269
+ isSecret: z9.boolean().optional(),
2270
+ description: z9.string().max(2e3).optional()
2271
+ })).mutation(async ({ input, ctx }) => {
2272
+ requireEnvAction(ctx, input.environmentId, "env:write");
2273
+ const env2 = await environmentStore.get(input.environmentId);
2274
+ if (!env2) throw new TRPCError6({ code: "NOT_FOUND", message: `Environment ${input.environmentId} not found` });
2275
+ const found = Object.entries(env2.variables).find(([, v]) => v.key === input.key);
2276
+ const variableId = found?.[0] ?? randomUUID();
2277
+ let variable;
2278
+ try {
2279
+ variable = planAiVariableWrite(found?.[1], input);
2280
+ } catch (err) {
2281
+ if (err instanceof AiVariableWriteError) throw new TRPCError6({ code: "FORBIDDEN", message: err.message });
2282
+ throw err;
2283
+ }
2284
+ const result = await environmentStore.upsertVariable(input.environmentId, variableId, variable);
2285
+ if (!result) throw new TRPCError6({ code: "INTERNAL_SERVER_ERROR", message: "Failed to write variable" });
2286
+ const written = `${variable.value.pre}${variable.value.value}${variable.value.post}`;
2287
+ let suggestions = [];
2288
+ if (!variable.value.isSecret) {
2289
+ try {
2290
+ suggestions = suggestBuiltinReferences(written, await builtinsForEnvironment(env2));
2291
+ } catch (err) {
2292
+ console.warn("[environment-router] Built-in suggestions unavailable for", input.environmentId + ":", err.message);
2293
+ }
2294
+ }
2295
+ return {
2296
+ environmentId: input.environmentId,
2297
+ variableId,
2298
+ key: variable.key,
2299
+ isSecret: variable.value.isSecret,
2300
+ created: !found,
2301
+ ...suggestions.length > 0 ? { suggestions } : {}
2302
+ };
2303
+ }),
2304
+ /**
2305
+ * L'interrupteur « Hérite / Isolé » d'un environnement de service, pour une
2306
+ * IA : le même geste que l'interface (`ServiceConfigEnv.vue`, `toggleInheritance`)
2307
+ * — ses parents vidés, ou remis à l'environnement global qui l'active. Par
2308
+ * une route dédiée parce que `update` rend l'environnement entier, valeurs
2309
+ * comprises.
2310
+ */
2311
+ setInheritanceBlind: protectedProcedure.input(z9.object({ environmentId: z9.string().max(128), inherit: z9.boolean() })).mutation(async ({ input, ctx }) => {
2312
+ requireEnvAction(ctx, input.environmentId, "env:write");
2313
+ const env2 = await environmentStore.get(input.environmentId);
2314
+ if (!env2) throw new TRPCError6({ code: "NOT_FOUND", message: `Environment ${input.environmentId} not found` });
2315
+ if (env2.scope !== "service" || !env2.activateOn) {
2316
+ throw new TRPCError6({ code: "BAD_REQUEST", message: `Environment ${input.environmentId} is not a service environment: only those inherit from, or are isolated from, the global environment that activates them` });
2317
+ }
2318
+ const updated = await environmentStore.update({ id: env2.id, parentIds: input.inherit ? [env2.activateOn] : [] });
2319
+ if (!updated) throw new TRPCError6({ code: "INTERNAL_SERVER_ERROR", message: "Failed to update inheritance" });
2320
+ return { environmentId: env2.id, isolated: !input.inherit };
2321
+ }),
2322
+ /** Retirer une variable par son nom, pour le compte d'une IA : la réponse ne porte aucune valeur. */
2323
+ removeVariableBlind: protectedProcedure.input(z9.object({ environmentId: z9.string().max(128), key: z9.string().min(1).max(256) })).mutation(async ({ input, ctx }) => {
2324
+ requireEnvAction(ctx, input.environmentId, "env:write");
2325
+ const env2 = await environmentStore.get(input.environmentId);
2326
+ if (!env2) throw new TRPCError6({ code: "NOT_FOUND", message: `Environment ${input.environmentId} not found` });
2327
+ const found = Object.entries(env2.variables).find(([, v]) => v.key === input.key);
2328
+ if (!found) throw new TRPCError6({ code: "NOT_FOUND", message: `Variable ${input.key} not found in environment ${input.environmentId}` });
2329
+ const result = await environmentStore.removeVariable(input.environmentId, found[0]);
2330
+ if (!result) throw new TRPCError6({ code: "INTERNAL_SERVER_ERROR", message: "Failed to remove variable" });
2331
+ return { environmentId: input.environmentId, key: input.key, removed: true };
2332
+ }),
2141
2333
  /**
2142
2334
  * List everywhere a variable key is used inside a project: environments that
2143
2335
  * define it, and variables that reference it through {{environment.KEY}}.
@@ -2900,7 +3092,7 @@ import { resolve, join as join4 } from "path";
2900
3092
  import { homedir as homedir2 } from "os";
2901
3093
 
2902
3094
  // ../server/src/services/user-config-manager.ts
2903
- import { readFile as readFile2, writeFile as writeFile2, rename as rename2, mkdir as mkdir2, chmod as chmod2 } from "fs/promises";
3095
+ import { readFile as readFile2, writeFile as writeFile2, mkdir as mkdir2, chmod as chmod2 } from "fs/promises";
2904
3096
  import { join as join3 } from "path";
2905
3097
  import { homedir } from "os";
2906
3098
  import { z as z11 } from "zod";
@@ -2931,7 +3123,7 @@ var UserConfigManager = class {
2931
3123
  const filePath = join3(CONFIG_DIR, CONFIG_FILE);
2932
3124
  const tmpPath = filePath + ".tmp";
2933
3125
  await writeFile2(tmpPath, JSON.stringify(data, null, 2), "utf-8");
2934
- await rename2(tmpPath, filePath);
3126
+ await renameWithRetry(tmpPath, filePath);
2935
3127
  await chmod2(filePath, 384);
2936
3128
  }
2937
3129
  async getConfig() {
@@ -3422,7 +3614,7 @@ Rules:
3422
3614
  });
3423
3615
 
3424
3616
  // ../server/src/trpc/routers/scenario.ts
3425
- import { randomUUID as randomUUID2 } from "crypto";
3617
+ import { randomUUID as randomUUID3 } from "crypto";
3426
3618
  import { TRPCError as TRPCError13 } from "@trpc/server";
3427
3619
  import { z as z15 } from "zod";
3428
3620
 
@@ -3539,7 +3731,7 @@ async function* streamWithActiveProvider(opts) {
3539
3731
 
3540
3732
  // ../server/src/services/scenario-runner.ts
3541
3733
  import { mkdir as mkdir4 } from "fs/promises";
3542
- import { randomUUID } from "crypto";
3734
+ import { randomUUID as randomUUID2 } from "crypto";
3543
3735
  import { join as join6 } from "path";
3544
3736
 
3545
3737
  // ../server/src/services/scenario-presets.ts
@@ -3881,7 +4073,7 @@ function applyHireDirectivesFromOutput(manager, scenario, output) {
3881
4073
  }
3882
4074
  const hired = [];
3883
4075
  for (const payload of hireDirectives) {
3884
- const id = `hire-${randomUUID().slice(0, 8)}`;
4076
+ const id = `hire-${randomUUID2().slice(0, 8)}`;
3885
4077
  const position = computeHirePosition(manager, scenario.nodes);
3886
4078
  ensureGroupCanContainNode(scenario, manager.groupId ?? null, position);
3887
4079
  const node = {
@@ -5049,7 +5241,7 @@ var scenarioRouter = router({
5049
5241
  })).mutation(({ input }) => {
5050
5242
  const now = Date.now();
5051
5243
  return createOrBadRequest(async () => scenarioStore.create({
5052
- id: randomUUID2(),
5244
+ id: randomUUID3(),
5053
5245
  name: input.name,
5054
5246
  icon: input.icon,
5055
5247
  description: input.description,
@@ -5201,7 +5393,7 @@ var scenarioRouter = router({
5201
5393
  });
5202
5394
 
5203
5395
  // ../server/src/trpc/routers/debug.ts
5204
- import { randomUUID as randomUUID3 } from "crypto";
5396
+ import { randomUUID as randomUUID4 } from "crypto";
5205
5397
  import { TRPCError as TRPCError14 } from "@trpc/server";
5206
5398
  import { z as z16 } from "zod";
5207
5399
  var MAX_BUFFER2 = 300;
@@ -5264,7 +5456,7 @@ var debugRouter = router({
5264
5456
  intervalMs: z16.number().int().min(100).max(5e3).optional(),
5265
5457
  maxTicks: z16.number().int().min(1).max(1e4).optional()
5266
5458
  }).optional()).mutation(({ input }) => {
5267
- const jobId = randomUUID3();
5459
+ const jobId = randomUUID4();
5268
5460
  const intervalMs = input?.intervalMs ?? 400;
5269
5461
  const maxTicks = input?.maxTicks ?? 500;
5270
5462
  const job = {
@@ -5484,7 +5676,7 @@ var diagnosticsRouter = router({
5484
5676
  import { z as z18 } from "zod";
5485
5677
 
5486
5678
  // ../server/src/services/kanban-queue.ts
5487
- import { randomUUID as randomUUID4 } from "crypto";
5679
+ import { randomUUID as randomUUID5 } from "crypto";
5488
5680
  import { EventEmitter as EventEmitter2 } from "events";
5489
5681
  var KanbanQueueService = class extends EventEmitter2 {
5490
5682
  items = [];
@@ -5512,7 +5704,7 @@ var KanbanQueueService = class extends EventEmitter2 {
5512
5704
  return { id: alreadyRunning.id, addedAt: alreadyRunning.startedAt, ...item };
5513
5705
  }
5514
5706
  const queueItem = {
5515
- id: randomUUID4(),
5707
+ id: randomUUID5(),
5516
5708
  ...item,
5517
5709
  addedAt: (/* @__PURE__ */ new Date()).toISOString()
5518
5710
  };
@@ -6265,7 +6457,7 @@ var utilityRouter = router({
6265
6457
  // ../server/src/trpc/routers/wiki.ts
6266
6458
  import { z as z22 } from "zod";
6267
6459
  import { TRPCError as TRPCError18 } from "@trpc/server";
6268
- import { readFile as readFile3, readdir as readdir2, stat as stat4, realpath, writeFile as writeFile5, mkdir as mkdir6, rename as rename3, rm as rm2 } from "fs/promises";
6460
+ import { readFile as readFile3, readdir as readdir2, stat as stat4, realpath, writeFile as writeFile5, mkdir as mkdir6, rename, rm as rm2 } from "fs/promises";
6269
6461
  import { resolve as resolvePath, join as join8, relative, sep, dirname as dirname3 } from "path";
6270
6462
  var SCOPE_SCHEMA = z22.union([
6271
6463
  z22.literal("global"),
@@ -6462,7 +6654,7 @@ var wikiRouter = router({
6462
6654
  if (err instanceof TRPCError18) throw err;
6463
6655
  }
6464
6656
  await mkdir6(dirname3(to), { recursive: true });
6465
- await rename3(from, to);
6657
+ await rename(from, to);
6466
6658
  return { fromPath: input.fromPath, toPath: input.toPath, ok: true };
6467
6659
  }),
6468
6660
  ensureRoot: protectedProcedure.input(z22.object({ scope: SCOPE_SCHEMA })).mutation(async ({ input }) => {
@@ -6586,7 +6778,7 @@ async function reconcileOrgCanary(orgId) {
6586
6778
  }
6587
6779
 
6588
6780
  // ../server/src/services/cloud-sync-bridge.ts
6589
- import { randomUUID as randomUUID6 } from "crypto";
6781
+ import { randomUUID as randomUUID7 } from "crypto";
6590
6782
  import { mkdir as mkdir7, rm as rm3 } from "fs/promises";
6591
6783
  import * as Y2 from "yjs";
6592
6784
 
@@ -6594,7 +6786,7 @@ import * as Y2 from "yjs";
6594
6786
  import { readFileSync, renameSync, rmSync, writeFileSync, mkdirSync } from "fs";
6595
6787
  import { readFile as readFile4 } from "fs/promises";
6596
6788
  import { dirname as dirname4, join as join10 } from "path";
6597
- import { randomUUID as randomUUID5 } from "crypto";
6789
+ import { randomUUID as randomUUID6 } from "crypto";
6598
6790
  import * as Y from "yjs";
6599
6791
  var FILE = "sync-doc.bin";
6600
6792
  function cachePath(orgId) {
@@ -6626,7 +6818,7 @@ function writeSyncDocSync(orgId, state) {
6626
6818
  } catch {
6627
6819
  }
6628
6820
  mkdirSync(dirname4(path), { recursive: true });
6629
- const tmp = `${path}.${process.pid}.${randomUUID5()}.tmp`;
6821
+ const tmp = `${path}.${process.pid}.${randomUUID6()}.tmp`;
6630
6822
  try {
6631
6823
  writeFileSync(tmp, mergeWith(existing, state), { mode: 384 });
6632
6824
  renameSync(tmp, path);
@@ -6679,7 +6871,7 @@ var OrgSyncConnection = class {
6679
6871
  services = getCollection(this.doc, "services");
6680
6872
  environments = getCollection(this.doc, "environments");
6681
6873
  logParsers = getCollection(this.doc, PARSERS);
6682
- conn = randomUUID6();
6874
+ conn = randomUUID7();
6683
6875
  link;
6684
6876
  stopped = false;
6685
6877
  initializing = true;
@@ -7609,7 +7801,7 @@ var CloudSyncBridge = class {
7609
7801
  var cloudSyncBridge = new CloudSyncBridge();
7610
7802
 
7611
7803
  // ../server/src/services/key-adoption.ts
7612
- import { readdir as readdir3, readFile as readFile5, writeFile as writeFile6, mkdir as mkdir8, copyFile, rename as rename4, stat as stat5 } from "fs/promises";
7804
+ import { readdir as readdir3, readFile as readFile5, writeFile as writeFile6, mkdir as mkdir8, copyFile, rename as rename2, stat as stat5 } from "fs/promises";
7613
7805
  import { join as join11 } from "path";
7614
7806
  import { createCipheriv as createCipheriv2, createDecipheriv as createDecipheriv2, randomBytes as randomBytes2 } from "crypto";
7615
7807
  var ALGORITHM = "aes-256-gcm";
@@ -7722,7 +7914,7 @@ async function adoptOrgKey(orgId, newKey, masterPassword, now) {
7722
7914
  for (const item of pending) {
7723
7915
  const tmp = item.path + ".tmp";
7724
7916
  await writeFile6(tmp, item.content, "utf-8");
7725
- await rename4(tmp, item.path);
7917
+ await rename2(tmp, item.path);
7726
7918
  }
7727
7919
  await installOrgKey(orgId, newKey, masterPassword);
7728
7920
  clearVaultLock(orgId);
@@ -8484,7 +8676,7 @@ async function ensureFilePermissions() {
8484
8676
  }
8485
8677
 
8486
8678
  // ../server/src/services/vault-migration.ts
8487
- import { readdir as readdir5, readFile as readFile6, writeFile as writeFile7, mkdir as mkdir9, copyFile as copyFile2, unlink, rename as rename5, stat as stat8 } from "fs/promises";
8679
+ import { readdir as readdir5, readFile as readFile6, writeFile as writeFile7, mkdir as mkdir9, copyFile as copyFile2, unlink, rename as rename3, stat as stat8 } from "fs/promises";
8488
8680
  import { join as join13 } from "path";
8489
8681
  var KEY_FILES = [".encryption.key.enc", ".runeya-verify"];
8490
8682
  var MACHINE_FILES = [
@@ -8537,7 +8729,7 @@ async function migrateLegacyVault(legacyRoot, machineRootDir, legacyKey, machine
8537
8729
  if (counter.n === 0) continue;
8538
8730
  const tmp = join13(legacyRoot, `${name}.tmp`);
8539
8731
  await writeFile7(tmp, JSON.stringify(converted, null, 2), "utf-8");
8540
- await rename5(tmp, join13(legacyRoot, name));
8732
+ await rename3(tmp, join13(legacyRoot, name));
8541
8733
  rekeyed.push({ file: name, values: counter.n });
8542
8734
  }
8543
8735
  for (const { file, values } of rekeyed) {
@@ -8573,7 +8765,7 @@ async function migrateLegacyVault(legacyRoot, machineRootDir, legacyKey, machine
8573
8765
  }
8574
8766
 
8575
8767
  // ../server/src/services/settings-migration.ts
8576
- import { readFile as readFile7, writeFile as writeFile8, rename as rename6, unlink as unlink2, mkdir as mkdir10, chmod as chmod4, stat as stat9 } from "fs/promises";
8768
+ import { readFile as readFile7, writeFile as writeFile8, rename as rename4, unlink as unlink2, mkdir as mkdir10, chmod as chmod4, stat as stat9 } from "fs/promises";
8577
8769
  import { join as join14 } from "path";
8578
8770
  var SETTINGS_FILE = "settings.json";
8579
8771
  var SETTINGS_PRIVATE_FILE = "settings.private.json";
@@ -8592,7 +8784,7 @@ async function moveInto(root, filename, from) {
8592
8784
  const contents = await readFile7(from, "utf-8");
8593
8785
  const tmp = to + ".tmp";
8594
8786
  await writeFile8(tmp, contents, "utf-8");
8595
- await rename6(tmp, to);
8787
+ await rename4(tmp, to);
8596
8788
  await chmod4(to, 384);
8597
8789
  await unlink2(from);
8598
8790
  }
@@ -8627,11 +8819,11 @@ async function migrateSettingsIntoVaults() {
8627
8819
  // ../server/src/migrations/migrate-from-legacy.ts
8628
8820
  import { createRequire } from "module";
8629
8821
  import { randomBytes as randomBytes3, createCipheriv as createCipheriv3, createDecipheriv as createDecipheriv3 } from "crypto";
8630
- import { randomUUID as randomUUID7 } from "crypto";
8822
+ import { randomUUID as randomUUID8 } from "crypto";
8631
8823
  import {
8632
8824
  readFile as readFile8,
8633
8825
  writeFile as writeFile9,
8634
- rename as rename7,
8826
+ rename as rename5,
8635
8827
  mkdir as mkdir11,
8636
8828
  access as access2,
8637
8829
  readdir as readdir6
@@ -8774,7 +8966,7 @@ async function decryptLegacyFile(filePath, key, sodium) {
8774
8966
  async function atomicWrite(path, data) {
8775
8967
  const tmp = path + ".tmp";
8776
8968
  await writeFile9(tmp, JSON.stringify(data, null, 2), "utf-8");
8777
- await rename7(tmp, path);
8969
+ await rename5(tmp, path);
8778
8970
  }
8779
8971
  async function runLegacyMigration(dataDir) {
8780
8972
  const legacyRoot = env.DATA_DIR;
@@ -8787,10 +8979,10 @@ async function runLegacyMigration(dataDir) {
8787
8979
  console.log("[legacy-migration] Legacy Runeya data detected, starting migration\u2026");
8788
8980
  const timestamp = (/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "-").substring(0, 19);
8789
8981
  const legacyTmp = `${legacyRoot}-tmp`;
8790
- await rename7(legacyRoot, legacyTmp);
8982
+ await rename5(legacyRoot, legacyTmp);
8791
8983
  await mkdir11(dataDir, { recursive: true });
8792
8984
  const legacyOld = join15(dataDir, `backup-${timestamp}`);
8793
- await rename7(legacyTmp, legacyOld);
8985
+ await rename5(legacyTmp, legacyOld);
8794
8986
  console.log(`[legacy-migration] Legacy data backed up to ${legacyOld}`);
8795
8987
  const keyJson = JSON.parse(await readFile8(join15(legacyOld, "dbs", "encryption-key.json"), "utf-8"));
8796
8988
  const sodium = await getSodium();
@@ -8845,11 +9037,11 @@ async function runLegacyMigration(dataDir) {
8845
9037
  const data = await readEncrypted(join15(parsersDir, file));
8846
9038
  if (data?.id) legacyParsers.push(data);
8847
9039
  }
8848
- const projectMonoId = randomUUID7();
9040
+ const projectMonoId = randomUUID8();
8849
9041
  const envIdMap = {};
8850
9042
  const labelToKey = {};
8851
9043
  for (const [name, legacyEnv] of Object.entries(legacyEnvs)) {
8852
- envIdMap[name] = randomUUID7();
9044
+ envIdMap[name] = randomUUID8();
8853
9045
  if (legacyEnv?.label) labelToKey[legacyEnv.label] = name;
8854
9046
  }
8855
9047
  const runeEnvs = [];
@@ -8874,7 +9066,7 @@ async function runLegacyMigration(dataDir) {
8874
9066
  if (hasInvalidInterpolation(value)) continue;
8875
9067
  const cleaned = cleanVarKey(key);
8876
9068
  if (inheritedVars[cleaned] === value) continue;
8877
- const varId = randomUUID7();
9069
+ const varId = randomUUID8();
8878
9070
  variables[varId] = makeVariable(cleaned, value);
8879
9071
  varIdLookup.set(`${envIdMap[name]}:${cleaned}`, varId);
8880
9072
  }
@@ -8895,7 +9087,7 @@ async function runLegacyMigration(dataDir) {
8895
9087
  const serviceIdMap = {};
8896
9088
  const runeServices = [];
8897
9089
  for (const [name, legacy] of Object.entries(legacyServices)) {
8898
- const id = randomUUID7();
9090
+ const id = randomUUID8();
8899
9091
  serviceIdMap[name] = id;
8900
9092
  const rootPath = legacy.rootPath || "";
8901
9093
  const rootPathCwd = rootPath && rootPath !== "." ? rootPath : "";
@@ -8904,7 +9096,7 @@ async function runLegacyMigration(dataDir) {
8904
9096
  const parts = [cmd.spawnCmd, ...cmd.spawnArgs || []].filter(Boolean);
8905
9097
  if (!parts.length) continue;
8906
9098
  commands.push({
8907
- id: cmd.id || randomUUID7(),
9099
+ id: cmd.id || randomUUID8(),
8908
9100
  label: "Launch",
8909
9101
  command: parts.join(" "),
8910
9102
  cwd: cmd.spawnOptions?.cwd || "",
@@ -8965,7 +9157,7 @@ async function runLegacyMigration(dataDir) {
8965
9157
  const legacyBootstrapCmds = container.bootstrap?.commands || [];
8966
9158
  if (legacyBootstrapCmds.length > 0) {
8967
9159
  dockerConfig.bootstrapCommands = legacyBootstrapCmds.filter((bs) => bs.cmd || bs.entrypoint).map((bs, idx) => ({
8968
- id: bs.id || randomUUID7(),
9160
+ id: bs.id || randomUUID8(),
8969
9161
  label: bs.label || `Bootstrap ${idx + 1}`,
8970
9162
  command: bs.cmd || "",
8971
9163
  ...bs.entrypoint ? { entrypoint: bs.entrypoint } : {},
@@ -9013,7 +9205,7 @@ async function runLegacyMigration(dataDir) {
9013
9205
  cwd: serviceCwd,
9014
9206
  runner: dockerConfig ? "docker" : "native",
9015
9207
  shortcuts: (legacy.shortcuts || []).filter((s) => s.spawnCmd || s.label).map((s) => ({
9016
- id: s.id || randomUUID7(),
9208
+ id: s.id || randomUUID8(),
9017
9209
  label: s.label || s.spawnCmd || "",
9018
9210
  command: [s.spawnCmd, ...s.spawnArgs || []].filter(Boolean).join(" "),
9019
9211
  ...s.spawnOptions?.cwd ? { cwd: s.spawnOptions.cwd } : {}
@@ -9053,7 +9245,7 @@ async function runLegacyMigration(dataDir) {
9053
9245
  );
9054
9246
  if (!svcScopedEnv) {
9055
9247
  svcScopedEnv = {
9056
- id: randomUUID7(),
9248
+ id: randomUUID8(),
9057
9249
  projectId: projectMonoId,
9058
9250
  name: `${service?.name || name} (${globalEnv.name})`,
9059
9251
  scope: "service",
@@ -9077,7 +9269,7 @@ async function runLegacyMigration(dataDir) {
9077
9269
  const varPost = typeof varData === "object" ? String(varData.suffix ?? "") : "";
9078
9270
  if (!varKey || existingKeys.has(cleanVarKey(varKey))) continue;
9079
9271
  const cleaned = cleanVarKey(varKey);
9080
- const varId = randomUUID7();
9272
+ const varId = randomUUID8();
9081
9273
  svcScopedEnv.variables[varId] = makeVariable(cleaned, varValue, varPre, varPost);
9082
9274
  existingKeys.add(cleaned);
9083
9275
  }
@@ -9097,7 +9289,7 @@ async function runLegacyMigration(dataDir) {
9097
9289
  );
9098
9290
  if (!svcScopedEnv) {
9099
9291
  svcScopedEnv = {
9100
- id: randomUUID7(),
9292
+ id: randomUUID8(),
9101
9293
  projectId: projectMonoId,
9102
9294
  name: `${service?.name || serviceName} (${globalEnv.name})`,
9103
9295
  scope: "service",
@@ -9118,7 +9310,7 @@ async function runLegacyMigration(dataDir) {
9118
9310
  const baseEntry = Object.entries(svcScopedEnv.variables).find(([, v]) => v.key === cleaned);
9119
9311
  let varId = baseEntry?.[0];
9120
9312
  if (!varId) {
9121
- varId = randomUUID7();
9313
+ varId = randomUUID8();
9122
9314
  svcScopedEnv.variables[varId] = {
9123
9315
  key: cleaned,
9124
9316
  value: { value: "", pre: "", post: "", isSecret: false, shareWithAi: false, injectIntoAi: false, required: false, overrideOnly: false, description: "" }
@@ -9148,13 +9340,13 @@ async function runLegacyMigration(dataDir) {
9148
9340
  flatOverrides[varId] = makeVariable(cleaned, value);
9149
9341
  }
9150
9342
  } else {
9151
- flatOverrides[randomUUID7()] = makeVariable(cleaned, value);
9343
+ flatOverrides[randomUUID8()] = makeVariable(cleaned, value);
9152
9344
  }
9153
9345
  } else {
9154
9346
  const cleaned = cleanVarKey(key);
9155
9347
  const existingVarId = Object.entries(env2.variables).find(([, v]) => v.key === cleaned)?.[0];
9156
9348
  if (!existingVarId) {
9157
- const varId = randomUUID7();
9349
+ const varId = randomUUID8();
9158
9350
  env2.variables[varId] = makeVariable(cleaned, value);
9159
9351
  varIdLookup.set(`${envId}:${cleaned}`, varId);
9160
9352
  }
@@ -9338,7 +9530,7 @@ async function runOverrideOnlyMigration(dataDir) {
9338
9530
  if (isSameAsBase(value, baseVar)) continue;
9339
9531
  flatOverrides[varId] = makeVariable(cleaned, value);
9340
9532
  } else {
9341
- flatOverrides[randomUUID7()] = makeVariable(cleaned, value);
9533
+ flatOverrides[randomUUID8()] = makeVariable(cleaned, value);
9342
9534
  }
9343
9535
  }
9344
9536
  }
@@ -9375,7 +9567,7 @@ async function runOverrideOnlyMigration(dataDir) {
9375
9567
  );
9376
9568
  if (!svcScopedEnv) {
9377
9569
  svcScopedEnv = {
9378
- id: randomUUID7(),
9570
+ id: randomUUID8(),
9379
9571
  projectId: globalEnv["projectId"],
9380
9572
  name: `${service?.["name"] || serviceName} (${globalEnv["name"]})`,
9381
9573
  scope: "service",
@@ -9397,7 +9589,7 @@ async function runOverrideOnlyMigration(dataDir) {
9397
9589
  const baseEntry = Object.entries(svcScopedEnv["variables"]).find(([, v]) => v.key === cleaned);
9398
9590
  let varId = baseEntry?.[0];
9399
9591
  if (!varId) {
9400
- varId = randomUUID7();
9592
+ varId = randomUUID8();
9401
9593
  svcScopedEnv["variables"][varId] = {
9402
9594
  key: cleaned,
9403
9595
  value: { value: "", pre: "", post: "", isSecret: false, shareWithAi: false, injectIntoAi: false, required: false, overrideOnly: false, description: "" }
@@ -9417,7 +9609,7 @@ async function runOverrideOnlyMigration(dataDir) {
9417
9609
  }
9418
9610
  const migratedDir = overridesDir.replace(/overrides$/, "overrides-migrated");
9419
9611
  try {
9420
- await rename7(overridesDir, migratedDir);
9612
+ await rename5(overridesDir, migratedDir);
9421
9613
  console.log(`[override-migration] Moved overrides/ \u2192 overrides-migrated/`);
9422
9614
  } catch (err) {
9423
9615
  console.warn(`[override-migration] Could not rename overrides dir: ${err.message}`);
@@ -10609,7 +10801,7 @@ async function createLocalServer() {
10609
10801
  ]);
10610
10802
  console.log("[server] Shutdown complete");
10611
10803
  };
10612
- const { initCompanion } = await import("./companion-OZODV5BR.js");
10804
+ const { initCompanion } = await import("./companion-YB3SDDTU.js");
10613
10805
  initCompanion();
10614
10806
  return { app, server, wss, shutdown };
10615
10807
  }
@@ -10739,7 +10931,7 @@ function onTrayServicesChanged(listener) {
10739
10931
  }
10740
10932
 
10741
10933
  // ../server/src/services/tray-icon.ts
10742
- import { mkdir as mkdir12, writeFile as writeFile10, rename as rename8 } from "fs/promises";
10934
+ import { mkdir as mkdir12, writeFile as writeFile10, rename as rename6 } from "fs/promises";
10743
10935
  import { join as join17 } from "path";
10744
10936
 
10745
10937
  // ../server/src/services/png-to-ico.ts
@@ -10939,7 +11131,7 @@ async function writeTrayIcon(stem, png, platform) {
10939
11131
  async function writeAtomic(path, bytes) {
10940
11132
  const tmp = `${path}.${process.pid}.tmp`;
10941
11133
  await writeFile10(tmp, bytes);
10942
- await rename8(tmp, path);
11134
+ await rename6(tmp, path);
10943
11135
  return path;
10944
11136
  }
10945
11137
  async function resolveOrgLogo(orgId, platform) {
@@ -11056,4 +11248,4 @@ export {
11056
11248
  startProcess,
11057
11249
  stopProcess
11058
11250
  };
11059
- //# sourceMappingURL=src-SGSG2RSF.js.map
11251
+ //# sourceMappingURL=src-J3RBNMRJ.js.map