@runeya/runeya 2.0.101 → 2.0.102

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 (208) hide show
  1. package/agent/index.js +170 -161
  2. package/agent/index.js.map +1 -1
  3. package/{chat-RWOZHXBX.js → chat-OXRRBDB3.js} +4 -3
  4. package/{node-B4T3JMM3.js → chunk-B7MABGQN.js} +51 -4
  5. package/chunk-B7MABGQN.js.map +1 -0
  6. package/{chunk-SP3IC2TR.js → chunk-BDVQB5RK.js} +22 -206
  7. package/chunk-BDVQB5RK.js.map +1 -0
  8. package/{chunk-TNBMCKQX.js → chunk-PSTMO7EE.js} +211 -10
  9. package/chunk-PSTMO7EE.js.map +1 -0
  10. package/{companion-QNW7XA6X.js → companion-JQGNL4U7.js} +4 -2
  11. package/index.js +2 -2
  12. package/node-ILM6MV56.js +21 -0
  13. package/node-ILM6MV56.js.map +1 -0
  14. package/package.json +1 -1
  15. package/{src-PF23DMAB.js → src-HZ2XO6TV.js} +15 -9
  16. package/src-HZ2XO6TV.js.map +1 -0
  17. package/web/assets/{AgentScalarChatInterface.vue-CpCuXAXu.js → AgentScalarChatInterface.vue-CxmPaQaj.js} +1 -1
  18. package/web/assets/{AgentTerminalPage-D8nMHtlG.js → AgentTerminalPage-Bbx4zyQY.js} +1 -1
  19. package/web/assets/AiChatPage-GPPQggxZ.js +1 -0
  20. package/web/assets/{AppLayout-Dq-1shm9.js → AppLayout-BuwGeA1p.js} +1 -1
  21. package/web/assets/{AuditPage-BjeeYf1P.js → AuditPage-CDsJsoKA.js} +1 -1
  22. package/web/assets/{CloudAccountPage-BWcXUmZ3.js → CloudAccountPage-BCP8icYZ.js} +1 -1
  23. package/web/assets/CloudAccountPage-DzpS3_gc.js +1 -0
  24. package/web/assets/{CloudMessagingPage-CN-Hkvzf.js → CloudMessagingPage-01hLQzZ5.js} +1 -1
  25. package/web/assets/{DashboardPage-30yBzA9Y.js → DashboardPage-CKo-sf8A.js} +1 -1
  26. package/web/assets/{DirectoryPickerDialog-BsYJrTG4.js → DirectoryPickerDialog-B1tSWoOM.js} +1 -1
  27. package/web/assets/{EditorIcon-BXS2-yX1.js → EditorIcon-C9XKLhc7.js} +1 -1
  28. package/web/assets/{EnvironmentForm--y9zfCDt.js → EnvironmentForm-bS48MK8k.js} +1 -1
  29. package/web/assets/{EnvironmentFormPage-BETc1RGi.js → EnvironmentFormPage-9yxN-uI3.js} +1 -1
  30. package/web/assets/{EnvironmentListPage-CC0Sj1bx.js → EnvironmentListPage-BbfptXAU.js} +1 -1
  31. package/web/assets/{KanbanBoardPage-BdM0Op1M.js → KanbanBoardPage-BWkqTc1a.js} +3 -3
  32. package/web/assets/{KanbanListPage-DM7RJqhx.js → KanbanListPage-GxI1nlON.js} +1 -1
  33. package/web/assets/{LaunchProjectPage-DXqYYycZ.js → LaunchProjectPage-DKMoGXIC.js} +1 -1
  34. package/web/assets/{LaunchServicesPage-DCgwv5Pt.js → LaunchServicesPage-6dfxPQMB.js} +1 -1
  35. package/web/assets/{LogViewer-CFSU-CNC.js → LogViewer-DAzGy_T2.js} +1 -1
  36. package/web/assets/{OrgKeyPrompt-DQGyKSjb.js → OrgKeyPrompt-CQ087D4g.js} +1 -1
  37. package/web/assets/{ProcessControls-98bxX4aW.js → ProcessControls-D8uc4x7M.js} +1 -1
  38. package/web/assets/{ProcessDetailPage-Bb_3RScY.js → ProcessDetailPage-BPxLPGeh.js} +1 -1
  39. package/web/assets/{ProcessMetrics-fCxhXJgd.js → ProcessMetrics-CBPR5ozp.js} +1 -1
  40. package/web/assets/{ProjectDetailPage-BNmbecE0.js → ProjectDetailPage-CnZ_CpVU.js} +1 -1
  41. package/web/assets/{ProjectListPage-v0JqfkPz.js → ProjectListPage-D8Svc5e3.js} +1 -1
  42. package/web/assets/{RandomJobTestPage-D8q-EREO.js → RandomJobTestPage-BdEiEnSi.js} +1 -1
  43. package/web/assets/{ScenarioEditorPage-D3EuMMBn.js → ScenarioEditorPage-COrL715B.js} +1 -1
  44. package/web/assets/{SendToChatDialog-D-x5Pn3F.js → SendToChatDialog-D8YB5RM6.js} +1 -1
  45. package/web/assets/{ServiceControlsBar-7zKkkVxM.js → ServiceControlsBar-BKwvqgHw.js} +1 -1
  46. package/web/assets/{ServiceDetailPage-jzYoqD5E.js → ServiceDetailPage-BmPRfQN6.js} +1 -1
  47. package/web/assets/{ServiceFormPage-DjvOpPyE.js → ServiceFormPage-rVvnwWkb.js} +1 -1
  48. package/web/assets/{SettingsPage-DKCbzYvF.js → SettingsPage-DmQB6t1_.js} +4 -4
  49. package/web/assets/{UnlockPage-Cb43bz4p.js → UnlockPage-BgVF3XMO.js} +1 -1
  50. package/web/assets/{VariablesTable-C3syeLAl.js → VariablesTable-D4_sssPN.js} +1 -1
  51. package/web/assets/{VaultMigrationPage-Cp-au3d7.js → VaultMigrationPage-BRZJnfVg.js} +1 -1
  52. package/web/assets/{VersionBadge-CXX3tlKI.js → VersionBadge-Df7iJWvF.js} +1 -1
  53. package/web/assets/WikiPage-UkaH8BqR.js +1 -0
  54. package/web/assets/{WikiView-ClZwZbal.js → WikiView-BQqP4b9A.js} +1 -1
  55. package/web/assets/{add-scalar-classes-D3kr5_fn.js → add-scalar-classes-B9WxxjAm.js} +3 -3
  56. package/web/assets/{autocomplete-AALxfd-8.js → autocomplete-CtIxw1IN.js} +1 -1
  57. package/web/assets/{basic-shape-diamond.svg-C4c3Deqh.js → basic-shape-diamond.svg-BErisM9Y.js} +1 -1
  58. package/web/assets/{basic-shape-hexagon.svg-DrH21BpW.js → basic-shape-hexagon.svg-yC7RoYpa.js} +1 -1
  59. package/web/assets/{basic-shape-primary-circle-ellipse-round.svg-DqIU3Cmf.js → basic-shape-primary-circle-ellipse-round.svg-DRmanUIO.js} +1 -1
  60. package/web/assets/{basic-shape-primary-square-rectangle.svg-B3gDug6x.js → basic-shape-primary-square-rectangle.svg-DxuoouSj.js} +1 -1
  61. package/web/assets/{basic-shape-shield.svg-DdNJhKim.js → basic-shape-shield.svg-Cy_Frn-W.js} +1 -1
  62. package/web/assets/{browser-IqQiUipW.js → browser-Dj3qxJqB.js} +1 -1
  63. package/web/assets/{browser-DlwaOVwW.js → browser-h0mxWbci.js} +1 -1
  64. package/web/assets/{card-q6s0jc6V.js → card-nJdNoKgd.js} +1 -1
  65. package/web/assets/{checkbox-BP6nucdt.js → checkbox-CTw-YDe_.js} +1 -1
  66. package/web/assets/{chip-zQCMXVbm.js → chip-DwSSTlaC.js} +1 -1
  67. package/web/assets/{client-BC-o8Mr9.js → client-DYNnTrNm.js} +1 -1
  68. package/web/assets/{cloud-chat.store-387arRb5.js → cloud-chat.store-_qILavCL.js} +1 -1
  69. package/web/assets/{cloud-session-yejC3TfS.js → cloud-session-Ml5g5J1-.js} +1 -1
  70. package/web/assets/{column-ClizzdF5.js → column-Bc4-F_tF.js} +1 -1
  71. package/web/assets/{computer-device-desktop-monitor.svg-D28gfKH3.js → computer-device-desktop-monitor.svg-TLZAKrIM.js} +1 -1
  72. package/web/assets/{computer-device-desktop.svg-BierhytR.js → computer-device-desktop.svg-YRcL_Qxn.js} +1 -1
  73. package/web/assets/{computer-device-laptop.svg-Buh46ofO.js → computer-device-laptop.svg-CZUEbqra.js} +1 -1
  74. package/web/assets/{computer-device-mobile-phone-android-samsung-back.svg-DWgP259U.js → computer-device-mobile-phone-android-samsung-back.svg-CcsmeFGb.js} +1 -1
  75. package/web/assets/{computer-device-mobile-phone-android-samsung.svg-BlulLqG-.js → computer-device-mobile-phone-android-samsung.svg-CXjVvTBT.js} +1 -1
  76. package/web/assets/{computer-device-mobile-phone-iphone-x-back.svg-CwAgL_XU.js → computer-device-mobile-phone-iphone-x-back.svg-BQQXUoZZ.js} +1 -1
  77. package/web/assets/{computer-device-mobile-phone-iphone-x.svg-CGZk25hI.js → computer-device-mobile-phone-iphone-x.svg-CG8VbAP-.js} +1 -1
  78. package/web/assets/{computer-device-mobile-tablet-touch.svg-BW41ZuCA.js → computer-device-mobile-tablet-touch.svg-DDMUt0S4.js} +1 -1
  79. package/web/assets/{computer-device-mobile-tablet.svg-BXG04cxV.js → computer-device-mobile-tablet.svg-CBXtF47n.js} +1 -1
  80. package/web/assets/{computer-device-network-ethernet-cat6.svg-BKUwbZI3.js → computer-device-network-ethernet-cat6.svg-ObjUhwds.js} +1 -1
  81. package/web/assets/{computer-device-network-lan-www.svg-o3B9PLqQ.js → computer-device-network-lan-www.svg-NGYEGuba.js} +1 -1
  82. package/web/assets/{computer-device-network-wifi-connection.svg-CWz616VA.js → computer-device-network-wifi-connection.svg-CSnNdKGm.js} +1 -1
  83. package/web/assets/{computer-device-network-wifi-router.svg-C_Uxv8x_.js → computer-device-network-wifi-router.svg-CG7iHt_n.js} +1 -1
  84. package/web/assets/{cssMode-trDHQWjr.js → cssMode-Bclh_xI1.js} +1 -1
  85. package/web/assets/{divider-ER7evOrG.js → divider-Bb31-CFf.js} +1 -1
  86. package/web/assets/{docx-preview-DaBMrB0t.js → docx-preview-seOy1U3d.js} +1 -1
  87. package/web/assets/{ecology-science-erlenmeyer-flask.svg-TilKtHh2.js → ecology-science-erlenmeyer-flask.svg-B8emvJ_p.js} +1 -1
  88. package/web/assets/{fieldset-BK4Kpi7y.js → fieldset-Czp1Leik.js} +1 -1
  89. package/web/assets/{freemarker2-CPBy2gHY.js → freemarker2-D87vjb6-.js} +1 -1
  90. package/web/assets/{handlebars-sFv_MRko.js → handlebars-CjY4u0vA.js} +1 -1
  91. package/web/assets/{html-CvDf5B_n.js → html-C5pOjLe-.js} +1 -1
  92. package/web/assets/{htmlMode-CKhs4g6W.js → htmlMode-CunB4Bjm.js} +1 -1
  93. package/web/assets/{image-flash-lightning.svg-CkgasY6E.js → image-flash-lightning.svg-7dRFt_k5.js} +1 -1
  94. package/web/assets/{image-picture-flower.svg-Csk-7jkE.js → image-picture-flower.svg-ATG6mf9B.js} +1 -1
  95. package/web/assets/{index-CdghDQiK.js → index-BMuqGGPP.js} +35 -35
  96. package/web/assets/{index-BmdsyJ54.css → index-DWQLzWm4.css} +1 -1
  97. package/web/assets/{interface-alert-exclamation-diamond.svg-rH1JAriw.js → interface-alert-exclamation-diamond.svg-DuAtIVtT.js} +1 -1
  98. package/web/assets/{interface-alert-exclamation-triangle-warning.svg-BuZLBc2z.js → interface-alert-exclamation-triangle-warning.svg-Bg9-FBLP.js} +1 -1
  99. package/web/assets/{interface-alert-information-circle.svg-D6i0hGVN.js → interface-alert-information-circle.svg-C5etvhA3.js} +1 -1
  100. package/web/assets/{interface-award-crown.svg-7Wu9-VKO.js → interface-award-crown.svg-zuAFLs7y.js} +1 -1
  101. package/web/assets/{interface-bookmark.svg-CkLVcfT6.js → interface-bookmark-tag.svg-C3EKMHOq.js} +1 -1
  102. package/web/assets/{interface-bookmark-tag.svg-CPiMqQ77.js → interface-bookmark.svg-CfBz0NE3.js} +1 -1
  103. package/web/assets/{interface-calendar-date-one.svg-CFSXAk1b.js → interface-calendar-date-one.svg-DGYz2Prk.js} +1 -1
  104. package/web/assets/{interface-content-book-open-pages.svg-CC4c9Opt.js → interface-content-book-open-pages.svg-DGiJpxy1.js} +1 -1
  105. package/web/assets/{interface-content-book-page.svg-DxpVNOOq.js → interface-content-book-page.svg-DydK46P0.js} +1 -1
  106. package/web/assets/{interface-content-file.svg-CTaWk4im.js → interface-content-file.svg-D0pUOvAN.js} +1 -1
  107. package/web/assets/{interface-content-folder.svg-uVUoz9w-.js → interface-content-folder.svg-DiJ3Pfaa.js} +1 -1
  108. package/web/assets/interface-content-folder.svg-bb6GV0G0.js +1 -0
  109. package/web/assets/{interface-copy-clipboard.svg-BZIxAN3r.js → interface-copy-clipboard.svg-Dl3aROYy.js} +1 -1
  110. package/web/assets/{interface-edit-attachment.svg-DDzPxeNm.js → interface-edit-attachment.svg-UmDFMIt5.js} +1 -1
  111. package/web/assets/{interface-edit-binocular.svg-CZsgbA--.js → interface-edit-binocular.svg-Bp_8Pfer.js} +1 -1
  112. package/web/assets/{interface-edit-magic-wand.svg-qmz7k4l6.js → interface-edit-magic-wand.svg-B2A8V7mt.js} +1 -1
  113. package/web/assets/{interface-edit-tool-paint-roller.svg-DWE25KT2.js → interface-edit-tool-paint-roller.svg-DKjdsVsS.js} +1 -1
  114. package/web/assets/{interface-edit-tool-pencil.svg-DpK1C2tO.js → interface-edit-tool-pencil.svg-DuUybI4h.js} +1 -1
  115. package/web/assets/{interface-favorite-award.svg-CLHMWnh1.js → interface-favorite-award.svg-DHeTFQv8.js} +1 -1
  116. package/web/assets/{interface-favorite-flag.svg-CHGIAa-e.js → interface-favorite-flag.svg-kKzUSQkq.js} +1 -1
  117. package/web/assets/{interface-favorite-heart.svg-ymL9Qidy.js → interface-favorite-heart.svg-CqMgA2mm.js} +1 -1
  118. package/web/assets/{interface-favorite-star.svg-C4JDKdUr.js → interface-favorite-star.svg-CuLj8HV6.js} +1 -1
  119. package/web/assets/{interface-favorite-stars-sparkles.svg-DRixMNWJ.js → interface-favorite-stars-sparkles.svg-lFQTnGOR.js} +1 -1
  120. package/web/assets/{interface-hierarchy-flowchart.svg-DozpERYh.js → interface-hierarchy-flowchart.svg-CBbliSZq.js} +1 -1
  121. package/web/assets/{interface-home-house.svg-DpUEVY7I.js → interface-home-house.svg-BoFlxzre.js} +1 -1
  122. package/web/assets/{interface-hyperlink.svg-BI9P67ny.js → interface-hyperlink.svg-DcKs1Vcm.js} +1 -1
  123. package/web/assets/{interface-lighting-brightness.svg-B6WWS4kG.js → interface-lighting-brightness.svg-BSNKEyEg.js} +1 -1
  124. package/web/assets/{interface-lock-closed.svg-BBQ9XM_j.js → interface-lock-closed.svg-DSP-B9Ze.js} +1 -1
  125. package/web/assets/{interface-lock-open-unlock.svg-GkTO8GmV.js → interface-lock-open-unlock.svg-Bzg-oBHY.js} +1 -1
  126. package/web/assets/{interface-login-key.svg--v2ZJH3Q.js → interface-login-key.svg-DG61Q1lR.js} +1 -1
  127. package/web/assets/{interface-search.svg-CidqkApV.js → interface-search.svg-CODjdPxd.js} +1 -1
  128. package/web/assets/{interface-setting-cog.svg-DVZePAV3.js → interface-setting-cog.svg-CgiaBO1E.js} +1 -1
  129. package/web/assets/{interface-share-megaphone-bullhorn.svg-BFn_RMqc.js → interface-share-megaphone-bullhorn.svg-DM0PsgtH.js} +1 -1
  130. package/web/assets/{interface-share-rocket.svg-BvWSz0s2.js → interface-share-rocket.svg-B0geTs35.js} +1 -1
  131. package/web/assets/{interface-share-satellite.svg-tqNCB74Z.js → interface-share-satellite.svg-v9Q6QwAp.js} +1 -1
  132. package/web/assets/{interface-share-space-ship.svg-BmB824fS.js → interface-share-space-ship.svg-CLdqgzgZ.js} +1 -1
  133. package/web/assets/{interface-share.svg-CBZLrrF9.js → interface-share.svg-Cx3VhLuj.js} +1 -1
  134. package/web/assets/{interface-signal-square.svg-C088p9NZ.js → interface-signal-square.svg-By_pQLw8.js} +1 -1
  135. package/web/assets/{interface-time-clock-circle.svg-DubKvXWQ.js → interface-time-clock-circle.svg-Co3P-TM3.js} +1 -1
  136. package/web/assets/{interface-time-hour-glass.svg-6GComyAL.js → interface-time-hour-glass.svg-BYSOzVeD.js} +1 -1
  137. package/web/assets/{interface-users-multiple.svg-ja6OEhK_.js → interface-users-multiple.svg-moFZaev3.js} +1 -1
  138. package/web/assets/{interface-weather-moon.svg-BnfLL03K.js → interface-weather-moon.svg-DhyTNivv.js} +1 -1
  139. package/web/assets/{javascript-DMRS72rt.js → javascript-B1fZNcy6.js} +1 -1
  140. package/web/assets/{jsonMode--8QdTWx_.js → jsonMode-BxZ6OjkS.js} +1 -1
  141. package/web/assets/{liquid-OaGt-c-G.js → liquid-B58z0z3s.js} +1 -1
  142. package/web/assets/{lspLanguageFeatures-B6AaNVcR.js → lspLanguageFeatures-VksJLqpV.js} +1 -1
  143. package/web/assets/{mail-chat-bubble-square.svg-D0WUmEWq.js → mail-chat-bubble-square.svg-DU4TDENX.js} +1 -1
  144. package/web/assets/{mail-send-email-paper-airplane.svg--9oR8FgG.js → mail-send-email-paper-airplane.svg-jk90Puk3.js} +1 -1
  145. package/web/assets/{mail-send-envelope.svg-D7zYusS0.js → mail-send-envelope.svg-CrEPc3pm.js} +1 -1
  146. package/web/assets/{mdx-ChDcRRYd.js → mdx-l-DSKi30.js} +1 -1
  147. package/web/assets/{minus-lcNwQ3xr.js → minus-CjETE6Jb.js} +1 -1
  148. package/web/assets/{modal-TVJrDDCj.js → modal-D2-cZ2mf.js} +1 -1
  149. package/web/assets/modal-DmgVDXcS.js +1 -0
  150. package/web/assets/{money-cashier-receipt.svg-DzX-iwUT.js → money-cashier-receipt.svg-veUsiwvj.js} +1 -1
  151. package/web/assets/{money-currency-dollar-pay.svg-BFX_YTDc.js → money-currency-dollar-pay.svg-C5PNkn4j.js} +1 -1
  152. package/web/assets/{money-graph-arrow-increase.svg-C16MfYnR.js → money-graph-arrow-increase.svg-BkCcnTWU.js} +1 -1
  153. package/web/assets/{money-graph-bar-chart-increase.svg-BGG0yv-f.js → money-graph-bar-chart-increase.svg-BDiFSuKt.js} +1 -1
  154. package/web/assets/{multiselect-DcAoSG6S.js → multiselect-CDBfo7-0.js} +1 -1
  155. package/web/assets/{nature-ecology-leaf.svg-DiIaC6NX.js → nature-ecology-leaf.svg-CHyv9oDB.js} +1 -1
  156. package/web/assets/{password-BZlCIV8S.js → password-BYosjMhB.js} +1 -1
  157. package/web/assets/{phone-telephone.svg-udmmRh0q.js → phone-telephone.svg-Ce1dgyK9.js} +1 -1
  158. package/web/assets/{plus-CwmVHUki.js → plus-CVoE_j-e.js} +1 -1
  159. package/web/assets/process.store-BsCJ-VuI.js +1 -0
  160. package/web/assets/{programming-bug.svg-xc1RtL3c.js → programming-bug.svg-D87My2Ok.js} +1 -1
  161. package/web/assets/{programming-cloud.svg-axQALbJB.js → programming-cloud.svg-jUe8apKw.js} +1 -1
  162. package/web/assets/{programming-computer-database-server.svg-BVTqxH42.js → programming-computer-database-server.svg-D4etrIBX.js} +1 -1
  163. package/web/assets/{programming-computer-database.svg-B-CECn7V.js → programming-computer-database.svg-BtfkmLTx.js} +1 -1
  164. package/web/assets/{programming-module-four-layout.svg-icO9mDmE.js → programming-module-four-layout.svg-BkzsDKDq.js} +1 -1
  165. package/web/assets/{programming-module-three.svg-D2zllUcw.js → programming-module-three.svg-CpzTvjGS.js} +1 -1
  166. package/web/assets/{programming-module.svg-gs4eO8gC.js → programming-module.svg-wyvB3tSR.js} +1 -1
  167. package/web/assets/{programming-script-code.svg-BGMrS9je.js → programming-script-code.svg-Dek4khNq.js} +1 -1
  168. package/web/assets/{python-C1ZGhTnT.js → python-IeHrvMxp.js} +1 -1
  169. package/web/assets/{razor-Dxwwpjwp.js → razor-CMgDmoNn.js} +1 -1
  170. package/web/assets/router-KIdzwvCZ.js +1 -0
  171. package/web/assets/settings-scope-D8l1sq9K.js +1 -0
  172. package/web/assets/{settings.store-Da4jL17l.js → settings.store-VVqF8QkO.js} +1 -1
  173. package/web/assets/{shopping-cart.svg-DajW_J8z.js → shopping-cart.svg-DeBhxyDX.js} +1 -1
  174. package/web/assets/{shopping-gift-present.svg-yAHWXZYl.js → shopping-gift-present.svg-Bt0oKBk9.js} +1 -1
  175. package/web/assets/{shopping-shipping-box-parcel-package.svg-BmpCCkbe.js → shopping-shipping-box-parcel-package.svg-BEQNmjMi.js} +1 -1
  176. package/web/assets/{src-CabNenEM.js → src-C3dPv05m.js} +1 -1
  177. package/web/assets/{src-C-5koINO.js → src-CJFQ3yWc.js} +1 -1
  178. package/web/assets/{src-LFVDgykP.js → src-Cgn_TWXn.js} +3 -3
  179. package/web/assets/{tabpanel-D8XwziwN.js → tabpanel-B8oBjoSG.js} +1 -1
  180. package/web/assets/{tag-new-circle.svg-BHHc5iei.js → tag-new-circle.svg-B1i0Y1yt.js} +1 -1
  181. package/web/assets/{toggleswitch-CJCNFliH.js → toggleswitch-CcQEgLiT.js} +1 -1
  182. package/web/assets/{travel-map-earth-globe.svg-CHj70cli.js → travel-map-earth-globe.svg-CB5sqhKh.js} +1 -1
  183. package/web/assets/trpc-B1bTQz_t.js +1 -0
  184. package/web/assets/{tsMode-DHXchBsw.js → tsMode-DoUs-yH0.js} +1 -1
  185. package/web/assets/{typescript-BVTudzDT.js → typescript-fw9OMJ0N.js} +1 -1
  186. package/web/assets/useAiChatDrawer-BpR9XWop.js +1 -0
  187. package/web/assets/{useCloudOrg-BN-OgVim.js → useCloudOrg-CRpEZ-iE.js} +1 -1
  188. package/web/assets/{useProjectCatalog-sUfCxDEh.js → useProjectCatalog-mk8A95KQ.js} +1 -1
  189. package/web/assets/{useProjectCloudOrg-D1GcLai_.js → useProjectCloudOrg-CKgvcUWI.js} +1 -1
  190. package/web/assets/{xml-5T1ybYUZ.js → xml-Df6_yGan.js} +1 -1
  191. package/web/assets/{yaml-w_H4D4RN.js → yaml-LMvM57fn.js} +1 -1
  192. package/web/index.html +2 -2
  193. package/chunk-SP3IC2TR.js.map +0 -1
  194. package/chunk-TNBMCKQX.js.map +0 -1
  195. package/node-B4T3JMM3.js.map +0 -1
  196. package/src-PF23DMAB.js.map +0 -1
  197. package/web/assets/AiChatPage-C1FbL-Tb.js +0 -1
  198. package/web/assets/CloudAccountPage-CsNnjZQN.js +0 -1
  199. package/web/assets/WikiPage-D1at3ltm.js +0 -1
  200. package/web/assets/interface-content-folder.svg-BYgaYshM.js +0 -1
  201. package/web/assets/modal-4qFfZ_TY.js +0 -1
  202. package/web/assets/process.store-C8qfdRYx.js +0 -1
  203. package/web/assets/router-HZS_HREn.js +0 -1
  204. package/web/assets/settings-scope-DUmfNusx.js +0 -1
  205. package/web/assets/trpc-BeVJWlZK.js +0 -1
  206. package/web/assets/useAiChatDrawer-CFqm3BZi.js +0 -1
  207. /package/{chat-RWOZHXBX.js.map → chat-OXRRBDB3.js.map} +0 -0
  208. /package/{companion-QNW7XA6X.js.map → companion-JQGNL4U7.js.map} +0 -0
package/agent/index.js CHANGED
@@ -4753,10 +4753,150 @@ var processRouter = router({
4753
4753
  });
4754
4754
 
4755
4755
  // src/trpc/routers/health.ts
4756
- import { networkInterfaces as networkInterfaces2, homedir as homedir6, platform as platform3 } from "os";
4756
+ import { networkInterfaces as networkInterfaces2, homedir as homedir7, platform as platform3 } from "os";
4757
+
4758
+ // ../../packages/shared/src/node/node-path.ts
4759
+ import { dirname, delimiter } from "path";
4760
+ function ensureNodeBinOnPath(environment = process.env) {
4761
+ appendToPath(dirname(process.execPath), environment);
4762
+ }
4763
+ function appendToPath(dir, environment = process.env) {
4764
+ if (!dir) return;
4765
+ const current = environment["PATH"] ?? "";
4766
+ const entries = current.split(delimiter).filter(Boolean);
4767
+ if (entries.includes(dir)) return;
4768
+ environment["PATH"] = entries.length > 0 ? `${current}${delimiter}${dir}` : dir;
4769
+ }
4770
+
4771
+ // ../../packages/shared/src/node/user-path.ts
4757
4772
  import { execFile as execFile3 } from "child_process";
4758
4773
  import { promisify } from "util";
4774
+ import { homedir as homedir6 } from "os";
4775
+ import { existsSync, statSync } from "fs";
4776
+ import { join as join4, delimiter as delimiter2 } from "path";
4759
4777
  var execFileAsync = promisify(execFile3);
4778
+ var MARKER = "__RUNEYA_PATH__";
4779
+ var SHELL_TIMEOUT_MS = 3e3;
4780
+ function commonUserBins(home) {
4781
+ return [
4782
+ join4(home, ".local", "bin"),
4783
+ join4(home, "bin"),
4784
+ join4(home, ".npm-global", "bin"),
4785
+ join4(home, ".bun", "bin"),
4786
+ join4(home, ".cargo", "bin"),
4787
+ "/opt/homebrew/bin",
4788
+ "/usr/local/bin"
4789
+ ];
4790
+ }
4791
+ async function readLoginShellPath() {
4792
+ if (process.platform === "win32") return null;
4793
+ const shell = process.env["SHELL"];
4794
+ if (!shell || !existsSync(shell)) return null;
4795
+ try {
4796
+ const { stdout } = await execFileAsync(shell, ["-l", "-i", "-c", `echo "${MARKER}$PATH"`], {
4797
+ timeout: SHELL_TIMEOUT_MS,
4798
+ shell: false,
4799
+ encoding: "utf8",
4800
+ maxBuffer: 1024 * 1024,
4801
+ env: { ...process.env, TERM: "dumb" }
4802
+ });
4803
+ const line = stdout.split("\n").find((l) => l.includes(MARKER));
4804
+ if (!line) return null;
4805
+ const value = line.slice(line.indexOf(MARKER) + MARKER.length).trim();
4806
+ return value.length > 0 ? value : null;
4807
+ } catch {
4808
+ return null;
4809
+ }
4810
+ }
4811
+ async function ensureUserBinsOnPath(environment = process.env, home = homedir6()) {
4812
+ const shellPath = await readLoginShellPath();
4813
+ if (shellPath) {
4814
+ for (const entry of shellPath.split(delimiter2).filter(Boolean)) {
4815
+ appendToPath(entry, environment);
4816
+ }
4817
+ }
4818
+ for (const dir of commonUserBins(home)) {
4819
+ if (isDirectory(dir)) appendToPath(dir, environment);
4820
+ }
4821
+ }
4822
+ function isDirectory(path3) {
4823
+ try {
4824
+ return statSync(path3).isDirectory();
4825
+ } catch {
4826
+ return false;
4827
+ }
4828
+ }
4829
+
4830
+ // ../../packages/shared/src/node/log-timestamps.ts
4831
+ function isDecorative(args) {
4832
+ if (args.length === 0) return true;
4833
+ const first = args[0];
4834
+ if (typeof first !== "string") return false;
4835
+ const trimmed = first.trim();
4836
+ return trimmed === "" || /^[┌│└├┬┴┼─┐┘┤]/.test(trimmed);
4837
+ }
4838
+ var LEVELS = ["log", "info", "warn", "error", "debug"];
4839
+ function formatElapsed(startedAt2, now) {
4840
+ const seconds = (now - startedAt2) / 1e3;
4841
+ return `+${seconds.toFixed(3)}s`.padStart(10);
4842
+ }
4843
+ function stampConsole(startedAt2 = Date.now()) {
4844
+ const target = console;
4845
+ if (target.__runeyaStamped) return () => {
4846
+ };
4847
+ target.__runeyaStamped = true;
4848
+ const originals = LEVELS.map((level) => {
4849
+ const original = console[level].bind(console);
4850
+ console[level] = (...args) => isDecorative(args) ? original(...args) : original(formatElapsed(startedAt2, Date.now()), ...args);
4851
+ return [level, original];
4852
+ });
4853
+ return () => {
4854
+ for (const [level, original] of originals) console[level] = original;
4855
+ target.__runeyaStamped = false;
4856
+ };
4857
+ }
4858
+
4859
+ // ../../packages/shared/src/node/cli-invocation.ts
4860
+ import { execFile as execFile4, execFileSync } from "child_process";
4861
+ import { existsSync as existsSync2, readFileSync } from "fs";
4862
+ import { dirname as dirname2, resolve as resolvePath } from "path";
4863
+ function resolveCliInvocation(cli, args = []) {
4864
+ if (process.platform !== "win32") return { command: cli, args };
4865
+ if (/\.exe$/i.test(cli)) return { command: cli, args };
4866
+ let shim = cli;
4867
+ if (!cli.includes("\\") && !cli.includes("/")) {
4868
+ let found = [];
4869
+ try {
4870
+ found = execFileSync("where", [cli], { encoding: "utf-8", timeout: 5e3, windowsHide: true }).split(/\r?\n/).map((l) => l.trim()).filter(Boolean);
4871
+ } catch {
4872
+ }
4873
+ const exe = found.find((f) => /\.exe$/i.test(f));
4874
+ if (exe) return { command: exe, args };
4875
+ shim = found.find((f) => /\.cmd$/i.test(f)) ?? found[0] ?? cli;
4876
+ }
4877
+ if (/\.exe$/i.test(shim)) return { command: shim, args };
4878
+ if (/\.cmd$/i.test(shim) && existsSync2(shim)) {
4879
+ try {
4880
+ const content = readFileSync(shim, "utf-8");
4881
+ const m = content.match(/%~?dp0%?\\?([^"\s]+\.js)/i);
4882
+ if (m?.[1]) {
4883
+ const entry = resolvePath(dirname2(shim), m[1].replace(/^\\+/, ""));
4884
+ if (existsSync2(entry)) return { command: process.execPath, args: [entry, ...args] };
4885
+ }
4886
+ } catch {
4887
+ }
4888
+ }
4889
+ const comspec = process.env["ComSpec"] || process.env["COMSPEC"] || "cmd.exe";
4890
+ return { command: comspec, args: ["/d", "/s", "/c", shim, ...args] };
4891
+ }
4892
+ async function isCliAvailable(cli, timeoutMs = 5e3) {
4893
+ const { command, args } = resolveCliInvocation(cli, ["--version"]);
4894
+ return new Promise((resolve2) => {
4895
+ execFile4(command, args, { timeout: timeoutMs, windowsHide: true }, (err) => resolve2(!err));
4896
+ });
4897
+ }
4898
+
4899
+ // src/trpc/routers/health.ts
4760
4900
  var startedAt = Date.now();
4761
4901
  function getLanIp2() {
4762
4902
  const nets = networkInterfaces2();
@@ -4784,7 +4924,7 @@ async function getHealthData() {
4784
4924
  // service ne démarre. La résolution, elle, reste faite ici au lancement :
4785
4925
  // ce statut n'est qu'un cliché, et l'agent reste l'autorité sur sa machine.
4786
4926
  os: platform3(),
4787
- home: homedir6(),
4927
+ home: homedir7(),
4788
4928
  cwd: process.cwd()
4789
4929
  };
4790
4930
  }
@@ -4794,8 +4934,8 @@ var healthRouter = router({
4794
4934
  /** Check which AI CLIs are available on this agent */
4795
4935
  checkCli: protectedProcedure.query(async () => {
4796
4936
  const [claudeOk, codexOk] = await Promise.all([
4797
- execFileAsync("claude", ["--version"], { timeout: 5e3, shell: false, windowsHide: true }).then(() => true).catch(() => false),
4798
- execFileAsync("codex", ["--version"], { timeout: 5e3, shell: false, windowsHide: true }).then(() => true).catch(() => false)
4937
+ isCliAvailable("claude"),
4938
+ isCliAvailable("codex")
4799
4939
  ]);
4800
4940
  return { claudeAvailable: claudeOk, codexAvailable: codexOk };
4801
4941
  })
@@ -4981,16 +5121,16 @@ var terminalRouter = router({
4981
5121
  // src/trpc/routers/git.ts
4982
5122
  import { z as z26 } from "zod";
4983
5123
  import { TRPCError as TRPCError4 } from "@trpc/server";
4984
- import { execFile as execFile5, spawn as spawn3 } from "child_process";
5124
+ import { execFile as execFile6, spawn as spawn3 } from "child_process";
4985
5125
  import { promisify as promisify3 } from "util";
4986
- import { existsSync, watch as fsWatch } from "fs";
5126
+ import { existsSync as existsSync3, watch as fsWatch } from "fs";
4987
5127
  import { promises as fsPromises2 } from "fs";
4988
- import { join as join4, resolve as resolvePath } from "path";
5128
+ import { join as join5, resolve as resolvePath2 } from "path";
4989
5129
 
4990
5130
  // src/utils/git-remote.ts
4991
- import { execFile as execFile4 } from "child_process";
5131
+ import { execFile as execFile5 } from "child_process";
4992
5132
  import { promisify as promisify2 } from "util";
4993
- var execFileAsync2 = promisify2(execFile4);
5133
+ var execFileAsync2 = promisify2(execFile5);
4994
5134
  function parseGitRemote(url) {
4995
5135
  const trimmed = url.trim();
4996
5136
  if (!trimmed) return null;
@@ -5044,7 +5184,7 @@ async function sameGitRemote(a, b, resolveHost = resolveSshHost) {
5044
5184
  }
5045
5185
 
5046
5186
  // src/trpc/routers/git.ts
5047
- var execFileAsync3 = promisify3(execFile5);
5187
+ var execFileAsync3 = promisify3(execFile6);
5048
5188
  var GIT_TIMEOUT = 15e3;
5049
5189
  var DIFF_MAX_BYTES = 512 * 1024;
5050
5190
  var CWD_SCHEMA = z26.string().min(1).max(4096);
@@ -5111,7 +5251,7 @@ async function assertGitRepo(cwd) {
5111
5251
  }
5112
5252
  function assertCwdExists(cwd) {
5113
5253
  const resolved = expandEnvVar(cwd);
5114
- if (!existsSync(resolved)) {
5254
+ if (!existsSync3(resolved)) {
5115
5255
  console.error("[git] assertCwdExists: directory does not exist: %s (resolved=%s, process.cwd=%s)", cwd, resolved, process.cwd());
5116
5256
  throw new TRPCError4({ code: "BAD_REQUEST", message: `Working directory does not exist: ${resolved}` });
5117
5257
  }
@@ -5180,8 +5320,8 @@ var gitRouter = router({
5180
5320
  if (unresolvedVars.length > 0) {
5181
5321
  return { exists: false, actualRemote: null, remoteMatches: false, unreachable: false, resolvedCwd, unresolvedVars };
5182
5322
  }
5183
- const absoluteCwd = resolvePath(resolvedCwd);
5184
- const exists = existsSync(absoluteCwd);
5323
+ const absoluteCwd = resolvePath2(resolvedCwd);
5324
+ const exists = existsSync3(absoluteCwd);
5185
5325
  if (!exists || !input.remote) {
5186
5326
  return { exists, actualRemote: null, remoteMatches: false, unreachable: false, resolvedCwd: absoluteCwd, unresolvedVars: [] };
5187
5327
  }
@@ -5199,8 +5339,8 @@ var gitRouter = router({
5199
5339
  remote: z26.string().min(1).max(2048),
5200
5340
  cwd: CWD_SCHEMA
5201
5341
  })).mutation(async ({ input }) => {
5202
- const absoluteCwd = resolvePath(expandEnvVar(input.cwd));
5203
- if (existsSync(absoluteCwd)) {
5342
+ const absoluteCwd = resolvePath2(expandEnvVar(input.cwd));
5343
+ if (existsSync3(absoluteCwd)) {
5204
5344
  const entries = await fsPromises2.readdir(absoluteCwd);
5205
5345
  if (entries.length > 0) {
5206
5346
  throw new TRPCError4({ code: "BAD_REQUEST", message: "Working directory already exists and is not empty" });
@@ -5227,7 +5367,7 @@ var gitRouter = router({
5227
5367
  const cwd = assertCwdExists(input.cwd);
5228
5368
  await assertGitRepo(cwd);
5229
5369
  const gitDir = (await git(["rev-parse", "--git-dir"], cwd, true)).trim();
5230
- const absGitDir = resolvePath(cwd, gitDir);
5370
+ const absGitDir = resolvePath2(cwd, gitDir);
5231
5371
  const queue = [];
5232
5372
  let resolve2 = null;
5233
5373
  let debounceTimer = null;
@@ -5379,7 +5519,7 @@ var gitRouter = router({
5379
5519
  }
5380
5520
  }
5381
5521
  if (input.untracked && input.path) {
5382
- const modified2 = await readFileSafe(join4(cwd, input.path));
5522
+ const modified2 = await readFileSafe(join5(cwd, input.path));
5383
5523
  return { diff: "", original: "", modified: modified2 };
5384
5524
  }
5385
5525
  const args = input.staged ? ["diff", "--staged"] : ["diff"];
@@ -5405,7 +5545,7 @@ var gitRouter = router({
5405
5545
  } catch {
5406
5546
  original = "";
5407
5547
  }
5408
- modified = await readFileSafe(join4(cwd, input.path));
5548
+ modified = await readFileSafe(join5(cwd, input.path));
5409
5549
  }
5410
5550
  }
5411
5551
  return {
@@ -5540,17 +5680,15 @@ import { z as z27 } from "zod";
5540
5680
  import { TRPCError as TRPCError5 } from "@trpc/server";
5541
5681
 
5542
5682
  // src/services/ai-spawn-manager.ts
5543
- import { spawn as spawn4, execFileSync } from "child_process";
5683
+ import { spawn as spawn4 } from "child_process";
5544
5684
  import { EventEmitter as EventEmitter9 } from "events";
5545
5685
  import { randomUUID as randomUUID5 } from "crypto";
5546
- import { existsSync as existsSync3, readFileSync } from "fs";
5547
- import { dirname, resolve as resolvePath2 } from "path";
5548
5686
  import * as pty2 from "@lydell/node-pty";
5549
5687
 
5550
5688
  // ../../packages/mcp-server/src/launch.ts
5551
5689
  import { fileURLToPath } from "url";
5552
5690
  import { createRequire } from "module";
5553
- import { existsSync as existsSync2 } from "fs";
5691
+ import { existsSync as existsSync4 } from "fs";
5554
5692
  function resolveMcpServerPath() {
5555
5693
  try {
5556
5694
  const req = createRequire(import.meta.url);
@@ -5568,7 +5706,7 @@ function resolveMcpServerPath() {
5568
5706
  ];
5569
5707
  for (const c of candidates) {
5570
5708
  const p = fileURLToPath(c);
5571
- if (existsSync2(p)) return p;
5709
+ if (existsSync4(p)) return p;
5572
5710
  }
5573
5711
  throw new Error("Could not locate @runeya/packages-mcp-server (built dist not found)");
5574
5712
  }
@@ -5612,35 +5750,6 @@ function tomlString(value) {
5612
5750
  }
5613
5751
 
5614
5752
  // src/services/ai-spawn-manager.ts
5615
- function resolveCliInvocation(cli, args) {
5616
- if (process.platform !== "win32") return { command: cli, args };
5617
- if (/\.exe$/i.test(cli)) return { command: cli, args };
5618
- let shim = cli;
5619
- if (!cli.includes("\\") && !cli.includes("/")) {
5620
- let found = [];
5621
- try {
5622
- found = execFileSync("where", [cli], { encoding: "utf-8" }).split(/\r?\n/).map((l) => l.trim()).filter(Boolean);
5623
- } catch {
5624
- }
5625
- const exe = found.find((f) => /\.exe$/i.test(f));
5626
- if (exe) return { command: exe, args };
5627
- shim = found.find((f) => /\.cmd$/i.test(f)) ?? found[0] ?? cli;
5628
- }
5629
- if (/\.exe$/i.test(shim)) return { command: shim, args };
5630
- if (/\.cmd$/i.test(shim) && existsSync3(shim)) {
5631
- try {
5632
- const content = readFileSync(shim, "utf-8");
5633
- const m = content.match(/%~?dp0%\\?([^"\s]+\.js)/i);
5634
- if (m?.[1]) {
5635
- const entry = resolvePath2(dirname(shim), m[1].replace(/^\\+/, ""));
5636
- if (existsSync3(entry)) return { command: process.execPath, args: [entry, ...args] };
5637
- }
5638
- } catch {
5639
- }
5640
- }
5641
- const comspec = process.env.ComSpec || process.env.COMSPEC || "cmd.exe";
5642
- return { command: comspec, args: ["/d", "/s", "/c", shim, ...args] };
5643
- }
5644
5753
  var MAX_BUFFER_LINES = 1e5;
5645
5754
  var MAX_CONCURRENT_SPAWNS = 100;
5646
5755
  var CLEANUP_INTERVAL_MS = 6e4;
@@ -6011,7 +6120,8 @@ var CodexAppServerManager = class extends EventEmitter10 {
6011
6120
  }
6012
6121
  async doConnect() {
6013
6122
  const env2 = { ...process.env, ...this.extraEnv };
6014
- this.proc = spawn6("codex", [...resolveMcpArgs(env2), "app-server"], {
6123
+ const invocation = resolveCliInvocation("codex", [...resolveMcpArgs(env2), "app-server"]);
6124
+ this.proc = spawn6(invocation.command, invocation.args, {
6015
6125
  windowsHide: true,
6016
6126
  stdio: ["pipe", "pipe", "pipe"],
6017
6127
  env: env2
@@ -6425,8 +6535,8 @@ var aiRouter = router({
6425
6535
  import { z as z28 } from "zod";
6426
6536
  import { TRPCError as TRPCError6 } from "@trpc/server";
6427
6537
  import { readFile as readFile2, readdir, stat as stat2, realpath, writeFile as writeFile6, mkdir as mkdir6, rename as rename2, rm } from "fs/promises";
6428
- import { dirname as dirname2 } from "path";
6429
- import { resolve as resolvePath3, join as join5, relative, sep } from "path";
6538
+ import { dirname as dirname3 } from "path";
6539
+ import { resolve as resolvePath3, join as join6, relative, sep } from "path";
6430
6540
  var CWD_SCHEMA2 = z28.string().min(1).max(4096);
6431
6541
  var REL_PATH_SCHEMA = z28.string().min(1).max(512).regex(/^[A-Za-z0-9_./-]+$/).refine((p) => !p.includes("..") && !p.startsWith("/"), {
6432
6542
  message: "Path must be a relative path without traversal"
@@ -6464,7 +6574,7 @@ async function walkMarkdown(root, dir, depth, counter) {
6464
6574
  for (const e of entries) {
6465
6575
  if (counter.n >= MAX_FILES) break;
6466
6576
  if (e.name.startsWith(".") && e.name !== ".") continue;
6467
- const abs = join5(dir, e.name);
6577
+ const abs = join6(dir, e.name);
6468
6578
  const rel = relative(root, abs).split(sep).join("/");
6469
6579
  if (e.isDirectory()) {
6470
6580
  if (IGNORED_DIRS.has(e.name)) continue;
@@ -6498,7 +6608,7 @@ async function resolveSafePath(root, relPath, requireExist) {
6498
6608
  }
6499
6609
  return real;
6500
6610
  }
6501
- const parent = dirname2(target);
6611
+ const parent = dirname3(target);
6502
6612
  let realParent;
6503
6613
  try {
6504
6614
  realParent = await realpath(parent);
@@ -6562,7 +6672,7 @@ var wikiRouter = router({
6562
6672
  }
6563
6673
  const root = await resolveRoot(input.cwd);
6564
6674
  const target = await resolveSafePath(root, input.path, false);
6565
- await mkdir6(dirname2(target), { recursive: true });
6675
+ await mkdir6(dirname3(target), { recursive: true });
6566
6676
  await writeFile6(target, input.content, "utf-8");
6567
6677
  return { path: input.path, ok: true };
6568
6678
  }),
@@ -6578,7 +6688,7 @@ var wikiRouter = router({
6578
6688
  } catch (err) {
6579
6689
  if (err instanceof TRPCError6) throw err;
6580
6690
  }
6581
- await mkdir6(dirname2(target), { recursive: true });
6691
+ await mkdir6(dirname3(target), { recursive: true });
6582
6692
  await writeFile6(target, "", "utf-8");
6583
6693
  return { path: input.path, ok: true };
6584
6694
  }),
@@ -6602,7 +6712,7 @@ var wikiRouter = router({
6602
6712
  } catch (err) {
6603
6713
  if (err instanceof TRPCError6) throw err;
6604
6714
  }
6605
- await mkdir6(dirname2(to), { recursive: true });
6715
+ await mkdir6(dirname3(to), { recursive: true });
6606
6716
  await rename2(from, to);
6607
6717
  return { fromPath: input.fromPath, toPath: input.toPath, ok: true };
6608
6718
  }),
@@ -6737,107 +6847,6 @@ function createAgent(opts) {
6737
6847
  return { app, server, trpcWss, healthWss, passphraseHex, shutdown };
6738
6848
  }
6739
6849
 
6740
- // ../../packages/shared/src/node/node-path.ts
6741
- import { dirname as dirname3, delimiter } from "path";
6742
- function ensureNodeBinOnPath(environment = process.env) {
6743
- appendToPath(dirname3(process.execPath), environment);
6744
- }
6745
- function appendToPath(dir, environment = process.env) {
6746
- if (!dir) return;
6747
- const current = environment["PATH"] ?? "";
6748
- const entries = current.split(delimiter).filter(Boolean);
6749
- if (entries.includes(dir)) return;
6750
- environment["PATH"] = entries.length > 0 ? `${current}${delimiter}${dir}` : dir;
6751
- }
6752
-
6753
- // ../../packages/shared/src/node/user-path.ts
6754
- import { execFile as execFile6 } from "child_process";
6755
- import { promisify as promisify4 } from "util";
6756
- import { homedir as homedir7 } from "os";
6757
- import { existsSync as existsSync4, statSync } from "fs";
6758
- import { join as join6, delimiter as delimiter2 } from "path";
6759
- var execFileAsync4 = promisify4(execFile6);
6760
- var MARKER = "__RUNEYA_PATH__";
6761
- var SHELL_TIMEOUT_MS = 3e3;
6762
- function commonUserBins(home) {
6763
- return [
6764
- join6(home, ".local", "bin"),
6765
- join6(home, "bin"),
6766
- join6(home, ".npm-global", "bin"),
6767
- join6(home, ".bun", "bin"),
6768
- join6(home, ".cargo", "bin"),
6769
- "/opt/homebrew/bin",
6770
- "/usr/local/bin"
6771
- ];
6772
- }
6773
- async function readLoginShellPath() {
6774
- if (process.platform === "win32") return null;
6775
- const shell = process.env["SHELL"];
6776
- if (!shell || !existsSync4(shell)) return null;
6777
- try {
6778
- const { stdout } = await execFileAsync4(shell, ["-l", "-i", "-c", `echo "${MARKER}$PATH"`], {
6779
- timeout: SHELL_TIMEOUT_MS,
6780
- shell: false,
6781
- encoding: "utf8",
6782
- maxBuffer: 1024 * 1024,
6783
- env: { ...process.env, TERM: "dumb" }
6784
- });
6785
- const line = stdout.split("\n").find((l) => l.includes(MARKER));
6786
- if (!line) return null;
6787
- const value = line.slice(line.indexOf(MARKER) + MARKER.length).trim();
6788
- return value.length > 0 ? value : null;
6789
- } catch {
6790
- return null;
6791
- }
6792
- }
6793
- async function ensureUserBinsOnPath(environment = process.env, home = homedir7()) {
6794
- const shellPath = await readLoginShellPath();
6795
- if (shellPath) {
6796
- for (const entry of shellPath.split(delimiter2).filter(Boolean)) {
6797
- appendToPath(entry, environment);
6798
- }
6799
- }
6800
- for (const dir of commonUserBins(home)) {
6801
- if (isDirectory(dir)) appendToPath(dir, environment);
6802
- }
6803
- }
6804
- function isDirectory(path3) {
6805
- try {
6806
- return statSync(path3).isDirectory();
6807
- } catch {
6808
- return false;
6809
- }
6810
- }
6811
-
6812
- // ../../packages/shared/src/node/log-timestamps.ts
6813
- function isDecorative(args) {
6814
- if (args.length === 0) return true;
6815
- const first = args[0];
6816
- if (typeof first !== "string") return false;
6817
- const trimmed = first.trim();
6818
- return trimmed === "" || /^[┌│└├┬┴┼─┐┘┤]/.test(trimmed);
6819
- }
6820
- var LEVELS = ["log", "info", "warn", "error", "debug"];
6821
- function formatElapsed(startedAt2, now) {
6822
- const seconds = (now - startedAt2) / 1e3;
6823
- return `+${seconds.toFixed(3)}s`.padStart(10);
6824
- }
6825
- function stampConsole(startedAt2 = Date.now()) {
6826
- const target = console;
6827
- if (target.__runeyaStamped) return () => {
6828
- };
6829
- target.__runeyaStamped = true;
6830
- const originals = LEVELS.map((level) => {
6831
- const original = console[level].bind(console);
6832
- console[level] = (...args) => isDecorative(args) ? original(...args) : original(formatElapsed(startedAt2, Date.now()), ...args);
6833
- return [level, original];
6834
- });
6835
- return () => {
6836
- for (const [level, original] of originals) console[level] = original;
6837
- target.__runeyaStamped = false;
6838
- };
6839
- }
6840
-
6841
6850
  // src/index.ts
6842
6851
  function listenWithRetry(server, port, host, maxRetries = 20, delay = 500) {
6843
6852
  return new Promise((resolve2, reject) => {