@runeya/runeya 2.0.70 → 2.0.72

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 (332) hide show
  1. package/agent/index.js +260 -164
  2. package/agent/index.js.map +1 -1
  3. package/agent-manager-YDLSYZE3.js +7 -0
  4. package/{chunk-YSJ6OJGN.js → chunk-HPYBAUAH.js} +409 -18
  5. package/chunk-HPYBAUAH.js.map +1 -0
  6. package/index.js +3 -2
  7. package/index.js.map +1 -1
  8. package/package.json +1 -1
  9. package/{src-6WVQ2FQV.js → src-53OQNM27.js} +735 -633
  10. package/src-53OQNM27.js.map +1 -0
  11. package/web/assets/AgentScalarChatInterface.vue-DdIfThmp.js +13 -0
  12. package/web/assets/AgentTerminalPage-BD2w4XRc.css +1 -0
  13. package/web/assets/AgentTerminalPage-v9fFc2Kd.js +1 -0
  14. package/web/assets/AiChatPage-BvrKlLxc.js +1 -0
  15. package/web/assets/AppLayout-CLzy-QOZ.js +1 -0
  16. package/web/assets/{AppLayout-BqXoW05V.css → AppLayout-Dj8VrBzz.css} +1 -1
  17. package/web/assets/AuditPage-DgJIcr0c.js +1 -0
  18. package/web/assets/CloudAccountPage-CoJV3YCA.js +1 -0
  19. package/web/assets/CloudAccountPage-DGtKCmXL.js +1 -0
  20. package/web/assets/CloudMessagingPage-Bql34zJU.js +2 -0
  21. package/web/assets/DashboardPage-BSvJxrcT.js +1 -0
  22. package/web/assets/DirectoryPickerDialog-BfLLfUQy.js +1 -0
  23. package/web/assets/{EditorIcon-DUDLTmUd.js → EditorIcon-BbilRWLq.js} +2 -2
  24. package/web/assets/EnvironmentForm-BIHXK18r.js +108 -0
  25. package/web/assets/EnvironmentFormPage-oLAwLJ1b.js +1 -0
  26. package/web/assets/EnvironmentListPage-tJfB0q_E.js +1 -0
  27. package/web/assets/KanbanBoardPage-DpyYe6jx.js +4 -0
  28. package/web/assets/KanbanListPage-DjXWjWgU.js +1 -0
  29. package/web/assets/LaunchProjectPage-Bqgsa2z1.js +1 -0
  30. package/web/assets/LaunchProjectPage-BrmWhutG.css +1 -0
  31. package/web/assets/LaunchServicesPage-BCNDSuuN.js +1 -0
  32. package/web/assets/LaunchServicesPage-CMxUWoNQ.css +1 -0
  33. package/web/assets/LogViewer-gTNzyao0.js +3 -0
  34. package/web/assets/OrgKeyPrompt-BdNV_cve.js +1 -0
  35. package/web/assets/{ProcessControls-DMxvJmDe.js → ProcessControls-BzMrd-2c.js} +1 -1
  36. package/web/assets/ProcessDetailPage-Rg5zyPYJ.js +1 -0
  37. package/web/assets/{ProcessMetrics-DK4Dgdb0.js → ProcessMetrics-hZWAa3gi.js} +2 -2
  38. package/web/assets/ProjectDetailPage-NbxG6AIr.js +1 -0
  39. package/web/assets/ProjectListPage-COMYMVbr.js +1 -0
  40. package/web/assets/RandomJobTestPage-DTK2RLln.js +2 -0
  41. package/web/assets/ScenarioEditorPage-DIx_Nzbh.js +14 -0
  42. package/web/assets/SendToChatDialog-BAalryU3.js +1 -0
  43. package/web/assets/ServiceControlsBar-CgR8yFZb.js +1 -0
  44. package/web/assets/ServiceDetailPage-Cvqftndf.js +2 -0
  45. package/web/assets/ServiceFormPage-CGgCwNM3.js +1 -0
  46. package/web/assets/{SettingsPage-uCS5lY2z.css → SettingsPage-ClUsbLPy.css} +1 -1
  47. package/web/assets/SettingsPage-Dx5xoAS7.js +2063 -0
  48. package/web/assets/UnlockPage-BkqsC0ML.css +1 -0
  49. package/web/assets/UnlockPage-Dlp8kXD-.js +1 -0
  50. package/web/assets/VariablesTable-Dr1C6hg4.js +1 -0
  51. package/web/assets/VaultMigrationPage-1zZCTKgS.js +1 -0
  52. package/web/assets/VaultMigrationPage-B20L2W_w.css +1 -0
  53. package/web/assets/VersionBadge-BiLjqi8I.js +1 -0
  54. package/web/assets/WikiPage-B51w0xOX.js +1 -0
  55. package/web/assets/WikiView-CGQrkGH4.js +1 -0
  56. package/web/assets/add-scalar-classes-ChVyhgpT.js +387 -0
  57. package/web/assets/auth-errors-BdfA61wA.js +1 -0
  58. package/web/assets/autocomplete-wqj_ORBH.js +308 -0
  59. package/web/assets/{basic-shape-diamond.svg-CacrbinE.js → basic-shape-diamond.svg-CWwnQ30s.js} +1 -1
  60. package/web/assets/{basic-shape-hexagon.svg-GGJ54oyX.js → basic-shape-hexagon.svg-C9JMDUIK.js} +1 -1
  61. package/web/assets/{basic-shape-primary-circle-ellipse-round.svg-CuWfwdJM.js → basic-shape-primary-circle-ellipse-round.svg-Do0Ewbp-.js} +1 -1
  62. package/web/assets/{basic-shape-primary-square-rectangle.svg-C2Bewjip.js → basic-shape-primary-square-rectangle.svg-CRq767cD.js} +1 -1
  63. package/web/assets/{basic-shape-shield.svg-DNtg0KuJ.js → basic-shape-shield.svg-BuxJBs70.js} +1 -1
  64. package/web/assets/{browser-XO2fm4BX.js → browser-BEEW2obM.js} +1 -1
  65. package/web/assets/{browser-5NN8ieli.js → browser-BhZAIVa8.js} +1 -1
  66. package/web/assets/browser-DNbnH79q.js +6 -0
  67. package/web/assets/card-C1iS2wAN.js +32 -0
  68. package/web/assets/{checkbox-iq9mU5eP.js → checkbox-CCU9xze9.js} +3 -3
  69. package/web/assets/{chip-BsccUnHb.js → chip-DsJBorBp.js} +2 -2
  70. package/web/assets/client-BFK39Zab.js +24 -0
  71. package/web/assets/cloud-chat.store-D39vo5xT.js +1 -0
  72. package/web/assets/cloud-session-B7G8xhKC.js +1 -0
  73. package/web/assets/column-CPU5Jg0n.js +907 -0
  74. package/web/assets/{computer-device-desktop-monitor.svg-DSwpF_ss.js → computer-device-desktop-monitor.svg-XWEWhL0y.js} +1 -1
  75. package/web/assets/{computer-device-desktop.svg-Caj_PZBV.js → computer-device-desktop.svg-COkZClBv.js} +1 -1
  76. package/web/assets/{computer-device-laptop.svg-Bv3ienI_.js → computer-device-laptop.svg-C4EfJUqO.js} +1 -1
  77. package/web/assets/{computer-device-mobile-phone-android-samsung-back.svg-IWlhEKx_.js → computer-device-mobile-phone-android-samsung-back.svg-Bb2_2tyI.js} +1 -1
  78. package/web/assets/{computer-device-mobile-phone-android-samsung.svg-CglQAFq2.js → computer-device-mobile-phone-android-samsung.svg-CEUhXP7K.js} +1 -1
  79. package/web/assets/{computer-device-mobile-phone-iphone-x-back.svg-CgjNnTTw.js → computer-device-mobile-phone-iphone-x-back.svg-B3rxizbE.js} +1 -1
  80. package/web/assets/{computer-device-mobile-phone-iphone-x.svg-CotZ-4M5.js → computer-device-mobile-phone-iphone-x.svg-BSKpZFCN.js} +1 -1
  81. package/web/assets/{computer-device-mobile-tablet-touch.svg-B2cemd61.js → computer-device-mobile-tablet-touch.svg-CZvb3YX2.js} +1 -1
  82. package/web/assets/{computer-device-mobile-tablet.svg-8nPVs4u_.js → computer-device-mobile-tablet.svg-BM4_YZYi.js} +1 -1
  83. package/web/assets/{computer-device-network-ethernet-cat6.svg-Bl56Qw4v.js → computer-device-network-ethernet-cat6.svg-CK0v-Rjf.js} +1 -1
  84. package/web/assets/{computer-device-network-lan-www.svg-C_x6Rf8N.js → computer-device-network-lan-www.svg-DvhO71Lq.js} +1 -1
  85. package/web/assets/{computer-device-network-wifi-connection.svg-oz6dsDQB.js → computer-device-network-wifi-connection.svg--olUYsgv.js} +1 -1
  86. package/web/assets/{computer-device-network-wifi-router.svg-BciHU6Nj.js → computer-device-network-wifi-router.svg-D5HKSWTi.js} +1 -1
  87. package/web/assets/{cssMode-DSX5tYcm.js → cssMode-CTjKNOiX.js} +1 -1
  88. package/web/assets/{divider-DnPOdDs3.js → divider-VFAPax5_.js} +2 -2
  89. package/web/assets/docx-preview-gNYLz3FX.js +21 -0
  90. package/web/assets/{ecology-science-erlenmeyer-flask.svg-BzQP6y9L.js → ecology-science-erlenmeyer-flask.svg-THkDG-tj.js} +1 -1
  91. package/web/assets/{fieldset-D9lkV70l.js → fieldset-DZGy449H.js} +2 -2
  92. package/web/assets/{freemarker2-D9yXX9Vw.js → freemarker2-CNSvFpVF.js} +1 -1
  93. package/web/assets/{handlebars-BmcjEksL.js → handlebars-BeRu48NI.js} +1 -1
  94. package/web/assets/{html-BQF9vZLL.js → html-DrTiGPjE.js} +1 -1
  95. package/web/assets/{htmlMode-DxSRpgHE.js → htmlMode-DpbDpbjK.js} +1 -1
  96. package/web/assets/{image-flash-lightning.svg-DQX09uxo.js → image-flash-lightning.svg-DrkyfdIV.js} +1 -1
  97. package/web/assets/{image-picture-flower.svg-CUBdrnoc.js → image-picture-flower.svg-BqFj1xcR.js} +1 -1
  98. package/web/assets/{index-CICxLkjp.css → index-B___lI4D.css} +1 -1
  99. package/web/assets/{index-enuBsJBa.js → index-y5bguEQB.js} +299 -299
  100. package/web/assets/{interface-alert-exclamation-diamond.svg-DXQdQSvN.js → interface-alert-exclamation-diamond.svg-B40BfW6d.js} +1 -1
  101. package/web/assets/{interface-alert-exclamation-triangle-warning.svg-BoCeNIlU.js → interface-alert-exclamation-triangle-warning.svg-DeIlksL4.js} +1 -1
  102. package/web/assets/{interface-alert-information-circle.svg-BCA57JL2.js → interface-alert-information-circle.svg-SwVdV-Z6.js} +1 -1
  103. package/web/assets/{interface-award-crown.svg-B1hTlsb0.js → interface-award-crown.svg-DZHf0EHC.js} +1 -1
  104. package/web/assets/{interface-bookmark.svg-zf3cIGKM.js → interface-bookmark-tag.svg-CiaV2Cjo.js} +1 -1
  105. package/web/assets/{interface-bookmark-tag.svg-AosfQ0Ip.js → interface-bookmark.svg-DBEqa-8W.js} +1 -1
  106. package/web/assets/{interface-calendar-date-one.svg-D58WqPie.js → interface-calendar-date-one.svg-C_afKyyz.js} +1 -1
  107. package/web/assets/{interface-content-book-open-pages.svg-B74HWMlw.js → interface-content-book-open-pages.svg-D5d9ilSu.js} +1 -1
  108. package/web/assets/{interface-content-book-page.svg-C2QWk62-.js → interface-content-book-page.svg-B6hlaLP5.js} +1 -1
  109. package/web/assets/{interface-content-file.svg-xKu0qAOQ.js → interface-content-file.svg-COWMwejF.js} +1 -1
  110. package/web/assets/interface-content-folder.svg-BCIUgpD4.js +1 -0
  111. package/web/assets/{interface-content-folder.svg-ZkrY9WkQ.js → interface-content-folder.svg-K7DTqQH-.js} +1 -1
  112. package/web/assets/{interface-copy-clipboard.svg-BEkNG3vO.js → interface-copy-clipboard.svg-BFQ6eajI.js} +1 -1
  113. package/web/assets/{interface-edit-attachment.svg-5ztQ3WTq.js → interface-edit-attachment.svg-B-LsB4cM.js} +1 -1
  114. package/web/assets/{interface-edit-binocular.svg-CC9U1Gnc.js → interface-edit-binocular.svg-CnVjKyrn.js} +1 -1
  115. package/web/assets/{interface-edit-magic-wand.svg-CPl6ZoE9.js → interface-edit-magic-wand.svg-CUY6vVJT.js} +1 -1
  116. package/web/assets/{interface-edit-tool-paint-roller.svg-B85t7jG2.js → interface-edit-tool-paint-roller.svg-B1tSdIxN.js} +1 -1
  117. package/web/assets/{interface-edit-tool-pencil.svg-BSTdqWUg.js → interface-edit-tool-pencil.svg-BHFULT75.js} +1 -1
  118. package/web/assets/{interface-favorite-award.svg-DbPr_WKt.js → interface-favorite-award.svg-CcOLoF8I.js} +1 -1
  119. package/web/assets/{interface-favorite-flag.svg-CgKYXc7k.js → interface-favorite-flag.svg-CAW6LmLW.js} +1 -1
  120. package/web/assets/{interface-favorite-heart.svg-DfnXyJMg.js → interface-favorite-heart.svg-BEz4zlNs.js} +1 -1
  121. package/web/assets/{interface-favorite-star.svg-0sT7jJMK.js → interface-favorite-star.svg-DKFuvYge.js} +1 -1
  122. package/web/assets/{interface-favorite-stars-sparkles.svg-BcM2EXgn.js → interface-favorite-stars-sparkles.svg-BfzccoPz.js} +1 -1
  123. package/web/assets/{interface-hierarchy-flowchart.svg-BM62WcKt.js → interface-hierarchy-flowchart.svg-BT8QX161.js} +1 -1
  124. package/web/assets/{interface-home-house.svg-KqP7iMC4.js → interface-home-house.svg-B264pTPi.js} +1 -1
  125. package/web/assets/{interface-hyperlink.svg-DBKFbihR.js → interface-hyperlink.svg-DhUgNKkr.js} +1 -1
  126. package/web/assets/{interface-lighting-brightness.svg-DTkCS7PY.js → interface-lighting-brightness.svg-CPKb40uB.js} +1 -1
  127. package/web/assets/{interface-lock-closed.svg-Div5xlvI.js → interface-lock-closed.svg-CvXhgCtt.js} +1 -1
  128. package/web/assets/{interface-lock-open-unlock.svg-Du5L_iMV.js → interface-lock-open-unlock.svg-B0PMKRhP.js} +1 -1
  129. package/web/assets/{interface-login-key.svg-28TYVVzH.js → interface-login-key.svg-DJUm3vhg.js} +1 -1
  130. package/web/assets/{interface-search.svg-BS_owhIG.js → interface-search.svg-ByW98ez_.js} +1 -1
  131. package/web/assets/{interface-setting-cog.svg-afYc0TQv.js → interface-setting-cog.svg-DYOmJ9It.js} +1 -1
  132. package/web/assets/{interface-share-megaphone-bullhorn.svg-BnW8HhjG.js → interface-share-megaphone-bullhorn.svg-YOCUHa3i.js} +1 -1
  133. package/web/assets/{interface-share-rocket.svg-DvX_9178.js → interface-share-rocket.svg-C5kj5dSu.js} +1 -1
  134. package/web/assets/{interface-share-satellite.svg-B4nQqv6w.js → interface-share-satellite.svg-C0svPxG6.js} +1 -1
  135. package/web/assets/{interface-share-space-ship.svg-Ciol-6JO.js → interface-share-space-ship.svg-8Nw02n1Q.js} +1 -1
  136. package/web/assets/{interface-share.svg-COm1OVr8.js → interface-share.svg-eDW294tn.js} +1 -1
  137. package/web/assets/{interface-signal-square.svg-DXuF6sqG.js → interface-signal-square.svg-CxB5mcJQ.js} +1 -1
  138. package/web/assets/{interface-time-clock-circle.svg-CWLe4mcs.js → interface-time-clock-circle.svg-CEnlQi79.js} +1 -1
  139. package/web/assets/{interface-time-hour-glass.svg-DXz9wBiv.js → interface-time-hour-glass.svg-qL3_s19Q.js} +1 -1
  140. package/web/assets/{interface-users-multiple.svg-CXOw1J5l.js → interface-users-multiple.svg-Cz2iA33z.js} +1 -1
  141. package/web/assets/{interface-weather-moon.svg-B9H9xib3.js → interface-weather-moon.svg-BoT9GUK_.js} +1 -1
  142. package/web/assets/{javascript-BY1URXQK.js → javascript-DWdA0-HW.js} +1 -1
  143. package/web/assets/{jsonMode-CxipJdzJ.js → jsonMode-DxGrVlm0.js} +2 -2
  144. package/web/assets/{liquid-BbqI_ezD.js → liquid-COqLk0mR.js} +1 -1
  145. package/web/assets/{lspLanguageFeatures-BrbDxmfl.js → lspLanguageFeatures--0hj1ZV4.js} +3 -3
  146. package/web/assets/{mail-chat-bubble-square.svg-CAlBGAlW.js → mail-chat-bubble-square.svg-eiKzTBOv.js} +1 -1
  147. package/web/assets/{mail-send-email-paper-airplane.svg-BoNc-FEY.js → mail-send-email-paper-airplane.svg-CCI77Gk8.js} +1 -1
  148. package/web/assets/{mail-send-envelope.svg-CnMOSib5.js → mail-send-envelope.svg-ChM5k_N7.js} +1 -1
  149. package/web/assets/{mdx-C4PcQ_oe.js → mdx-CwXNREAO.js} +1 -1
  150. package/web/assets/{message-BWsbEnoG.js → message-CSxReshg.js} +2 -2
  151. package/web/assets/{minus-BpDIA3FO.js → minus-Cg0lH8Mn.js} +2 -2
  152. package/web/assets/modal-D3dkRJqD.js +1 -0
  153. package/web/assets/modal-ix4Amfqv.js +5 -0
  154. package/web/assets/{money-cashier-receipt.svg-DZQ9mrBZ.js → money-cashier-receipt.svg-WMIW7vxg.js} +1 -1
  155. package/web/assets/{money-currency-dollar-pay.svg-BCaw-GeJ.js → money-currency-dollar-pay.svg-qTcGSVX2.js} +1 -1
  156. package/web/assets/{money-graph-arrow-increase.svg-DZXh-i2p.js → money-graph-arrow-increase.svg-B-TQKOW-.js} +1 -1
  157. package/web/assets/{money-graph-bar-chart-increase.svg-j_1tUlGM.js → money-graph-bar-chart-increase.svg-CWCIjQcI.js} +1 -1
  158. package/web/assets/multiselect-C7U34xql.js +251 -0
  159. package/web/assets/{nature-ecology-leaf.svg-bajA57tM.js → nature-ecology-leaf.svg-CL26IBv2.js} +1 -1
  160. package/web/assets/{password-W9W3PSE2.js → password-ZOY0bqV1.js} +4 -4
  161. package/web/assets/{phone-telephone.svg-DD5MGHqV.js → phone-telephone.svg-BhzxDLVX.js} +1 -1
  162. package/web/assets/{plus-RuIcofM_.js → plus-DsBv8bgd.js} +6 -6
  163. package/web/assets/process.store-DPp7dk63.js +1 -0
  164. package/web/assets/{programming-bug.svg-CjtqBc8Z.js → programming-bug.svg-CBNm3E3F.js} +1 -1
  165. package/web/assets/{programming-cloud.svg-BXQ_h3dK.js → programming-cloud.svg-BrVRbl9B.js} +1 -1
  166. package/web/assets/{programming-computer-database-server.svg-D6TzOHsK.js → programming-computer-database-server.svg-LQp6n-du.js} +1 -1
  167. package/web/assets/{programming-computer-database.svg-Dmdh0lIx.js → programming-computer-database.svg-CSbhcIMU.js} +1 -1
  168. package/web/assets/{programming-module-four-layout.svg-CtGhpLhO.js → programming-module-four-layout.svg-DYEAcL2j.js} +1 -1
  169. package/web/assets/{programming-module-three.svg-hz_w8W7I.js → programming-module-three.svg-CCQXCU-e.js} +1 -1
  170. package/web/assets/{programming-module.svg-oDT_fQLn.js → programming-module.svg-Chrmf7k4.js} +1 -1
  171. package/web/assets/{programming-script-code.svg-CxHHTsaU.js → programming-script-code.svg-DPhhp3IW.js} +1 -1
  172. package/web/assets/{python-DH-AyaLR.js → python-B7ePhfsS.js} +1 -1
  173. package/web/assets/{razor-BUpT1gRX.js → razor-ChpzroOv.js} +1 -1
  174. package/web/assets/router-Df972Ysi.js +1 -0
  175. package/web/assets/settings-scope-CC3oHq2H.js +1 -0
  176. package/web/assets/settings.store-B31_cRNl.js +1 -0
  177. package/web/assets/{shopping-cart.svg-D1eK38-E.js → shopping-cart.svg-bmefzlOu.js} +1 -1
  178. package/web/assets/{shopping-gift-present.svg-CxSfFNAS.js → shopping-gift-present.svg-aUOleva0.js} +1 -1
  179. package/web/assets/{shopping-shipping-box-parcel-package.svg-M5Njo2qJ.js → shopping-shipping-box-parcel-package.svg-BLsRP4dg.js} +1 -1
  180. package/web/assets/{src-CEK4EPEJ.js → src-BPSr9dU2.js} +34 -34
  181. package/web/assets/src-Dt37H-VN.js +1 -0
  182. package/web/assets/tabpanel-DZQ_g__B.js +150 -0
  183. package/web/assets/{tag-new-circle.svg-v_Go3fcT.js → tag-new-circle.svg-kTMMMv-0.js} +1 -1
  184. package/web/assets/{toggleswitch-C4A0_850.js → toggleswitch-BWXDXl37.js} +2 -2
  185. package/web/assets/{travel-map-earth-globe.svg-Db2uRb3M.js → travel-map-earth-globe.svg-BdQmz8_b.js} +1 -1
  186. package/web/assets/trpc-aSS7b3jh.js +1 -0
  187. package/web/assets/{tsMode-CXB5XugS.js → tsMode-arHIUQbZ.js} +6 -6
  188. package/web/assets/{typescript-CHJkC9r6.js → typescript-Ds9kgbPd.js} +1 -1
  189. package/web/assets/useAiChatDrawer-C1xrMtLl.js +1 -0
  190. package/web/assets/useCloudOrg-BdpqnN19.css +1 -0
  191. package/web/assets/useCloudOrg-BexK510D.js +97 -0
  192. package/web/assets/{useProjectCatalog-DDm0I6sX.js → useProjectCatalog-BbSaTBSS.js} +1 -1
  193. package/web/assets/{xml-DB4EKWC9.js → xml-CO56TgpZ.js} +1 -1
  194. package/web/assets/{yaml-CqvLyuow.js → yaml-DueFV2-x.js} +1 -1
  195. package/web/index.html +2 -2
  196. package/agent-manager-74WZPMVQ.js +0 -7
  197. package/chunk-YSJ6OJGN.js.map +0 -1
  198. package/src-6WVQ2FQV.js.map +0 -1
  199. package/web/assets/AgentScalarChatInterface.vue-vU3z8Etw.js +0 -13
  200. package/web/assets/AgentTerminalPage-A8GIX6dZ.css +0 -1
  201. package/web/assets/AgentTerminalPage-DE3GUoXn.js +0 -1
  202. package/web/assets/AiChatPage-BIJczUeS.js +0 -1
  203. package/web/assets/AppLayout-CvkK_Pp3.js +0 -1
  204. package/web/assets/AuditPage-BZuVgUf1.js +0 -1
  205. package/web/assets/CloudAccountPage-B__2SGAw.js +0 -1
  206. package/web/assets/CloudAccountPage-MSWkg9Ke.js +0 -1
  207. package/web/assets/CloudMessagingPage-C5pD6Qsd.js +0 -2
  208. package/web/assets/DashboardPage-66q5K841.js +0 -1
  209. package/web/assets/DirectoryPickerDialog-wZYtGEZ9.js +0 -1
  210. package/web/assets/EnvironmentForm-C0Q1pRdW.js +0 -108
  211. package/web/assets/EnvironmentFormPage-LO-mwupn.js +0 -1
  212. package/web/assets/EnvironmentListPage-CvknyN3O.js +0 -1
  213. package/web/assets/KanbanBoardPage-DUsAyowy.js +0 -4
  214. package/web/assets/KanbanListPage-9RBCauSd.js +0 -1
  215. package/web/assets/LaunchProjectPage--S6EXtGb.css +0 -1
  216. package/web/assets/LaunchProjectPage-obaNCuEY.js +0 -1
  217. package/web/assets/LaunchServicesPage-CiWzQIyC.js +0 -1
  218. package/web/assets/LaunchServicesPage-pWREsZTD.css +0 -1
  219. package/web/assets/LogViewer-BiSD_TNt.js +0 -3
  220. package/web/assets/OrgKeyPrompt-zhMl_nTd.js +0 -1
  221. package/web/assets/ProcessDetailPage-CsCqQh2V.js +0 -1
  222. package/web/assets/ProjectDetailPage-B0vJySvH.js +0 -1
  223. package/web/assets/ProjectListPage-srxBmrbO.js +0 -1
  224. package/web/assets/RandomJobTestPage-jGfX-6W9.js +0 -2
  225. package/web/assets/ScenarioEditorPage-CxLy6gs7.js +0 -14
  226. package/web/assets/SendToChatDialog-AHkuFQjt.js +0 -1
  227. package/web/assets/ServiceControlsBar-C8P9_qWK.js +0 -1
  228. package/web/assets/ServiceDetailPage-DTBpQegV.js +0 -2
  229. package/web/assets/ServiceFormPage-CsPSMWdD.js +0 -1
  230. package/web/assets/SettingsPage-CmtRn6VJ.js +0 -2063
  231. package/web/assets/UnlockPage-Bkp_hR-F.js +0 -1
  232. package/web/assets/UnlockPage-DE_HJy8h.css +0 -1
  233. package/web/assets/VariablesTable-jo61MhbL.js +0 -1
  234. package/web/assets/VaultMigrationPage-BGJ2PP-7.css +0 -1
  235. package/web/assets/VaultMigrationPage-D-Dxg5xH.js +0 -1
  236. package/web/assets/VersionBadge-CwNZLgqN.js +0 -1
  237. package/web/assets/WikiPage-DZLKTPi3.js +0 -1
  238. package/web/assets/WikiView-BpJECJ2Y.js +0 -1
  239. package/web/assets/add-scalar-classes-CqLAxAGv.js +0 -387
  240. package/web/assets/auth-errors-BOjTx5eo.js +0 -1
  241. package/web/assets/autocomplete-CrMQ2sCk.js +0 -308
  242. package/web/assets/card-CjcU4SfX.js +0 -32
  243. package/web/assets/client-B9UJRQa-.js +0 -24
  244. package/web/assets/cloud-chat.store-Dw2lzuBY.js +0 -1
  245. package/web/assets/cloud-session-DIhbWyP5.js +0 -1
  246. package/web/assets/column-BGKYk6b6.js +0 -907
  247. package/web/assets/interface-content-folder.svg-DjEfXjEF.js +0 -1
  248. package/web/assets/modal-DZYAJM4x.js +0 -5
  249. package/web/assets/modal-Fe2dzlxp.js +0 -1
  250. package/web/assets/multiselect-CmjxW2sW.js +0 -251
  251. package/web/assets/process.store-COWqXNUm.js +0 -1
  252. package/web/assets/router-BIJ4goD-.js +0 -1
  253. package/web/assets/settings-scope-DGzA7Be-.js +0 -1
  254. package/web/assets/settings.store-Dj2nbYYG.js +0 -1
  255. package/web/assets/src-BTWvqafq.js +0 -1
  256. package/web/assets/tabpanel-CWwOXePg.js +0 -150
  257. package/web/assets/trpc-DfyQNjZd.js +0 -1
  258. package/web/assets/useAiChatDrawer-Cuhlc2BI.js +0 -1
  259. package/web/assets/useCloudOrg-DYOv1Oak.js +0 -93
  260. package/web/assets/useCloudOrg-Dc6yRgro.css +0 -1
  261. /package/{agent-manager-74WZPMVQ.js.map → agent-manager-YDLSYZE3.js.map} +0 -0
  262. /package/web/assets/{abap-Q7FyqTce.js → abap-BvxTqXT2.js} +0 -0
  263. /package/web/assets/{apex-DBNDq2a_.js → apex-CIPCCkBr.js} +0 -0
  264. /package/web/assets/{azcli-BHW8ozYN.js → azcli-Rs0NIwkA.js} +0 -0
  265. /package/web/assets/{bat-BL-_3Nfo.js → bat-BxAhM6gR.js} +0 -0
  266. /package/web/assets/{bicep-DR2vgumW.js → bicep-oV_ehPcG.js} +0 -0
  267. /package/web/assets/{cameligo-BCjoEAZU.js → cameligo-CJLaUyQs.js} +0 -0
  268. /package/web/assets/{clojure-zw1Irdul.js → clojure-CjvMureh.js} +0 -0
  269. /package/web/assets/{coffee-BdEjkiiW.js → coffee-motWC5XQ.js} +0 -0
  270. /package/web/assets/{cpp-DKUlBIAG.js → cpp-DiWIfYNM.js} +0 -0
  271. /package/web/assets/{csharp-BsNC4zVq.js → csharp-GBlGBeai.js} +0 -0
  272. /package/web/assets/{csp-X4Chv5_9.js → csp-tSyK5eO1.js} +0 -0
  273. /package/web/assets/{css-Dh0Dlycs.js → css-BkFK9HG_.js} +0 -0
  274. /package/web/assets/{cypher-BL_DRjGX.js → cypher-Bcp8PXr2.js} +0 -0
  275. /package/web/assets/{dart-DaM4j487.js → dart-uz9Rxe0M.js} +0 -0
  276. /package/web/assets/{dockerfile-Df5WJXAt.js → dockerfile-iJizx3Zp.js} +0 -0
  277. /package/web/assets/{ecl-BjUo3uTs.js → ecl-BalaS36Z.js} +0 -0
  278. /package/web/assets/{elixir-DrLHYSxt.js → elixir-D6CLrLGy.js} +0 -0
  279. /package/web/assets/{flow9-DKiuX7rg.js → flow9-CFt3-vVY.js} +0 -0
  280. /package/web/assets/{fsharp-CAN78557.js → fsharp-DGa7raxa.js} +0 -0
  281. /package/web/assets/{go-DGjr9vA5.js → go-wlqInk4z.js} +0 -0
  282. /package/web/assets/{graphql-CcoU3Cj2.js → graphql-CP1guigM.js} +0 -0
  283. /package/web/assets/{hcl-udfyCcTm.js → hcl-CK0UkKD0.js} +0 -0
  284. /package/web/assets/{ini-BVbXatjh.js → ini-Ch56nrUj.js} +0 -0
  285. /package/web/assets/{java-Drpmh61g.js → java-C9_WIayl.js} +0 -0
  286. /package/web/assets/{julia-asFGk-ZV.js → julia-Can2_mhR.js} +0 -0
  287. /package/web/assets/{kotlin-HmkKz1TT.js → kotlin-DUvGf_BX.js} +0 -0
  288. /package/web/assets/{less-C5i2m2Dn.js → less-DoTbG-rc.js} +0 -0
  289. /package/web/assets/{lexon-B3Xh2kL6.js → lexon-BFMO2_kL.js} +0 -0
  290. /package/web/assets/{lua-DnOtgOOu.js → lua-CC-QtBo7.js} +0 -0
  291. /package/web/assets/{m3-Brj4HNKq.js → m3-C51MyH5Q.js} +0 -0
  292. /package/web/assets/{markdown-C3-4Ntpz.js → markdown-CDwLHhgZ.js} +0 -0
  293. /package/web/assets/{mips-vFQKPHzn.js → mips-YuxZtPGU.js} +0 -0
  294. /package/web/assets/{msdax-D5MYLS2R.js → msdax-CJjWhmte.js} +0 -0
  295. /package/web/assets/{mysql-CRQHhUON.js → mysql-B1riwLaD.js} +0 -0
  296. /package/web/assets/{objective-c-8cZEp0HR.js → objective-c-drXT-gmc.js} +0 -0
  297. /package/web/assets/{pascal-BPn_2jro.js → pascal-KUYgrN-Z.js} +0 -0
  298. /package/web/assets/{pascaligo-L7QnU_8B.js → pascaligo-DQmQJP-r.js} +0 -0
  299. /package/web/assets/{perl-B9zSPnp3.js → perl-09XLBmCS.js} +0 -0
  300. /package/web/assets/{pgsql-DiRJukCJ.js → pgsql-BFj9IFFu.js} +0 -0
  301. /package/web/assets/{php-Dv4g8Lhr.js → php-UnC5BqwY.js} +0 -0
  302. /package/web/assets/{pla-CKAoz6vp.js → pla-BFuYrPHG.js} +0 -0
  303. /package/web/assets/{postiats-B_PYgUTS.js → postiats-n4ft3jnO.js} +0 -0
  304. /package/web/assets/{powerquery-CAagSyo-.js → powerquery-D-s-oFSc.js} +0 -0
  305. /package/web/assets/{powershell-Cj9BzLhS.js → powershell-CTboTf93.js} +0 -0
  306. /package/web/assets/{protobuf-DTRY4FFo.js → protobuf-Dt62GuJP.js} +0 -0
  307. /package/web/assets/{pug-qADGmCS8.js → pug-CEFWkUzw.js} +0 -0
  308. /package/web/assets/{qsharp-xkZT0ZOm.js → qsharp-B0DUmgPZ.js} +0 -0
  309. /package/web/assets/{r-C7wfNC2Z.js → r-BVnF0c4T.js} +0 -0
  310. /package/web/assets/{redis-BoccK80D.js → redis-DLl3KQXi.js} +0 -0
  311. /package/web/assets/{redshift-EL8PjTts.js → redshift-cif1I7h1.js} +0 -0
  312. /package/web/assets/{restructuredtext-CA6rgR7C.js → restructuredtext-PNfql36m.js} +0 -0
  313. /package/web/assets/{ruby-BymrInur.js → ruby-j3jxDjUN.js} +0 -0
  314. /package/web/assets/{rust-BTbPL-fg.js → rust-BaIO-mAt.js} +0 -0
  315. /package/web/assets/{sb-BTkOICcb.js → sb-D8XNVNUQ.js} +0 -0
  316. /package/web/assets/{scala-CzaUHeQF.js → scala-DiK9Ps90.js} +0 -0
  317. /package/web/assets/{scheme-DZe2DRuY.js → scheme-DPKqXHmF.js} +0 -0
  318. /package/web/assets/{scss-D5oFt9cg.js → scss-DpMwfP2H.js} +0 -0
  319. /package/web/assets/{shell-DCkIF5jZ.js → shell-Dw9mKVg2.js} +0 -0
  320. /package/web/assets/{solidity-CfOO4gXi.js → solidity-DTxo-7fe.js} +0 -0
  321. /package/web/assets/{sophia-0-sROOHR.js → sophia-BjA3Q87y.js} +0 -0
  322. /package/web/assets/{sparql-Dzzr9hol.js → sparql-q1EpMUqb.js} +0 -0
  323. /package/web/assets/{sql-DbXHiHh_.js → sql-CjcQ4wIr.js} +0 -0
  324. /package/web/assets/{st-DEaYV8xH.js → st-AuOpxVl7.js} +0 -0
  325. /package/web/assets/{swift-BQItveav.js → swift-BUWnv6f7.js} +0 -0
  326. /package/web/assets/{systemverilog-nE6YfGlx.js → systemverilog-FhXn-3OZ.js} +0 -0
  327. /package/web/assets/{tcl-Do7Q0SM0.js → tcl-B0lqcTtS.js} +0 -0
  328. /package/web/assets/{twig-B2CLZN2j.js → twig-B0OeGPVa.js} +0 -0
  329. /package/web/assets/{typespec-r9R1AgVi.js → typespec-Bmh6VX11.js} +0 -0
  330. /package/web/assets/{uuid-CXjA27vZ.js → uuid-FpfcaBnR.js} +0 -0
  331. /package/web/assets/{vb-DGnD02qr.js → vb-bmgX6veu.js} +0 -0
  332. /package/web/assets/{wgsl-C2fD4koY.js → wgsl-FflLnFqI.js} +0 -0
@@ -0,0 +1,7 @@
1
+ import {
2
+ agentManager
3
+ } from "./chunk-HPYBAUAH.js";
4
+ export {
5
+ agentManager
6
+ };
7
+ //# sourceMappingURL=agent-manager-YDLSYZE3.js.map
@@ -1,7 +1,7 @@
1
1
  // ../server/src/services/agent-manager.ts
2
2
  import { EventEmitter as EventEmitter2 } from "events";
3
3
  import WebSocket2 from "ws";
4
- import { z as z21 } from "zod";
4
+ import { z as z23 } from "zod";
5
5
 
6
6
  // ../server/src/services/agent-store.ts
7
7
  import { randomUUID, randomBytes, createCipheriv, createDecipheriv } from "crypto";
@@ -1758,6 +1758,49 @@ var KanbanCardRefSchema = z20.object({
1758
1758
  commentCount: z20.number().int().nonnegative().default(0)
1759
1759
  });
1760
1760
 
1761
+ // ../../packages/shared/src/schemas/cloud-api-key.schema.ts
1762
+ import { z as z21 } from "zod";
1763
+ var CloudApiScopeSchema = z21.enum(["kanban:read", "kanban:write", "kanban:comment"]);
1764
+ var CloudApiKeySecretSchema = z21.string().regex(/^rk_[0-9a-f]{64}$/);
1765
+ var CloudApiKeySchema = z21.object({
1766
+ id: z21.string().max(128),
1767
+ organizationId: z21.string().max(128),
1768
+ name: z21.string().min(1).max(200),
1769
+ scopes: z21.array(CloudApiScopeSchema).min(1).max(10),
1770
+ /**
1771
+ * Les tableaux que la clé peut atteindre, ou `null` pour « tous ceux de
1772
+ * l'organisation ».
1773
+ *
1774
+ * `null` et `[]` ne sont pas la même chose : la liste vide n'ouvre rien, et
1775
+ * c'est délibéré — un tableau supprimé ne doit pas élargir une clé qui ne le
1776
+ * nommait plus que lui.
1777
+ */
1778
+ boards: z21.array(z21.string().max(64)).max(200).nullable(),
1779
+ createdAt: z21.string().max(64),
1780
+ /** Dernier usage constaté, pour reconnaître une clé oubliée. */
1781
+ lastUsedAt: z21.string().max(64).nullable(),
1782
+ /** Qui l'a émise — une clé sans visage ne se révoque jamais sereinement. */
1783
+ createdBy: z21.object({ id: z21.string().max(128), name: z21.string().max(200) }),
1784
+ /** Les 4 derniers caractères du secret, pour reconnaître une clé dans une liste. */
1785
+ keyPreview: z21.string().max(8)
1786
+ });
1787
+ var CreatedCloudApiKeySchema = z21.object({
1788
+ key: CloudApiKeySchema,
1789
+ secret: CloudApiKeySecretSchema
1790
+ });
1791
+ var CreateCloudApiKeyInput = z21.object({
1792
+ organizationId: z21.string().min(1).max(128),
1793
+ name: z21.string().min(1).max(200),
1794
+ scopes: z21.array(CloudApiScopeSchema).min(1).max(10),
1795
+ boards: z21.array(z21.string().max(64)).max(200).nullable().default(null)
1796
+ });
1797
+ var UpdateCloudApiKeyInput = z21.object({
1798
+ id: z21.string().min(1).max(128),
1799
+ name: z21.string().min(1).max(200).optional(),
1800
+ scopes: z21.array(CloudApiScopeSchema).min(1).max(10).optional(),
1801
+ boards: z21.array(z21.string().max(64)).max(200).nullable().optional()
1802
+ });
1803
+
1761
1804
  // ../../packages/shared/src/utils/crypto.ts
1762
1805
  import { createCipheriv as createCipheriv3, createDecipheriv as createDecipheriv3, randomBytes as randomBytes3, pbkdf2Sync } from "crypto";
1763
1806
 
@@ -3092,11 +3135,351 @@ var ServiceStore = class {
3092
3135
  var serviceStore = new ServiceStore();
3093
3136
 
3094
3137
  // ../server/src/services/agent-spawner.ts
3095
- import { spawn } from "child_process";
3138
+ import { spawn as spawn2 } from "child_process";
3096
3139
  import { createInterface } from "readline";
3097
3140
  import { watch } from "fs";
3098
- import { dirname as dirname2, join as join5 } from "path";
3141
+ import { dirname as dirname2, join as join6 } from "path";
3099
3142
  import { fileURLToPath } from "url";
3143
+
3144
+ // ../server/src/services/instance-registry.ts
3145
+ import { mkdir as mkdir5, readdir as readdir2, readFile as readFile5, writeFile as writeFile5, rm as rm3 } from "fs/promises";
3146
+ import { readFileSync } from "fs";
3147
+ import dotenv from "dotenv";
3148
+ import { spawn } from "child_process";
3149
+ import { join as join5 } from "path";
3150
+ import { z as z22 } from "zod";
3151
+ var InstanceFileSchema = z22.object({
3152
+ pid: z22.number().int().positive(),
3153
+ /**
3154
+ * The agent this server spawned, when it has one.
3155
+ *
3156
+ * Optional because an instance started before this field existed never wrote
3157
+ * it, and because the agent may not be up yet — or at all, when the
3158
+ * encryption key is missing. Absent means « unknown », never « none ».
3159
+ */
3160
+ agentPid: z22.number().int().positive().optional(),
3161
+ port: z22.number().int().min(1).max(65535),
3162
+ agentPort: z22.number().int().min(1).max(65535),
3163
+ cwd: z22.string().max(4096),
3164
+ dataDir: z22.string().max(4096),
3165
+ version: z22.string().max(64),
3166
+ fromDesktop: z22.boolean(),
3167
+ startedAt: z22.number().int().nonnegative(),
3168
+ /**
3169
+ * De quoi relancer ce lancement à l'identique : l'exécutable, ses arguments,
3170
+ * et les `RUNEYA_*` de son environnement. Le `cwd` ci-dessus complète le
3171
+ * tableau.
3172
+ *
3173
+ * Optionnels, comme `agentPid` : une instance antérieure à ce champ ne les
3174
+ * écrit pas. Elle reste listée et arrêtable, simplement pas redémarrable —
3175
+ * un redémarrage approximatif serait pire qu'un bouton absent.
3176
+ */
3177
+ execPath: z22.string().max(4096).optional(),
3178
+ argv: z22.array(z22.string().max(4096)).max(128).optional(),
3179
+ env: z22.record(z22.string().max(64), z22.string().max(4096)).optional(),
3180
+ /**
3181
+ * L'instance tient un secret (`RUNEYA_ENCRYPTION_KEY`,
3182
+ * `RUNEYA_MASTER_PASSWORD`) que le relancement ne retrouverait pas. Le
3183
+ * drapeau, jamais la valeur : le registre est un fichier lisible, et ces
3184
+ * deux-là n'ont délibérément pas de flag CLI parce qu'`argv` se lit dans
3185
+ * `ps`.
3186
+ *
3187
+ * Un secret posé dans le `.env` de la pile ne compte pas : `dotenv` le relit
3188
+ * au démarrage depuis le même répertoire. Voir `secretsAreReproducible()`.
3189
+ */
3190
+ needsSecretEnv: z22.boolean().optional()
3191
+ });
3192
+ function registryDir() {
3193
+ return join5(machineRoot(), "instances");
3194
+ }
3195
+ function fileFor(pid) {
3196
+ return join5(registryDir(), `${pid}.json`);
3197
+ }
3198
+ var published = null;
3199
+ var SECRET_ENV_KEYS = ["RUNEYA_ENCRYPTION_KEY", "RUNEYA_MASTER_PASSWORD"];
3200
+ function isSecretEnvKey(key) {
3201
+ return SECRET_ENV_KEYS.includes(key);
3202
+ }
3203
+ function runeyaEnv() {
3204
+ const out = {};
3205
+ for (const [key, value] of Object.entries(process.env)) {
3206
+ if (!key.startsWith("RUNEYA_") || isSecretEnvKey(key)) continue;
3207
+ if (typeof value === "string" && value.length <= 4096) out[key] = value;
3208
+ }
3209
+ return out;
3210
+ }
3211
+ function secretsAreReproducible() {
3212
+ const present = SECRET_ENV_KEYS.filter((key) => Boolean(process.env[key]));
3213
+ if (present.length === 0) return true;
3214
+ let fromFile;
3215
+ try {
3216
+ fromFile = dotenv.parse(readFileSync(join5(process.cwd(), ".env")));
3217
+ } catch {
3218
+ return false;
3219
+ }
3220
+ return present.every((key) => fromFile[key] === process.env[key]);
3221
+ }
3222
+ function selfRecord() {
3223
+ return {
3224
+ pid: process.pid,
3225
+ port: env.PORT,
3226
+ agentPort: env.RUNEYA_AGENT_PORT,
3227
+ cwd: process.cwd(),
3228
+ dataDir: env.DATA_DIR,
3229
+ version: process.env["RUNEYA_VERSION"] ?? "unknown",
3230
+ fromDesktop: env.FROM_DESKTOP,
3231
+ startedAt: Date.now(),
3232
+ execPath: process.execPath,
3233
+ // argv[0] est l'exécutable, déjà repris par `execPath` ; le reste est le
3234
+ // script suivi de ses arguments, c'est-à-dire ce qu'il faut repasser à spawn.
3235
+ argv: process.argv.slice(1),
3236
+ env: runeyaEnv(),
3237
+ needsSecretEnv: !secretsAreReproducible()
3238
+ };
3239
+ }
3240
+ async function registerInstance() {
3241
+ try {
3242
+ await mkdir5(registryDir(), { recursive: true });
3243
+ published = selfRecord();
3244
+ await writeFile5(fileFor(process.pid), JSON.stringify(published, null, 2));
3245
+ } catch (err) {
3246
+ console.log("[instances] Could not register this instance:", err.message);
3247
+ }
3248
+ }
3249
+ async function unregisterInstance() {
3250
+ await rm3(fileFor(process.pid), { force: true }).catch(() => {
3251
+ });
3252
+ }
3253
+ async function setInstanceAgentPid(agentPid) {
3254
+ if (!published) return;
3255
+ published = { ...published, agentPid: agentPid ?? void 0 };
3256
+ try {
3257
+ await writeFile5(fileFor(process.pid), JSON.stringify(published, null, 2));
3258
+ } catch {
3259
+ }
3260
+ }
3261
+ function isProcessAlive(pid) {
3262
+ try {
3263
+ process.kill(pid, 0);
3264
+ return true;
3265
+ } catch (err) {
3266
+ return err.code === "EPERM";
3267
+ }
3268
+ }
3269
+ async function probe(port) {
3270
+ try {
3271
+ const res = await fetch(`http://127.0.0.1:${port}/api/trpc/health.check`, {
3272
+ signal: AbortSignal.timeout(1500)
3273
+ });
3274
+ if (!res.ok) return { ok: false, uptimeMs: null, version: null };
3275
+ const body = await res.json();
3276
+ const data = body.result?.data;
3277
+ return { ok: true, uptimeMs: data?.uptime ?? null, version: data?.version ?? null };
3278
+ } catch {
3279
+ return { ok: false, uptimeMs: null, version: null };
3280
+ }
3281
+ }
3282
+ async function listInstances() {
3283
+ let files;
3284
+ try {
3285
+ files = await readdir2(registryDir());
3286
+ } catch {
3287
+ return [];
3288
+ }
3289
+ const found = await Promise.all(
3290
+ files.filter((f) => f.endsWith(".json")).map(async (name) => {
3291
+ const path = join5(registryDir(), name);
3292
+ let record;
3293
+ try {
3294
+ const parsed = InstanceFileSchema.safeParse(JSON.parse(await readFile5(path, "utf8")));
3295
+ if (!parsed.success) {
3296
+ await rm3(path, { force: true }).catch(() => {
3297
+ });
3298
+ return null;
3299
+ }
3300
+ record = parsed.data;
3301
+ } catch {
3302
+ return null;
3303
+ }
3304
+ if (!isProcessAlive(record.pid)) {
3305
+ await rm3(path, { force: true }).catch(() => {
3306
+ });
3307
+ return null;
3308
+ }
3309
+ const { ok, uptimeMs, version } = await probe(record.port);
3310
+ if (!ok) {
3311
+ await rm3(path, { force: true }).catch(() => {
3312
+ });
3313
+ return null;
3314
+ }
3315
+ const current = record.pid === process.pid;
3316
+ const blocker = restartBlockerFor(record);
3317
+ return {
3318
+ ...record,
3319
+ // Trust the live answer over the file: the file was written at boot
3320
+ // and an upgraded instance would keep claiming its old version.
3321
+ version: version ?? record.version,
3322
+ reachable: true,
3323
+ current,
3324
+ uptimeMs,
3325
+ restartable: blocker === null,
3326
+ restartBlockedBy: blocker
3327
+ };
3328
+ })
3329
+ );
3330
+ return dedupeByPort(found.filter((i) => i !== null)).sort((a, b) => Number(b.current) - Number(a.current) || a.port - b.port);
3331
+ }
3332
+ function dedupeByPort(instances) {
3333
+ const byPort = /* @__PURE__ */ new Map();
3334
+ for (const instance of instances) {
3335
+ const kept = byPort.get(instance.port);
3336
+ if (!kept || instance.current || !kept.current && instance.startedAt > kept.startedAt) {
3337
+ byPort.set(instance.port, instance);
3338
+ }
3339
+ }
3340
+ return [...byPort.values()];
3341
+ }
3342
+ function restartBlockerFor(record) {
3343
+ if (record.needsSecretEnv) return "secrets";
3344
+ if (!record.execPath || !record.argv) return "legacy";
3345
+ return null;
3346
+ }
3347
+ var GRACE_MS = 5e3;
3348
+ var POLL_MS = 100;
3349
+ async function terminate(pid) {
3350
+ if (!isProcessAlive(pid)) return "absent";
3351
+ try {
3352
+ process.kill(pid, "SIGTERM");
3353
+ } catch (err) {
3354
+ const code = err.code;
3355
+ if (code === "ESRCH") return "absent";
3356
+ if (code === "EPERM") return "denied";
3357
+ return "failed";
3358
+ }
3359
+ const deadline = Date.now() + GRACE_MS;
3360
+ while (Date.now() < deadline) {
3361
+ await new Promise((resolve) => setTimeout(resolve, POLL_MS));
3362
+ if (!isProcessAlive(pid)) return "terminated";
3363
+ }
3364
+ try {
3365
+ process.kill(pid, "SIGKILL");
3366
+ } catch (err) {
3367
+ return err.code === "ESRCH" ? "terminated" : "failed";
3368
+ }
3369
+ await new Promise((resolve) => setTimeout(resolve, POLL_MS));
3370
+ return isProcessAlive(pid) ? "failed" : "killed";
3371
+ }
3372
+ async function killInstance(pid) {
3373
+ const target = (await listInstances()).find((i) => i.pid === pid);
3374
+ if (!target) throw new Error("instance-not-found");
3375
+ if (target.current) throw new Error("instance-is-current");
3376
+ const agent = target.agentPid ? await terminate(target.agentPid) : "absent";
3377
+ const server = await terminate(pid);
3378
+ if (server === "terminated" || server === "killed") {
3379
+ await rm3(fileFor(pid), { force: true }).catch(() => {
3380
+ });
3381
+ }
3382
+ return { agent, server };
3383
+ }
3384
+ function launchOf(record) {
3385
+ if (!record.execPath || !record.argv) throw new Error("instance-not-restartable:legacy");
3386
+ const env2 = {};
3387
+ for (const [key, value] of Object.entries(process.env)) {
3388
+ if (typeof value === "string" && !key.startsWith("RUNEYA_")) env2[key] = value;
3389
+ }
3390
+ return {
3391
+ execPath: record.execPath,
3392
+ argv: record.argv,
3393
+ cwd: record.cwd,
3394
+ env: { ...env2, ...record.env ?? {} }
3395
+ };
3396
+ }
3397
+ var PORT_RELEASE_TIMEOUT_MS = 15e3;
3398
+ async function waitForPortRelease(port) {
3399
+ const deadline = Date.now() + PORT_RELEASE_TIMEOUT_MS;
3400
+ while (Date.now() < deadline) {
3401
+ const { ok } = await probe(port);
3402
+ if (!ok) return true;
3403
+ await new Promise((resolve) => setTimeout(resolve, POLL_MS));
3404
+ }
3405
+ return false;
3406
+ }
3407
+ async function restartInstance(pid) {
3408
+ const target = (await listInstances()).find((i) => i.pid === pid);
3409
+ if (!target) throw new Error("instance-not-found");
3410
+ if (target.restartBlockedBy) throw new Error(`instance-not-restartable:${target.restartBlockedBy}`);
3411
+ if (target.current) throw new Error("instance-is-current");
3412
+ const stop = await killInstance(pid);
3413
+ if (stop.server !== "terminated" && stop.server !== "killed") {
3414
+ throw new Error(`instance-stop-${stop.server}`);
3415
+ }
3416
+ const portReleased = await waitForPortRelease(target.port);
3417
+ const launch = launchOf(target);
3418
+ const child = spawn(launch.execPath, launch.argv, {
3419
+ cwd: launch.cwd,
3420
+ env: launch.env,
3421
+ detached: true,
3422
+ stdio: "ignore"
3423
+ });
3424
+ child.on("error", (err) => {
3425
+ console.log(`[instances] Relance du pid ${pid} impossible :`, err.message);
3426
+ });
3427
+ child.unref();
3428
+ if (typeof child.pid !== "number") throw new Error("instance-restart-failed");
3429
+ return { stop, pid: child.pid, portReleased };
3430
+ }
3431
+ var RELAUNCHER = `
3432
+ const p = JSON.parse(process.env.RUNEYA_RELAUNCH_PAYLOAD);
3433
+ const deadline = Date.now() + p.timeoutMs;
3434
+ const held = async () => {
3435
+ try {
3436
+ const res = await fetch('http://127.0.0.1:' + p.port + '/api/trpc/health.check', {
3437
+ signal: AbortSignal.timeout(500),
3438
+ });
3439
+ return res.ok;
3440
+ } catch { return false; }
3441
+ };
3442
+ (async () => {
3443
+ while (Date.now() < deadline && await held()) {
3444
+ await new Promise((r) => setTimeout(r, ${POLL_MS}));
3445
+ }
3446
+ require('node:child_process')
3447
+ .spawn(p.execPath, p.argv, { cwd: p.cwd, env: p.env, detached: true, stdio: 'ignore' })
3448
+ .unref();
3449
+ })();
3450
+ `;
3451
+ var SELF_RESTART_DELAY_MS = 250;
3452
+ function spawnRelauncher(record) {
3453
+ const blocker = restartBlockerFor(record);
3454
+ if (blocker) throw new Error(`instance-not-restartable:${blocker}`);
3455
+ const launch = launchOf(record);
3456
+ const relauncher = spawn(process.execPath, ["-e", RELAUNCHER], {
3457
+ cwd: launch.cwd,
3458
+ env: {
3459
+ ...launch.env,
3460
+ RUNEYA_RELAUNCH_PAYLOAD: JSON.stringify({ ...launch, port: record.port, timeoutMs: PORT_RELEASE_TIMEOUT_MS })
3461
+ },
3462
+ detached: true,
3463
+ stdio: "ignore"
3464
+ });
3465
+ relauncher.on("error", (err) => {
3466
+ console.log("[instances] Relanceur impossible \xE0 lancer :", err.message);
3467
+ });
3468
+ relauncher.unref();
3469
+ if (typeof relauncher.pid !== "number") throw new Error("instance-restart-failed");
3470
+ return relauncher.pid;
3471
+ }
3472
+ async function scheduleSelfRestart() {
3473
+ const record = published ?? selfRecord();
3474
+ const relauncherPid = spawnRelauncher(record);
3475
+ setTimeout(() => {
3476
+ console.log("[instances] Red\xE9marrage demand\xE9 : arr\xEAt de cette instance.");
3477
+ process.kill(process.pid, "SIGTERM");
3478
+ }, SELF_RESTART_DELAY_MS);
3479
+ return { relauncherPid, port: record.port };
3480
+ }
3481
+
3482
+ // ../server/src/services/agent-spawner.ts
3100
3483
  var POSIX_SAFE_KEYS = [
3101
3484
  "PATH",
3102
3485
  "HOME",
@@ -3212,11 +3595,12 @@ var AgentSpawner = class {
3212
3595
  }
3213
3596
  console.log(`[agent-spawner] Spawning local agent on ${agentUrl}...`);
3214
3597
  const isDev = process.env.NODE_ENV === "development";
3215
- this.agentDistPath = env.AGENT_BINARY_PATH || join5(dirname2(fileURLToPath(import.meta.url)), "..", "..", "agent", "dist", "index.js");
3216
- this.agentProcess = spawn("node", [this.agentDistPath], {
3598
+ this.agentDistPath = env.AGENT_BINARY_PATH || join6(dirname2(fileURLToPath(import.meta.url)), "..", "..", "agent", "dist", "index.js");
3599
+ this.agentProcess = spawn2("node", [this.agentDistPath], {
3217
3600
  env: agentEnv,
3218
3601
  stdio: ["ignore", "pipe", "pipe"]
3219
3602
  });
3603
+ void setInstanceAgentPid(this.agentProcess.pid ?? null);
3220
3604
  if (isDev) {
3221
3605
  this.setupFileWatcher();
3222
3606
  }
@@ -3299,6 +3683,7 @@ var AgentSpawner = class {
3299
3683
  setTimeout(resolve, 2e3);
3300
3684
  });
3301
3685
  this.agentProcess = null;
3686
+ void setInstanceAgentPid(null);
3302
3687
  }
3303
3688
  }
3304
3689
  getLocalAgentId() {
@@ -3315,7 +3700,7 @@ var AgentSpawner = class {
3315
3700
  this.fileWatcher.close();
3316
3701
  }
3317
3702
  console.log("[agent-spawner] \u{1F50D} Watching agent dist for changes (hot reload enabled)");
3318
- const distDir = join5(this.agentDistPath, "..");
3703
+ const distDir = join6(this.agentDistPath, "..");
3319
3704
  this.fileWatcher = watch(distDir, { persistent: false }, (eventType, filename) => {
3320
3705
  if ((eventType === "change" || eventType === "rename") && filename === "index.js" && !this.isRestarting) {
3321
3706
  this.isRestarting = true;
@@ -3348,7 +3733,7 @@ var AgentSpawner = class {
3348
3733
  }
3349
3734
  const agentUrl = `http://${env.RUNEYA_AGENT_HOST}:${env.RUNEYA_AGENT_PORT}`;
3350
3735
  const isDev = process.env.NODE_ENV === "development";
3351
- this.agentProcess = spawn("node", [this.agentDistPath], {
3736
+ this.agentProcess = spawn2("node", [this.agentDistPath], {
3352
3737
  env: agentEnv,
3353
3738
  stdio: ["ignore", "pipe", "pipe"]
3354
3739
  });
@@ -3624,13 +4009,13 @@ var AgentWSBridge = class extends EventEmitter {
3624
4009
  };
3625
4010
 
3626
4011
  // ../server/src/services/agent-manager.ts
3627
- var HealthMessageSchema = z21.object({
3628
- status: z21.string(),
3629
- uptime: z21.number(),
3630
- runnersAvailable: z21.array(z21.enum(["native", "docker"])),
3631
- processCount: z21.number(),
3632
- runningCount: z21.number(),
3633
- lanIp: z21.string().optional()
4012
+ var HealthMessageSchema = z23.object({
4013
+ status: z23.string(),
4014
+ uptime: z23.number(),
4015
+ runnersAvailable: z23.array(z23.enum(["native", "docker"])),
4016
+ processCount: z23.number(),
4017
+ runningCount: z23.number(),
4018
+ lanIp: z23.string().optional()
3634
4019
  });
3635
4020
  var MIN_RECONNECT_DELAY = WS_RECONNECT_MIN;
3636
4021
  var MAX_RECONNECT_DELAY = WS_RECONNECT_MAX;
@@ -4016,9 +4401,9 @@ var AgentManager = class extends EventEmitter2 {
4016
4401
  if (spawns.length > 0) {
4017
4402
  const summary = spawns.map((s) => `${s.spawnId} (${s.cli}, ${s.status}, buf:${s.bufferLength})`).join(", ");
4018
4403
  console.log("[agent-manager] Agent %s has %d AI spawn(s): %s", agentId, spawns.length, summary);
4019
- for (const spawn2 of spawns) {
4020
- if (spawn2.status !== "running") {
4021
- this.agentMutation(agentId, "ai.ack", { spawnId: spawn2.spawnId }).catch(() => {
4404
+ for (const spawn3 of spawns) {
4405
+ if (spawn3.status !== "running") {
4406
+ this.agentMutation(agentId, "ai.ack", { spawnId: spawn3.spawnId }).catch(() => {
4022
4407
  });
4023
4408
  }
4024
4409
  }
@@ -4184,8 +4569,14 @@ export {
4184
4569
  environmentStore,
4185
4570
  serviceStore,
4186
4571
  agentStore,
4572
+ registerInstance,
4573
+ unregisterInstance,
4574
+ listInstances,
4575
+ killInstance,
4576
+ restartInstance,
4577
+ scheduleSelfRestart,
4187
4578
  agentSpawner,
4188
4579
  traefikManager,
4189
4580
  agentManager
4190
4581
  };
4191
- //# sourceMappingURL=chunk-YSJ6OJGN.js.map
4582
+ //# sourceMappingURL=chunk-HPYBAUAH.js.map