@runeya/runeya 2.0.59 → 2.0.60

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 (199) hide show
  1. package/agent-manager-NJMLCIVW.js +7 -0
  2. package/{chunk-F7HMKPFB.js → chunk-WI4NXXWA.js} +4 -2
  3. package/chunk-WI4NXXWA.js.map +1 -0
  4. package/index.js +1 -1
  5. package/package.json +1 -1
  6. package/{src-7YQHXQ6L.js → src-FYMPMNWX.js} +180 -126
  7. package/src-FYMPMNWX.js.map +1 -0
  8. package/web/assets/{AgentScalarChatInterface.vue-EIqnE2D0.js → AgentScalarChatInterface.vue-B4N4hGIa.js} +1 -1
  9. package/web/assets/{AgentTerminalPage-5kH1RTj6.js → AgentTerminalPage-COgNEO3l.js} +1 -1
  10. package/web/assets/AiChatPage-CBccEBhl.js +1 -0
  11. package/web/assets/{AppLayout-Dj8YOvMQ.css → AppLayout-B1bXTOmv.css} +1 -1
  12. package/web/assets/AppLayout-Bk_jDJzn.js +1 -0
  13. package/web/assets/{AuditPage-BrqreO8a.js → AuditPage-CojdnXun.js} +1 -1
  14. package/web/assets/{CloudAccountPage-DS3ZfENB.js → CloudAccountPage-CaCXJAIU.js} +1 -1
  15. package/web/assets/CloudAccountPage-CcIXW0EN.js +1 -0
  16. package/web/assets/{CloudMessagingPage-D8gBnkFY.js → CloudMessagingPage-BWNVhfSj.js} +1 -1
  17. package/web/assets/{DashboardPage-BiskmF6R.js → DashboardPage-DXCofSRh.js} +1 -1
  18. package/web/assets/{DirectoryPickerDialog-CtKWj2hx.js → DirectoryPickerDialog-BzGhidJF.js} +1 -1
  19. package/web/assets/{EditorIcon-B58cXgvK.js → EditorIcon-BXHgGffi.js} +1 -1
  20. package/web/assets/{EnvironmentForm-DZXx9r78.js → EnvironmentForm-DFxDqfnF.js} +1 -1
  21. package/web/assets/{EnvironmentFormPage-Dl7pdkEM.js → EnvironmentFormPage-CY11biI5.js} +1 -1
  22. package/web/assets/{EnvironmentListPage-B0WX_Hq7.js → EnvironmentListPage-b9CjFQXW.js} +1 -1
  23. package/web/assets/{KanbanBoardPage-CBJs26gZ.js → KanbanBoardPage-BXrTGXwO.js} +3 -3
  24. package/web/assets/{KanbanListPage-Cz-tlLWA.js → KanbanListPage-BnvCBJ1m.js} +1 -1
  25. package/web/assets/{LaunchProjectPage-8SDkFiLE.js → LaunchProjectPage-DHjlOFU3.js} +1 -1
  26. package/web/assets/{LaunchServicesPage-B-ncX3rd.js → LaunchServicesPage-XjPg8Pys.js} +1 -1
  27. package/web/assets/{LogViewer-BJNqKt3I.js → LogViewer-BcPdl4iU.js} +1 -1
  28. package/web/assets/{ProcessControls-NA6_my0q.js → ProcessControls-DorabWJQ.js} +1 -1
  29. package/web/assets/{ProcessDetailPage-6galJRdd.js → ProcessDetailPage-Ch8Jf9rM.js} +1 -1
  30. package/web/assets/{ProcessMetrics-CUDjJ4s_.js → ProcessMetrics-COGHKb4a.js} +1 -1
  31. package/web/assets/{ProjectDetailPage-DKHoFXjW.js → ProjectDetailPage-BmU8DBNe.js} +1 -1
  32. package/web/assets/{ProjectListPage-C1xSP6Bq.js → ProjectListPage-JD1ekolM.js} +1 -1
  33. package/web/assets/{RandomJobTestPage-BAuT49yE.js → RandomJobTestPage-Cc-DhTsH.js} +1 -1
  34. package/web/assets/{ScenarioEditorPage-CROCV83A.js → ScenarioEditorPage-Bny2HqiP.js} +1 -1
  35. package/web/assets/{SendToChatDialog-BfaLVfzw.js → SendToChatDialog-B4CWWMCy.js} +1 -1
  36. package/web/assets/{ServiceControlsBar-DE0In-jH.js → ServiceControlsBar-D6mfDvfN.js} +1 -1
  37. package/web/assets/{ServiceDetailPage-0iIv9RqU.js → ServiceDetailPage-D2WqU25G.js} +1 -1
  38. package/web/assets/{ServiceFormPage-D-tLX8jE.js → ServiceFormPage-BcA2kArc.js} +1 -1
  39. package/web/assets/{SettingsPage-ySsQCeYE.css → SettingsPage-AOrh0K7b.css} +1 -1
  40. package/web/assets/SettingsPage-oAjjAaeD.js +2063 -0
  41. package/web/assets/{UnlockPage-flNU5Iky.js → UnlockPage-CRYhFCMk.js} +1 -1
  42. package/web/assets/{VariablesTable-BnCSYLD4.js → VariablesTable-DyWAE6Na.js} +1 -1
  43. package/web/assets/{VaultMigrationPage-BSv9anTA.js → VaultMigrationPage-Dsu3akRc.js} +1 -1
  44. package/web/assets/{VersionBadge-zyKx_N_w.js → VersionBadge-CVTn4GGc.js} +1 -1
  45. package/web/assets/WikiPage-DGMyydUW.js +1 -0
  46. package/web/assets/{WikiView-BZZ5mybT.js → WikiView-BArE3tFo.js} +1 -1
  47. package/web/assets/{add-scalar-classes-DZb8OCPH.js → add-scalar-classes-jKlPbn1S.js} +3 -3
  48. package/web/assets/auth-errors-BfeIh95U.js +1 -0
  49. package/web/assets/{autocomplete-DGLJp6Xx.js → autocomplete-CI8vAiwp.js} +1 -1
  50. package/web/assets/{basic-shape-diamond.svg-D7lBpWcu.js → basic-shape-diamond.svg-Cp5z3Mbu.js} +1 -1
  51. package/web/assets/{basic-shape-hexagon.svg-BIDPqohs.js → basic-shape-hexagon.svg-RBwhM6k0.js} +1 -1
  52. package/web/assets/{basic-shape-primary-circle-ellipse-round.svg-iWUF3CNK.js → basic-shape-primary-circle-ellipse-round.svg-itOztFgT.js} +1 -1
  53. package/web/assets/{basic-shape-primary-square-rectangle.svg-BQy8tY9i.js → basic-shape-primary-square-rectangle.svg-CwfKFMzE.js} +1 -1
  54. package/web/assets/{basic-shape-shield.svg-Dcov5U2N.js → basic-shape-shield.svg-BdZgtv30.js} +1 -1
  55. package/web/assets/{browser-DrMkXWE3.js → browser-BXJrZHue.js} +1 -1
  56. package/web/assets/{browser-Dc4T6GL2.js → browser-D7pIWkfx.js} +1 -1
  57. package/web/assets/{card-DADdd2-i.js → card-DR0T843h.js} +1 -1
  58. package/web/assets/{checkbox-By0TwAz_.js → checkbox-DDIPahTi.js} +1 -1
  59. package/web/assets/{chip-W5HkUiZA.js → chip-DM8SNVy0.js} +1 -1
  60. package/web/assets/{client-Be8SiY8s.js → client-BAdezrlT.js} +1 -1
  61. package/web/assets/{cloud-chat.store-GKWq9kin.js → cloud-chat.store-Xf5_YRwv.js} +1 -1
  62. package/web/assets/{cloud-session-CJ4n3dbT.js → cloud-session-B1zFsfcb.js} +1 -1
  63. package/web/assets/{column-P4Yoqttz.js → column-Bo2upVbJ.js} +1 -1
  64. package/web/assets/{computer-device-desktop-monitor.svg-BjBC4Q_B.js → computer-device-desktop-monitor.svg-DOS9l00c.js} +1 -1
  65. package/web/assets/{computer-device-desktop.svg-C7H8X0sb.js → computer-device-desktop.svg-C-ttSSSz.js} +1 -1
  66. package/web/assets/{computer-device-laptop.svg-GDU5987h.js → computer-device-laptop.svg-DDFbbX6c.js} +1 -1
  67. package/web/assets/{computer-device-mobile-phone-android-samsung-back.svg-BcWod8vA.js → computer-device-mobile-phone-android-samsung-back.svg-BZ-Gdh6W.js} +1 -1
  68. package/web/assets/{computer-device-mobile-phone-android-samsung.svg-Cj58lY5g.js → computer-device-mobile-phone-android-samsung.svg-COcp4u1j.js} +1 -1
  69. package/web/assets/{computer-device-mobile-phone-iphone-x-back.svg-CtJM7Ul_.js → computer-device-mobile-phone-iphone-x-back.svg-CDmKBZ0s.js} +1 -1
  70. package/web/assets/{computer-device-mobile-phone-iphone-x.svg-BiSi4riW.js → computer-device-mobile-phone-iphone-x.svg-QBXd3bAz.js} +1 -1
  71. package/web/assets/{computer-device-mobile-tablet-touch.svg-BAMVDwHH.js → computer-device-mobile-tablet-touch.svg-CiqMqHgJ.js} +1 -1
  72. package/web/assets/{computer-device-mobile-tablet.svg-quWU62em.js → computer-device-mobile-tablet.svg-DXWdkli1.js} +1 -1
  73. package/web/assets/{computer-device-network-ethernet-cat6.svg-eoCbNWkF.js → computer-device-network-ethernet-cat6.svg-pd7Pp62E.js} +1 -1
  74. package/web/assets/{computer-device-network-lan-www.svg-AR5jmH9w.js → computer-device-network-lan-www.svg-hwQtK4mS.js} +1 -1
  75. package/web/assets/{computer-device-network-wifi-connection.svg-C3-i1o4I.js → computer-device-network-wifi-connection.svg-BKKSNm-Y.js} +1 -1
  76. package/web/assets/{computer-device-network-wifi-router.svg-D8_62H2U.js → computer-device-network-wifi-router.svg-BJ7429Gw.js} +1 -1
  77. package/web/assets/{cssMode-CfDickSl.js → cssMode-DvqPjG-s.js} +1 -1
  78. package/web/assets/{divider-DOwWKUnp.js → divider-DmUVUD7N.js} +1 -1
  79. package/web/assets/{ecology-science-erlenmeyer-flask.svg-bmj1315r.js → ecology-science-erlenmeyer-flask.svg-CkvWyk06.js} +1 -1
  80. package/web/assets/{fieldset-CM6GY5DX.js → fieldset-RNy_epe7.js} +1 -1
  81. package/web/assets/{freemarker2-B_0Gh4L-.js → freemarker2-B_05mUOO.js} +1 -1
  82. package/web/assets/{handlebars-D7Oha3sz.js → handlebars-mwqq4hMg.js} +1 -1
  83. package/web/assets/{html-BDq-ql3l.js → html-DenFU_p3.js} +1 -1
  84. package/web/assets/{htmlMode-DVuzX8LQ.js → htmlMode-Dd5pT6tW.js} +1 -1
  85. package/web/assets/{image-flash-lightning.svg-pdHiRywD.js → image-flash-lightning.svg-FRUbJgX5.js} +1 -1
  86. package/web/assets/{image-picture-flower.svg-BJarIt4k.js → image-picture-flower.svg-BBS3ExSo.js} +1 -1
  87. package/web/assets/{index-Dk3h9927.js → index-FACKwVg6.js} +5 -5
  88. package/web/assets/{interface-alert-exclamation-diamond.svg-CZUf0TtR.js → interface-alert-exclamation-diamond.svg-CBN8Pmeh.js} +1 -1
  89. package/web/assets/{interface-alert-exclamation-triangle-warning.svg-B1qbmOvN.js → interface-alert-exclamation-triangle-warning.svg-siL3-gmT.js} +1 -1
  90. package/web/assets/{interface-alert-information-circle.svg-DAH6I2Rk.js → interface-alert-information-circle.svg-CynXrOR8.js} +1 -1
  91. package/web/assets/{interface-award-crown.svg-Co-un_0E.js → interface-award-crown.svg-BakRoInk.js} +1 -1
  92. package/web/assets/{interface-bookmark.svg-BoAQ5WAA.js → interface-bookmark-tag.svg-BJnfvdzr.js} +1 -1
  93. package/web/assets/{interface-bookmark-tag.svg-DCeSL4gX.js → interface-bookmark.svg-BnQK5mgu.js} +1 -1
  94. package/web/assets/{interface-calendar-date-one.svg-KM5TH_vj.js → interface-calendar-date-one.svg-fO1_AoDh.js} +1 -1
  95. package/web/assets/{interface-content-book-open-pages.svg-2t-0H_Nl.js → interface-content-book-open-pages.svg-DqRdJvqM.js} +1 -1
  96. package/web/assets/{interface-content-book-page.svg-Dx9U_5uo.js → interface-content-book-page.svg-Byeli3di.js} +1 -1
  97. package/web/assets/{interface-content-file.svg-CW_9AGDl.js → interface-content-file.svg-ViG_2r3n.js} +1 -1
  98. package/web/assets/interface-content-folder.svg-VCUetvJn.js +1 -0
  99. package/web/assets/{interface-content-folder.svg-DgU2KM8d.js → interface-content-folder.svg-tRv9Gs6q.js} +1 -1
  100. package/web/assets/{interface-copy-clipboard.svg-BXCY1wtO.js → interface-copy-clipboard.svg-BF2p1SyS.js} +1 -1
  101. package/web/assets/{interface-edit-attachment.svg-lJsBgdnd.js → interface-edit-attachment.svg-CcxMnh8E.js} +1 -1
  102. package/web/assets/{interface-edit-binocular.svg-N_us2_d_.js → interface-edit-binocular.svg-CIzctb_f.js} +1 -1
  103. package/web/assets/{interface-edit-magic-wand.svg-GlHpAoND.js → interface-edit-magic-wand.svg-LoGhgGEZ.js} +1 -1
  104. package/web/assets/{interface-edit-tool-paint-roller.svg-B3s6tHLT.js → interface-edit-tool-paint-roller.svg-C6oZCjMJ.js} +1 -1
  105. package/web/assets/{interface-edit-tool-pencil.svg-BhJltLPD.js → interface-edit-tool-pencil.svg-D3lpq_xl.js} +1 -1
  106. package/web/assets/{interface-favorite-award.svg-CAC4qrCL.js → interface-favorite-award.svg-CrXhhhyj.js} +1 -1
  107. package/web/assets/{interface-favorite-flag.svg-5dLI18uT.js → interface-favorite-flag.svg-ccF9TDui.js} +1 -1
  108. package/web/assets/{interface-favorite-heart.svg-DAWMqUS8.js → interface-favorite-heart.svg-gu7br9DK.js} +1 -1
  109. package/web/assets/{interface-favorite-star.svg-C9DICFBb.js → interface-favorite-star.svg-B7E60ZEr.js} +1 -1
  110. package/web/assets/{interface-favorite-stars-sparkles.svg-zD5-a95u.js → interface-favorite-stars-sparkles.svg-DOEwwXiW.js} +1 -1
  111. package/web/assets/{interface-hierarchy-flowchart.svg-BzAAQM0v.js → interface-hierarchy-flowchart.svg-tLEmCbmQ.js} +1 -1
  112. package/web/assets/{interface-home-house.svg-CB_mzszz.js → interface-home-house.svg-Cf1KxixQ.js} +1 -1
  113. package/web/assets/{interface-hyperlink.svg-BUMVlOAE.js → interface-hyperlink.svg-DAT8qW_c.js} +1 -1
  114. package/web/assets/{interface-lighting-brightness.svg-wPXo2pZW.js → interface-lighting-brightness.svg-BX6x0ddS.js} +1 -1
  115. package/web/assets/{interface-lock-closed.svg-Qj4fLj5D.js → interface-lock-closed.svg-DrFxkZYe.js} +1 -1
  116. package/web/assets/{interface-lock-open-unlock.svg-PaaFsUiU.js → interface-lock-open-unlock.svg-Dr0jcfmK.js} +1 -1
  117. package/web/assets/{interface-login-key.svg-By-IZ7EH.js → interface-login-key.svg-CeXnvMKQ.js} +1 -1
  118. package/web/assets/{interface-search.svg-D1s5Gsyk.js → interface-search.svg-CBYRLqmj.js} +1 -1
  119. package/web/assets/{interface-setting-cog.svg-BIjZVOwf.js → interface-setting-cog.svg-pIrK77it.js} +1 -1
  120. package/web/assets/{interface-share-megaphone-bullhorn.svg-1oPoDdIL.js → interface-share-megaphone-bullhorn.svg-CXENaufm.js} +1 -1
  121. package/web/assets/{interface-share-rocket.svg-B07UdOH6.js → interface-share-rocket.svg-BUEDGolV.js} +1 -1
  122. package/web/assets/{interface-share-satellite.svg-AxSAr1JP.js → interface-share-satellite.svg-CDbsJhFP.js} +1 -1
  123. package/web/assets/{interface-share-space-ship.svg-ghRJYkXG.js → interface-share-space-ship.svg-Byg2lwxp.js} +1 -1
  124. package/web/assets/{interface-share.svg-jVvV5wf9.js → interface-share.svg-DS5PCA34.js} +1 -1
  125. package/web/assets/{interface-signal-square.svg-BB8KvxNI.js → interface-signal-square.svg-pcqPb4nM.js} +1 -1
  126. package/web/assets/{interface-time-clock-circle.svg-Bt_vXLib.js → interface-time-clock-circle.svg-Cy9A8GRt.js} +1 -1
  127. package/web/assets/{interface-time-hour-glass.svg-CqsWXDx3.js → interface-time-hour-glass.svg-GWa1W0Xp.js} +1 -1
  128. package/web/assets/{interface-users-multiple.svg-DfZzhCkI.js → interface-users-multiple.svg-CBEbE-7A.js} +1 -1
  129. package/web/assets/{interface-weather-moon.svg-B5X37fBl.js → interface-weather-moon.svg-DeinSoJT.js} +1 -1
  130. package/web/assets/{javascript-DWxMn_QC.js → javascript-H6N3mcld.js} +1 -1
  131. package/web/assets/{jsonMode-BWOZzM3d.js → jsonMode-CtZxIxon.js} +1 -1
  132. package/web/assets/{liquid-B0VtIwJX.js → liquid-DvIoyIx6.js} +1 -1
  133. package/web/assets/{lspLanguageFeatures-DXFZNqLk.js → lspLanguageFeatures-BEUuqX73.js} +1 -1
  134. package/web/assets/{mail-chat-bubble-square.svg-DVi8sPM-.js → mail-chat-bubble-square.svg-cxMRc1aj.js} +1 -1
  135. package/web/assets/{mail-send-email-paper-airplane.svg-Dlk35rWL.js → mail-send-email-paper-airplane.svg-Dg_l-5Iw.js} +1 -1
  136. package/web/assets/{mail-send-envelope.svg-DpEE06QS.js → mail-send-envelope.svg-C1zNJdsK.js} +1 -1
  137. package/web/assets/{mdx-XjdLNHo4.js → mdx-BmQyOder.js} +1 -1
  138. package/web/assets/{message-TASaHoOx.js → message-B83bhy06.js} +1 -1
  139. package/web/assets/{minus-BO9HwuhK.js → minus-CBo2o8C-.js} +1 -1
  140. package/web/assets/modal-CaMkh9Za.js +1 -0
  141. package/web/assets/{modal-Dadfdblm.js → modal-tQ8Gy3Qc.js} +1 -1
  142. package/web/assets/{money-cashier-receipt.svg-D3T1gdZO.js → money-cashier-receipt.svg-HRh_0Aog.js} +1 -1
  143. package/web/assets/{money-currency-dollar-pay.svg-RhoFWz8z.js → money-currency-dollar-pay.svg-Gaqcc4gO.js} +1 -1
  144. package/web/assets/{money-graph-arrow-increase.svg-BENn1K5R.js → money-graph-arrow-increase.svg-DlfNGxjc.js} +1 -1
  145. package/web/assets/{money-graph-bar-chart-increase.svg-COGPwero.js → money-graph-bar-chart-increase.svg-lCsn857J.js} +1 -1
  146. package/web/assets/{multiselect-QI9V-o7t.js → multiselect-BWxLa59l.js} +1 -1
  147. package/web/assets/{nature-ecology-leaf.svg-CyQJuX9P.js → nature-ecology-leaf.svg-CqS_HbDW.js} +1 -1
  148. package/web/assets/{password-68lVUSdj.js → password-cPgUvkOA.js} +1 -1
  149. package/web/assets/{phone-telephone.svg-Cp49xUlu.js → phone-telephone.svg-BQJVa8xN.js} +1 -1
  150. package/web/assets/{plus-CtAUJUu2.js → plus-CbJTMelx.js} +1 -1
  151. package/web/assets/process.store-BIdF5bYJ.js +1 -0
  152. package/web/assets/{programming-bug.svg-DJCw-G7S.js → programming-bug.svg-DHSOyTDX.js} +1 -1
  153. package/web/assets/{programming-cloud.svg-Dawch6nl.js → programming-cloud.svg-BN2VfYj9.js} +1 -1
  154. package/web/assets/{programming-computer-database-server.svg-wM3gh9nl.js → programming-computer-database-server.svg-DgLqhsmV.js} +1 -1
  155. package/web/assets/{programming-computer-database.svg-B-CBQ4FN.js → programming-computer-database.svg-Rv3dMbvo.js} +1 -1
  156. package/web/assets/{programming-module-four-layout.svg-B8K3IYUP.js → programming-module-four-layout.svg-BL9bWIfn.js} +1 -1
  157. package/web/assets/{programming-module-three.svg-BVHpxetj.js → programming-module-three.svg-Iu-KnX2V.js} +1 -1
  158. package/web/assets/{programming-module.svg-CXID9wrd.js → programming-module.svg-BcCF6qxu.js} +1 -1
  159. package/web/assets/{programming-script-code.svg-lSz-9Xfp.js → programming-script-code.svg-XJSdxMcg.js} +1 -1
  160. package/web/assets/{python-DL0o4ZFa.js → python-cAYLyvNp.js} +1 -1
  161. package/web/assets/{razor-1T_DtFYV.js → razor-BHgxVMOQ.js} +1 -1
  162. package/web/assets/router-CK12uURM.js +1 -0
  163. package/web/assets/settings-scope-f9Gi_Zg9.js +1 -0
  164. package/web/assets/{settings.store-xvHd8xGI.js → settings.store-CSquriN7.js} +1 -1
  165. package/web/assets/{shopping-cart.svg-TZA8HEQB.js → shopping-cart.svg-BueYQs5x.js} +1 -1
  166. package/web/assets/{shopping-gift-present.svg-CRGiXfBk.js → shopping-gift-present.svg-TrpUap-y.js} +1 -1
  167. package/web/assets/{shopping-shipping-box-parcel-package.svg-BuEMZoGf.js → shopping-shipping-box-parcel-package.svg-DAccGtLa.js} +1 -1
  168. package/web/assets/{src-Be-L2-AH.js → src-DYi4G92i.js} +1 -1
  169. package/web/assets/{src-Dy-bHT95.js → src-DyMz5bgz.js} +1 -1
  170. package/web/assets/{tabpanel-BP3edJSv.js → tabpanel-MnA7nEtj.js} +1 -1
  171. package/web/assets/{tag-new-circle.svg-CsOt9-U5.js → tag-new-circle.svg-D9oUh7ff.js} +1 -1
  172. package/web/assets/{toggleswitch-B49OhBFD.js → toggleswitch-loQuxYj9.js} +1 -1
  173. package/web/assets/{travel-map-earth-globe.svg-BTR5ahca.js → travel-map-earth-globe.svg-DqCfEOX7.js} +1 -1
  174. package/web/assets/trpc-BlNlu2jq.js +1 -0
  175. package/web/assets/{tsMode-BUrbWgsu.js → tsMode-CP_fyAf1.js} +1 -1
  176. package/web/assets/{typescript-tKGzqX3Z.js → typescript-dDBinZo_.js} +1 -1
  177. package/web/assets/useAiChatDrawer-eoSxh6yR.js +1 -0
  178. package/web/assets/{useCloudOrg-0VY86rgI.js → useCloudOrg-CP0cj8Kq.js} +1 -1
  179. package/web/assets/{useProjectCatalog-C2BH8Bnr.js → useProjectCatalog-a-o-oRlg.js} +1 -1
  180. package/web/assets/{xml-4CdtJV3Y.js → xml-DlpU-b_9.js} +1 -1
  181. package/web/assets/{yaml-Cj7LK0oJ.js → yaml-CKngaf3N.js} +1 -1
  182. package/web/index.html +1 -1
  183. package/agent-manager-4EKOSJBR.js +0 -7
  184. package/chunk-F7HMKPFB.js.map +0 -1
  185. package/src-7YQHXQ6L.js.map +0 -1
  186. package/web/assets/AiChatPage-DvPM0b-g.js +0 -1
  187. package/web/assets/AppLayout-CxU9x6en.js +0 -1
  188. package/web/assets/CloudAccountPage-CzUpIjdc.js +0 -1
  189. package/web/assets/SettingsPage-ClNw9uEA.js +0 -2063
  190. package/web/assets/WikiPage-C9Bruew6.js +0 -1
  191. package/web/assets/auth-errors-CU6pB2jP.js +0 -1
  192. package/web/assets/interface-content-folder.svg-C9_1n23c.js +0 -1
  193. package/web/assets/modal-B0K9qtIb.js +0 -1
  194. package/web/assets/process.store-DkO9CCEs.js +0 -1
  195. package/web/assets/router-BKOiPGCa.js +0 -1
  196. package/web/assets/settings-scope-DrVQNSTC.js +0 -1
  197. package/web/assets/trpc-hOuUVUMw.js +0 -1
  198. package/web/assets/useAiChatDrawer-CZS0RLp8.js +0 -1
  199. /package/{agent-manager-4EKOSJBR.js.map → agent-manager-NJMLCIVW.js.map} +0 -0
package/index.js CHANGED
@@ -270,7 +270,7 @@ function listenWithRetry(server, port, host, wss, maxRetries = 20, delay = 500)
270
270
  });
271
271
  }
272
272
  async function main() {
273
- const { createLocalServer, pullEnv, PullEnvError, registerInstance } = await import("./src-7YQHXQ6L.js");
273
+ const { createLocalServer, pullEnv, PullEnvError, registerInstance } = await import("./src-FYMPMNWX.js");
274
274
  if (isPullEnv) {
275
275
  if (!serviceArg) {
276
276
  console.error("Error: --service (-s) is required with --pull-env");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@runeya/runeya",
3
- "version": "2.0.59",
3
+ "version": "2.0.60",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "runeya": "./index.js"
@@ -96,7 +96,7 @@ import {
96
96
  vaultFor,
97
97
  vaultIdOfRoot,
98
98
  writeEntity
99
- } from "./chunk-F7HMKPFB.js";
99
+ } from "./chunk-WI4NXXWA.js";
100
100
 
101
101
  // ../server/src/create-server.ts
102
102
  import express from "express";
@@ -539,8 +539,8 @@ import { TRPCError as TRPCError2 } from "@trpc/server";
539
539
  // ../server/src/services/project-store.ts
540
540
  import { randomUUID as randomUUID2 } from "crypto";
541
541
  import { EventEmitter } from "events";
542
- import { readFile as readFile2, writeFile as writeFile3, rename as rename2, mkdir as mkdir2, chmod as chmod2, rm } from "fs/promises";
543
- import { join as join3 } from "path";
542
+ import { readFile as readFile3, writeFile as writeFile4, rename as rename3, mkdir as mkdir3, chmod as chmod3, rm } from "fs/promises";
543
+ import { join as join4 } from "path";
544
544
 
545
545
  // ../server/src/utils/ensure-data-gitignore.ts
546
546
  import { writeFile as writeFile2 } from "fs/promises";
@@ -585,8 +585,108 @@ async function ensureDataGitignore(dataDir) {
585
585
  await writeFile2(gitignorePath, GITIGNORE_CONTENT, "utf-8");
586
586
  }
587
587
 
588
+ // ../server/src/services/project-path-store.ts
589
+ import { readFile as readFile2, writeFile as writeFile3, rename as rename2, mkdir as mkdir2, chmod as chmod2, stat } from "fs/promises";
590
+ import { isAbsolute, join as join3, resolve } from "path";
591
+ var FILENAME = "project-paths.json";
592
+ var ProjectPathStore = class {
593
+ paths = null;
594
+ async load() {
595
+ if (this.paths) return this.paths;
596
+ try {
597
+ const raw = await readFile2(machineFilePath(FILENAME), "utf-8");
598
+ const parsed = JSON.parse(raw);
599
+ this.paths = isPathMap(parsed) ? parsed : {};
600
+ } catch {
601
+ this.paths = {};
602
+ }
603
+ return this.paths;
604
+ }
605
+ async persist() {
606
+ await mkdir2(machineRoot(), { recursive: true });
607
+ const filePath = machineFilePath(FILENAME);
608
+ const tmpPath = `${filePath}.tmp`;
609
+ await writeFile3(tmpPath, JSON.stringify(this.paths ?? {}, null, 2), "utf-8");
610
+ await rename2(tmpPath, filePath);
611
+ await chmod2(filePath, 384);
612
+ }
613
+ /** The directory chosen for this project, or null while it has none. */
614
+ async get(ref) {
615
+ const paths = await this.load();
616
+ return paths[projectKey(ref)] ?? paths[ref.id] ?? null;
617
+ }
618
+ async all() {
619
+ return { ...await this.load() };
620
+ }
621
+ /**
622
+ * The project already placed in this directory, if any other one is.
623
+ *
624
+ * Answers with the key as stored — the couple, or the bare id for an entry an
625
+ * older version wrote — which is enough to say "taken" and to name it.
626
+ */
627
+ async projectAt(path, exclude) {
628
+ const target = resolve(path);
629
+ const excluded = exclude ? [projectKey(exclude), exclude.id] : [];
630
+ for (const [key, dir] of Object.entries(await this.load())) {
631
+ if (!excluded.includes(key) && resolve(dir) === target) return key;
632
+ }
633
+ return null;
634
+ }
635
+ async set(ref, path) {
636
+ if (!isAbsolute(path)) throw new Error("Le chemin du projet doit \xEAtre absolu");
637
+ const paths = await this.load();
638
+ delete paths[ref.id];
639
+ paths[projectKey(ref)] = resolve(path);
640
+ await this.persist();
641
+ }
642
+ /**
643
+ * Faire suivre le répertoire quand un projet change d'organisation.
644
+ *
645
+ * La clé est le couple `(organisation, projet)` : publier un projet local le
646
+ * fait passer de `local:<id>` à `<org>:<id>`, et l'entrée d'avant cesse alors
647
+ * de répondre — `get` ne retombe que sur l'identifiant nu, forme héritée, pas
648
+ * sur `local:<id>`. Le projet se retrouvait donc sans emplacement connu juste
649
+ * après avoir été publié, alors que ses sources n'avaient pas bougé d'un
650
+ * octet.
651
+ */
652
+ async relocate(from, to) {
653
+ const paths = await this.load();
654
+ const previous = paths[projectKey(from)] ?? paths[from.id];
655
+ if (!previous) return;
656
+ delete paths[projectKey(from)];
657
+ delete paths[from.id];
658
+ paths[projectKey(to)] = previous;
659
+ await this.persist();
660
+ }
661
+ async clear(ref) {
662
+ const paths = await this.load();
663
+ const keys = [projectKey(ref), ref.id].filter((k) => k in paths);
664
+ if (keys.length === 0) return;
665
+ for (const key of keys) delete paths[key];
666
+ await this.persist();
667
+ }
668
+ /** Test seam: forget what was read from disk. */
669
+ reset() {
670
+ this.paths = null;
671
+ }
672
+ };
673
+ function isPathMap(value) {
674
+ return !!value && typeof value === "object" && !Array.isArray(value) && Object.values(value).every((v) => typeof v === "string");
675
+ }
676
+ async function holdsRuneyaProject(path) {
677
+ for (const candidate of ["project.json", "projects.json"]) {
678
+ try {
679
+ await stat(join3(path, ".runeya", candidate));
680
+ return true;
681
+ } catch {
682
+ }
683
+ }
684
+ return false;
685
+ }
686
+ var projectPathStore = new ProjectPathStore();
687
+
588
688
  // ../server/src/services/project-store.ts
589
- var FILENAME = "project.json";
689
+ var FILENAME2 = "project.json";
590
690
  var LEGACY_FILENAME = "projects.json";
591
691
  function toDiskForm(project) {
592
692
  const { activeEnvironmentId: _runtimeOnly, ...rest } = project;
@@ -596,14 +696,14 @@ async function readLocalProject() {
596
696
  const root = localVaultRoot();
597
697
  let current = null;
598
698
  try {
599
- const raw = await readFile2(join3(root, FILENAME), "utf-8");
699
+ const raw = await readFile3(join4(root, FILENAME2), "utf-8");
600
700
  const parsed = ProjectSchema.safeParse(JSON.parse(raw));
601
701
  if (parsed.success) current = parsed.data;
602
702
  } catch {
603
703
  }
604
704
  let legacy;
605
705
  try {
606
- legacy = JSON.parse(await readFile2(join3(root, LEGACY_FILENAME), "utf-8"));
706
+ legacy = JSON.parse(await readFile3(join4(root, LEGACY_FILENAME), "utf-8"));
607
707
  } catch {
608
708
  return { local: current, strayCloud: [] };
609
709
  }
@@ -613,7 +713,7 @@ async function readLocalProject() {
613
713
  if (locals.length > 1) {
614
714
  const names = locals.map((p) => `"${p.name}" (${p.id})`).join(", ");
615
715
  throw new Error(
616
- `${join3(root, LEGACY_FILENAME)} holds ${locals.length} local projects: ${names}. A directory now holds a single local project \u2014 move the others to their own directory, or into an organization, then start again.`
716
+ `${join4(root, LEGACY_FILENAME)} holds ${locals.length} local projects: ${names}. A directory now holds a single local project \u2014 move the others to their own directory, or into an organization, then start again.`
617
717
  );
618
718
  }
619
719
  return { local: locals[0] ?? null, strayCloud };
@@ -622,7 +722,7 @@ async function readCloudProjects() {
622
722
  const found = [];
623
723
  for (const { orgId, projectId, root } of await listCloudVaults()) {
624
724
  try {
625
- const raw = await readFile2(join3(root, FILENAME), "utf-8");
725
+ const raw = await readFile3(join4(root, FILENAME2), "utf-8");
626
726
  const parsed = ProjectSchema.safeParse({ ...JSON.parse(raw), id: projectId, orgId });
627
727
  if (parsed.success) found.push({ project: parsed.data, root });
628
728
  } catch {
@@ -652,13 +752,13 @@ var ProjectStore = class {
652
752
  /** Emits `'saved'` after every persisted mutation, for the cloud sync bridge. */
653
753
  events = new EventEmitter();
654
754
  getFilePath(root = localVaultRoot()) {
655
- return join3(root, FILENAME);
755
+ return join4(root, FILENAME2);
656
756
  }
657
757
  async writeAtomic(filePath, data) {
658
758
  const tmpPath = filePath + ".tmp";
659
- await writeFile3(tmpPath, data, "utf-8");
660
- await rename2(tmpPath, filePath);
661
- await chmod2(filePath, 384);
759
+ await writeFile4(tmpPath, data, "utf-8");
760
+ await rename3(tmpPath, filePath);
761
+ await chmod3(filePath, 384);
662
762
  }
663
763
  /** Adopt a project read from disk, remembering which vault it came from. */
664
764
  async absorb(p, root) {
@@ -733,10 +833,10 @@ var ProjectStore = class {
733
833
  await rm(this.getFilePath(), { force: true }).catch(() => {
734
834
  });
735
835
  }
736
- await rename2(join3(localVaultRoot(), LEGACY_FILENAME), join3(localVaultRoot(), LEGACY_FILENAME + ".bak")).catch(() => {
836
+ await rename3(join4(localVaultRoot(), LEGACY_FILENAME), join4(localVaultRoot(), LEGACY_FILENAME + ".bak")).catch(() => {
737
837
  });
738
838
  for (const { project, root } of cloud) {
739
- await mkdir2(root, { recursive: true });
839
+ await mkdir3(root, { recursive: true });
740
840
  await this.writeAtomic(this.getFilePath(root), JSON.stringify(toDiskForm(project), null, 2));
741
841
  setProjectVault(project, root);
742
842
  }
@@ -864,6 +964,7 @@ var ProjectStore = class {
864
964
  this.projects.delete(key);
865
965
  await this.save();
866
966
  await this.discardVault(project);
967
+ await projectPathStore.clear(project);
867
968
  return true;
868
969
  }
869
970
  /**
@@ -897,6 +998,7 @@ var ProjectStore = class {
897
998
  forgetProject(project);
898
999
  await serviceStore.forgetLocally(project.serviceIds ?? []);
899
1000
  await environmentStore.forgetByProject(project.id);
1001
+ await projectPathStore.clear(project);
900
1002
  }
901
1003
  /** All projects linked to a given organization (for the sync bridge). */
902
1004
  async listByOrg(orgId) {
@@ -1025,9 +1127,9 @@ var projectStore = new ProjectStore();
1025
1127
  registerProjectLoader(() => projectStore.list().then(() => void 0));
1026
1128
 
1027
1129
  // ../server/src/services/environment-overrides-store.ts
1028
- import { readFile as readFile3, writeFile as writeFile4, rename as rename3, mkdir as mkdir3, chmod as chmod3 } from "fs/promises";
1029
- import { dirname as dirname2, join as join4 } from "path";
1030
- var FILENAME2 = "environment-overrides.json";
1130
+ import { readFile as readFile4, writeFile as writeFile5, rename as rename4, mkdir as mkdir4, chmod as chmod4 } from "fs/promises";
1131
+ import { dirname as dirname2, join as join5 } from "path";
1132
+ var FILENAME3 = "environment-overrides.json";
1031
1133
  var EnvironmentOverridesStore = class {
1032
1134
  data = {};
1033
1135
  loaded = false;
@@ -1059,11 +1161,11 @@ var EnvironmentOverridesStore = class {
1059
1161
  async rootFor(variableId) {
1060
1162
  const root = await environmentStore.rootOfVariable(variableId);
1061
1163
  if (root) return root;
1062
- return this.roots.get(variableId) ?? dirname2(await keyedFilePath(FILENAME2));
1164
+ return this.roots.get(variableId) ?? dirname2(await keyedFilePath(FILENAME3));
1063
1165
  }
1064
1166
  /** Where earlier versions kept them: read once, rewritten to their vaults. */
1065
1167
  getLegacyFilePath() {
1066
- return legacyMachineFilePath(FILENAME2);
1168
+ return legacyMachineFilePath(FILENAME3);
1067
1169
  }
1068
1170
  /**
1069
1171
  * Read every vault, then the places older versions used.
@@ -1079,13 +1181,13 @@ var EnvironmentOverridesStore = class {
1079
1181
  const roots = await allVaultRoots();
1080
1182
  const sources = [
1081
1183
  this.getLegacyFilePath(),
1082
- await keyedFilePath(FILENAME2),
1083
- ...roots.map((root) => join4(root, FILENAME2))
1184
+ await keyedFilePath(FILENAME3),
1185
+ ...roots.map((root) => join5(root, FILENAME3))
1084
1186
  ];
1085
1187
  for (const path of sources) {
1086
1188
  let parsed;
1087
1189
  try {
1088
- parsed = JSON.parse(await readFile3(path, "utf-8"));
1190
+ parsed = JSON.parse(await readFile4(path, "utf-8"));
1089
1191
  } catch {
1090
1192
  continue;
1091
1193
  }
@@ -1136,12 +1238,12 @@ var EnvironmentOverridesStore = class {
1136
1238
  this.diskEncryptedSlots,
1137
1239
  extractEncryptedVariableSlots(encrypted)
1138
1240
  );
1139
- await mkdir3(root, { recursive: true });
1140
- const path = join4(root, FILENAME2);
1241
+ await mkdir4(root, { recursive: true });
1242
+ const path = join5(root, FILENAME3);
1141
1243
  const tmpPath = path + ".tmp";
1142
- await writeFile4(tmpPath, JSON.stringify(encrypted, null, 2), "utf-8");
1143
- await rename3(tmpPath, path);
1144
- await chmod3(path, 384);
1244
+ await writeFile5(tmpPath, JSON.stringify(encrypted, null, 2), "utf-8");
1245
+ await rename4(tmpPath, path);
1246
+ await chmod4(path, 384);
1145
1247
  }
1146
1248
  }
1147
1249
  /**
@@ -1573,7 +1675,7 @@ var EnvironmentResolver = class {
1573
1675
  var environmentResolver = new EnvironmentResolver();
1574
1676
 
1575
1677
  // ../server/src/services/audit-service.ts
1576
- import { appendFile, readFile as readFile4, stat, rename as rename4, unlink, readdir, mkdir as mkdir4 } from "fs/promises";
1678
+ import { appendFile, readFile as readFile5, stat as stat2, rename as rename5, unlink, readdir, mkdir as mkdir5 } from "fs/promises";
1577
1679
  var AUDIT_FILENAME = "audit.log";
1578
1680
  var MAX_FILE_SIZE = 10 * 1024 * 1024;
1579
1681
  var MAX_AGE_DAYS = 30;
@@ -1593,7 +1695,7 @@ var AuditService = class {
1593
1695
  const line = JSON.stringify(record) + "\n";
1594
1696
  const filepath = this.getFilePath();
1595
1697
  try {
1596
- await mkdir4(machineRoot(), { recursive: true });
1698
+ await mkdir5(machineRoot(), { recursive: true });
1597
1699
  await appendFile(filepath, line, "utf-8");
1598
1700
  await this.rotateIfNeeded();
1599
1701
  } catch (err) {
@@ -1606,7 +1708,7 @@ var AuditService = class {
1606
1708
  const filepath = this.getFilePath();
1607
1709
  let lines;
1608
1710
  try {
1609
- const content = await readFile4(filepath, "utf-8");
1711
+ const content = await readFile5(filepath, "utf-8");
1610
1712
  lines = content.trim().split("\n").filter(Boolean);
1611
1713
  } catch {
1612
1714
  return { entries: [], total: 0 };
@@ -1637,9 +1739,9 @@ var AuditService = class {
1637
1739
  async rotateIfNeeded() {
1638
1740
  const filepath = this.getFilePath();
1639
1741
  try {
1640
- const stats = await stat(filepath);
1742
+ const stats = await stat2(filepath);
1641
1743
  if (stats.size > MAX_FILE_SIZE) {
1642
- await rename4(filepath, this.getRotatedPath());
1744
+ await rename5(filepath, this.getRotatedPath());
1643
1745
  }
1644
1746
  } catch {
1645
1747
  }
@@ -1664,87 +1766,6 @@ var AuditService = class {
1664
1766
  };
1665
1767
  var auditService = new AuditService();
1666
1768
 
1667
- // ../server/src/services/project-path-store.ts
1668
- import { readFile as readFile5, writeFile as writeFile5, rename as rename5, mkdir as mkdir5, chmod as chmod4, stat as stat2 } from "fs/promises";
1669
- import { isAbsolute, join as join5, resolve } from "path";
1670
- var FILENAME3 = "project-paths.json";
1671
- var ProjectPathStore = class {
1672
- paths = null;
1673
- async load() {
1674
- if (this.paths) return this.paths;
1675
- try {
1676
- const raw = await readFile5(machineFilePath(FILENAME3), "utf-8");
1677
- const parsed = JSON.parse(raw);
1678
- this.paths = isPathMap(parsed) ? parsed : {};
1679
- } catch {
1680
- this.paths = {};
1681
- }
1682
- return this.paths;
1683
- }
1684
- async persist() {
1685
- await mkdir5(machineRoot(), { recursive: true });
1686
- const filePath = machineFilePath(FILENAME3);
1687
- const tmpPath = `${filePath}.tmp`;
1688
- await writeFile5(tmpPath, JSON.stringify(this.paths ?? {}, null, 2), "utf-8");
1689
- await rename5(tmpPath, filePath);
1690
- await chmod4(filePath, 384);
1691
- }
1692
- /** The directory chosen for this project, or null while it has none. */
1693
- async get(ref) {
1694
- const paths = await this.load();
1695
- return paths[projectKey(ref)] ?? paths[ref.id] ?? null;
1696
- }
1697
- async all() {
1698
- return { ...await this.load() };
1699
- }
1700
- /**
1701
- * The project already placed in this directory, if any other one is.
1702
- *
1703
- * Answers with the key as stored — the couple, or the bare id for an entry an
1704
- * older version wrote — which is enough to say "taken" and to name it.
1705
- */
1706
- async projectAt(path, exclude) {
1707
- const target = resolve(path);
1708
- const excluded = exclude ? [projectKey(exclude), exclude.id] : [];
1709
- for (const [key, dir] of Object.entries(await this.load())) {
1710
- if (!excluded.includes(key) && resolve(dir) === target) return key;
1711
- }
1712
- return null;
1713
- }
1714
- async set(ref, path) {
1715
- if (!isAbsolute(path)) throw new Error("Le chemin du projet doit \xEAtre absolu");
1716
- const paths = await this.load();
1717
- delete paths[ref.id];
1718
- paths[projectKey(ref)] = resolve(path);
1719
- await this.persist();
1720
- }
1721
- async clear(ref) {
1722
- const paths = await this.load();
1723
- const keys = [projectKey(ref), ref.id].filter((k) => k in paths);
1724
- if (keys.length === 0) return;
1725
- for (const key of keys) delete paths[key];
1726
- await this.persist();
1727
- }
1728
- /** Test seam: forget what was read from disk. */
1729
- reset() {
1730
- this.paths = null;
1731
- }
1732
- };
1733
- function isPathMap(value) {
1734
- return !!value && typeof value === "object" && !Array.isArray(value) && Object.values(value).every((v) => typeof v === "string");
1735
- }
1736
- async function holdsRuneyaProject(path) {
1737
- for (const candidate of ["project.json", "projects.json"]) {
1738
- try {
1739
- await stat2(join5(path, ".runeya", candidate));
1740
- return true;
1741
- } catch {
1742
- }
1743
- }
1744
- return false;
1745
- }
1746
- var projectPathStore = new ProjectPathStore();
1747
-
1748
1769
  // ../server/src/services/org-keys.ts
1749
1770
  import { mkdir as mkdir6 } from "fs/promises";
1750
1771
 
@@ -1969,9 +1990,7 @@ async function installOrgKey(orgId, key, masterPassword) {
1969
1990
  }
1970
1991
  var OrgVaultUnreadableError = class extends Error {
1971
1992
  constructor(orgId) {
1972
- super(
1973
- "Cette organisation est chiffr\xE9e par une cl\xE9 que cette machine n'a pas. Demandez la cl\xE9 \xE0 un membre et adoptez-la avant d'ouvrir ses projets."
1974
- );
1993
+ super("ORG_VAULT_UNREADABLE");
1975
1994
  this.orgId = orgId;
1976
1995
  this.name = "OrgVaultUnreadableError";
1977
1996
  }
@@ -3936,6 +3955,26 @@ var setupRouter = router({
3936
3955
  }))
3937
3956
  };
3938
3957
  }),
3958
+ /**
3959
+ * Éprouver une clé contre le canari du coffre, sans passer par le cloud.
3960
+ *
3961
+ * `cloudSync.checkOrgKey` interroge le canari publié par l'organisation :
3962
+ * il prouve « cette clé est celle de l'organisation », mais il exige que le
3963
+ * cloud réponde et que l'organisation y existe encore. Un poste hors ligne —
3964
+ * ou qui reprend un coffre dont l'organisation a disparu côté cloud — n'avait
3965
+ * alors plus aucun moyen de vérifier une clé avant de l'adopter.
3966
+ *
3967
+ * Le coffre porte pourtant son propre canari, écrit en même temps que sa clé.
3968
+ * Il répond à la question qui compte ici : cette clé ouvre-t-elle CE coffre ?
3969
+ */
3970
+ checkOrgKeyLocal: protectedProcedure.input(z7.object({
3971
+ orgId: z7.string().min(1).max(128),
3972
+ keyHex: z7.string().length(64).regex(/^[0-9a-f]+$/i, "Invalid hex format")
3973
+ })).query(async ({ input }) => {
3974
+ const canary = await readVerifyFile(orgVaultRoot(input.orgId));
3975
+ if (!canary) return { matches: false, hasCanary: false };
3976
+ return { matches: matchesCanary(canary, Buffer.from(input.keyHex, "hex")), hasCanary: true };
3977
+ }),
3939
3978
  /**
3940
3979
  * Submit and validate encryption key.
3941
3980
  * Attempts to decrypt existing data to validate the key.
@@ -7744,7 +7783,7 @@ function tailTranscript(opts) {
7744
7783
 
7745
7784
  // ../server/src/services/ai-runners/claude-pty-runner.ts
7746
7785
  async function getAgentManager() {
7747
- const { agentManager: agentManager2 } = await import("./agent-manager-4EKOSJBR.js");
7786
+ const { agentManager: agentManager2 } = await import("./agent-manager-NJMLCIVW.js");
7748
7787
  return agentManager2;
7749
7788
  }
7750
7789
  function buildPtyArgs(params, sessionId, opts) {
@@ -8397,7 +8436,7 @@ async function shutdownCodexAppServer() {
8397
8436
  }
8398
8437
  }
8399
8438
  async function getAgentManager2() {
8400
- const { agentManager: agentManager2 } = await import("./agent-manager-4EKOSJBR.js");
8439
+ const { agentManager: agentManager2 } = await import("./agent-manager-NJMLCIVW.js");
8401
8440
  return agentManager2;
8402
8441
  }
8403
8442
  function parseRuneyaCurlCommand(command) {
@@ -13565,18 +13604,27 @@ async function orgsToSync() {
13565
13604
 
13566
13605
  // ../server/src/services/org-canary.ts
13567
13606
  var CanaryUnavailableError = class extends Error {
13568
- code = "CANARY_UNAVAILABLE";
13569
- constructor(message) {
13570
- super(message);
13607
+ /** `detail` reste pour les journaux ; le message est le code, pour l'interface. */
13608
+ constructor(detail) {
13609
+ super("CANARY_UNAVAILABLE");
13610
+ this.detail = detail;
13571
13611
  this.name = "CanaryUnavailableError";
13572
13612
  }
13613
+ code = "CANARY_UNAVAILABLE";
13573
13614
  };
13574
13615
  var OrgKeyMismatchError = class extends Error {
13575
13616
  code = "ORG_KEY_MISMATCH";
13617
+ /**
13618
+ * Le message EST le code, comme partout ailleurs sur ces routes.
13619
+ *
13620
+ * Une phrase écrite ici traverse le serveur telle quelle et s'affiche dans
13621
+ * l'interface sans passer par la traduction : une interface en français
13622
+ * annonçait donc l'échec en anglais, et le texte ne pouvait renvoyer nulle
13623
+ * part puisque le serveur ignore où se trouve l'écran qui répare. Le client
13624
+ * traduit `serverErrors.ORG_KEY_MISMATCH` et nomme le chemin.
13625
+ */
13576
13626
  constructor() {
13577
- super(
13578
- "This organization uses a different encryption key. Ask a member for the key already in use, then set it up on this machine before syncing."
13579
- );
13627
+ super("ORG_KEY_MISMATCH");
13580
13628
  this.name = "OrgKeyMismatchError";
13581
13629
  }
13582
13630
  };
@@ -14370,8 +14418,10 @@ var CloudSyncBridge = class {
14370
14418
  }
14371
14419
  console.warn(
14372
14420
  "[cloud-sync] org %s: could not check the organization key (%s) \u2014 syncing anyway.",
14421
+ // Le message porte désormais le code, destiné à l'interface ; le détail
14422
+ // lisible reste sur l'erreur, et c'est lui qui a sa place dans un log.
14373
14423
  link.orgId,
14374
- err.message
14424
+ err.detail ?? err.message
14375
14425
  );
14376
14426
  }
14377
14427
  this.keyMismatch.delete(link.orgId);
@@ -14648,6 +14698,10 @@ var cloudSyncRouter = router({
14648
14698
  await cloudSyncBridge.connect({ orgId: input.orgId, cloudUrl: input.cloudUrl });
14649
14699
  }
14650
14700
  await projectStore.moveToOrg(input.projectId, input.orgId);
14701
+ await projectPathStore.relocate(
14702
+ { id: input.projectId, orgId: null },
14703
+ { id: input.projectId, orgId: input.orgId }
14704
+ );
14651
14705
  await conversationStore.relocateAll();
14652
14706
  try {
14653
14707
  await cloudSyncBridge.followProject(input.orgId, input.projectId);
@@ -17222,4 +17276,4 @@ export {
17222
17276
  pullEnv,
17223
17277
  registerInstance
17224
17278
  };
17225
- //# sourceMappingURL=src-7YQHXQ6L.js.map
17279
+ //# sourceMappingURL=src-FYMPMNWX.js.map