@runeya/runeya 2.0.56 → 2.0.58

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 (338) hide show
  1. package/agent/index.js +154 -103
  2. package/agent/index.js.map +1 -1
  3. package/agent-manager-EDFP4VXP.js +7 -0
  4. package/assets/icon.icns +0 -0
  5. package/assets/icon.ico +0 -0
  6. package/assets/icon.png +0 -0
  7. package/assets/icon.svg +5 -0
  8. package/{chunk-Q2WY6PYX.js → chunk-NLVDO4EC.js} +180 -10
  9. package/chunk-NLVDO4EC.js.map +1 -0
  10. package/chunk-O2KOX4LU.js +66 -0
  11. package/chunk-O2KOX4LU.js.map +1 -0
  12. package/desktop-launcher-TM7AABMC.js +256 -0
  13. package/desktop-launcher-TM7AABMC.js.map +1 -0
  14. package/desktop-wizard-4CYANX2O.js +209 -0
  15. package/desktop-wizard-4CYANX2O.js.map +1 -0
  16. package/free-port-565NMFIZ.js +13 -0
  17. package/free-port-565NMFIZ.js.map +1 -0
  18. package/index.js +101 -2
  19. package/index.js.map +1 -1
  20. package/package.json +1 -1
  21. package/{src-WCSXKTXA.js → src-V3J62F6F.js} +2976 -2474
  22. package/src-V3J62F6F.js.map +1 -0
  23. package/startup-failure-FOO7BLHD.js +180 -0
  24. package/startup-failure-FOO7BLHD.js.map +1 -0
  25. package/web/assets/AgentScalarChatInterface.vue-EIqnE2D0.js +13 -0
  26. package/web/assets/AgentTerminalPage-5kH1RTj6.js +1 -0
  27. package/web/assets/AiChatPage-DvPM0b-g.js +1 -0
  28. package/web/assets/AppLayout-CxU9x6en.js +1 -0
  29. package/web/assets/{AppLayout-CDh-jiJ3.css → AppLayout-Dj8YOvMQ.css} +1 -1
  30. package/web/assets/AuditPage-BrqreO8a.js +1 -0
  31. package/web/assets/CloudAccountPage-CzUpIjdc.js +1 -0
  32. package/web/assets/CloudAccountPage-DRcN1jNp.css +1 -0
  33. package/web/assets/CloudAccountPage-DS3ZfENB.js +1 -0
  34. package/web/assets/CloudMessagingPage-D8gBnkFY.js +2 -0
  35. package/web/assets/DashboardPage-BiskmF6R.js +1 -0
  36. package/web/assets/DirectoryPickerDialog-Bny02api.css +1 -0
  37. package/web/assets/DirectoryPickerDialog-CtKWj2hx.js +1 -0
  38. package/web/assets/{EditorIcon-CZLL1qox.js → EditorIcon-B58cXgvK.js} +2 -2
  39. package/web/assets/EnvironmentForm-DZXx9r78.js +108 -0
  40. package/web/assets/EnvironmentFormPage-Dl7pdkEM.js +1 -0
  41. package/web/assets/EnvironmentListPage-B0WX_Hq7.js +1 -0
  42. package/web/assets/KanbanBoardPage-CBJs26gZ.js +4 -0
  43. package/web/assets/KanbanListPage-Cz-tlLWA.js +1 -0
  44. package/web/assets/LaunchProjectPage-8SDkFiLE.js +1 -0
  45. package/web/assets/LaunchServicesPage-B-ncX3rd.js +1 -0
  46. package/web/assets/LogViewer-BJNqKt3I.js +3 -0
  47. package/web/assets/{ProcessControls-BKUKb6vL.js → ProcessControls-NA6_my0q.js} +1 -1
  48. package/web/assets/ProcessDetailPage-6galJRdd.js +1 -0
  49. package/web/assets/ProcessDetailPage-CFJfjneL.css +1 -0
  50. package/web/assets/{ProcessMetrics-4aaZekKw.js → ProcessMetrics-CUDjJ4s_.js} +2 -2
  51. package/web/assets/ProjectDetailPage-CLbj9ZT4.css +1 -0
  52. package/web/assets/ProjectDetailPage-DKHoFXjW.js +1 -0
  53. package/web/assets/ProjectListPage-C1xSP6Bq.js +1 -0
  54. package/web/assets/RandomJobTestPage-BAuT49yE.js +2 -0
  55. package/web/assets/ScenarioEditorPage-CROCV83A.js +14 -0
  56. package/web/assets/SendToChatDialog-BfaLVfzw.js +1 -0
  57. package/web/assets/ServiceControlsBar-DE0In-jH.js +1 -0
  58. package/web/assets/ServiceDetailPage-0iIv9RqU.js +2 -0
  59. package/web/assets/{ServiceDetailPage-BRg1byDZ.css → ServiceDetailPage-DDSyACSv.css} +1 -1
  60. package/web/assets/ServiceFormPage-D-tLX8jE.js +1 -0
  61. package/web/assets/SettingsPage-ClNw9uEA.js +2063 -0
  62. package/web/assets/{SettingsPage-BY3dG-wn.css → SettingsPage-ySsQCeYE.css} +1 -1
  63. package/web/assets/UnlockPage-flNU5Iky.js +1 -0
  64. package/web/assets/VariablesTable-BnCSYLD4.js +1 -0
  65. package/web/assets/VaultMigrationPage-BSv9anTA.js +1 -0
  66. package/web/assets/VersionBadge-zyKx_N_w.js +1 -0
  67. package/web/assets/WikiPage-C9Bruew6.js +1 -0
  68. package/web/assets/WikiView-BZZ5mybT.js +1 -0
  69. package/web/assets/add-scalar-classes-DZb8OCPH.js +387 -0
  70. package/web/assets/auth-errors-CU6pB2jP.js +1 -0
  71. package/web/assets/autocomplete-DGLJp6Xx.js +308 -0
  72. package/web/assets/{basic-shape-diamond.svg-DH2telU3.js → basic-shape-diamond.svg-D7lBpWcu.js} +1 -1
  73. package/web/assets/{basic-shape-hexagon.svg-CkFORYUC.js → basic-shape-hexagon.svg-BIDPqohs.js} +1 -1
  74. package/web/assets/{basic-shape-primary-circle-ellipse-round.svg-BlV1CeJ6.js → basic-shape-primary-circle-ellipse-round.svg-iWUF3CNK.js} +1 -1
  75. package/web/assets/{basic-shape-primary-square-rectangle.svg-BaAO9T6a.js → basic-shape-primary-square-rectangle.svg-BQy8tY9i.js} +1 -1
  76. package/web/assets/{basic-shape-shield.svg-CAX-F0Ai.js → basic-shape-shield.svg-Dcov5U2N.js} +1 -1
  77. package/web/assets/{browser-DPOAuokj.js → browser-Dc4T6GL2.js} +1 -1
  78. package/web/assets/{browser-CgnxRAK6.js → browser-DrMkXWE3.js} +1 -1
  79. package/web/assets/{card-BinmfAW6.js → card-DADdd2-i.js} +2 -2
  80. package/web/assets/{checkbox-DRF4pbAa.js → checkbox-By0TwAz_.js} +3 -3
  81. package/web/assets/{chip-Dvt1MVQM.js → chip-W5HkUiZA.js} +2 -2
  82. package/web/assets/{client-BqPXDxC1.js → client-Be8SiY8s.js} +2 -2
  83. package/web/assets/cloud-chat.store-GKWq9kin.js +1 -0
  84. package/web/assets/cloud-session-CJ4n3dbT.js +1 -0
  85. package/web/assets/column-P4Yoqttz.js +907 -0
  86. package/web/assets/{computer-device-desktop-monitor.svg-CJMZ28bk.js → computer-device-desktop-monitor.svg-BjBC4Q_B.js} +1 -1
  87. package/web/assets/{computer-device-desktop.svg-BedAMKhR.js → computer-device-desktop.svg-C7H8X0sb.js} +1 -1
  88. package/web/assets/{computer-device-laptop.svg-DdhI-EdQ.js → computer-device-laptop.svg-GDU5987h.js} +1 -1
  89. package/web/assets/{computer-device-mobile-phone-android-samsung-back.svg-C5diuYjt.js → computer-device-mobile-phone-android-samsung-back.svg-BcWod8vA.js} +1 -1
  90. package/web/assets/{computer-device-mobile-phone-android-samsung.svg-DGHCufqU.js → computer-device-mobile-phone-android-samsung.svg-Cj58lY5g.js} +1 -1
  91. package/web/assets/{computer-device-mobile-phone-iphone-x-back.svg-CMWyPtt9.js → computer-device-mobile-phone-iphone-x-back.svg-CtJM7Ul_.js} +1 -1
  92. package/web/assets/{computer-device-mobile-phone-iphone-x.svg-BRy5W1In.js → computer-device-mobile-phone-iphone-x.svg-BiSi4riW.js} +1 -1
  93. package/web/assets/{computer-device-mobile-tablet-touch.svg-BGnBo8Ih.js → computer-device-mobile-tablet-touch.svg-BAMVDwHH.js} +1 -1
  94. package/web/assets/{computer-device-mobile-tablet.svg-xSg_XplW.js → computer-device-mobile-tablet.svg-quWU62em.js} +1 -1
  95. package/web/assets/{computer-device-network-ethernet-cat6.svg-hz-jiJFA.js → computer-device-network-ethernet-cat6.svg-eoCbNWkF.js} +1 -1
  96. package/web/assets/{computer-device-network-lan-www.svg-BF6NF79C.js → computer-device-network-lan-www.svg-AR5jmH9w.js} +1 -1
  97. package/web/assets/{computer-device-network-wifi-connection.svg-gwpaLcz6.js → computer-device-network-wifi-connection.svg-C3-i1o4I.js} +1 -1
  98. package/web/assets/{computer-device-network-wifi-router.svg-B4oSiJHk.js → computer-device-network-wifi-router.svg-D8_62H2U.js} +1 -1
  99. package/web/assets/{cssMode-HHg8IzQM.js → cssMode-CfDickSl.js} +1 -1
  100. package/web/assets/{divider-C5a--3VK.js → divider-DOwWKUnp.js} +2 -2
  101. package/web/assets/{ecology-science-erlenmeyer-flask.svg-DkoOes8O.js → ecology-science-erlenmeyer-flask.svg-bmj1315r.js} +1 -1
  102. package/web/assets/{fieldset-c3hO4nzt.js → fieldset-CM6GY5DX.js} +2 -2
  103. package/web/assets/{freemarker2-BJSUPPPz.js → freemarker2-B_0Gh4L-.js} +1 -1
  104. package/web/assets/{handlebars-BAY2_Hod.js → handlebars-D7Oha3sz.js} +1 -1
  105. package/web/assets/{html-CNW7z0dM.js → html-BDq-ql3l.js} +1 -1
  106. package/web/assets/{htmlMode-SpxSLWYn.js → htmlMode-DVuzX8LQ.js} +1 -1
  107. package/web/assets/{image-flash-lightning.svg-DzcaFZwQ.js → image-flash-lightning.svg-pdHiRywD.js} +1 -1
  108. package/web/assets/{image-picture-flower.svg-DbYkuhs0.js → image-picture-flower.svg-BJarIt4k.js} +1 -1
  109. package/web/assets/{index-BIjjyvxm.js → index-Dk3h9927.js} +282 -282
  110. package/web/assets/{interface-alert-exclamation-diamond.svg-VqQleX3x.js → interface-alert-exclamation-diamond.svg-CZUf0TtR.js} +1 -1
  111. package/web/assets/{interface-alert-exclamation-triangle-warning.svg-B4xCH3UD.js → interface-alert-exclamation-triangle-warning.svg-B1qbmOvN.js} +1 -1
  112. package/web/assets/{interface-alert-information-circle.svg-5k54XhJ-.js → interface-alert-information-circle.svg-DAH6I2Rk.js} +1 -1
  113. package/web/assets/{interface-award-crown.svg-BXVJGSgl.js → interface-award-crown.svg-Co-un_0E.js} +1 -1
  114. package/web/assets/{interface-bookmark.svg-D0afhfDQ.js → interface-bookmark-tag.svg-DCeSL4gX.js} +1 -1
  115. package/web/assets/{interface-bookmark-tag.svg-CBUeCBGD.js → interface-bookmark.svg-BoAQ5WAA.js} +1 -1
  116. package/web/assets/{interface-calendar-date-one.svg-CFO_cJx5.js → interface-calendar-date-one.svg-KM5TH_vj.js} +1 -1
  117. package/web/assets/{interface-content-book-open-pages.svg-D_VJNLAI.js → interface-content-book-open-pages.svg-2t-0H_Nl.js} +1 -1
  118. package/web/assets/{interface-content-book-page.svg-BxdaWR7b.js → interface-content-book-page.svg-Dx9U_5uo.js} +1 -1
  119. package/web/assets/{interface-content-file.svg-CCKgKAVi.js → interface-content-file.svg-CW_9AGDl.js} +1 -1
  120. package/web/assets/interface-content-folder.svg-C9_1n23c.js +1 -0
  121. package/web/assets/{interface-content-folder.svg-Dw0SKwbv.js → interface-content-folder.svg-DgU2KM8d.js} +1 -1
  122. package/web/assets/{interface-copy-clipboard.svg-Co7ESi9t.js → interface-copy-clipboard.svg-BXCY1wtO.js} +1 -1
  123. package/web/assets/{interface-edit-attachment.svg-DB4Fu5ck.js → interface-edit-attachment.svg-lJsBgdnd.js} +1 -1
  124. package/web/assets/{interface-edit-binocular.svg-DSEtWb7P.js → interface-edit-binocular.svg-N_us2_d_.js} +1 -1
  125. package/web/assets/{interface-edit-magic-wand.svg-Bh9JP-_u.js → interface-edit-magic-wand.svg-GlHpAoND.js} +1 -1
  126. package/web/assets/{interface-edit-tool-paint-roller.svg-DXODVJeW.js → interface-edit-tool-paint-roller.svg-B3s6tHLT.js} +1 -1
  127. package/web/assets/{interface-edit-tool-pencil.svg-gJSTl1EM.js → interface-edit-tool-pencil.svg-BhJltLPD.js} +1 -1
  128. package/web/assets/{interface-favorite-award.svg-Bv3Ditpr.js → interface-favorite-award.svg-CAC4qrCL.js} +1 -1
  129. package/web/assets/{interface-favorite-flag.svg-RU02g1Zi.js → interface-favorite-flag.svg-5dLI18uT.js} +1 -1
  130. package/web/assets/{interface-favorite-heart.svg-C9umX2vE.js → interface-favorite-heart.svg-DAWMqUS8.js} +1 -1
  131. package/web/assets/{interface-favorite-star.svg-CWsQ-mGb.js → interface-favorite-star.svg-C9DICFBb.js} +1 -1
  132. package/web/assets/{interface-favorite-stars-sparkles.svg-C5z_gPrX.js → interface-favorite-stars-sparkles.svg-zD5-a95u.js} +1 -1
  133. package/web/assets/{interface-hierarchy-flowchart.svg-CctM7HYF.js → interface-hierarchy-flowchart.svg-BzAAQM0v.js} +1 -1
  134. package/web/assets/{interface-home-house.svg-Cd6GJDkx.js → interface-home-house.svg-CB_mzszz.js} +1 -1
  135. package/web/assets/{interface-hyperlink.svg-RUZY_MPS.js → interface-hyperlink.svg-BUMVlOAE.js} +1 -1
  136. package/web/assets/{interface-lighting-brightness.svg-CoJei7Uh.js → interface-lighting-brightness.svg-wPXo2pZW.js} +1 -1
  137. package/web/assets/{interface-lock-closed.svg-DHBiQkRu.js → interface-lock-closed.svg-Qj4fLj5D.js} +1 -1
  138. package/web/assets/{interface-lock-open-unlock.svg-D9gUzkAe.js → interface-lock-open-unlock.svg-PaaFsUiU.js} +1 -1
  139. package/web/assets/{interface-login-key.svg-BGNkKSCc.js → interface-login-key.svg-By-IZ7EH.js} +1 -1
  140. package/web/assets/{interface-search.svg-a20xpUNh.js → interface-search.svg-D1s5Gsyk.js} +1 -1
  141. package/web/assets/{interface-setting-cog.svg-Du_6PHwV.js → interface-setting-cog.svg-BIjZVOwf.js} +1 -1
  142. package/web/assets/{interface-share-megaphone-bullhorn.svg-cUXjeKNG.js → interface-share-megaphone-bullhorn.svg-1oPoDdIL.js} +1 -1
  143. package/web/assets/{interface-share-rocket.svg-D5DY8-4Z.js → interface-share-rocket.svg-B07UdOH6.js} +1 -1
  144. package/web/assets/{interface-share-satellite.svg-CxZ9ENCv.js → interface-share-satellite.svg-AxSAr1JP.js} +1 -1
  145. package/web/assets/{interface-share-space-ship.svg-DxRCAuZe.js → interface-share-space-ship.svg-ghRJYkXG.js} +1 -1
  146. package/web/assets/{interface-share.svg-CJ86d8ve.js → interface-share.svg-jVvV5wf9.js} +1 -1
  147. package/web/assets/{interface-signal-square.svg-DaITtWso.js → interface-signal-square.svg-BB8KvxNI.js} +1 -1
  148. package/web/assets/{interface-time-clock-circle.svg-DOXyhrEi.js → interface-time-clock-circle.svg-Bt_vXLib.js} +1 -1
  149. package/web/assets/{interface-time-hour-glass.svg-DEzjXGhd.js → interface-time-hour-glass.svg-CqsWXDx3.js} +1 -1
  150. package/web/assets/{interface-users-multiple.svg-DuW2zZO9.js → interface-users-multiple.svg-DfZzhCkI.js} +1 -1
  151. package/web/assets/{interface-weather-moon.svg-CAJTRm96.js → interface-weather-moon.svg-B5X37fBl.js} +1 -1
  152. package/web/assets/{javascript-DoNH7W21.js → javascript-DWxMn_QC.js} +1 -1
  153. package/web/assets/{jsonMode-Ba_3RQUr.js → jsonMode-BWOZzM3d.js} +2 -2
  154. package/web/assets/{liquid-yqqVxQ3r.js → liquid-B0VtIwJX.js} +1 -1
  155. package/web/assets/{lspLanguageFeatures-DsNvNJOK.js → lspLanguageFeatures-DXFZNqLk.js} +3 -3
  156. package/web/assets/{mail-chat-bubble-square.svg-DxuFTrxl.js → mail-chat-bubble-square.svg-DVi8sPM-.js} +1 -1
  157. package/web/assets/{mail-send-email-paper-airplane.svg-fobU5Rru.js → mail-send-email-paper-airplane.svg-Dlk35rWL.js} +1 -1
  158. package/web/assets/{mail-send-envelope.svg-DjoyQmbK.js → mail-send-envelope.svg-DpEE06QS.js} +1 -1
  159. package/web/assets/{mdx-We_KeaPg.js → mdx-XjdLNHo4.js} +1 -1
  160. package/web/assets/{message-Cgzl10yY.js → message-TASaHoOx.js} +2 -2
  161. package/web/assets/{minus-CWad93a9.js → minus-BO9HwuhK.js} +2 -2
  162. package/web/assets/modal-B0K9qtIb.js +1 -0
  163. package/web/assets/modal-Dadfdblm.js +5 -0
  164. package/web/assets/{money-cashier-receipt.svg-Cd3vbq1N.js → money-cashier-receipt.svg-D3T1gdZO.js} +1 -1
  165. package/web/assets/{money-currency-dollar-pay.svg-q2PhWmHi.js → money-currency-dollar-pay.svg-RhoFWz8z.js} +1 -1
  166. package/web/assets/{money-graph-arrow-increase.svg-DFoTvPe7.js → money-graph-arrow-increase.svg-BENn1K5R.js} +1 -1
  167. package/web/assets/{money-graph-bar-chart-increase.svg-N1y-bW8g.js → money-graph-bar-chart-increase.svg-COGPwero.js} +1 -1
  168. package/web/assets/{multiselect-DlPZQWML.js → multiselect-QI9V-o7t.js} +3 -3
  169. package/web/assets/{nature-ecology-leaf.svg-B759TwbF.js → nature-ecology-leaf.svg-CyQJuX9P.js} +1 -1
  170. package/web/assets/{password-Bbkf0Avi.js → password-68lVUSdj.js} +4 -4
  171. package/web/assets/{phone-telephone.svg-BAjrImUz.js → phone-telephone.svg-Cp49xUlu.js} +1 -1
  172. package/web/assets/{plus-CSmkO4gT.js → plus-CtAUJUu2.js} +6 -6
  173. package/web/assets/process.store-DkO9CCEs.js +1 -0
  174. package/web/assets/{programming-bug.svg-C9yxLgbr.js → programming-bug.svg-DJCw-G7S.js} +1 -1
  175. package/web/assets/{programming-cloud.svg-Brnt7HfW.js → programming-cloud.svg-Dawch6nl.js} +1 -1
  176. package/web/assets/{programming-computer-database-server.svg-CA5tIDJ_.js → programming-computer-database-server.svg-wM3gh9nl.js} +1 -1
  177. package/web/assets/{programming-computer-database.svg-BJ_fk-M0.js → programming-computer-database.svg-B-CBQ4FN.js} +1 -1
  178. package/web/assets/{programming-module-four-layout.svg-DULdtPL4.js → programming-module-four-layout.svg-B8K3IYUP.js} +1 -1
  179. package/web/assets/{programming-module-three.svg-B1vBli33.js → programming-module-three.svg-BVHpxetj.js} +1 -1
  180. package/web/assets/{programming-module.svg-DpVKFxMS.js → programming-module.svg-CXID9wrd.js} +1 -1
  181. package/web/assets/{programming-script-code.svg-CTNuSx8y.js → programming-script-code.svg-lSz-9Xfp.js} +1 -1
  182. package/web/assets/{python-B0GPM7en.js → python-DL0o4ZFa.js} +1 -1
  183. package/web/assets/{razor-YCIzBEVM.js → razor-1T_DtFYV.js} +1 -1
  184. package/web/assets/router-BKOiPGCa.js +1 -0
  185. package/web/assets/settings-scope-DrVQNSTC.js +1 -0
  186. package/web/assets/settings.store-xvHd8xGI.js +1 -0
  187. package/web/assets/{shopping-cart.svg-DinVLM6s.js → shopping-cart.svg-TZA8HEQB.js} +1 -1
  188. package/web/assets/{shopping-gift-present.svg-CzHOD4sx.js → shopping-gift-present.svg-CRGiXfBk.js} +1 -1
  189. package/web/assets/{shopping-shipping-box-parcel-package.svg-Ct0cSZV2.js → shopping-shipping-box-parcel-package.svg-BuEMZoGf.js} +1 -1
  190. package/web/assets/src-Be-L2-AH.js +1 -0
  191. package/web/assets/{src-DsmqQeZ9.js → src-Dy-bHT95.js} +11 -11
  192. package/web/assets/tabpanel-BP3edJSv.js +150 -0
  193. package/web/assets/{tag-new-circle.svg-DszV9Yu3.js → tag-new-circle.svg-CsOt9-U5.js} +1 -1
  194. package/web/assets/toggleswitch-B49OhBFD.js +115 -0
  195. package/web/assets/{travel-map-earth-globe.svg-DJS5nR0r.js → travel-map-earth-globe.svg-BTR5ahca.js} +1 -1
  196. package/web/assets/trpc-hOuUVUMw.js +1 -0
  197. package/web/assets/{tsMode-DAiF0SK5.js → tsMode-BUrbWgsu.js} +5 -5
  198. package/web/assets/{typescript-Bs2RtJDr.js → typescript-tKGzqX3Z.js} +1 -1
  199. package/web/assets/useAiChatDrawer-CZS0RLp8.js +1 -0
  200. package/web/assets/useCloudOrg-0VY86rgI.js +93 -0
  201. package/web/assets/useCloudOrg-CDe4gvZH.css +1 -0
  202. package/web/assets/{useProjectCatalog-OUh8Jzm4.js → useProjectCatalog-C2BH8Bnr.js} +1 -1
  203. package/web/assets/{xml-DNJakbU1.js → xml-4CdtJV3Y.js} +1 -1
  204. package/web/assets/{yaml-CuCgMv5w.js → yaml-Cj7LK0oJ.js} +1 -1
  205. package/web/index.html +1 -1
  206. package/agent-manager-LSAJSO3X.js +0 -7
  207. package/chunk-Q2WY6PYX.js.map +0 -1
  208. package/src-WCSXKTXA.js.map +0 -1
  209. package/web/assets/AgentScalarChatInterface.vue-CBm8pMxm.js +0 -13
  210. package/web/assets/AgentTerminalPage-Cu2yebw0.js +0 -1
  211. package/web/assets/AiChatPage-D_QT__oC.js +0 -1
  212. package/web/assets/AppLayout-B-JzLiuN.js +0 -1
  213. package/web/assets/AuditPage-O5w_rRoF.js +0 -1
  214. package/web/assets/CloudAccountPage-8iUKumU1.js +0 -1
  215. package/web/assets/CloudAccountPage-CVAMkCOF.css +0 -1
  216. package/web/assets/CloudAccountPage-CxclkzzF.js +0 -1
  217. package/web/assets/CloudMessagingPage-Cn4mBsGb.js +0 -2
  218. package/web/assets/DashboardPage-CBPAacTy.js +0 -1
  219. package/web/assets/EnvironmentForm-A41dAsGK.js +0 -108
  220. package/web/assets/EnvironmentFormPage-seMzTipP.js +0 -1
  221. package/web/assets/EnvironmentListPage-Bx_8aQ7W.js +0 -1
  222. package/web/assets/EnvironmentSelector-B9SZvB3I.css +0 -1
  223. package/web/assets/EnvironmentSelector-GuLEFkas.js +0 -1
  224. package/web/assets/KanbanBoardPage-BV-1mFti.js +0 -4
  225. package/web/assets/KanbanListPage-BHmn0L7d.js +0 -1
  226. package/web/assets/LaunchProjectPage-0x_cAt48.js +0 -1
  227. package/web/assets/LaunchServicesPage-wC2HNYAu.js +0 -1
  228. package/web/assets/LogViewer-BRsgOXsv.js +0 -3
  229. package/web/assets/ProcessDetailPage-CzGUsQM9.css +0 -1
  230. package/web/assets/ProcessDetailPage-DqInQZoM.js +0 -1
  231. package/web/assets/ProjectDetailPage-DWdYGIm5.js +0 -1
  232. package/web/assets/ProjectDetailPage-hcU-rKhJ.css +0 -1
  233. package/web/assets/ProjectListPage-XKb11ZSl.js +0 -1
  234. package/web/assets/RandomJobTestPage-D3mNVwkH.js +0 -2
  235. package/web/assets/ScenarioEditorPage-Bhp_uvLq.js +0 -14
  236. package/web/assets/SendToChatDialog-DdjtI7RN.js +0 -1
  237. package/web/assets/ServiceControlsBar-CRzSTSbf.js +0 -1
  238. package/web/assets/ServiceDetailPage-ChZVB2uY.js +0 -2
  239. package/web/assets/ServiceFormPage-CXrwDYXc.js +0 -1
  240. package/web/assets/SettingsPage-BKImNNGC.js +0 -2062
  241. package/web/assets/UnlockPage-IF_kNWCK.js +0 -1
  242. package/web/assets/VariablesTable-BnfdPTJs.js +0 -1
  243. package/web/assets/VaultMigrationPage-Dzn-moG9.js +0 -1
  244. package/web/assets/VersionBadge-DJlVV7r7.js +0 -1
  245. package/web/assets/WikiPage-DNm8r3l9.js +0 -1
  246. package/web/assets/WikiView-DCuU1ES2.js +0 -1
  247. package/web/assets/add-scalar-classes-DGIbkQ1f.js +0 -387
  248. package/web/assets/auth-errors-DQYwI7Ju.js +0 -1
  249. package/web/assets/autocomplete-BIqGkkg7.js +0 -422
  250. package/web/assets/cloud-chat.store-DqrDy_y_.js +0 -1
  251. package/web/assets/cloud-session-BPYJmCDW.js +0 -1
  252. package/web/assets/column-DFi06tD3.js +0 -907
  253. package/web/assets/interface-content-folder.svg-DnPIUwnJ.js +0 -1
  254. package/web/assets/modal-BwAKEIsn.js +0 -5
  255. package/web/assets/modal-tmtc9vXB.js +0 -1
  256. package/web/assets/process.store-f72KyYo3.js +0 -1
  257. package/web/assets/router-CRcngiuT.js +0 -1
  258. package/web/assets/settings-scope-BIR0n6j3.js +0 -1
  259. package/web/assets/settings.store-DuwB5egt.js +0 -1
  260. package/web/assets/src-HJHc4vH7.js +0 -1
  261. package/web/assets/tabpanel-C4RQhLki.js +0 -150
  262. package/web/assets/trpc-CTOLa5Ye.js +0 -1
  263. package/web/assets/useAiChatDrawer-CFsO_u5Q.js +0 -1
  264. package/web/assets/useCloudOrg-Ds7-Bvva.js +0 -1
  265. package/web/assets/useCloudOrg-zVC74FRC.css +0 -1
  266. /package/{agent-manager-LSAJSO3X.js.map → agent-manager-EDFP4VXP.js.map} +0 -0
  267. /package/web/assets/{abap-DT2sAUGb.js → abap-BftohFSP.js} +0 -0
  268. /package/web/assets/{apex-BqR8ejP0.js → apex-BvK6mslj.js} +0 -0
  269. /package/web/assets/{azcli-DK_jNPxf.js → azcli-sP_xqaje.js} +0 -0
  270. /package/web/assets/{bat-BLmcleEN.js → bat-BVOfLmAN.js} +0 -0
  271. /package/web/assets/{bicep-DkR6Nnyy.js → bicep-BlQUrQRt.js} +0 -0
  272. /package/web/assets/{cameligo-DfT1QA_V.js → cameligo-Hsiv8If_.js} +0 -0
  273. /package/web/assets/{clojure-BbsGZ_q_.js → clojure-BJCEwD5Z.js} +0 -0
  274. /package/web/assets/{coffee-CZQPrkXM.js → coffee-DaIzfLck.js} +0 -0
  275. /package/web/assets/{cpp-CZLFjmrQ.js → cpp-D1D8tync.js} +0 -0
  276. /package/web/assets/{csharp-CljM85nx.js → csharp-aJ5U4ZX-.js} +0 -0
  277. /package/web/assets/{csp-B7ItwhrE.js → csp-Dl6_9F5u.js} +0 -0
  278. /package/web/assets/{css-CIuVviKc.js → css-vCyBaqZs.js} +0 -0
  279. /package/web/assets/{cypher-Lk1MiloH.js → cypher-3AJUSxML.js} +0 -0
  280. /package/web/assets/{dart-B83vLjrb.js → dart-CTkotL3V.js} +0 -0
  281. /package/web/assets/{dockerfile--LImnfYW.js → dockerfile-D5-w2qBp.js} +0 -0
  282. /package/web/assets/{ecl-C1mPHzto.js → ecl-Bv13-VWP.js} +0 -0
  283. /package/web/assets/{elixir-F7VkySYx.js → elixir-tGAhMDbc.js} +0 -0
  284. /package/web/assets/{flow9-CyDLjcIP.js → flow9-BGyqHZGG.js} +0 -0
  285. /package/web/assets/{fsharp-BtAy52j8.js → fsharp-CNmn9I-8.js} +0 -0
  286. /package/web/assets/{go-nAky3Nvu.js → go-Ci34O9J5.js} +0 -0
  287. /package/web/assets/{graphql-BFHB5AhE.js → graphql-MnWRwivv.js} +0 -0
  288. /package/web/assets/{hcl-DiNGWUmy.js → hcl-CHOlr9Wk.js} +0 -0
  289. /package/web/assets/{ini-D1Fg5XrG.js → ini-DbnmjBHk.js} +0 -0
  290. /package/web/assets/{java-C-10mSK7.js → java-BfYu7xZq.js} +0 -0
  291. /package/web/assets/{julia-Bqx3lIQk.js → julia-DLtmkb8l.js} +0 -0
  292. /package/web/assets/{kotlin-BBx7H7X0.js → kotlin-DcvmgooU.js} +0 -0
  293. /package/web/assets/{less-BFHUOKEO.js → less-BcK61AQc.js} +0 -0
  294. /package/web/assets/{lexon-CZNaGS2_.js → lexon-CTymSfIj.js} +0 -0
  295. /package/web/assets/{lua-iuAeZ15y.js → lua-RfM_CC1S.js} +0 -0
  296. /package/web/assets/{m3-Dotjo0U8.js → m3-BUMcu6kl.js} +0 -0
  297. /package/web/assets/{markdown-B_31SQ_4.js → markdown-D43qGxMI.js} +0 -0
  298. /package/web/assets/{mips-Dp4rVQ6A.js → mips-DraL1zR7.js} +0 -0
  299. /package/web/assets/{msdax-DGvgi_My.js → msdax-DwsT9zOV.js} +0 -0
  300. /package/web/assets/{mysql-jqX2Izgu.js → mysql-CI0Y1SVo.js} +0 -0
  301. /package/web/assets/{objective-c-KWePe42v.js → objective-c-DFGG0hMZ.js} +0 -0
  302. /package/web/assets/{pascal-k9Augcc6.js → pascal-BwDR4uJo.js} +0 -0
  303. /package/web/assets/{pascaligo-CijZuMoC.js → pascaligo-BIFJ11Dr.js} +0 -0
  304. /package/web/assets/{perl-CtKbbdqv.js → perl-BA3RVdIi.js} +0 -0
  305. /package/web/assets/{pgsql-IYBGBY8p.js → pgsql-CQdJ7fT6.js} +0 -0
  306. /package/web/assets/{php-CZgzKas5.js → php-aksMphIw.js} +0 -0
  307. /package/web/assets/{pla-DxEUZCU5.js → pla-oY2ZYZjq.js} +0 -0
  308. /package/web/assets/{postiats-Cf9oispl.js → postiats-B6K4WFxG.js} +0 -0
  309. /package/web/assets/{powerquery-Cyri2j7y.js → powerquery-BEv8gWXV.js} +0 -0
  310. /package/web/assets/{powershell-CezsOW84.js → powershell-Dh31ZyY5.js} +0 -0
  311. /package/web/assets/{protobuf-BVSVLozM.js → protobuf-IOe1WZKr.js} +0 -0
  312. /package/web/assets/{pug-tdDHxxGI.js → pug-BoF2xjem.js} +0 -0
  313. /package/web/assets/{qsharp-BbxYBU73.js → qsharp-Cg-pSrKC.js} +0 -0
  314. /package/web/assets/{r-CMiogh24.js → r-CXVSpnOi.js} +0 -0
  315. /package/web/assets/{redis-Be7YRs2n.js → redis-Ds37g3HK.js} +0 -0
  316. /package/web/assets/{redshift-BMtedC4Y.js → redshift-Bc3XVP9_.js} +0 -0
  317. /package/web/assets/{restructuredtext-BeqA_Nw7.js → restructuredtext-DEe8sZRY.js} +0 -0
  318. /package/web/assets/{ruby-DQh1qjXf.js → ruby-rR6GK4gP.js} +0 -0
  319. /package/web/assets/{rust-Dtb7SJq9.js → rust-DIavTiQB.js} +0 -0
  320. /package/web/assets/{sb-YjmuT7ii.js → sb-DTmnd4yY.js} +0 -0
  321. /package/web/assets/{scala-3ZhdCU1r.js → scala-1g7pYkrn.js} +0 -0
  322. /package/web/assets/{scheme-Ck6PwJVN.js → scheme-DrHHAHD4.js} +0 -0
  323. /package/web/assets/{scss-CdSZkceb.js → scss-TmmHVu6S.js} +0 -0
  324. /package/web/assets/{shell-D951-SzL.js → shell-heJIehx2.js} +0 -0
  325. /package/web/assets/{solidity-BtE4jdUZ.js → solidity-DaFcLbgd.js} +0 -0
  326. /package/web/assets/{sophia-CPgh17t9.js → sophia-CXbpjkzF.js} +0 -0
  327. /package/web/assets/{sparql-D5V7fRaF.js → sparql-fPaD1mrB.js} +0 -0
  328. /package/web/assets/{sql-CIe64i2G.js → sql-AsIRMoxc.js} +0 -0
  329. /package/web/assets/{st-BUZL4NkZ.js → st-BzrDXems.js} +0 -0
  330. /package/web/assets/{swift-BGpAy-yZ.js → swift-BllUhPGN.js} +0 -0
  331. /package/web/assets/{systemverilog-CYBqw_20.js → systemverilog-DNQlsb2M.js} +0 -0
  332. /package/web/assets/{tcl-CqmcDc3_.js → tcl-Cw_eJI2v.js} +0 -0
  333. /package/web/assets/{twig-BWVIPIPE.js → twig-vw9mFGZ-.js} +0 -0
  334. /package/web/assets/{typespec-mTM8EdlQ.js → typespec-BshQoZSA.js} +0 -0
  335. /package/web/assets/{uuid-aTVnbu2y.js → uuid-egnMxzmj.js} +0 -0
  336. /package/web/assets/{vb-xvgQ7mYU.js → vb-CmPDgk6r.js} +0 -0
  337. /package/web/assets/{w3c-keyname-CjzYiphr.js → w3c-keyname-WZPedoVd.js} +0 -0
  338. /package/web/assets/{wgsl-C8m-CvBD.js → wgsl-CewGSgNG.js} +0 -0
package/agent/index.js CHANGED
@@ -67,7 +67,7 @@ import { TRPCError as TRPCError2 } from "@trpc/server";
67
67
  import { EventEmitter as EventEmitter7 } from "events";
68
68
  import { randomUUID as randomUUID3 } from "crypto";
69
69
  import { networkInterfaces } from "os";
70
- import { join as join3, isAbsolute } from "path";
70
+ import { join as join3, isAbsolute, resolve } from "path";
71
71
 
72
72
  // ../../packages/runner-native/src/native-runner.ts
73
73
  import { execa } from "execa";
@@ -212,15 +212,15 @@ var NativeRunner = class {
212
212
  // Don't accumulate stdout/stderr in memory — we stream via readline
213
213
  });
214
214
  }
215
- const exitPromise = new Promise((resolve) => {
215
+ const exitPromise = new Promise((resolve2) => {
216
216
  subprocess.then((result) => {
217
- resolve({
217
+ resolve2({
218
218
  exitCode: result.exitCode ?? null,
219
219
  signal: result.signal ?? null,
220
220
  error: result.failed && result.shortMessage ? result.shortMessage : void 0
221
221
  });
222
222
  }).catch((err) => {
223
- resolve({ exitCode: 1, signal: null, error: err.message ?? "Unknown error" });
223
+ resolve2({ exitCode: 1, signal: null, error: err.message ?? "Unknown error" });
224
224
  });
225
225
  });
226
226
  return {
@@ -312,7 +312,7 @@ var DockerRunner = class {
312
312
  const containerName = sanitizeDockerName(config.cmdId ? `runeya-${config.serviceId}-${config.cmdId}` : `runeya-${config.serviceId}`);
313
313
  let killed = false;
314
314
  const exitPromise = new Promise(
315
- (resolve) => {
315
+ (resolve2) => {
316
316
  void (async () => {
317
317
  try {
318
318
  await execa2("docker", ["rm", "-f", containerName], { reject: false });
@@ -365,7 +365,7 @@ var DockerRunner = class {
365
365
  }
366
366
  }
367
367
  if (killed) {
368
- resolve({ exitCode: null, signal: "SIGTERM" });
368
+ resolve2({ exitCode: null, signal: "SIGTERM" });
369
369
  return;
370
370
  }
371
371
  if (lastCardId) {
@@ -376,7 +376,7 @@ var DockerRunner = class {
376
376
  const bootstrapCmds = config.skipBootstrap ? [] : (dc.bootstrapCommands ?? []).filter((c) => c.command.trim());
377
377
  for (const bsCmd of bootstrapCmds) {
378
378
  if (killed) {
379
- resolve({ exitCode: null, signal: "SIGTERM" });
379
+ resolve2({ exitCode: null, signal: "SIGTERM" });
380
380
  return;
381
381
  }
382
382
  const bsCardId = randomUUID();
@@ -389,12 +389,12 @@ var DockerRunner = class {
389
389
  if (exitCode !== 0) {
390
390
  stderr.write(`Bootstrap command "${bsCmdName}" failed with exit code ${exitCode}
391
391
  `);
392
- resolve({ exitCode, signal: null, error: `Bootstrap "${bsCmdName}" failed (exit ${exitCode})` });
392
+ resolve2({ exitCode, signal: null, error: `Bootstrap "${bsCmdName}" failed (exit ${exitCode})` });
393
393
  return;
394
394
  }
395
395
  }
396
396
  if (killed) {
397
- resolve({ exitCode: null, signal: "SIGTERM" });
397
+ resolve2({ exitCode: null, signal: "SIGTERM" });
398
398
  return;
399
399
  }
400
400
  const networkFlags = dc.networkMode === "host" ? ["--network", "host"] : (dc.ports ?? []).flatMap((p) => ["-p", p]);
@@ -436,12 +436,12 @@ var DockerRunner = class {
436
436
  runProc.stdout?.pipe(stdout, { end: false });
437
437
  runProc.stderr?.pipe(stderr, { end: false });
438
438
  const result = await runProc;
439
- resolve({ exitCode: result.exitCode ?? null, signal: result.signal ?? null });
439
+ resolve2({ exitCode: result.exitCode ?? null, signal: result.signal ?? null });
440
440
  } catch (err) {
441
441
  const msg = err instanceof Error ? err.message : String(err);
442
442
  stderr.write(`Docker infrastructure error: ${msg}
443
443
  `);
444
- resolve({ exitCode: 1, signal: null });
444
+ resolve2({ exitCode: 1, signal: null });
445
445
  } finally {
446
446
  stdout.end();
447
447
  stderr.end();
@@ -480,8 +480,8 @@ var DockerRunner = class {
480
480
  });
481
481
  let exitResolve;
482
482
  const exitPromise = new Promise(
483
- (resolve) => {
484
- exitResolve = resolve;
483
+ (resolve2) => {
484
+ exitResolve = resolve2;
485
485
  }
486
486
  );
487
487
  void (async () => {
@@ -600,7 +600,7 @@ var DockerRunner = class {
600
600
  const stderr = new PassThrough();
601
601
  let dockerProc = null;
602
602
  const exitPromise = new Promise(
603
- (resolve) => {
603
+ (resolve2) => {
604
604
  void (async () => {
605
605
  try {
606
606
  const envFlags = Object.entries(envVars).flatMap(([k, v]) => ["-e", `${k}=${v}`]);
@@ -613,12 +613,12 @@ var DockerRunner = class {
613
613
  dockerProc.stdout?.pipe(stdout, { end: false });
614
614
  dockerProc.stderr?.pipe(stderr, { end: false });
615
615
  const result = await dockerProc;
616
- resolve({ exitCode: result.exitCode ?? null, signal: result.signal ?? null });
616
+ resolve2({ exitCode: result.exitCode ?? null, signal: result.signal ?? null });
617
617
  } catch (err) {
618
618
  const msg = err instanceof Error ? err.message : String(err);
619
619
  stderr.write(`docker execInContainer error: ${msg}
620
620
  `);
621
- resolve({ exitCode: 1, signal: null });
621
+ resolve2({ exitCode: 1, signal: null });
622
622
  } finally {
623
623
  stdout.end();
624
624
  stderr.end();
@@ -647,7 +647,7 @@ var DockerRunner = class {
647
647
  let innerProcess = null;
648
648
  let dockerProc = null;
649
649
  const exitPromise = new Promise(
650
- (resolve) => {
650
+ (resolve2) => {
651
651
  void (async () => {
652
652
  try {
653
653
  const psResult = await execa2(
@@ -671,7 +671,7 @@ var DockerRunner = class {
671
671
  dockerProc.stdout?.pipe(stdout, { end: false });
672
672
  dockerProc.stderr?.pipe(stderr, { end: false });
673
673
  const result = await dockerProc;
674
- resolve({ exitCode: result.exitCode ?? null, signal: result.signal ?? null });
674
+ resolve2({ exitCode: result.exitCode ?? null, signal: result.signal ?? null });
675
675
  } else {
676
676
  innerProcess = this.start({
677
677
  ...config,
@@ -684,13 +684,13 @@ var DockerRunner = class {
684
684
  innerProcess.stdout?.pipe(stdout, { end: false });
685
685
  innerProcess.stderr?.pipe(stderr, { end: false });
686
686
  const result = await innerProcess.exitPromise;
687
- resolve(result);
687
+ resolve2(result);
688
688
  }
689
689
  } catch (err) {
690
690
  const msg = err instanceof Error ? err.message : String(err);
691
691
  stderr.write(`docker shortcut error: ${msg}
692
692
  `);
693
- resolve({ exitCode: 1, signal: null });
693
+ resolve2({ exitCode: 1, signal: null });
694
694
  } finally {
695
695
  stdout.end();
696
696
  stderr.end();
@@ -1227,7 +1227,17 @@ var ProcessStatusSchema = z8.object({
1227
1227
  startedAt: z8.coerce.date().nullable().optional(),
1228
1228
  restartCount: z8.number().int().nonnegative().default(0),
1229
1229
  uptime: z8.number().nonnegative().default(0),
1230
- healthStatus: HealthStatusSchema.default("unknown")
1230
+ healthStatus: HealthStatusSchema.default("unknown"),
1231
+ /**
1232
+ * Le répertoire où le processus s'exécute VRAIMENT, absolutisé par l'agent.
1233
+ *
1234
+ * Rapporté par l'agent plutôt que déduit de la config : entre le `cwd` de la
1235
+ * commande, celui du service, l'ancrage sur le projet et les variables que
1236
+ * l'agent étend lui-même, la valeur affichée n'aurait rien prouvé. Ce qui
1237
+ * intéresse quand un service tourne contre le mauvais dépôt, c'est le chemin
1238
+ * final — y compris quand il retombe sur le répertoire de l'agent.
1239
+ */
1240
+ cwd: z8.string().max(4096).nullable().optional()
1231
1241
  });
1232
1242
 
1233
1243
  // ../../packages/shared/src/schemas/log.schema.ts
@@ -1589,6 +1599,22 @@ var KanbanCardSchema = z19.object({
1589
1599
  /** Files attached to the card — stored out of band, referenced here. */
1590
1600
  attachments: z19.array(KanbanAttachmentSchema).max(50).default([]),
1591
1601
  order: z19.number().int(),
1602
+ /**
1603
+ * La priorité de la carte, de 1 à 10 — 10 étant le plus urgent.
1604
+ *
1605
+ * Facultative, et absente veut dire « pas de priorité », pas « la plus
1606
+ * basse » : une carte qu'on n'a pas encore arbitrée ne doit pas se ranger
1607
+ * d'office au fond de la pile.
1608
+ */
1609
+ priority: z19.number().int().min(1).max(10).optional(),
1610
+ /**
1611
+ * Les groupes de la carte — des étiquettes libres, posées par l'équipe.
1612
+ *
1613
+ * Rien ne les déclare ailleurs : un groupe existe parce qu'une carte le
1614
+ * porte, et disparaît avec la dernière qui le portait. C'est ce qui permet
1615
+ * d'en créer un en le tapant, sans passer par un écran d'administration.
1616
+ */
1617
+ groups: z19.array(z19.string().min(1).max(60)).max(30).optional(),
1592
1618
  /**
1593
1619
  * La couleur de la carte, en hexadécimal (`#RRGGBB`) — un liseré en haut de
1594
1620
  * la carte, et rien d'autre : ce qu'elle veut dire appartient à l'équipe.
@@ -2690,7 +2716,7 @@ var MySQLLogSource = class extends EventEmitter4 {
2690
2716
  } catch {
2691
2717
  }
2692
2718
  this.connection = null;
2693
- await new Promise((resolve) => setTimeout(resolve, delayMs));
2719
+ await new Promise((resolve2) => setTimeout(resolve2, delayMs));
2694
2720
  if (this.stopped) return;
2695
2721
  try {
2696
2722
  await this.connect();
@@ -2738,14 +2764,14 @@ import pidusage from "pidusage";
2738
2764
  import { execFile } from "child_process";
2739
2765
  import { EventEmitter as EventEmitter5 } from "events";
2740
2766
  async function getDockerStats(containerName) {
2741
- return new Promise((resolve) => {
2767
+ return new Promise((resolve2) => {
2742
2768
  execFile(
2743
2769
  "docker",
2744
2770
  ["stats", "--no-stream", "--format", "{{json .}}", containerName],
2745
2771
  { timeout: 5e3 },
2746
2772
  (err, stdout) => {
2747
2773
  if (err || !stdout.trim()) {
2748
- resolve(null);
2774
+ resolve2(null);
2749
2775
  return;
2750
2776
  }
2751
2777
  try {
@@ -2753,9 +2779,9 @@ async function getDockerStats(containerName) {
2753
2779
  const cpu = Number.parseFloat(data.CPUPerc);
2754
2780
  const memStr = data.MemUsage.split("/")[0].trim();
2755
2781
  const memory = parseMemBytes(memStr);
2756
- resolve({ cpu: Number.isNaN(cpu) ? 0 : cpu, memory });
2782
+ resolve2({ cpu: Number.isNaN(cpu) ? 0 : cpu, memory });
2757
2783
  } catch {
2758
- resolve(null);
2784
+ resolve2(null);
2759
2785
  }
2760
2786
  }
2761
2787
  );
@@ -3104,10 +3130,10 @@ var TraefikManager = class {
3104
3130
  clearTimeout(this.debounceTimer);
3105
3131
  this.debounceTimer = null;
3106
3132
  }
3107
- await new Promise((resolve) => {
3108
- execFile2("docker", ["rm", "-f", "runeya-traefik"], { timeout: 1e4 }, () => resolve());
3133
+ await new Promise((resolve2) => {
3134
+ execFile2("docker", ["rm", "-f", "runeya-traefik"], { timeout: 1e4 }, () => resolve2());
3109
3135
  });
3110
- await new Promise((resolve) => setTimeout(resolve, 500));
3136
+ await new Promise((resolve2) => setTimeout(resolve2, 500));
3111
3137
  }
3112
3138
  async getConfigFiles() {
3113
3139
  const [staticContent, dynamicContent] = await Promise.all([
@@ -3146,13 +3172,13 @@ var TraefikManager = class {
3146
3172
  return result;
3147
3173
  }
3148
3174
  async getLogs(lines = 100) {
3149
- return new Promise((resolve) => {
3175
+ return new Promise((resolve2) => {
3150
3176
  execFile2("docker", ["logs", "--tail", String(lines), "runeya-traefik"], { timeout: 1e4 }, (err, stdout, stderr) => {
3151
3177
  if (err) {
3152
- resolve("");
3178
+ resolve2("");
3153
3179
  return;
3154
3180
  }
3155
- resolve((stdout + stderr).trim());
3181
+ resolve2((stdout + stderr).trim());
3156
3182
  });
3157
3183
  });
3158
3184
  }
@@ -3197,10 +3223,10 @@ var TraefikManager = class {
3197
3223
  async getStatus() {
3198
3224
  let dockerAvailable = false;
3199
3225
  try {
3200
- await new Promise((resolve, reject) => {
3226
+ await new Promise((resolve2, reject) => {
3201
3227
  execFile2("docker", ["info", "--format", "{{.ServerVersion}}"], { timeout: 5e3 }, (err) => {
3202
3228
  if (err) reject(err instanceof Error ? err : new Error("docker info failed"));
3203
- else resolve();
3229
+ else resolve2();
3204
3230
  });
3205
3231
  });
3206
3232
  dockerAvailable = true;
@@ -3217,10 +3243,10 @@ var TraefikManager = class {
3217
3243
  let containerRunning = false;
3218
3244
  if (dockerAvailable) {
3219
3245
  try {
3220
- const output = await new Promise((resolve, reject) => {
3246
+ const output = await new Promise((resolve2, reject) => {
3221
3247
  execFile2("docker", ["inspect", "--format", "{{.State.Running}}", "runeya-traefik"], { timeout: 5e3 }, (err, stdout) => {
3222
3248
  if (err) reject(err instanceof Error ? err : new Error("docker inspect failed"));
3223
- else resolve(stdout.trim());
3249
+ else resolve2(stdout.trim());
3224
3250
  });
3225
3251
  });
3226
3252
  containerRunning = output === "true";
@@ -3498,6 +3524,19 @@ var EnvSchema = z21.object({
3498
3524
  var env = EnvSchema.parse(process.env);
3499
3525
 
3500
3526
  // src/services/process-manager.ts
3527
+ function anchorCommandCwd(cwd, serviceConfig) {
3528
+ const base = serviceConfig.resolvedCwd ?? serviceConfig.cwd;
3529
+ const raw = (cwd ?? "").trim();
3530
+ if (!raw || raw === ".") return base ?? void 0;
3531
+ if (!base || !isAbsolute(base)) return raw;
3532
+ if (isAbsolute(raw) || raw.startsWith("~") || raw.startsWith("$")) return raw;
3533
+ return join3(base, raw);
3534
+ }
3535
+ function effectiveProcessCwd(serviceConfig) {
3536
+ const first = serviceConfig.commands?.[0];
3537
+ const anchored = anchorCommandCwd(first?.cwd, serviceConfig);
3538
+ return resolve(resolveCwd(anchored, resolveEnv(serviceConfig.env)));
3539
+ }
3501
3540
  function getLanIp() {
3502
3541
  const nets = networkInterfaces();
3503
3542
  for (const name of Object.keys(nets)) {
@@ -3763,7 +3802,7 @@ var ProcessManager = class extends EventEmitter7 {
3763
3802
  const runnerConfig = {
3764
3803
  command: cmd.command,
3765
3804
  shell: cmd.shell ?? false,
3766
- cwd: cmd.cwd || proc.serviceConfig.cwd,
3805
+ cwd: anchorCommandCwd(cmd.cwd, proc.serviceConfig),
3767
3806
  env: mergedServiceEnv
3768
3807
  };
3769
3808
  let runnerProcess;
@@ -3949,7 +3988,7 @@ var ProcessManager = class extends EventEmitter7 {
3949
3988
  * Centralises runner selection so executeShortcut / executeAdHocCommand share the logic. */
3950
3989
  launchOneOffCommand(proc, command, cwd, env2) {
3951
3990
  const serviceConfig = proc.serviceConfig;
3952
- const effectiveCwd = cwd || serviceConfig.resolvedCwd || serviceConfig.cwd;
3991
+ const effectiveCwd = anchorCommandCwd(cwd, serviceConfig);
3953
3992
  if (serviceConfig.runner === "docker" && serviceConfig.dockerConfig) {
3954
3993
  const dockerRunner = this.runners.get("docker");
3955
3994
  if (!dockerRunner) throw new Error("Docker runner not available");
@@ -3995,7 +4034,7 @@ var ProcessManager = class extends EventEmitter7 {
3995
4034
  proc.kill("SIGTERM");
3996
4035
  void Promise.race([
3997
4036
  proc.exitPromise,
3998
- new Promise((resolve) => setTimeout(resolve, 3e3))
4037
+ new Promise((resolve2) => setTimeout(resolve2, 3e3))
3999
4038
  ]).then((result) => {
4000
4039
  if (result === void 0) proc.kill("SIGKILL");
4001
4040
  });
@@ -4011,7 +4050,7 @@ var ProcessManager = class extends EventEmitter7 {
4011
4050
  this.consoleLogSource.addSystemLog(processId, `[shortcut] Running "${shortcutName}": ${shortcut.command}`, "info");
4012
4051
  const serviceConfig = proc.serviceConfig;
4013
4052
  const env2 = resolveEnv(serviceConfig.env);
4014
- const effectiveCwd = shortcut.cwd || serviceConfig.cwd;
4053
+ const effectiveCwd = anchorCommandCwd(shortcut.cwd, serviceConfig);
4015
4054
  if (this.warnUnresolvedVars(processId, env2, { "shortcut cwd": effectiveCwd })) {
4016
4055
  this.consoleLogSource.addSystemLog(processId, `Cannot run shortcut "${shortcutName}": unresolved variables (see above)`, "error", { id: randomUUID3(), type: "command-fail", header: shortcutName, state: "self" });
4017
4056
  return { exitCode: 1 };
@@ -4046,7 +4085,7 @@ var ProcessManager = class extends EventEmitter7 {
4046
4085
  this.consoleLogSource.setJSParsers(processId, jsParsers);
4047
4086
  const serviceConfig = proc.serviceConfig;
4048
4087
  const env2 = resolveEnv(serviceConfig.env);
4049
- const effectiveCwd = cwd || serviceConfig.cwd;
4088
+ const effectiveCwd = anchorCommandCwd(cwd, serviceConfig);
4050
4089
  if (this.warnUnresolvedVars(processId, env2, { cwd: effectiveCwd })) {
4051
4090
  this.consoleLogSource.addSystemLog(processId, `Cannot run command: unresolved variables (see above)`, "error", { id: randomUUID3(), type: "command-fail", header: command, state: "self" });
4052
4091
  return { exitCode: 1 };
@@ -4113,14 +4152,14 @@ var ProcessManager = class extends EventEmitter7 {
4113
4152
  sharedProc.kill("SIGTERM");
4114
4153
  await Promise.race([
4115
4154
  sharedProc.exitPromise,
4116
- new Promise((resolve) => setTimeout(resolve, graceMs))
4155
+ new Promise((resolve2) => setTimeout(resolve2, graceMs))
4117
4156
  ]);
4118
4157
  const activeExecs = proc.commandProcesses.filter((cp) => cp.runnerProcess);
4119
4158
  await Promise.all(
4120
4159
  activeExecs.map(async (cp) => {
4121
4160
  await Promise.race([
4122
4161
  cp.runnerProcess.exitPromise,
4123
- new Promise((resolve) => setTimeout(resolve, 2e3))
4162
+ new Promise((resolve2) => setTimeout(resolve2, 2e3))
4124
4163
  ]);
4125
4164
  cp.runnerProcess = null;
4126
4165
  })
@@ -4135,7 +4174,7 @@ var ProcessManager = class extends EventEmitter7 {
4135
4174
  activeProcesses.map(async (cp) => {
4136
4175
  const exited = await Promise.race([
4137
4176
  cp.runnerProcess.exitPromise.then(() => true),
4138
- new Promise((resolve) => setTimeout(() => resolve(false), graceMs))
4177
+ new Promise((resolve2) => setTimeout(() => resolve2(false), graceMs))
4139
4178
  ]);
4140
4179
  if (!exited && cp.runnerProcess) {
4141
4180
  cp.runnerProcess.kill("SIGKILL");
@@ -4231,7 +4270,8 @@ var ProcessManager = class extends EventEmitter7 {
4231
4270
  startedAt: proc.startedAt,
4232
4271
  restartCount: proc.restartCount,
4233
4272
  uptime,
4234
- healthStatus
4273
+ healthStatus,
4274
+ cwd: effectiveProcessCwd(proc.serviceConfig)
4235
4275
  };
4236
4276
  }
4237
4277
  emitStatus(processId) {
@@ -4340,15 +4380,15 @@ var processRouter = router({
4340
4380
  /** Subscribe to real-time log stream (yields batches of ParsedLog[]) */
4341
4381
  onLog: protectedProcedure.input(z22.object({ processId: z22.string().max(128).optional() }).optional()).subscription(async function* ({ input }) {
4342
4382
  const queue = [];
4343
- let resolve = null;
4383
+ let resolve2 = null;
4344
4384
  const handler = (batch) => {
4345
4385
  const filtered = input?.processId ? batch.filter((log) => log.processId === input.processId) : batch;
4346
4386
  if (filtered.length === 0) return;
4347
4387
  if (queue.length >= SUBSCRIPTION_QUEUE_MAX) queue.shift();
4348
4388
  queue.push(filtered);
4349
- if (resolve) {
4350
- resolve();
4351
- resolve = null;
4389
+ if (resolve2) {
4390
+ resolve2();
4391
+ resolve2 = null;
4352
4392
  }
4353
4393
  };
4354
4394
  processManager.on("logs", handler);
@@ -4358,7 +4398,7 @@ var processRouter = router({
4358
4398
  yield queue.shift();
4359
4399
  } else {
4360
4400
  await new Promise((r) => {
4361
- resolve = r;
4401
+ resolve2 = r;
4362
4402
  });
4363
4403
  }
4364
4404
  }
@@ -4370,15 +4410,15 @@ var processRouter = router({
4370
4410
  onStatus: protectedProcedure.input(z22.object({ processId: z22.string().max(128).optional() }).optional()).subscription(async function* ({ input }) {
4371
4411
  console.debug("[agent] onStatus subscription started", input?.processId ? `for process ${input.processId}` : "(all processes)");
4372
4412
  const queue = [];
4373
- let resolve = null;
4413
+ let resolve2 = null;
4374
4414
  const handler = (status) => {
4375
4415
  const entry = status;
4376
4416
  if (!input?.processId || entry.id === input.processId) {
4377
4417
  if (queue.length >= SUBSCRIPTION_QUEUE_MAX) queue.shift();
4378
4418
  queue.push(status);
4379
- if (resolve) {
4380
- resolve();
4381
- resolve = null;
4419
+ if (resolve2) {
4420
+ resolve2();
4421
+ resolve2 = null;
4382
4422
  }
4383
4423
  }
4384
4424
  };
@@ -4389,7 +4429,7 @@ var processRouter = router({
4389
4429
  yield queue.shift();
4390
4430
  } else {
4391
4431
  await new Promise((r) => {
4392
- resolve = r;
4432
+ resolve2 = r;
4393
4433
  });
4394
4434
  }
4395
4435
  }
@@ -4401,15 +4441,15 @@ var processRouter = router({
4401
4441
  /** Subscribe to real-time health status changes */
4402
4442
  onHealth: protectedProcedure.input(z22.object({ processId: z22.string().max(128).optional() }).optional()).subscription(async function* ({ input }) {
4403
4443
  const queue = [];
4404
- let resolve = null;
4444
+ let resolve2 = null;
4405
4445
  const handler = (healthData) => {
4406
4446
  const entry = healthData;
4407
4447
  if (!input?.processId || entry.processId === input.processId) {
4408
4448
  if (queue.length >= SUBSCRIPTION_QUEUE_MAX) queue.shift();
4409
4449
  queue.push(healthData);
4410
- if (resolve) {
4411
- resolve();
4412
- resolve = null;
4450
+ if (resolve2) {
4451
+ resolve2();
4452
+ resolve2 = null;
4413
4453
  }
4414
4454
  }
4415
4455
  };
@@ -4420,7 +4460,7 @@ var processRouter = router({
4420
4460
  yield queue.shift();
4421
4461
  } else {
4422
4462
  await new Promise((r) => {
4423
- resolve = r;
4463
+ resolve2 = r;
4424
4464
  });
4425
4465
  }
4426
4466
  }
@@ -4431,15 +4471,15 @@ var processRouter = router({
4431
4471
  /** Subscribe to real-time metrics */
4432
4472
  onMetrics: protectedProcedure.input(z22.object({ processId: z22.string().max(128).optional() }).optional()).subscription(async function* ({ input }) {
4433
4473
  const queue = [];
4434
- let resolve = null;
4474
+ let resolve2 = null;
4435
4475
  const handler = (metrics) => {
4436
4476
  const entry = metrics;
4437
4477
  if (!input?.processId || entry.processId === input.processId) {
4438
4478
  if (queue.length >= SUBSCRIPTION_QUEUE_MAX) queue.shift();
4439
4479
  queue.push(metrics);
4440
- if (resolve) {
4441
- resolve();
4442
- resolve = null;
4480
+ if (resolve2) {
4481
+ resolve2();
4482
+ resolve2 = null;
4443
4483
  }
4444
4484
  }
4445
4485
  };
@@ -4450,7 +4490,7 @@ var processRouter = router({
4450
4490
  yield queue.shift();
4451
4491
  } else {
4452
4492
  await new Promise((r) => {
4453
- resolve = r;
4493
+ resolve2 = r;
4454
4494
  });
4455
4495
  }
4456
4496
  }
@@ -4591,20 +4631,20 @@ var terminalRouter = router({
4591
4631
  throw new TRPCError3({ code: "NOT_FOUND", message: `Terminal session ${input.sessionId} not found` });
4592
4632
  }
4593
4633
  const queue = [];
4594
- let resolve = null;
4634
+ let resolve2 = null;
4595
4635
  let done = false;
4596
4636
  const onData = (data) => {
4597
4637
  queue.push(data);
4598
- if (resolve) {
4599
- resolve();
4600
- resolve = null;
4638
+ if (resolve2) {
4639
+ resolve2();
4640
+ resolve2 = null;
4601
4641
  }
4602
4642
  };
4603
4643
  const onExit = () => {
4604
4644
  done = true;
4605
- if (resolve) {
4606
- resolve();
4607
- resolve = null;
4645
+ if (resolve2) {
4646
+ resolve2();
4647
+ resolve2 = null;
4608
4648
  }
4609
4649
  };
4610
4650
  emitter.on("data", onData);
@@ -4615,7 +4655,7 @@ var terminalRouter = router({
4615
4655
  yield queue.shift();
4616
4656
  } else {
4617
4657
  await new Promise((r) => {
4618
- resolve = r;
4658
+ resolve2 = r;
4619
4659
  });
4620
4660
  }
4621
4661
  }
@@ -4818,15 +4858,15 @@ var gitRouter = router({
4818
4858
  const gitDir = (await git(["rev-parse", "--git-dir"], cwd, true)).trim();
4819
4859
  const absGitDir = resolvePath(cwd, gitDir);
4820
4860
  const queue = [];
4821
- let resolve = null;
4861
+ let resolve2 = null;
4822
4862
  let debounceTimer = null;
4823
4863
  const onFsChange = () => {
4824
4864
  if (debounceTimer) clearTimeout(debounceTimer);
4825
4865
  debounceTimer = setTimeout(() => {
4826
4866
  queue.push("changed");
4827
- if (resolve) {
4828
- resolve();
4829
- resolve = null;
4867
+ if (resolve2) {
4868
+ resolve2();
4869
+ resolve2 = null;
4830
4870
  }
4831
4871
  }, 500);
4832
4872
  };
@@ -4852,7 +4892,7 @@ var gitRouter = router({
4852
4892
  }
4853
4893
  } else {
4854
4894
  await new Promise((r) => {
4855
- resolve = r;
4895
+ resolve2 = r;
4856
4896
  });
4857
4897
  }
4858
4898
  }
@@ -5287,19 +5327,19 @@ var AiSpawnManager = class {
5287
5327
  const entry = this.spawns.get(spawnId);
5288
5328
  if (!entry) throw new Error(`AI spawn ${spawnId} not found`);
5289
5329
  let offset = fromOffset;
5290
- let resolve = null;
5330
+ let resolve2 = null;
5291
5331
  let done = false;
5292
5332
  const onChunk = () => {
5293
- if (resolve) {
5294
- resolve();
5295
- resolve = null;
5333
+ if (resolve2) {
5334
+ resolve2();
5335
+ resolve2 = null;
5296
5336
  }
5297
5337
  };
5298
5338
  const onDone = () => {
5299
5339
  done = true;
5300
- if (resolve) {
5301
- resolve();
5302
- resolve = null;
5340
+ if (resolve2) {
5341
+ resolve2();
5342
+ resolve2 = null;
5303
5343
  }
5304
5344
  };
5305
5345
  entry.emitter.on("chunk", onChunk);
@@ -5318,7 +5358,7 @@ var AiSpawnManager = class {
5318
5358
  }
5319
5359
  if (done && offset >= entry.buffer.length) break;
5320
5360
  await new Promise((r) => {
5321
- resolve = r;
5361
+ resolve2 = r;
5322
5362
  });
5323
5363
  }
5324
5364
  } finally {
@@ -5577,12 +5617,12 @@ var CodexAppServerManager = class extends EventEmitter10 {
5577
5617
  throw new Error("codex app-server not connected");
5578
5618
  }
5579
5619
  const id = this.nextId++;
5580
- return new Promise((resolve, reject) => {
5620
+ return new Promise((resolve2, reject) => {
5581
5621
  const timer = setTimeout(() => {
5582
5622
  this.pending.delete(id);
5583
5623
  reject(new Error(`Request ${method} (id=${id}) timed out`));
5584
5624
  }, REQUEST_TIMEOUT_MS);
5585
- this.pending.set(id, { resolve, reject, timer });
5625
+ this.pending.set(id, { resolve: resolve2, reject, timer });
5586
5626
  this.writeLine({ jsonrpc: "2.0", method, id, params });
5587
5627
  });
5588
5628
  }
@@ -5706,12 +5746,12 @@ function extForMime(mime) {
5706
5746
  return MIME_TO_EXT[mime.toLowerCase()] ?? "png";
5707
5747
  }
5708
5748
  function runCmd(cmd, args, stdin, timeoutMs = 5e3) {
5709
- return new Promise((resolve) => {
5749
+ return new Promise((resolve2) => {
5710
5750
  let settled = false;
5711
5751
  const settle = (code, stderr) => {
5712
5752
  if (settled) return;
5713
5753
  settled = true;
5714
- resolve({ code, stderr });
5754
+ resolve2({ code, stderr });
5715
5755
  };
5716
5756
  try {
5717
5757
  const child = spawn7(cmd, args, { stdio: ["pipe", "ignore", "pipe"] });
@@ -5913,16 +5953,16 @@ var aiRouter = router({
5913
5953
  }).default({})).subscription(async function* ({ input, signal }) {
5914
5954
  await codexAppServerManager.ensureConnected();
5915
5955
  const queue = [];
5916
- let resolve = null;
5956
+ let resolve2 = null;
5917
5957
  const unsub = codexAppServerManager.onNotification((method, params) => {
5918
5958
  if (input.threadId) {
5919
5959
  const notifThreadId = params["threadId"] ?? params["turn"]?.["threadId"];
5920
5960
  if (notifThreadId && notifThreadId !== input.threadId) return;
5921
5961
  }
5922
5962
  queue.push({ method, params });
5923
- if (resolve) {
5924
- resolve();
5925
- resolve = null;
5963
+ if (resolve2) {
5964
+ resolve2();
5965
+ resolve2 = null;
5926
5966
  }
5927
5967
  });
5928
5968
  try {
@@ -5931,7 +5971,7 @@ var aiRouter = router({
5931
5971
  yield queue.shift();
5932
5972
  }
5933
5973
  await new Promise((r) => {
5934
- resolve = r;
5974
+ resolve2 = r;
5935
5975
  });
5936
5976
  }
5937
5977
  } finally {
@@ -6246,24 +6286,34 @@ function createAgent(opts) {
6246
6286
  await traefikManager.stop();
6247
6287
  await processManager.shutdownAll();
6248
6288
  await Promise.race([
6249
- new Promise((resolve) => healthWss.close(() => resolve())),
6250
- new Promise((resolve) => setTimeout(resolve, 5e3))
6289
+ new Promise((resolve2) => healthWss.close(() => resolve2())),
6290
+ new Promise((resolve2) => setTimeout(resolve2, 5e3))
6251
6291
  ]);
6252
6292
  await Promise.race([
6253
- new Promise((resolve) => trpcWss.close(() => resolve())),
6254
- new Promise((resolve) => setTimeout(resolve, 5e3))
6293
+ new Promise((resolve2) => trpcWss.close(() => resolve2())),
6294
+ new Promise((resolve2) => setTimeout(resolve2, 5e3))
6255
6295
  ]);
6256
6296
  await Promise.race([
6257
- new Promise((resolve) => server.close(() => resolve())),
6258
- new Promise((resolve) => setTimeout(resolve, 5e3))
6297
+ new Promise((resolve2) => server.close(() => resolve2())),
6298
+ new Promise((resolve2) => setTimeout(resolve2, 5e3))
6259
6299
  ]);
6260
6300
  };
6261
6301
  return { app, server, trpcWss, healthWss, passphraseHex, shutdown };
6262
6302
  }
6263
6303
 
6304
+ // src/config/node-path.ts
6305
+ import { dirname as dirname3, delimiter } from "path";
6306
+ function ensureNodeBinOnPath(environment = process.env) {
6307
+ const nodeBin = dirname3(process.execPath);
6308
+ const current = environment["PATH"] ?? "";
6309
+ const entries = current.split(delimiter).filter(Boolean);
6310
+ if (entries.includes(nodeBin)) return;
6311
+ environment["PATH"] = entries.length > 0 ? `${current}${delimiter}${nodeBin}` : nodeBin;
6312
+ }
6313
+
6264
6314
  // src/index.ts
6265
6315
  function listenWithRetry(server, port, host, maxRetries = 20, delay = 500) {
6266
- return new Promise((resolve, reject) => {
6316
+ return new Promise((resolve2, reject) => {
6267
6317
  let attempts = 0;
6268
6318
  const tryListen = () => {
6269
6319
  const onError = (err) => {
@@ -6279,7 +6329,7 @@ function listenWithRetry(server, port, host, maxRetries = 20, delay = 500) {
6279
6329
  server.once("error", onError);
6280
6330
  server.listen(port, host, () => {
6281
6331
  server.removeListener("error", onError);
6282
- resolve();
6332
+ resolve2();
6283
6333
  });
6284
6334
  };
6285
6335
  tryListen();
@@ -6294,6 +6344,7 @@ process.on("uncaughtException", (err) => {
6294
6344
  process.exit(1);
6295
6345
  });
6296
6346
  async function main() {
6347
+ ensureNodeBinOnPath();
6297
6348
  const { server, shutdown, passphraseHex } = createAgent({
6298
6349
  passphraseHex: env.PASSPHRASE_OVERRIDE
6299
6350
  });