@runeya/runeya 2.0.57 → 2.0.59

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 (263) hide show
  1. package/agent/index.js +138 -103
  2. package/agent/index.js.map +1 -1
  3. package/agent-manager-4EKOSJBR.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-4665DVGB.js → chunk-F7HMKPFB.js} +165 -10
  9. package/chunk-F7HMKPFB.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-6MVU3BDZ.js → src-7YQHXQ6L.js} +3008 -2477
  22. package/src-7YQHXQ6L.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-Bdl2Mco_.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-DJtuLQwj.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-BZ6CoGPS.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-BNEaZNR4.js → basic-shape-diamond.svg-D7lBpWcu.js} +1 -1
  73. package/web/assets/{basic-shape-hexagon.svg-DkLboKXh.js → basic-shape-hexagon.svg-BIDPqohs.js} +1 -1
  74. package/web/assets/{basic-shape-primary-circle-ellipse-round.svg-CvXLE0nY.js → basic-shape-primary-circle-ellipse-round.svg-iWUF3CNK.js} +1 -1
  75. package/web/assets/{basic-shape-primary-square-rectangle.svg-DuBPGbCQ.js → basic-shape-primary-square-rectangle.svg-BQy8tY9i.js} +1 -1
  76. package/web/assets/{basic-shape-shield.svg-B76nqlMT.js → basic-shape-shield.svg-Dcov5U2N.js} +1 -1
  77. package/web/assets/{browser-D6cyxfts.js → browser-Dc4T6GL2.js} +1 -1
  78. package/web/assets/{browser-DCK7QKdh.js → browser-DrMkXWE3.js} +1 -1
  79. package/web/assets/{card-nlH99ZRa.js → card-DADdd2-i.js} +2 -2
  80. package/web/assets/{checkbox-tmaSRjCY.js → checkbox-By0TwAz_.js} +3 -3
  81. package/web/assets/{chip-C6agT-Lk.js → chip-W5HkUiZA.js} +2 -2
  82. package/web/assets/{client-DSIO6MRA.js → client-Be8SiY8s.js} +2 -2
  83. package/web/assets/cloud-chat.store-GKWq9kin.js +1 -0
  84. package/web/assets/{cloud-session-BRhRomCj.js → cloud-session-CJ4n3dbT.js} +1 -1
  85. package/web/assets/column-P4Yoqttz.js +907 -0
  86. package/web/assets/{computer-device-desktop-monitor.svg-ClG1er6E.js → computer-device-desktop-monitor.svg-BjBC4Q_B.js} +1 -1
  87. package/web/assets/{computer-device-desktop.svg-VJa9AdHB.js → computer-device-desktop.svg-C7H8X0sb.js} +1 -1
  88. package/web/assets/{computer-device-laptop.svg-CHluUfrC.js → computer-device-laptop.svg-GDU5987h.js} +1 -1
  89. package/web/assets/{computer-device-mobile-phone-android-samsung-back.svg-Bz7ymNgY.js → computer-device-mobile-phone-android-samsung-back.svg-BcWod8vA.js} +1 -1
  90. package/web/assets/{computer-device-mobile-phone-android-samsung.svg-BZjCYTDe.js → computer-device-mobile-phone-android-samsung.svg-Cj58lY5g.js} +1 -1
  91. package/web/assets/{computer-device-mobile-phone-iphone-x-back.svg-B6hMc7YN.js → computer-device-mobile-phone-iphone-x-back.svg-CtJM7Ul_.js} +1 -1
  92. package/web/assets/{computer-device-mobile-phone-iphone-x.svg-BDackkJX.js → computer-device-mobile-phone-iphone-x.svg-BiSi4riW.js} +1 -1
  93. package/web/assets/{computer-device-mobile-tablet-touch.svg-DLepUSe0.js → computer-device-mobile-tablet-touch.svg-BAMVDwHH.js} +1 -1
  94. package/web/assets/{computer-device-mobile-tablet.svg-CpU7bs1J.js → computer-device-mobile-tablet.svg-quWU62em.js} +1 -1
  95. package/web/assets/{computer-device-network-ethernet-cat6.svg-BIPoN5dZ.js → computer-device-network-ethernet-cat6.svg-eoCbNWkF.js} +1 -1
  96. package/web/assets/{computer-device-network-lan-www.svg-DjBnI47W.js → computer-device-network-lan-www.svg-AR5jmH9w.js} +1 -1
  97. package/web/assets/{computer-device-network-wifi-connection.svg-jL_T26gB.js → computer-device-network-wifi-connection.svg-C3-i1o4I.js} +1 -1
  98. package/web/assets/{computer-device-network-wifi-router.svg-Bt0HKV-a.js → computer-device-network-wifi-router.svg-D8_62H2U.js} +1 -1
  99. package/web/assets/{cssMode-l83Ab_FG.js → cssMode-CfDickSl.js} +1 -1
  100. package/web/assets/{divider-0la1DK7n.js → divider-DOwWKUnp.js} +2 -2
  101. package/web/assets/{ecology-science-erlenmeyer-flask.svg-jGfcZJk6.js → ecology-science-erlenmeyer-flask.svg-bmj1315r.js} +1 -1
  102. package/web/assets/{fieldset-Dnw-5ZTN.js → fieldset-CM6GY5DX.js} +2 -2
  103. package/web/assets/{freemarker2-CKxYYqUc.js → freemarker2-B_0Gh4L-.js} +1 -1
  104. package/web/assets/{handlebars-DwAvjXsf.js → handlebars-D7Oha3sz.js} +1 -1
  105. package/web/assets/{html-C8HeZ91y.js → html-BDq-ql3l.js} +1 -1
  106. package/web/assets/{htmlMode-DJLqukef.js → htmlMode-DVuzX8LQ.js} +1 -1
  107. package/web/assets/{image-flash-lightning.svg-BRqL2x81.js → image-flash-lightning.svg-pdHiRywD.js} +1 -1
  108. package/web/assets/{image-picture-flower.svg-CD2Yyx7q.js → image-picture-flower.svg-BJarIt4k.js} +1 -1
  109. package/web/assets/{index-D-sVY9DJ.js → index-Dk3h9927.js} +225 -225
  110. package/web/assets/{interface-alert-exclamation-diamond.svg-C1jZyyiH.js → interface-alert-exclamation-diamond.svg-CZUf0TtR.js} +1 -1
  111. package/web/assets/{interface-alert-exclamation-triangle-warning.svg-CJRjxSxB.js → interface-alert-exclamation-triangle-warning.svg-B1qbmOvN.js} +1 -1
  112. package/web/assets/{interface-alert-information-circle.svg-_yhjZAB6.js → interface-alert-information-circle.svg-DAH6I2Rk.js} +1 -1
  113. package/web/assets/{interface-award-crown.svg-D11H_zuN.js → interface-award-crown.svg-Co-un_0E.js} +1 -1
  114. package/web/assets/{interface-bookmark.svg-CGayI3g0.js → interface-bookmark-tag.svg-DCeSL4gX.js} +1 -1
  115. package/web/assets/{interface-bookmark-tag.svg-B-l2i8Ii.js → interface-bookmark.svg-BoAQ5WAA.js} +1 -1
  116. package/web/assets/{interface-calendar-date-one.svg-CJxH-duP.js → interface-calendar-date-one.svg-KM5TH_vj.js} +1 -1
  117. package/web/assets/{interface-content-book-open-pages.svg-CKlbHpZM.js → interface-content-book-open-pages.svg-2t-0H_Nl.js} +1 -1
  118. package/web/assets/{interface-content-book-page.svg-ClW0JcO1.js → interface-content-book-page.svg-Dx9U_5uo.js} +1 -1
  119. package/web/assets/{interface-content-file.svg-vXnq-VTU.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-DVuVP2_n.js → interface-content-folder.svg-DgU2KM8d.js} +1 -1
  122. package/web/assets/{interface-copy-clipboard.svg-By6SZiB4.js → interface-copy-clipboard.svg-BXCY1wtO.js} +1 -1
  123. package/web/assets/{interface-edit-attachment.svg-5FhntK3Y.js → interface-edit-attachment.svg-lJsBgdnd.js} +1 -1
  124. package/web/assets/{interface-edit-binocular.svg-BNAa3NU3.js → interface-edit-binocular.svg-N_us2_d_.js} +1 -1
  125. package/web/assets/{interface-edit-magic-wand.svg-CHIex2kh.js → interface-edit-magic-wand.svg-GlHpAoND.js} +1 -1
  126. package/web/assets/{interface-edit-tool-paint-roller.svg-BOU7EZxD.js → interface-edit-tool-paint-roller.svg-B3s6tHLT.js} +1 -1
  127. package/web/assets/{interface-edit-tool-pencil.svg-R4MWKJk8.js → interface-edit-tool-pencil.svg-BhJltLPD.js} +1 -1
  128. package/web/assets/{interface-favorite-award.svg-suD3XTUy.js → interface-favorite-award.svg-CAC4qrCL.js} +1 -1
  129. package/web/assets/{interface-favorite-flag.svg-hdyn6Kl_.js → interface-favorite-flag.svg-5dLI18uT.js} +1 -1
  130. package/web/assets/{interface-favorite-heart.svg-CsvpCgqr.js → interface-favorite-heart.svg-DAWMqUS8.js} +1 -1
  131. package/web/assets/{interface-favorite-star.svg-BYnYZej4.js → interface-favorite-star.svg-C9DICFBb.js} +1 -1
  132. package/web/assets/{interface-favorite-stars-sparkles.svg-CJF8bktG.js → interface-favorite-stars-sparkles.svg-zD5-a95u.js} +1 -1
  133. package/web/assets/{interface-hierarchy-flowchart.svg-Cz8Kp45m.js → interface-hierarchy-flowchart.svg-BzAAQM0v.js} +1 -1
  134. package/web/assets/{interface-home-house.svg-C9GgEmKT.js → interface-home-house.svg-CB_mzszz.js} +1 -1
  135. package/web/assets/{interface-hyperlink.svg-T_oHSPOF.js → interface-hyperlink.svg-BUMVlOAE.js} +1 -1
  136. package/web/assets/{interface-lighting-brightness.svg-Ds5ZO6oa.js → interface-lighting-brightness.svg-wPXo2pZW.js} +1 -1
  137. package/web/assets/{interface-lock-closed.svg-CoMPAlnI.js → interface-lock-closed.svg-Qj4fLj5D.js} +1 -1
  138. package/web/assets/{interface-lock-open-unlock.svg-jGLDczcA.js → interface-lock-open-unlock.svg-PaaFsUiU.js} +1 -1
  139. package/web/assets/{interface-login-key.svg-CDeEaRf5.js → interface-login-key.svg-By-IZ7EH.js} +1 -1
  140. package/web/assets/{interface-search.svg-Cy4Q-xYo.js → interface-search.svg-D1s5Gsyk.js} +1 -1
  141. package/web/assets/{interface-setting-cog.svg-BDhQZOJ4.js → interface-setting-cog.svg-BIjZVOwf.js} +1 -1
  142. package/web/assets/{interface-share-megaphone-bullhorn.svg-DagGdEnC.js → interface-share-megaphone-bullhorn.svg-1oPoDdIL.js} +1 -1
  143. package/web/assets/{interface-share-rocket.svg-CKJ5nUEh.js → interface-share-rocket.svg-B07UdOH6.js} +1 -1
  144. package/web/assets/{interface-share-satellite.svg-BK1pCz3B.js → interface-share-satellite.svg-AxSAr1JP.js} +1 -1
  145. package/web/assets/{interface-share-space-ship.svg-KdgeixBZ.js → interface-share-space-ship.svg-ghRJYkXG.js} +1 -1
  146. package/web/assets/{interface-share.svg-ChAZ94rW.js → interface-share.svg-jVvV5wf9.js} +1 -1
  147. package/web/assets/{interface-signal-square.svg-DzuPfXUh.js → interface-signal-square.svg-BB8KvxNI.js} +1 -1
  148. package/web/assets/{interface-time-clock-circle.svg-B4ynuu4H.js → interface-time-clock-circle.svg-Bt_vXLib.js} +1 -1
  149. package/web/assets/{interface-time-hour-glass.svg-CwKlC1Na.js → interface-time-hour-glass.svg-CqsWXDx3.js} +1 -1
  150. package/web/assets/{interface-users-multiple.svg-Dr3rSYsr.js → interface-users-multiple.svg-DfZzhCkI.js} +1 -1
  151. package/web/assets/{interface-weather-moon.svg-k_uau_ay.js → interface-weather-moon.svg-B5X37fBl.js} +1 -1
  152. package/web/assets/{javascript-Bx-xJAtR.js → javascript-DWxMn_QC.js} +1 -1
  153. package/web/assets/{jsonMode-CF72gzTX.js → jsonMode-BWOZzM3d.js} +2 -2
  154. package/web/assets/{liquid-Du7COcWK.js → liquid-B0VtIwJX.js} +1 -1
  155. package/web/assets/{lspLanguageFeatures-B0b9esI0.js → lspLanguageFeatures-DXFZNqLk.js} +3 -3
  156. package/web/assets/{mail-chat-bubble-square.svg-Dss1BS5k.js → mail-chat-bubble-square.svg-DVi8sPM-.js} +1 -1
  157. package/web/assets/{mail-send-email-paper-airplane.svg-BjlSFw6x.js → mail-send-email-paper-airplane.svg-Dlk35rWL.js} +1 -1
  158. package/web/assets/{mail-send-envelope.svg-CpGqZ3T_.js → mail-send-envelope.svg-DpEE06QS.js} +1 -1
  159. package/web/assets/{mdx-DgIEovcA.js → mdx-XjdLNHo4.js} +1 -1
  160. package/web/assets/{message-n9JmpxQB.js → message-TASaHoOx.js} +2 -2
  161. package/web/assets/{minus-Eq7h2HNM.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-DVDhS_Zc.js → money-cashier-receipt.svg-D3T1gdZO.js} +1 -1
  165. package/web/assets/{money-currency-dollar-pay.svg-DRnO0pzf.js → money-currency-dollar-pay.svg-RhoFWz8z.js} +1 -1
  166. package/web/assets/{money-graph-arrow-increase.svg-Beaf3gcH.js → money-graph-arrow-increase.svg-BENn1K5R.js} +1 -1
  167. package/web/assets/{money-graph-bar-chart-increase.svg-Bx83srA6.js → money-graph-bar-chart-increase.svg-COGPwero.js} +1 -1
  168. package/web/assets/{multiselect-BzaOLdpd.js → multiselect-QI9V-o7t.js} +3 -3
  169. package/web/assets/{nature-ecology-leaf.svg-BPF0Z-R-.js → nature-ecology-leaf.svg-CyQJuX9P.js} +1 -1
  170. package/web/assets/{password-BOruXB1m.js → password-68lVUSdj.js} +4 -4
  171. package/web/assets/{phone-telephone.svg-CoyP7Dxe.js → phone-telephone.svg-Cp49xUlu.js} +1 -1
  172. package/web/assets/{plus-D3SKHEeC.js → plus-CtAUJUu2.js} +6 -6
  173. package/web/assets/process.store-DkO9CCEs.js +1 -0
  174. package/web/assets/{programming-bug.svg-BnJMsv8E.js → programming-bug.svg-DJCw-G7S.js} +1 -1
  175. package/web/assets/{programming-cloud.svg-CQYYCVwK.js → programming-cloud.svg-Dawch6nl.js} +1 -1
  176. package/web/assets/{programming-computer-database-server.svg-B8efwNUW.js → programming-computer-database-server.svg-wM3gh9nl.js} +1 -1
  177. package/web/assets/{programming-computer-database.svg-DNTDIyeu.js → programming-computer-database.svg-B-CBQ4FN.js} +1 -1
  178. package/web/assets/{programming-module-four-layout.svg-CDOGccyo.js → programming-module-four-layout.svg-B8K3IYUP.js} +1 -1
  179. package/web/assets/{programming-module-three.svg-Bge3Bi-7.js → programming-module-three.svg-BVHpxetj.js} +1 -1
  180. package/web/assets/{programming-module.svg-CzqYRXSb.js → programming-module.svg-CXID9wrd.js} +1 -1
  181. package/web/assets/{programming-script-code.svg-C5p0kA7v.js → programming-script-code.svg-lSz-9Xfp.js} +1 -1
  182. package/web/assets/{python-UpylI8e4.js → python-DL0o4ZFa.js} +1 -1
  183. package/web/assets/{razor-aZxkyrH6.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-BOiI53kz.js → settings.store-xvHd8xGI.js} +1 -1
  187. package/web/assets/{shopping-cart.svg-CdyNNU8T.js → shopping-cart.svg-TZA8HEQB.js} +1 -1
  188. package/web/assets/{shopping-gift-present.svg-oYuij_wi.js → shopping-gift-present.svg-CRGiXfBk.js} +1 -1
  189. package/web/assets/{shopping-shipping-box-parcel-package.svg-BHHfdC-w.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-C0e6s3a3.js → src-Dy-bHT95.js} +12 -12
  192. package/web/assets/tabpanel-BP3edJSv.js +150 -0
  193. package/web/assets/{tag-new-circle.svg-De8jHJc3.js → tag-new-circle.svg-CsOt9-U5.js} +1 -1
  194. package/web/assets/{toggleswitch-7N_rrZCL.js → toggleswitch-B49OhBFD.js} +2 -2
  195. package/web/assets/{travel-map-earth-globe.svg-DDerkPaO.js → travel-map-earth-globe.svg-BTR5ahca.js} +1 -1
  196. package/web/assets/trpc-hOuUVUMw.js +1 -0
  197. package/web/assets/{tsMode-Bm3dVodi.js → tsMode-BUrbWgsu.js} +5 -5
  198. package/web/assets/{typescript-Cw6KoAtM.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-B4VXAHsj.css → useCloudOrg-CDe4gvZH.css} +1 -1
  202. package/web/assets/{useProjectCatalog-O62WCLX4.js → useProjectCatalog-C2BH8Bnr.js} +1 -1
  203. package/web/assets/{xml-D4uEa569.js → xml-4CdtJV3Y.js} +1 -1
  204. package/web/assets/{yaml-y9iDkUjP.js → yaml-Cj7LK0oJ.js} +1 -1
  205. package/web/index.html +1 -1
  206. package/agent-manager-452D7XW5.js +0 -7
  207. package/chunk-4665DVGB.js.map +0 -1
  208. package/src-6MVU3BDZ.js.map +0 -1
  209. package/web/assets/AgentScalarChatInterface.vue-82XG5NKb.js +0 -13
  210. package/web/assets/AgentTerminalPage-BwQhPdyw.js +0 -1
  211. package/web/assets/AiChatPage-BRnRhmhg.js +0 -1
  212. package/web/assets/AppLayout-BZrNmMDL.js +0 -1
  213. package/web/assets/AuditPage-Dds0912d.js +0 -1
  214. package/web/assets/CloudAccountPage-49RVZf9h.js +0 -1
  215. package/web/assets/CloudAccountPage-CVAMkCOF.css +0 -1
  216. package/web/assets/CloudAccountPage-KipqXtVJ.js +0 -1
  217. package/web/assets/CloudMessagingPage-H43XvI3d.js +0 -2
  218. package/web/assets/DashboardPage-D9kDTU7y.js +0 -1
  219. package/web/assets/EnvironmentForm-B_gviXu_.js +0 -108
  220. package/web/assets/EnvironmentFormPage-BHrfU03w.js +0 -1
  221. package/web/assets/EnvironmentListPage-CW3FpI79.js +0 -1
  222. package/web/assets/EnvironmentSelector-B9SZvB3I.css +0 -1
  223. package/web/assets/EnvironmentSelector-C49ocjBM.js +0 -1
  224. package/web/assets/KanbanBoardPage-DUgJRQK7.js +0 -4
  225. package/web/assets/KanbanListPage-D8LIr7sZ.js +0 -1
  226. package/web/assets/LaunchProjectPage-BBSKTUnF.js +0 -1
  227. package/web/assets/LaunchServicesPage-vJU87PHP.js +0 -1
  228. package/web/assets/LogViewer-D5tSUFpZ.js +0 -3
  229. package/web/assets/ProcessDetailPage-CzGUsQM9.css +0 -1
  230. package/web/assets/ProcessDetailPage-DqGqF1Eh.js +0 -1
  231. package/web/assets/ProjectDetailPage-AFuj4C-h.js +0 -1
  232. package/web/assets/ProjectDetailPage-hcU-rKhJ.css +0 -1
  233. package/web/assets/ProjectListPage-C1T_1Y0g.js +0 -1
  234. package/web/assets/RandomJobTestPage-C760ZS5-.js +0 -2
  235. package/web/assets/ScenarioEditorPage-DFYcNzHU.js +0 -14
  236. package/web/assets/SendToChatDialog-D4kPRj-6.js +0 -1
  237. package/web/assets/ServiceControlsBar-D_7_q5e3.js +0 -1
  238. package/web/assets/ServiceDetailPage-H8pJ6Dke.js +0 -2
  239. package/web/assets/ServiceFormPage-DSU5wiDe.js +0 -1
  240. package/web/assets/SettingsPage-Bo6jEumX.js +0 -2062
  241. package/web/assets/UnlockPage-B7oIw1Ep.js +0 -1
  242. package/web/assets/VariablesTable-DREhc-Vd.js +0 -1
  243. package/web/assets/VaultMigrationPage-BeCx1t1u.js +0 -1
  244. package/web/assets/VersionBadge-DZw8ffTr.js +0 -1
  245. package/web/assets/WikiPage-BYOLAA15.js +0 -1
  246. package/web/assets/WikiView-CA-fg4Xk.js +0 -1
  247. package/web/assets/add-scalar-classes-wjDwsWcH.js +0 -387
  248. package/web/assets/auth-errors-BG58jeF5.js +0 -1
  249. package/web/assets/autocomplete-DFFxoeg7.js +0 -308
  250. package/web/assets/cloud-chat.store-BAYcx61I.js +0 -1
  251. package/web/assets/column-sIpdz9_l.js +0 -907
  252. package/web/assets/interface-content-folder.svg-BDo_OJHD.js +0 -1
  253. package/web/assets/modal-COpDqWq9.js +0 -5
  254. package/web/assets/modal-CqJ-XbwV.js +0 -1
  255. package/web/assets/process.store-dEVcW1iy.js +0 -1
  256. package/web/assets/router-DgsjS0ri.js +0 -1
  257. package/web/assets/settings-scope-BXA0BjX7.js +0 -1
  258. package/web/assets/src-BscSu0ry.js +0 -1
  259. package/web/assets/tabpanel-CEUw3G7r.js +0 -150
  260. package/web/assets/trpc-Bv0dS7QZ.js +0 -1
  261. package/web/assets/useAiChatDrawer-D9n1q5jE.js +0 -1
  262. package/web/assets/useCloudOrg-RH2schZM.js +0 -93
  263. /package/{agent-manager-452D7XW5.js.map → agent-manager-4EKOSJBR.js.map} +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
@@ -2706,7 +2716,7 @@ var MySQLLogSource = class extends EventEmitter4 {
2706
2716
  } catch {
2707
2717
  }
2708
2718
  this.connection = null;
2709
- await new Promise((resolve) => setTimeout(resolve, delayMs));
2719
+ await new Promise((resolve2) => setTimeout(resolve2, delayMs));
2710
2720
  if (this.stopped) return;
2711
2721
  try {
2712
2722
  await this.connect();
@@ -2754,14 +2764,14 @@ import pidusage from "pidusage";
2754
2764
  import { execFile } from "child_process";
2755
2765
  import { EventEmitter as EventEmitter5 } from "events";
2756
2766
  async function getDockerStats(containerName) {
2757
- return new Promise((resolve) => {
2767
+ return new Promise((resolve2) => {
2758
2768
  execFile(
2759
2769
  "docker",
2760
2770
  ["stats", "--no-stream", "--format", "{{json .}}", containerName],
2761
2771
  { timeout: 5e3 },
2762
2772
  (err, stdout) => {
2763
2773
  if (err || !stdout.trim()) {
2764
- resolve(null);
2774
+ resolve2(null);
2765
2775
  return;
2766
2776
  }
2767
2777
  try {
@@ -2769,9 +2779,9 @@ async function getDockerStats(containerName) {
2769
2779
  const cpu = Number.parseFloat(data.CPUPerc);
2770
2780
  const memStr = data.MemUsage.split("/")[0].trim();
2771
2781
  const memory = parseMemBytes(memStr);
2772
- resolve({ cpu: Number.isNaN(cpu) ? 0 : cpu, memory });
2782
+ resolve2({ cpu: Number.isNaN(cpu) ? 0 : cpu, memory });
2773
2783
  } catch {
2774
- resolve(null);
2784
+ resolve2(null);
2775
2785
  }
2776
2786
  }
2777
2787
  );
@@ -3120,10 +3130,10 @@ var TraefikManager = class {
3120
3130
  clearTimeout(this.debounceTimer);
3121
3131
  this.debounceTimer = null;
3122
3132
  }
3123
- await new Promise((resolve) => {
3124
- execFile2("docker", ["rm", "-f", "runeya-traefik"], { timeout: 1e4 }, () => resolve());
3133
+ await new Promise((resolve2) => {
3134
+ execFile2("docker", ["rm", "-f", "runeya-traefik"], { timeout: 1e4 }, () => resolve2());
3125
3135
  });
3126
- await new Promise((resolve) => setTimeout(resolve, 500));
3136
+ await new Promise((resolve2) => setTimeout(resolve2, 500));
3127
3137
  }
3128
3138
  async getConfigFiles() {
3129
3139
  const [staticContent, dynamicContent] = await Promise.all([
@@ -3162,13 +3172,13 @@ var TraefikManager = class {
3162
3172
  return result;
3163
3173
  }
3164
3174
  async getLogs(lines = 100) {
3165
- return new Promise((resolve) => {
3175
+ return new Promise((resolve2) => {
3166
3176
  execFile2("docker", ["logs", "--tail", String(lines), "runeya-traefik"], { timeout: 1e4 }, (err, stdout, stderr) => {
3167
3177
  if (err) {
3168
- resolve("");
3178
+ resolve2("");
3169
3179
  return;
3170
3180
  }
3171
- resolve((stdout + stderr).trim());
3181
+ resolve2((stdout + stderr).trim());
3172
3182
  });
3173
3183
  });
3174
3184
  }
@@ -3213,10 +3223,10 @@ var TraefikManager = class {
3213
3223
  async getStatus() {
3214
3224
  let dockerAvailable = false;
3215
3225
  try {
3216
- await new Promise((resolve, reject) => {
3226
+ await new Promise((resolve2, reject) => {
3217
3227
  execFile2("docker", ["info", "--format", "{{.ServerVersion}}"], { timeout: 5e3 }, (err) => {
3218
3228
  if (err) reject(err instanceof Error ? err : new Error("docker info failed"));
3219
- else resolve();
3229
+ else resolve2();
3220
3230
  });
3221
3231
  });
3222
3232
  dockerAvailable = true;
@@ -3233,10 +3243,10 @@ var TraefikManager = class {
3233
3243
  let containerRunning = false;
3234
3244
  if (dockerAvailable) {
3235
3245
  try {
3236
- const output = await new Promise((resolve, reject) => {
3246
+ const output = await new Promise((resolve2, reject) => {
3237
3247
  execFile2("docker", ["inspect", "--format", "{{.State.Running}}", "runeya-traefik"], { timeout: 5e3 }, (err, stdout) => {
3238
3248
  if (err) reject(err instanceof Error ? err : new Error("docker inspect failed"));
3239
- else resolve(stdout.trim());
3249
+ else resolve2(stdout.trim());
3240
3250
  });
3241
3251
  });
3242
3252
  containerRunning = output === "true";
@@ -3514,6 +3524,19 @@ var EnvSchema = z21.object({
3514
3524
  var env = EnvSchema.parse(process.env);
3515
3525
 
3516
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
+ }
3517
3540
  function getLanIp() {
3518
3541
  const nets = networkInterfaces();
3519
3542
  for (const name of Object.keys(nets)) {
@@ -3779,7 +3802,7 @@ var ProcessManager = class extends EventEmitter7 {
3779
3802
  const runnerConfig = {
3780
3803
  command: cmd.command,
3781
3804
  shell: cmd.shell ?? false,
3782
- cwd: cmd.cwd || proc.serviceConfig.cwd,
3805
+ cwd: anchorCommandCwd(cmd.cwd, proc.serviceConfig),
3783
3806
  env: mergedServiceEnv
3784
3807
  };
3785
3808
  let runnerProcess;
@@ -3965,7 +3988,7 @@ var ProcessManager = class extends EventEmitter7 {
3965
3988
  * Centralises runner selection so executeShortcut / executeAdHocCommand share the logic. */
3966
3989
  launchOneOffCommand(proc, command, cwd, env2) {
3967
3990
  const serviceConfig = proc.serviceConfig;
3968
- const effectiveCwd = cwd || serviceConfig.resolvedCwd || serviceConfig.cwd;
3991
+ const effectiveCwd = anchorCommandCwd(cwd, serviceConfig);
3969
3992
  if (serviceConfig.runner === "docker" && serviceConfig.dockerConfig) {
3970
3993
  const dockerRunner = this.runners.get("docker");
3971
3994
  if (!dockerRunner) throw new Error("Docker runner not available");
@@ -4011,7 +4034,7 @@ var ProcessManager = class extends EventEmitter7 {
4011
4034
  proc.kill("SIGTERM");
4012
4035
  void Promise.race([
4013
4036
  proc.exitPromise,
4014
- new Promise((resolve) => setTimeout(resolve, 3e3))
4037
+ new Promise((resolve2) => setTimeout(resolve2, 3e3))
4015
4038
  ]).then((result) => {
4016
4039
  if (result === void 0) proc.kill("SIGKILL");
4017
4040
  });
@@ -4027,7 +4050,7 @@ var ProcessManager = class extends EventEmitter7 {
4027
4050
  this.consoleLogSource.addSystemLog(processId, `[shortcut] Running "${shortcutName}": ${shortcut.command}`, "info");
4028
4051
  const serviceConfig = proc.serviceConfig;
4029
4052
  const env2 = resolveEnv(serviceConfig.env);
4030
- const effectiveCwd = shortcut.cwd || serviceConfig.cwd;
4053
+ const effectiveCwd = anchorCommandCwd(shortcut.cwd, serviceConfig);
4031
4054
  if (this.warnUnresolvedVars(processId, env2, { "shortcut cwd": effectiveCwd })) {
4032
4055
  this.consoleLogSource.addSystemLog(processId, `Cannot run shortcut "${shortcutName}": unresolved variables (see above)`, "error", { id: randomUUID3(), type: "command-fail", header: shortcutName, state: "self" });
4033
4056
  return { exitCode: 1 };
@@ -4062,7 +4085,7 @@ var ProcessManager = class extends EventEmitter7 {
4062
4085
  this.consoleLogSource.setJSParsers(processId, jsParsers);
4063
4086
  const serviceConfig = proc.serviceConfig;
4064
4087
  const env2 = resolveEnv(serviceConfig.env);
4065
- const effectiveCwd = cwd || serviceConfig.cwd;
4088
+ const effectiveCwd = anchorCommandCwd(cwd, serviceConfig);
4066
4089
  if (this.warnUnresolvedVars(processId, env2, { cwd: effectiveCwd })) {
4067
4090
  this.consoleLogSource.addSystemLog(processId, `Cannot run command: unresolved variables (see above)`, "error", { id: randomUUID3(), type: "command-fail", header: command, state: "self" });
4068
4091
  return { exitCode: 1 };
@@ -4129,14 +4152,14 @@ var ProcessManager = class extends EventEmitter7 {
4129
4152
  sharedProc.kill("SIGTERM");
4130
4153
  await Promise.race([
4131
4154
  sharedProc.exitPromise,
4132
- new Promise((resolve) => setTimeout(resolve, graceMs))
4155
+ new Promise((resolve2) => setTimeout(resolve2, graceMs))
4133
4156
  ]);
4134
4157
  const activeExecs = proc.commandProcesses.filter((cp) => cp.runnerProcess);
4135
4158
  await Promise.all(
4136
4159
  activeExecs.map(async (cp) => {
4137
4160
  await Promise.race([
4138
4161
  cp.runnerProcess.exitPromise,
4139
- new Promise((resolve) => setTimeout(resolve, 2e3))
4162
+ new Promise((resolve2) => setTimeout(resolve2, 2e3))
4140
4163
  ]);
4141
4164
  cp.runnerProcess = null;
4142
4165
  })
@@ -4151,7 +4174,7 @@ var ProcessManager = class extends EventEmitter7 {
4151
4174
  activeProcesses.map(async (cp) => {
4152
4175
  const exited = await Promise.race([
4153
4176
  cp.runnerProcess.exitPromise.then(() => true),
4154
- new Promise((resolve) => setTimeout(() => resolve(false), graceMs))
4177
+ new Promise((resolve2) => setTimeout(() => resolve2(false), graceMs))
4155
4178
  ]);
4156
4179
  if (!exited && cp.runnerProcess) {
4157
4180
  cp.runnerProcess.kill("SIGKILL");
@@ -4247,7 +4270,8 @@ var ProcessManager = class extends EventEmitter7 {
4247
4270
  startedAt: proc.startedAt,
4248
4271
  restartCount: proc.restartCount,
4249
4272
  uptime,
4250
- healthStatus
4273
+ healthStatus,
4274
+ cwd: effectiveProcessCwd(proc.serviceConfig)
4251
4275
  };
4252
4276
  }
4253
4277
  emitStatus(processId) {
@@ -4356,15 +4380,15 @@ var processRouter = router({
4356
4380
  /** Subscribe to real-time log stream (yields batches of ParsedLog[]) */
4357
4381
  onLog: protectedProcedure.input(z22.object({ processId: z22.string().max(128).optional() }).optional()).subscription(async function* ({ input }) {
4358
4382
  const queue = [];
4359
- let resolve = null;
4383
+ let resolve2 = null;
4360
4384
  const handler = (batch) => {
4361
4385
  const filtered = input?.processId ? batch.filter((log) => log.processId === input.processId) : batch;
4362
4386
  if (filtered.length === 0) return;
4363
4387
  if (queue.length >= SUBSCRIPTION_QUEUE_MAX) queue.shift();
4364
4388
  queue.push(filtered);
4365
- if (resolve) {
4366
- resolve();
4367
- resolve = null;
4389
+ if (resolve2) {
4390
+ resolve2();
4391
+ resolve2 = null;
4368
4392
  }
4369
4393
  };
4370
4394
  processManager.on("logs", handler);
@@ -4374,7 +4398,7 @@ var processRouter = router({
4374
4398
  yield queue.shift();
4375
4399
  } else {
4376
4400
  await new Promise((r) => {
4377
- resolve = r;
4401
+ resolve2 = r;
4378
4402
  });
4379
4403
  }
4380
4404
  }
@@ -4386,15 +4410,15 @@ var processRouter = router({
4386
4410
  onStatus: protectedProcedure.input(z22.object({ processId: z22.string().max(128).optional() }).optional()).subscription(async function* ({ input }) {
4387
4411
  console.debug("[agent] onStatus subscription started", input?.processId ? `for process ${input.processId}` : "(all processes)");
4388
4412
  const queue = [];
4389
- let resolve = null;
4413
+ let resolve2 = null;
4390
4414
  const handler = (status) => {
4391
4415
  const entry = status;
4392
4416
  if (!input?.processId || entry.id === input.processId) {
4393
4417
  if (queue.length >= SUBSCRIPTION_QUEUE_MAX) queue.shift();
4394
4418
  queue.push(status);
4395
- if (resolve) {
4396
- resolve();
4397
- resolve = null;
4419
+ if (resolve2) {
4420
+ resolve2();
4421
+ resolve2 = null;
4398
4422
  }
4399
4423
  }
4400
4424
  };
@@ -4405,7 +4429,7 @@ var processRouter = router({
4405
4429
  yield queue.shift();
4406
4430
  } else {
4407
4431
  await new Promise((r) => {
4408
- resolve = r;
4432
+ resolve2 = r;
4409
4433
  });
4410
4434
  }
4411
4435
  }
@@ -4417,15 +4441,15 @@ var processRouter = router({
4417
4441
  /** Subscribe to real-time health status changes */
4418
4442
  onHealth: protectedProcedure.input(z22.object({ processId: z22.string().max(128).optional() }).optional()).subscription(async function* ({ input }) {
4419
4443
  const queue = [];
4420
- let resolve = null;
4444
+ let resolve2 = null;
4421
4445
  const handler = (healthData) => {
4422
4446
  const entry = healthData;
4423
4447
  if (!input?.processId || entry.processId === input.processId) {
4424
4448
  if (queue.length >= SUBSCRIPTION_QUEUE_MAX) queue.shift();
4425
4449
  queue.push(healthData);
4426
- if (resolve) {
4427
- resolve();
4428
- resolve = null;
4450
+ if (resolve2) {
4451
+ resolve2();
4452
+ resolve2 = null;
4429
4453
  }
4430
4454
  }
4431
4455
  };
@@ -4436,7 +4460,7 @@ var processRouter = router({
4436
4460
  yield queue.shift();
4437
4461
  } else {
4438
4462
  await new Promise((r) => {
4439
- resolve = r;
4463
+ resolve2 = r;
4440
4464
  });
4441
4465
  }
4442
4466
  }
@@ -4447,15 +4471,15 @@ var processRouter = router({
4447
4471
  /** Subscribe to real-time metrics */
4448
4472
  onMetrics: protectedProcedure.input(z22.object({ processId: z22.string().max(128).optional() }).optional()).subscription(async function* ({ input }) {
4449
4473
  const queue = [];
4450
- let resolve = null;
4474
+ let resolve2 = null;
4451
4475
  const handler = (metrics) => {
4452
4476
  const entry = metrics;
4453
4477
  if (!input?.processId || entry.processId === input.processId) {
4454
4478
  if (queue.length >= SUBSCRIPTION_QUEUE_MAX) queue.shift();
4455
4479
  queue.push(metrics);
4456
- if (resolve) {
4457
- resolve();
4458
- resolve = null;
4480
+ if (resolve2) {
4481
+ resolve2();
4482
+ resolve2 = null;
4459
4483
  }
4460
4484
  }
4461
4485
  };
@@ -4466,7 +4490,7 @@ var processRouter = router({
4466
4490
  yield queue.shift();
4467
4491
  } else {
4468
4492
  await new Promise((r) => {
4469
- resolve = r;
4493
+ resolve2 = r;
4470
4494
  });
4471
4495
  }
4472
4496
  }
@@ -4607,20 +4631,20 @@ var terminalRouter = router({
4607
4631
  throw new TRPCError3({ code: "NOT_FOUND", message: `Terminal session ${input.sessionId} not found` });
4608
4632
  }
4609
4633
  const queue = [];
4610
- let resolve = null;
4634
+ let resolve2 = null;
4611
4635
  let done = false;
4612
4636
  const onData = (data) => {
4613
4637
  queue.push(data);
4614
- if (resolve) {
4615
- resolve();
4616
- resolve = null;
4638
+ if (resolve2) {
4639
+ resolve2();
4640
+ resolve2 = null;
4617
4641
  }
4618
4642
  };
4619
4643
  const onExit = () => {
4620
4644
  done = true;
4621
- if (resolve) {
4622
- resolve();
4623
- resolve = null;
4645
+ if (resolve2) {
4646
+ resolve2();
4647
+ resolve2 = null;
4624
4648
  }
4625
4649
  };
4626
4650
  emitter.on("data", onData);
@@ -4631,7 +4655,7 @@ var terminalRouter = router({
4631
4655
  yield queue.shift();
4632
4656
  } else {
4633
4657
  await new Promise((r) => {
4634
- resolve = r;
4658
+ resolve2 = r;
4635
4659
  });
4636
4660
  }
4637
4661
  }
@@ -4834,15 +4858,15 @@ var gitRouter = router({
4834
4858
  const gitDir = (await git(["rev-parse", "--git-dir"], cwd, true)).trim();
4835
4859
  const absGitDir = resolvePath(cwd, gitDir);
4836
4860
  const queue = [];
4837
- let resolve = null;
4861
+ let resolve2 = null;
4838
4862
  let debounceTimer = null;
4839
4863
  const onFsChange = () => {
4840
4864
  if (debounceTimer) clearTimeout(debounceTimer);
4841
4865
  debounceTimer = setTimeout(() => {
4842
4866
  queue.push("changed");
4843
- if (resolve) {
4844
- resolve();
4845
- resolve = null;
4867
+ if (resolve2) {
4868
+ resolve2();
4869
+ resolve2 = null;
4846
4870
  }
4847
4871
  }, 500);
4848
4872
  };
@@ -4868,7 +4892,7 @@ var gitRouter = router({
4868
4892
  }
4869
4893
  } else {
4870
4894
  await new Promise((r) => {
4871
- resolve = r;
4895
+ resolve2 = r;
4872
4896
  });
4873
4897
  }
4874
4898
  }
@@ -5303,19 +5327,19 @@ var AiSpawnManager = class {
5303
5327
  const entry = this.spawns.get(spawnId);
5304
5328
  if (!entry) throw new Error(`AI spawn ${spawnId} not found`);
5305
5329
  let offset = fromOffset;
5306
- let resolve = null;
5330
+ let resolve2 = null;
5307
5331
  let done = false;
5308
5332
  const onChunk = () => {
5309
- if (resolve) {
5310
- resolve();
5311
- resolve = null;
5333
+ if (resolve2) {
5334
+ resolve2();
5335
+ resolve2 = null;
5312
5336
  }
5313
5337
  };
5314
5338
  const onDone = () => {
5315
5339
  done = true;
5316
- if (resolve) {
5317
- resolve();
5318
- resolve = null;
5340
+ if (resolve2) {
5341
+ resolve2();
5342
+ resolve2 = null;
5319
5343
  }
5320
5344
  };
5321
5345
  entry.emitter.on("chunk", onChunk);
@@ -5334,7 +5358,7 @@ var AiSpawnManager = class {
5334
5358
  }
5335
5359
  if (done && offset >= entry.buffer.length) break;
5336
5360
  await new Promise((r) => {
5337
- resolve = r;
5361
+ resolve2 = r;
5338
5362
  });
5339
5363
  }
5340
5364
  } finally {
@@ -5593,12 +5617,12 @@ var CodexAppServerManager = class extends EventEmitter10 {
5593
5617
  throw new Error("codex app-server not connected");
5594
5618
  }
5595
5619
  const id = this.nextId++;
5596
- return new Promise((resolve, reject) => {
5620
+ return new Promise((resolve2, reject) => {
5597
5621
  const timer = setTimeout(() => {
5598
5622
  this.pending.delete(id);
5599
5623
  reject(new Error(`Request ${method} (id=${id}) timed out`));
5600
5624
  }, REQUEST_TIMEOUT_MS);
5601
- this.pending.set(id, { resolve, reject, timer });
5625
+ this.pending.set(id, { resolve: resolve2, reject, timer });
5602
5626
  this.writeLine({ jsonrpc: "2.0", method, id, params });
5603
5627
  });
5604
5628
  }
@@ -5722,12 +5746,12 @@ function extForMime(mime) {
5722
5746
  return MIME_TO_EXT[mime.toLowerCase()] ?? "png";
5723
5747
  }
5724
5748
  function runCmd(cmd, args, stdin, timeoutMs = 5e3) {
5725
- return new Promise((resolve) => {
5749
+ return new Promise((resolve2) => {
5726
5750
  let settled = false;
5727
5751
  const settle = (code, stderr) => {
5728
5752
  if (settled) return;
5729
5753
  settled = true;
5730
- resolve({ code, stderr });
5754
+ resolve2({ code, stderr });
5731
5755
  };
5732
5756
  try {
5733
5757
  const child = spawn7(cmd, args, { stdio: ["pipe", "ignore", "pipe"] });
@@ -5929,16 +5953,16 @@ var aiRouter = router({
5929
5953
  }).default({})).subscription(async function* ({ input, signal }) {
5930
5954
  await codexAppServerManager.ensureConnected();
5931
5955
  const queue = [];
5932
- let resolve = null;
5956
+ let resolve2 = null;
5933
5957
  const unsub = codexAppServerManager.onNotification((method, params) => {
5934
5958
  if (input.threadId) {
5935
5959
  const notifThreadId = params["threadId"] ?? params["turn"]?.["threadId"];
5936
5960
  if (notifThreadId && notifThreadId !== input.threadId) return;
5937
5961
  }
5938
5962
  queue.push({ method, params });
5939
- if (resolve) {
5940
- resolve();
5941
- resolve = null;
5963
+ if (resolve2) {
5964
+ resolve2();
5965
+ resolve2 = null;
5942
5966
  }
5943
5967
  });
5944
5968
  try {
@@ -5947,7 +5971,7 @@ var aiRouter = router({
5947
5971
  yield queue.shift();
5948
5972
  }
5949
5973
  await new Promise((r) => {
5950
- resolve = r;
5974
+ resolve2 = r;
5951
5975
  });
5952
5976
  }
5953
5977
  } finally {
@@ -6262,24 +6286,34 @@ function createAgent(opts) {
6262
6286
  await traefikManager.stop();
6263
6287
  await processManager.shutdownAll();
6264
6288
  await Promise.race([
6265
- new Promise((resolve) => healthWss.close(() => resolve())),
6266
- new Promise((resolve) => setTimeout(resolve, 5e3))
6289
+ new Promise((resolve2) => healthWss.close(() => resolve2())),
6290
+ new Promise((resolve2) => setTimeout(resolve2, 5e3))
6267
6291
  ]);
6268
6292
  await Promise.race([
6269
- new Promise((resolve) => trpcWss.close(() => resolve())),
6270
- new Promise((resolve) => setTimeout(resolve, 5e3))
6293
+ new Promise((resolve2) => trpcWss.close(() => resolve2())),
6294
+ new Promise((resolve2) => setTimeout(resolve2, 5e3))
6271
6295
  ]);
6272
6296
  await Promise.race([
6273
- new Promise((resolve) => server.close(() => resolve())),
6274
- new Promise((resolve) => setTimeout(resolve, 5e3))
6297
+ new Promise((resolve2) => server.close(() => resolve2())),
6298
+ new Promise((resolve2) => setTimeout(resolve2, 5e3))
6275
6299
  ]);
6276
6300
  };
6277
6301
  return { app, server, trpcWss, healthWss, passphraseHex, shutdown };
6278
6302
  }
6279
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
+
6280
6314
  // src/index.ts
6281
6315
  function listenWithRetry(server, port, host, maxRetries = 20, delay = 500) {
6282
- return new Promise((resolve, reject) => {
6316
+ return new Promise((resolve2, reject) => {
6283
6317
  let attempts = 0;
6284
6318
  const tryListen = () => {
6285
6319
  const onError = (err) => {
@@ -6295,7 +6329,7 @@ function listenWithRetry(server, port, host, maxRetries = 20, delay = 500) {
6295
6329
  server.once("error", onError);
6296
6330
  server.listen(port, host, () => {
6297
6331
  server.removeListener("error", onError);
6298
- resolve();
6332
+ resolve2();
6299
6333
  });
6300
6334
  };
6301
6335
  tryListen();
@@ -6310,6 +6344,7 @@ process.on("uncaughtException", (err) => {
6310
6344
  process.exit(1);
6311
6345
  });
6312
6346
  async function main() {
6347
+ ensureNodeBinOnPath();
6313
6348
  const { server, shutdown, passphraseHex } = createAgent({
6314
6349
  passphraseHex: env.PASSPHRASE_OVERRIDE
6315
6350
  });