@agimon-ai/doompi-runner 0.0.1-alpha.27 → 0.0.1-alpha.29

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 (509) hide show
  1. package/README.md +32 -17
  2. package/dist/_virtual/_rolldown/runtime.cjs +1 -0
  3. package/dist/bin/cli.cjs +5 -0
  4. package/dist/bin/cli.cjs.map +1 -0
  5. package/dist/bin/cli.d.cts +5 -0
  6. package/dist/bin/cli.d.cts.map +1 -0
  7. package/dist/bin/cli.d.mts +5 -0
  8. package/dist/bin/cli.d.mts.map +1 -0
  9. package/dist/bin/cli.mjs +5 -0
  10. package/dist/bin/cli.mjs.map +1 -0
  11. package/dist/bin/logSink.cjs +2 -0
  12. package/dist/bin/logSink.cjs.map +1 -0
  13. package/dist/bin/logSink.d.cts +5 -0
  14. package/dist/bin/logSink.d.cts.map +1 -0
  15. package/dist/bin/logSink.d.mts +5 -0
  16. package/dist/bin/logSink.d.mts.map +1 -0
  17. package/dist/bin/logSink.mjs +2 -0
  18. package/dist/bin/logSink.mjs.map +1 -0
  19. package/dist/bin/runnerHost.cjs +2 -0
  20. package/dist/bin/runnerHost.cjs.map +1 -0
  21. package/dist/bin/runnerHost.d.cts +5 -0
  22. package/dist/bin/runnerHost.d.cts.map +1 -0
  23. package/dist/bin/runnerHost.d.mts +5 -0
  24. package/dist/bin/runnerHost.d.mts.map +1 -0
  25. package/dist/bin/runnerHost.mjs +2 -0
  26. package/dist/bin/runnerHost.mjs.map +1 -0
  27. package/dist/cli/cliApp.cjs +1 -0
  28. package/dist/cli/cliApp.d.cts +2 -0
  29. package/dist/cli/cliApp.d.mts +2 -0
  30. package/dist/cli/cliApp.mjs +1 -0
  31. package/dist/compaction.cjs +1 -0
  32. package/dist/compaction.d.cts +2 -0
  33. package/dist/compaction.d.mts +2 -0
  34. package/dist/compaction.mjs +1 -0
  35. package/dist/config.cjs +1 -0
  36. package/dist/config.d.cts +2 -0
  37. package/dist/config.d.mts +2 -0
  38. package/dist/config.mjs +1 -0
  39. package/dist/container/index.cjs +1 -0
  40. package/dist/container/index.d.cts +2 -0
  41. package/dist/container/index.d.mts +2 -0
  42. package/dist/container/index.mjs +1 -0
  43. package/dist/extensions/pi.cjs +1 -0
  44. package/dist/extensions/pi.d.cts +2 -0
  45. package/dist/extensions/pi.d.mts +2 -0
  46. package/dist/extensions/pi.mjs +1 -0
  47. package/dist/index.cjs +1 -0
  48. package/dist/index.d.cts +5 -0
  49. package/dist/index.d.mts +5 -0
  50. package/dist/index.mjs +1 -0
  51. package/dist/reconcile.cjs +1 -0
  52. package/dist/reconcile.d.cts +2 -0
  53. package/dist/reconcile.d.mts +2 -0
  54. package/dist/reconcile.mjs +1 -0
  55. package/dist/services/AnsiScrub/ansiScrub.cjs +1 -0
  56. package/dist/services/AnsiScrub/ansiScrub.d.cts +2 -0
  57. package/dist/services/AnsiScrub/ansiScrub.d.mts +2 -0
  58. package/dist/services/AnsiScrub/ansiScrub.mjs +1 -0
  59. package/dist/services/AnsiScrub/index.cjs +1 -0
  60. package/dist/services/AnsiScrub/index.d.cts +2 -0
  61. package/dist/services/AnsiScrub/index.d.mts +2 -0
  62. package/dist/services/AnsiScrub/index.mjs +1 -0
  63. package/dist/services/BashRunService/BashRunService.cjs +1 -0
  64. package/dist/services/BashRunService/BashRunService.d.cts +2 -0
  65. package/dist/services/BashRunService/BashRunService.d.mts +2 -0
  66. package/dist/services/BashRunService/BashRunService.mjs +1 -0
  67. package/dist/services/BashRunService/index.cjs +1 -0
  68. package/dist/services/BashRunService/index.d.cts +3 -0
  69. package/dist/services/BashRunService/index.d.mts +3 -0
  70. package/dist/services/BashRunService/index.mjs +1 -0
  71. package/dist/services/Clock/SystemClock.cjs +1 -0
  72. package/dist/services/Clock/SystemClock.d.cts +2 -0
  73. package/dist/services/Clock/SystemClock.d.mts +2 -0
  74. package/dist/services/Clock/SystemClock.mjs +1 -0
  75. package/dist/services/Clock/index.cjs +1 -0
  76. package/dist/services/Clock/index.d.cts +3 -0
  77. package/dist/services/Clock/index.d.mts +3 -0
  78. package/dist/services/Clock/index.mjs +1 -0
  79. package/dist/services/Launcher/Launcher.cjs +1 -0
  80. package/dist/services/Launcher/Launcher.d.cts +2 -0
  81. package/dist/services/Launcher/Launcher.d.mts +2 -0
  82. package/dist/services/Launcher/Launcher.mjs +1 -0
  83. package/dist/services/Launcher/index.cjs +1 -0
  84. package/dist/services/Launcher/index.d.cts +3 -0
  85. package/dist/services/Launcher/index.d.mts +3 -0
  86. package/dist/services/Launcher/index.mjs +1 -0
  87. package/dist/services/Lifeline/NodeLifeline.cjs +1 -0
  88. package/dist/services/Lifeline/NodeLifeline.d.cts +2 -0
  89. package/dist/services/Lifeline/NodeLifeline.d.mts +2 -0
  90. package/dist/services/Lifeline/NodeLifeline.mjs +1 -0
  91. package/dist/services/Lifeline/client.cjs +1 -0
  92. package/dist/services/Lifeline/client.d.cts +2 -0
  93. package/dist/services/Lifeline/client.d.mts +2 -0
  94. package/dist/services/Lifeline/client.mjs +1 -0
  95. package/dist/services/Lifeline/index.cjs +1 -0
  96. package/dist/services/Lifeline/index.d.cts +4 -0
  97. package/dist/services/Lifeline/index.d.mts +4 -0
  98. package/dist/services/Lifeline/index.mjs +1 -0
  99. package/dist/services/LogFile/LogFile.cjs +1 -0
  100. package/dist/services/LogFile/LogFile.d.cts +2 -0
  101. package/dist/services/LogFile/LogFile.d.mts +2 -0
  102. package/dist/services/LogFile/LogFile.mjs +1 -0
  103. package/dist/services/LogFile/index.cjs +1 -0
  104. package/dist/services/LogFile/index.d.cts +3 -0
  105. package/dist/services/LogFile/index.d.mts +3 -0
  106. package/dist/services/LogFile/index.mjs +1 -0
  107. package/dist/services/LogReader/LogReader.cjs +1 -0
  108. package/dist/services/LogReader/LogReader.d.cts +2 -0
  109. package/dist/services/LogReader/LogReader.d.mts +2 -0
  110. package/dist/services/LogReader/LogReader.mjs +1 -0
  111. package/dist/services/LogReader/index.cjs +1 -0
  112. package/dist/services/LogReader/index.d.cts +3 -0
  113. package/dist/services/LogReader/index.d.mts +3 -0
  114. package/dist/services/LogReader/index.mjs +1 -0
  115. package/dist/services/ProcessControl/NodeProcessControl.cjs +1 -0
  116. package/dist/services/ProcessControl/NodeProcessControl.d.cts +2 -0
  117. package/dist/services/ProcessControl/NodeProcessControl.d.mts +2 -0
  118. package/dist/services/ProcessControl/NodeProcessControl.mjs +1 -0
  119. package/dist/services/ProcessControl/index.cjs +1 -0
  120. package/dist/services/ProcessControl/index.d.cts +3 -0
  121. package/dist/services/ProcessControl/index.d.mts +3 -0
  122. package/dist/services/ProcessControl/index.mjs +1 -0
  123. package/dist/services/PtyHost/PtyHost.cjs +1 -0
  124. package/dist/services/PtyHost/PtyHost.d.cts +2 -0
  125. package/dist/services/PtyHost/PtyHost.d.mts +2 -0
  126. package/dist/services/PtyHost/PtyHost.mjs +1 -0
  127. package/dist/services/PtyHost/index.cjs +1 -0
  128. package/dist/services/PtyHost/index.d.cts +3 -0
  129. package/dist/services/PtyHost/index.d.mts +3 -0
  130. package/dist/services/PtyHost/index.mjs +1 -0
  131. package/dist/services/PtySpawner/NodePtySpawner.cjs +1 -0
  132. package/dist/services/PtySpawner/NodePtySpawner.d.cts +2 -0
  133. package/dist/services/PtySpawner/NodePtySpawner.d.mts +2 -0
  134. package/dist/services/PtySpawner/NodePtySpawner.mjs +1 -0
  135. package/dist/services/PtySpawner/index.cjs +1 -0
  136. package/dist/services/PtySpawner/index.d.cts +3 -0
  137. package/dist/services/PtySpawner/index.d.mts +3 -0
  138. package/dist/services/PtySpawner/index.mjs +1 -0
  139. package/dist/services/RmuxBackend/RmuxBackend.cjs +1 -0
  140. package/dist/services/RmuxBackend/RmuxBackend.d.cts +2 -0
  141. package/dist/services/RmuxBackend/RmuxBackend.d.mts +2 -0
  142. package/dist/services/RmuxBackend/RmuxBackend.mjs +1 -0
  143. package/dist/services/RmuxBackend/index.cjs +1 -0
  144. package/dist/services/RmuxBackend/index.d.cts +3 -0
  145. package/dist/services/RmuxBackend/index.d.mts +3 -0
  146. package/dist/services/RmuxBackend/index.mjs +1 -0
  147. package/dist/services/RunnerNamer/RunnerNamer.cjs +1 -0
  148. package/dist/services/RunnerNamer/RunnerNamer.d.cts +2 -0
  149. package/dist/services/RunnerNamer/RunnerNamer.d.mts +2 -0
  150. package/dist/services/RunnerNamer/RunnerNamer.mjs +1 -0
  151. package/dist/services/RunnerNamer/index.cjs +1 -0
  152. package/dist/services/RunnerNamer/index.d.cts +3 -0
  153. package/dist/services/RunnerNamer/index.d.mts +3 -0
  154. package/dist/services/RunnerNamer/index.mjs +1 -0
  155. package/dist/services/RunnerPaths/RunnerPaths.cjs +1 -0
  156. package/dist/services/RunnerPaths/RunnerPaths.d.cts +2 -0
  157. package/dist/services/RunnerPaths/RunnerPaths.d.mts +2 -0
  158. package/dist/services/RunnerPaths/RunnerPaths.mjs +1 -0
  159. package/dist/services/RunnerPaths/index.cjs +1 -0
  160. package/dist/services/RunnerPaths/index.d.cts +3 -0
  161. package/dist/services/RunnerPaths/index.d.mts +3 -0
  162. package/dist/services/RunnerPaths/index.mjs +1 -0
  163. package/dist/services/RunnerRegistry/RunnerRegistry.cjs +1 -0
  164. package/dist/services/RunnerRegistry/RunnerRegistry.d.cts +2 -0
  165. package/dist/services/RunnerRegistry/RunnerRegistry.d.mts +2 -0
  166. package/dist/services/RunnerRegistry/RunnerRegistry.mjs +1 -0
  167. package/dist/services/RunnerRegistry/index.cjs +1 -0
  168. package/dist/services/RunnerRegistry/index.d.cts +3 -0
  169. package/dist/services/RunnerRegistry/index.d.mts +3 -0
  170. package/dist/services/RunnerRegistry/index.mjs +1 -0
  171. package/dist/services/Spawner/NodeSpawner.cjs +1 -0
  172. package/dist/services/Spawner/NodeSpawner.d.cts +2 -0
  173. package/dist/services/Spawner/NodeSpawner.d.mts +2 -0
  174. package/dist/services/Spawner/NodeSpawner.mjs +1 -0
  175. package/dist/services/Spawner/index.cjs +1 -0
  176. package/dist/services/Spawner/index.d.cts +3 -0
  177. package/dist/services/Spawner/index.d.mts +3 -0
  178. package/dist/services/Spawner/index.mjs +1 -0
  179. package/dist/session.cjs +1 -0
  180. package/dist/session.d.cts +2 -0
  181. package/dist/session.d.mts +2 -0
  182. package/dist/session.mjs +1 -0
  183. package/dist/src/adapters/BashRunService/BashRunService.cjs +2 -0
  184. package/dist/src/adapters/BashRunService/BashRunService.cjs.map +1 -0
  185. package/dist/src/adapters/BashRunService/BashRunService.d.cts +31 -0
  186. package/dist/src/adapters/BashRunService/BashRunService.d.cts.map +1 -0
  187. package/dist/src/adapters/BashRunService/BashRunService.d.mts +31 -0
  188. package/dist/src/adapters/BashRunService/BashRunService.d.mts.map +1 -0
  189. package/dist/src/adapters/BashRunService/BashRunService.mjs +2 -0
  190. package/dist/src/adapters/BashRunService/BashRunService.mjs.map +1 -0
  191. package/dist/src/adapters/Clock/SystemClock.cjs +2 -0
  192. package/dist/src/adapters/Clock/SystemClock.cjs.map +1 -0
  193. package/dist/src/adapters/Clock/SystemClock.d.cts +10 -0
  194. package/dist/src/adapters/Clock/SystemClock.d.cts.map +1 -0
  195. package/dist/src/adapters/Clock/SystemClock.d.mts +10 -0
  196. package/dist/src/adapters/Clock/SystemClock.d.mts.map +1 -0
  197. package/dist/src/adapters/Clock/SystemClock.mjs +2 -0
  198. package/dist/src/adapters/Clock/SystemClock.mjs.map +1 -0
  199. package/dist/src/adapters/Launcher/Launcher.cjs +2 -0
  200. package/dist/src/adapters/Launcher/Launcher.cjs.map +1 -0
  201. package/dist/src/adapters/Launcher/Launcher.d.cts +21 -0
  202. package/dist/src/adapters/Launcher/Launcher.d.cts.map +1 -0
  203. package/dist/src/adapters/Launcher/Launcher.d.mts +21 -0
  204. package/dist/src/adapters/Launcher/Launcher.d.mts.map +1 -0
  205. package/dist/src/adapters/Launcher/Launcher.mjs +2 -0
  206. package/dist/src/adapters/Launcher/Launcher.mjs.map +1 -0
  207. package/dist/src/adapters/Lifeline/NodeLifeline.cjs +2 -0
  208. package/dist/src/adapters/Lifeline/NodeLifeline.cjs.map +1 -0
  209. package/dist/src/adapters/Lifeline/NodeLifeline.d.cts +19 -0
  210. package/dist/src/adapters/Lifeline/NodeLifeline.d.cts.map +1 -0
  211. package/dist/src/adapters/Lifeline/NodeLifeline.d.mts +19 -0
  212. package/dist/src/adapters/Lifeline/NodeLifeline.d.mts.map +1 -0
  213. package/dist/src/adapters/Lifeline/NodeLifeline.mjs +2 -0
  214. package/dist/src/adapters/Lifeline/NodeLifeline.mjs.map +1 -0
  215. package/dist/src/adapters/Lifeline/client.cjs +2 -0
  216. package/dist/src/adapters/Lifeline/client.cjs.map +1 -0
  217. package/dist/src/adapters/Lifeline/client.d.cts +23 -0
  218. package/dist/src/adapters/Lifeline/client.d.cts.map +1 -0
  219. package/dist/src/adapters/Lifeline/client.d.mts +23 -0
  220. package/dist/src/adapters/Lifeline/client.d.mts.map +1 -0
  221. package/dist/src/adapters/Lifeline/client.mjs +2 -0
  222. package/dist/src/adapters/Lifeline/client.mjs.map +1 -0
  223. package/dist/src/adapters/LogFile/LogFile.cjs +2 -0
  224. package/dist/src/adapters/LogFile/LogFile.cjs.map +1 -0
  225. package/dist/src/adapters/LogFile/LogFile.d.cts +11 -0
  226. package/dist/src/adapters/LogFile/LogFile.d.cts.map +1 -0
  227. package/dist/src/adapters/LogFile/LogFile.d.mts +11 -0
  228. package/dist/src/adapters/LogFile/LogFile.d.mts.map +1 -0
  229. package/dist/src/adapters/LogFile/LogFile.mjs +2 -0
  230. package/dist/src/adapters/LogFile/LogFile.mjs.map +1 -0
  231. package/dist/src/adapters/LogReader/LogReader.cjs +10 -0
  232. package/dist/src/adapters/LogReader/LogReader.cjs.map +1 -0
  233. package/dist/src/adapters/LogReader/LogReader.d.cts +13 -0
  234. package/dist/src/adapters/LogReader/LogReader.d.cts.map +1 -0
  235. package/dist/src/adapters/LogReader/LogReader.d.mts +13 -0
  236. package/dist/src/adapters/LogReader/LogReader.d.mts.map +1 -0
  237. package/dist/src/adapters/LogReader/LogReader.mjs +10 -0
  238. package/dist/src/adapters/LogReader/LogReader.mjs.map +1 -0
  239. package/dist/src/adapters/ProcessControl/NodeProcessControl.cjs +2 -0
  240. package/dist/src/adapters/ProcessControl/NodeProcessControl.cjs.map +1 -0
  241. package/dist/src/adapters/ProcessControl/NodeProcessControl.d.cts +10 -0
  242. package/dist/src/adapters/ProcessControl/NodeProcessControl.d.cts.map +1 -0
  243. package/dist/src/adapters/ProcessControl/NodeProcessControl.d.mts +10 -0
  244. package/dist/src/adapters/ProcessControl/NodeProcessControl.d.mts.map +1 -0
  245. package/dist/src/adapters/ProcessControl/NodeProcessControl.mjs +2 -0
  246. package/dist/src/adapters/ProcessControl/NodeProcessControl.mjs.map +1 -0
  247. package/dist/src/adapters/PtyHost/PtyHost.cjs +5 -0
  248. package/dist/src/adapters/PtyHost/PtyHost.cjs.map +1 -0
  249. package/dist/src/adapters/PtyHost/PtyHost.d.cts +23 -0
  250. package/dist/src/adapters/PtyHost/PtyHost.d.cts.map +1 -0
  251. package/dist/src/adapters/PtyHost/PtyHost.d.mts +23 -0
  252. package/dist/src/adapters/PtyHost/PtyHost.d.mts.map +1 -0
  253. package/dist/src/adapters/PtyHost/PtyHost.mjs +5 -0
  254. package/dist/src/adapters/PtyHost/PtyHost.mjs.map +1 -0
  255. package/dist/src/adapters/PtySpawner/NodePtySpawner.cjs +2 -0
  256. package/dist/src/adapters/PtySpawner/NodePtySpawner.cjs.map +1 -0
  257. package/dist/src/adapters/PtySpawner/NodePtySpawner.d.cts +17 -0
  258. package/dist/src/adapters/PtySpawner/NodePtySpawner.d.cts.map +1 -0
  259. package/dist/src/adapters/PtySpawner/NodePtySpawner.d.mts +17 -0
  260. package/dist/src/adapters/PtySpawner/NodePtySpawner.d.mts.map +1 -0
  261. package/dist/src/adapters/PtySpawner/NodePtySpawner.mjs +2 -0
  262. package/dist/src/adapters/PtySpawner/NodePtySpawner.mjs.map +1 -0
  263. package/dist/src/adapters/RmuxBackend/RmuxBackend.cjs +2 -0
  264. package/dist/src/adapters/RmuxBackend/RmuxBackend.cjs.map +1 -0
  265. package/dist/src/adapters/RmuxBackend/RmuxBackend.d.cts +31 -0
  266. package/dist/src/adapters/RmuxBackend/RmuxBackend.d.cts.map +1 -0
  267. package/dist/src/adapters/RmuxBackend/RmuxBackend.d.mts +31 -0
  268. package/dist/src/adapters/RmuxBackend/RmuxBackend.d.mts.map +1 -0
  269. package/dist/src/adapters/RmuxBackend/RmuxBackend.mjs +2 -0
  270. package/dist/src/adapters/RmuxBackend/RmuxBackend.mjs.map +1 -0
  271. package/dist/src/adapters/RunnerPaths.cjs +2 -0
  272. package/dist/src/adapters/RunnerPaths.cjs.map +1 -0
  273. package/dist/src/adapters/RunnerPaths.d.cts +34 -0
  274. package/dist/src/adapters/RunnerPaths.d.cts.map +1 -0
  275. package/dist/src/adapters/RunnerPaths.d.mts +34 -0
  276. package/dist/src/adapters/RunnerPaths.d.mts.map +1 -0
  277. package/dist/src/adapters/RunnerPaths.mjs +2 -0
  278. package/dist/src/adapters/RunnerPaths.mjs.map +1 -0
  279. package/dist/src/adapters/RunnerRegistry/RunnerRegistry.cjs +2 -0
  280. package/dist/src/adapters/RunnerRegistry/RunnerRegistry.cjs.map +1 -0
  281. package/dist/src/adapters/RunnerRegistry/RunnerRegistry.d.cts +37 -0
  282. package/dist/src/adapters/RunnerRegistry/RunnerRegistry.d.cts.map +1 -0
  283. package/dist/src/adapters/RunnerRegistry/RunnerRegistry.d.mts +37 -0
  284. package/dist/src/adapters/RunnerRegistry/RunnerRegistry.d.mts.map +1 -0
  285. package/dist/src/adapters/RunnerRegistry/RunnerRegistry.mjs +2 -0
  286. package/dist/src/adapters/RunnerRegistry/RunnerRegistry.mjs.map +1 -0
  287. package/dist/src/adapters/Spawner/NodeSpawner.cjs +2 -0
  288. package/dist/src/adapters/Spawner/NodeSpawner.cjs.map +1 -0
  289. package/dist/src/adapters/Spawner/NodeSpawner.d.cts +9 -0
  290. package/dist/src/adapters/Spawner/NodeSpawner.d.cts.map +1 -0
  291. package/dist/src/adapters/Spawner/NodeSpawner.d.mts +9 -0
  292. package/dist/src/adapters/Spawner/NodeSpawner.d.mts.map +1 -0
  293. package/dist/src/adapters/Spawner/NodeSpawner.mjs +2 -0
  294. package/dist/src/adapters/Spawner/NodeSpawner.mjs.map +1 -0
  295. package/dist/src/adapters/pi/extension.cjs +3 -0
  296. package/dist/src/adapters/pi/extension.cjs.map +1 -0
  297. package/dist/src/adapters/pi/extension.d.cts +8 -0
  298. package/dist/src/adapters/pi/extension.d.cts.map +1 -0
  299. package/dist/src/adapters/pi/extension.d.mts +8 -0
  300. package/dist/src/adapters/pi/extension.d.mts.map +1 -0
  301. package/dist/src/adapters/pi/extension.mjs +3 -0
  302. package/dist/src/adapters/pi/extension.mjs.map +1 -0
  303. package/dist/src/commands/bash/bashTool.cjs +6 -0
  304. package/dist/src/commands/bash/bashTool.cjs.map +1 -0
  305. package/dist/src/commands/bash/bashTool.d.cts +24 -0
  306. package/dist/src/commands/bash/bashTool.d.cts.map +1 -0
  307. package/dist/src/commands/bash/bashTool.d.mts +24 -0
  308. package/dist/src/commands/bash/bashTool.d.mts.map +1 -0
  309. package/dist/src/commands/bash/bashTool.mjs +6 -0
  310. package/dist/src/commands/bash/bashTool.mjs.map +1 -0
  311. package/dist/src/commands/bash/responseEnvelope.cjs +10 -0
  312. package/dist/src/commands/bash/responseEnvelope.cjs.map +1 -0
  313. package/dist/src/commands/bash/responseEnvelope.d.cts +44 -0
  314. package/dist/src/commands/bash/responseEnvelope.d.cts.map +1 -0
  315. package/dist/src/commands/bash/responseEnvelope.d.mts +44 -0
  316. package/dist/src/commands/bash/responseEnvelope.d.mts.map +1 -0
  317. package/dist/src/commands/bash/responseEnvelope.mjs +10 -0
  318. package/dist/src/commands/bash/responseEnvelope.mjs.map +1 -0
  319. package/dist/src/commands/cli/cliApp.cjs +6 -0
  320. package/dist/src/commands/cli/cliApp.cjs.map +1 -0
  321. package/dist/src/commands/cli/cliApp.d.cts +19 -0
  322. package/dist/src/commands/cli/cliApp.d.cts.map +1 -0
  323. package/dist/src/commands/cli/cliApp.d.mts +19 -0
  324. package/dist/src/commands/cli/cliApp.d.mts.map +1 -0
  325. package/dist/src/commands/cli/cliApp.mjs +6 -0
  326. package/dist/src/commands/cli/cliApp.mjs.map +1 -0
  327. package/dist/src/container/index.cjs +2 -0
  328. package/dist/src/container/index.cjs.map +1 -0
  329. package/dist/src/container/index.d.cts +17 -0
  330. package/dist/src/container/index.d.cts.map +1 -0
  331. package/dist/src/container/index.d.mts +17 -0
  332. package/dist/src/container/index.d.mts.map +1 -0
  333. package/dist/src/container/index.mjs +2 -0
  334. package/dist/src/container/index.mjs.map +1 -0
  335. package/dist/src/container/types.d.cts +38 -0
  336. package/dist/src/container/types.d.cts.map +1 -0
  337. package/dist/src/container/types.d.mts +38 -0
  338. package/dist/src/container/types.d.mts.map +1 -0
  339. package/dist/src/schemas/bashTool.cjs +2 -0
  340. package/dist/src/schemas/bashTool.cjs.map +1 -0
  341. package/dist/src/schemas/bashTool.d.cts +25 -0
  342. package/dist/src/schemas/bashTool.d.cts.map +1 -0
  343. package/dist/src/schemas/bashTool.d.mts +25 -0
  344. package/dist/src/schemas/bashTool.d.mts.map +1 -0
  345. package/dist/src/schemas/bashTool.mjs +2 -0
  346. package/dist/src/schemas/bashTool.mjs.map +1 -0
  347. package/dist/src/schemas/runnerSpec.cjs +2 -0
  348. package/dist/src/schemas/runnerSpec.cjs.map +1 -0
  349. package/dist/src/schemas/runnerSpec.mjs +2 -0
  350. package/dist/src/schemas/runnerSpec.mjs.map +1 -0
  351. package/dist/src/services/AnsiScrub/ansiScrub.cjs +5 -0
  352. package/dist/src/services/AnsiScrub/ansiScrub.cjs.map +1 -0
  353. package/dist/src/services/AnsiScrub/ansiScrub.d.cts +34 -0
  354. package/dist/src/services/AnsiScrub/ansiScrub.d.cts.map +1 -0
  355. package/dist/src/services/AnsiScrub/ansiScrub.d.mts +34 -0
  356. package/dist/src/services/AnsiScrub/ansiScrub.d.mts.map +1 -0
  357. package/dist/src/services/AnsiScrub/ansiScrub.mjs +5 -0
  358. package/dist/src/services/AnsiScrub/ansiScrub.mjs.map +1 -0
  359. package/dist/src/services/RunnerNamer/RunnerNamer.cjs +2 -0
  360. package/dist/src/services/RunnerNamer/RunnerNamer.cjs.map +1 -0
  361. package/dist/src/services/RunnerNamer/RunnerNamer.d.cts +11 -0
  362. package/dist/src/services/RunnerNamer/RunnerNamer.d.cts.map +1 -0
  363. package/dist/src/services/RunnerNamer/RunnerNamer.d.mts +11 -0
  364. package/dist/src/services/RunnerNamer/RunnerNamer.d.mts.map +1 -0
  365. package/dist/src/services/RunnerNamer/RunnerNamer.mjs +2 -0
  366. package/dist/src/services/RunnerNamer/RunnerNamer.mjs.map +1 -0
  367. package/dist/src/services/RunnerNamer/types.d.cts +12 -0
  368. package/dist/src/services/RunnerNamer/types.d.cts.map +1 -0
  369. package/dist/src/services/RunnerNamer/types.d.mts +12 -0
  370. package/dist/src/services/RunnerNamer/types.d.mts.map +1 -0
  371. package/dist/src/services/RunnerPaths/types.d.cts +35 -0
  372. package/dist/src/services/RunnerPaths/types.d.cts.map +1 -0
  373. package/dist/src/services/RunnerPaths/types.d.mts +35 -0
  374. package/dist/src/services/RunnerPaths/types.d.mts.map +1 -0
  375. package/dist/src/services/runs/compaction.cjs +4 -0
  376. package/dist/src/services/runs/compaction.cjs.map +1 -0
  377. package/dist/src/services/runs/compaction.d.cts +13 -0
  378. package/dist/src/services/runs/compaction.d.cts.map +1 -0
  379. package/dist/src/services/runs/compaction.d.mts +13 -0
  380. package/dist/src/services/runs/compaction.d.mts.map +1 -0
  381. package/dist/src/services/runs/compaction.mjs +4 -0
  382. package/dist/src/services/runs/compaction.mjs.map +1 -0
  383. package/dist/src/services/runs/reconcile.cjs +2 -0
  384. package/dist/src/services/runs/reconcile.cjs.map +1 -0
  385. package/dist/src/services/runs/reconcile.d.cts +32 -0
  386. package/dist/src/services/runs/reconcile.d.cts.map +1 -0
  387. package/dist/src/services/runs/reconcile.d.mts +32 -0
  388. package/dist/src/services/runs/reconcile.d.mts.map +1 -0
  389. package/dist/src/services/runs/reconcile.mjs +2 -0
  390. package/dist/src/services/runs/reconcile.mjs.map +1 -0
  391. package/dist/src/services/runs/session.cjs +2 -0
  392. package/dist/src/services/runs/session.cjs.map +1 -0
  393. package/dist/src/services/runs/session.d.cts +10 -0
  394. package/dist/src/services/runs/session.d.cts.map +1 -0
  395. package/dist/src/services/runs/session.d.mts +10 -0
  396. package/dist/src/services/runs/session.d.mts.map +1 -0
  397. package/dist/src/services/runs/session.mjs +2 -0
  398. package/dist/src/services/runs/session.mjs.map +1 -0
  399. package/dist/src/tui/bashRender.cjs +5 -0
  400. package/dist/src/tui/bashRender.cjs.map +1 -0
  401. package/dist/src/tui/bashRender.d.cts +51 -0
  402. package/dist/src/tui/bashRender.d.cts.map +1 -0
  403. package/dist/src/tui/bashRender.d.mts +51 -0
  404. package/dist/src/tui/bashRender.d.mts.map +1 -0
  405. package/dist/src/tui/bashRender.mjs +5 -0
  406. package/dist/src/tui/bashRender.mjs.map +1 -0
  407. package/dist/src/tui/format.cjs +2 -0
  408. package/dist/src/tui/format.cjs.map +1 -0
  409. package/dist/src/tui/format.d.cts +24 -0
  410. package/dist/src/tui/format.d.cts.map +1 -0
  411. package/dist/src/tui/format.d.mts +24 -0
  412. package/dist/src/tui/format.d.mts.map +1 -0
  413. package/dist/src/tui/format.mjs +2 -0
  414. package/dist/src/tui/format.mjs.map +1 -0
  415. package/dist/src/tui/runnerSpace.cjs +6 -0
  416. package/dist/src/tui/runnerSpace.cjs.map +1 -0
  417. package/dist/src/tui/runnerSpace.d.cts +50 -0
  418. package/dist/src/tui/runnerSpace.d.cts.map +1 -0
  419. package/dist/src/tui/runnerSpace.d.mts +50 -0
  420. package/dist/src/tui/runnerSpace.d.mts.map +1 -0
  421. package/dist/src/tui/runnerSpace.mjs +6 -0
  422. package/dist/src/tui/runnerSpace.mjs.map +1 -0
  423. package/dist/src/types/bashRunService.d.cts +62 -0
  424. package/dist/src/types/bashRunService.d.cts.map +1 -0
  425. package/dist/src/types/bashRunService.d.mts +62 -0
  426. package/dist/src/types/bashRunService.d.mts.map +1 -0
  427. package/dist/src/types/clock.d.cts +11 -0
  428. package/dist/src/types/clock.d.cts.map +1 -0
  429. package/dist/src/types/clock.d.mts +11 -0
  430. package/dist/src/types/clock.d.mts.map +1 -0
  431. package/dist/src/types/config.cjs +2 -0
  432. package/dist/src/types/config.cjs.map +1 -0
  433. package/dist/src/types/config.d.cts +32 -0
  434. package/dist/src/types/config.d.cts.map +1 -0
  435. package/dist/src/types/config.d.mts +32 -0
  436. package/dist/src/types/config.d.mts.map +1 -0
  437. package/dist/src/types/config.mjs +2 -0
  438. package/dist/src/types/config.mjs.map +1 -0
  439. package/dist/src/types/launcher.d.cts +39 -0
  440. package/dist/src/types/launcher.d.cts.map +1 -0
  441. package/dist/src/types/launcher.d.mts +39 -0
  442. package/dist/src/types/launcher.d.mts.map +1 -0
  443. package/dist/src/types/lifeline.d.cts +19 -0
  444. package/dist/src/types/lifeline.d.cts.map +1 -0
  445. package/dist/src/types/lifeline.d.mts +19 -0
  446. package/dist/src/types/lifeline.d.mts.map +1 -0
  447. package/dist/src/types/logFile.d.cts +16 -0
  448. package/dist/src/types/logFile.d.cts.map +1 -0
  449. package/dist/src/types/logFile.d.mts +16 -0
  450. package/dist/src/types/logFile.d.mts.map +1 -0
  451. package/dist/src/types/logReader.d.cts +27 -0
  452. package/dist/src/types/logReader.d.cts.map +1 -0
  453. package/dist/src/types/logReader.d.mts +27 -0
  454. package/dist/src/types/logReader.d.mts.map +1 -0
  455. package/dist/src/types/processControl.d.cts +14 -0
  456. package/dist/src/types/processControl.d.cts.map +1 -0
  457. package/dist/src/types/processControl.d.mts +14 -0
  458. package/dist/src/types/processControl.d.mts.map +1 -0
  459. package/dist/src/types/ptyHost.d.cts +38 -0
  460. package/dist/src/types/ptyHost.d.cts.map +1 -0
  461. package/dist/src/types/ptyHost.d.mts +38 -0
  462. package/dist/src/types/ptyHost.d.mts.map +1 -0
  463. package/dist/src/types/ptySpawner.d.cts +28 -0
  464. package/dist/src/types/ptySpawner.d.cts.map +1 -0
  465. package/dist/src/types/ptySpawner.d.mts +28 -0
  466. package/dist/src/types/ptySpawner.d.mts.map +1 -0
  467. package/dist/src/types/rmuxBackend.d.cts +26 -0
  468. package/dist/src/types/rmuxBackend.d.cts.map +1 -0
  469. package/dist/src/types/rmuxBackend.d.mts +26 -0
  470. package/dist/src/types/rmuxBackend.d.mts.map +1 -0
  471. package/dist/src/types/runnerRegistry.d.cts +98 -0
  472. package/dist/src/types/runnerRegistry.d.cts.map +1 -0
  473. package/dist/src/types/runnerRegistry.d.mts +98 -0
  474. package/dist/src/types/runnerRegistry.d.mts.map +1 -0
  475. package/dist/src/types/spawner.d.cts +31 -0
  476. package/dist/src/types/spawner.d.cts.map +1 -0
  477. package/dist/src/types/spawner.d.mts +31 -0
  478. package/dist/src/types/spawner.d.mts.map +1 -0
  479. package/dist/tool/bashTool.cjs +1 -0
  480. package/dist/tool/bashTool.d.cts +2 -0
  481. package/dist/tool/bashTool.d.mts +2 -0
  482. package/dist/tool/bashTool.mjs +1 -0
  483. package/dist/tool/responseEnvelope.cjs +1 -0
  484. package/dist/tool/responseEnvelope.d.cts +2 -0
  485. package/dist/tool/responseEnvelope.d.mts +2 -0
  486. package/dist/tool/responseEnvelope.mjs +1 -0
  487. package/dist/tool/schema.cjs +1 -0
  488. package/dist/tool/schema.d.cts +2 -0
  489. package/dist/tool/schema.d.mts +2 -0
  490. package/dist/tool/schema.mjs +1 -0
  491. package/dist/tui/bashRender.cjs +1 -0
  492. package/dist/tui/bashRender.d.cts +2 -0
  493. package/dist/tui/bashRender.d.mts +2 -0
  494. package/dist/tui/bashRender.mjs +1 -0
  495. package/dist/tui/format.cjs +1 -0
  496. package/dist/tui/format.d.cts +2 -0
  497. package/dist/tui/format.d.mts +2 -0
  498. package/dist/tui/format.mjs +1 -0
  499. package/dist/tui/runnerSpace.cjs +1 -0
  500. package/dist/tui/runnerSpace.d.cts +2 -0
  501. package/dist/tui/runnerSpace.d.mts +2 -0
  502. package/dist/tui/runnerSpace.mjs +1 -0
  503. package/dist/types.cjs +0 -0
  504. package/dist/types.d.cts +2 -0
  505. package/dist/types.d.mts +2 -0
  506. package/dist/types.mjs +1 -0
  507. package/llms.txt +9 -0
  508. package/package.json +19 -14
  509. package/src/prompts/doompi-use-runner/SKILL.md +38 -0
package/README.md CHANGED
@@ -4,7 +4,8 @@ Supervised shell execution, background process control, durable logs, and Runner
4
4
 
5
5
  Part of the [DoomPi distribution](https://www.npmjs.com/package/@agimon-ai/doompi).
6
6
 
7
- Runner replaces Pi's built-in `bash` tool only in sessions that load it. Short commands return inline; long commands can be promoted to a background runner instead of blocking the agent.
7
+ Runner replaces Pi's built-in `bash` tool only in sessions that load it. Short commands return
8
+ inline; long commands can be promoted to a background runner instead of blocking the agent.
8
9
 
9
10
  > **Alpha:** tool and process contracts may change between releases.
10
11
 
@@ -15,7 +16,8 @@ Runner replaces Pi's built-in `bash` tool only in sessions that load it. Short c
15
16
  - `/bin/bash`
16
17
  - macOS or Linux on arm64 or x64 for bundled RMUX support
17
18
 
18
- Linux native loading also depends on a compatible system loader/libc. Runner uses a `node-pty` fallback when RMUX is unavailable.
19
+ Linux native loading also depends on a compatible system loader and libc. Runner uses a `node-pty`
20
+ fallback when RMUX is unavailable.
19
21
 
20
22
  ## Install
21
23
 
@@ -26,7 +28,9 @@ installation:
26
28
  pi install npm:@agimon-ai/doompi-runner
27
29
  ```
28
30
 
29
- Pi discovers Runner's sole extension factory from `package.json.pi.extensions`. The factory joins the runner-scoped Cordis host, mounts one Runner plugin fiber, and disposes that fiber before releasing its host lease when the Pi session shuts down.
31
+ Pi discovers Runner's sole extension factory from `package.json.pi.extensions`. The extension joins
32
+ the runner-scoped Cordis host and releases its plugin resources and host lease when the Pi session
33
+ shuts down.
30
34
 
31
35
  ## Use the `bash` tool
32
36
 
@@ -37,9 +41,12 @@ Pi discovers Runner's sole extension factory from `package.json.pi.extensions`.
37
41
  }
38
42
  ```
39
43
 
40
- Commands crossing the promotion threshold move to a supervised runner. The default threshold is 60 seconds. Set `background: true` to detach immediately, or `interactive: true` only when a command needs terminal input.
44
+ Commands crossing the promotion threshold move to a supervised runner. The default threshold is 60
45
+ seconds. Set `background: true` to detach immediately, or `interactive: true` only when a command
46
+ needs terminal input.
41
47
 
42
- Runner requires `PI_SESSION_ID` for session ownership. Processes, controls, and logs remain addressable after transcript compaction because their identity is outside model context.
48
+ Runner requires `PI_SESSION_ID` for session ownership. Processes, controls, and logs remain
49
+ addressable after transcript compaction because their identity is outside model context.
43
50
 
44
51
  ## Inspect and control runs
45
52
 
@@ -49,37 +56,44 @@ Use `/runners` or `SPC r r` in the TUI. The `doom-runner` CLI supports:
49
56
  doom-runner list
50
57
  doom-runner status <runner-id>
51
58
  doom-runner logs <runner-id>
52
- doom-runner input <runner-id> "y"
59
+ doom-runner input <runner-id> --text "y" --enter
53
60
  doom-runner stop <runner-id>
54
61
  doom-runner stop-all
55
62
  ```
56
63
 
64
+ The `input` command requires a running interactive process backed by RMUX.
65
+
57
66
  Stop runs that are no longer required.
58
67
 
59
68
  ## Storage and limits
60
69
 
61
- Session-scoped logs and registry data live under:
70
+ By default, session-scoped logs and registry data live under:
62
71
 
63
72
  ```text
64
73
  ~/.pi/agent/doom-runner/<session>/
65
74
  ```
66
75
 
67
- Logs rotate at 5 MiB by default and are eligible for cleanup after seven days. Limits and the promotion threshold can be configured through Runner's exported configuration helpers and environment-backed runtime settings.
76
+ Logs rotate at 5 MiB by default and are eligible for cleanup after seven days. Limits and the
77
+ promotion threshold can be configured through Runner's exported configuration helpers and
78
+ environment-backed runtime settings.
68
79
 
69
- Commands inherit the DoomPi process environment and the operating-system user's privileges. Logs may contain prompts, source, command output, credentials, or other secrets; restrict access and retention accordingly.
80
+ Commands inherit the DoomPi process environment and the operating system user's privileges. Logs
81
+ may contain prompts, source, command output, credentials, or other secrets; restrict access and
82
+ retention accordingly.
70
83
 
71
84
  ## Native artifacts
72
85
 
73
86
  Runner selects one optional dependency automatically:
74
87
 
75
- | Host | Package |
76
- | ----------- | --------------------------------- |
77
- | macOS arm64 | `doompi-runner-rmux-darwin-arm64` |
78
- | macOS x64 | `doompi-runner-rmux-darwin-x64` |
79
- | Linux arm64 | `doompi-runner-rmux-linux-arm64` |
80
- | Linux x64 | `doompi-runner-rmux-linux-x64` |
88
+ | Host | Package |
89
+ | ----------- | -------------------------------------------- |
90
+ | macOS arm64 | `@agimon-ai/doompi-runner-rmux-darwin-arm64` |
91
+ | macOS x64 | `@agimon-ai/doompi-runner-rmux-darwin-x64` |
92
+ | Linux arm64 | `@agimon-ai/doompi-runner-rmux-linux-arm64` |
93
+ | Linux x64 | `@agimon-ai/doompi-runner-rmux-linux-x64` |
81
94
 
82
- Do not install these metadata-only native packages directly.
95
+ Do not install these platform packages directly. They contain native RMUX executables and export
96
+ only package metadata.
83
97
 
84
98
  ## Public API
85
99
 
@@ -93,7 +107,8 @@ import {
93
107
  } from '@agimon-ai/doompi-runner';
94
108
  ```
95
109
 
96
- Declared subpaths expose process supervision, configuration, tools, response envelopes, and TUI integration for host authors.
110
+ Declared subpaths expose process supervision, configuration, tools, response envelopes, and TUI
111
+ integration for host authors.
97
112
 
98
113
  ## Development
99
114
 
@@ -0,0 +1 @@
1
+ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,s)=>(s=n==null?{}:e(i(n)),o(r||!n||!n.__esModule||!a.call(n,`default`)?t(s,`default`,{value:n,enumerable:!0}):s,n));exports.__toESM=s;
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env node
2
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../src/container/index.cjs"),t=require("../src/commands/cli/cliApp.cjs");let n=require("node:url"),r=require("@agimon-ai/doompi-telemetry");async function i(){let e=[];for await(let t of process.stdin)e.push(Buffer.isBuffer(t)?t:Buffer.from(t));return Buffer.concat(e).toString(`utf8`)}async function a(n=process.argv.slice(2)){let a=Date.now(),o=(0,r.createDoomTelemetry)({serviceName:`doom-runner-cli`,packageName:`@agimon-ai/doompi-runner`,env:process.env,enableLogs:!0,enableTraces:!0}),s=e.createRunnerContainer(),c=s.runnerRegistry,l=0,u=0;try{let e=await t.runCli(n,{registry:c,launcher:s.launcher,rmuxBackend:s.rmuxBackend,logReader:s.logReader,env:process.env,stdout:e=>{let t=e.endsWith(`
3
+ `)?e:`${e}\n`;l+=Buffer.byteLength(t,`utf8`),process.stdout.write(t)},stderr:e=>{let t=e.endsWith(`
4
+ `)?e:`${e}\n`;u+=Buffer.byteLength(t,`utf8`),process.stderr.write(t)},readStdin:i});return await o.recordEvent(`doom_runner.cli_finished`,{outcome:e===0?`completed`:`failed`,"runner.exit_code":e,duration_ms:Date.now()-a,"runner.argument_count":n.length,"runner.stdout_bytes":l,"runner.stderr_bytes":u}),e}catch(e){throw await o.recordError(`doom_runner.cli_failed`,e,{duration_ms:Date.now()-a,"runner.argument_count":n.length,"runner.stdout_bytes":l,"runner.stderr_bytes":u}),e}finally{c.close(),await o.shutdown()}}process.argv[1]&&require("url").pathToFileURL(__filename).href===(0,n.pathToFileURL)(process.argv[1]).href&&a().then(e=>{process.exitCode=e},e=>{process.stderr.write(`${e instanceof Error?e.message:String(e)}\n`),process.exitCode=1}),exports.main=a;
5
+ //# sourceMappingURL=cli.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.cjs","names":["createDoomTelemetry","createRunnerContainer","runCli","pathToFileURL"],"sources":["../../src/bin/cli.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { pathToFileURL } from 'node:url';\nimport { createDoomTelemetry } from '@agimon-ai/doompi-telemetry';\nimport { runCli } from '../commands/cli/cliApp.ts';\nimport { createRunnerContainer } from '../container/index.ts';\n\nasync function readStdin(): Promise<string> {\n const chunks: Buffer[] = [];\n for await (const chunk of process.stdin) chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));\n return Buffer.concat(chunks).toString('utf8');\n}\n\nexport async function main(argv: readonly string[] = process.argv.slice(2)): Promise<number> {\n const startedAt = Date.now();\n const telemetry = createDoomTelemetry({\n serviceName: 'doom-runner-cli',\n packageName: '@agimon-ai/doompi-runner',\n env: process.env,\n enableLogs: true,\n enableTraces: true,\n });\n const container = createRunnerContainer();\n const registry = container.runnerRegistry;\n let stdoutBytes = 0;\n let stderrBytes = 0;\n try {\n const exitCode = await runCli(argv, {\n registry,\n launcher: container.launcher,\n rmuxBackend: container.rmuxBackend,\n logReader: container.logReader,\n env: process.env,\n stdout: (text) => {\n const output = text.endsWith('\\n') ? text : `${text}\\n`;\n stdoutBytes += Buffer.byteLength(output, 'utf8');\n process.stdout.write(output);\n },\n stderr: (text) => {\n const output = text.endsWith('\\n') ? text : `${text}\\n`;\n stderrBytes += Buffer.byteLength(output, 'utf8');\n process.stderr.write(output);\n },\n readStdin,\n });\n await telemetry.recordEvent('doom_runner.cli_finished', {\n outcome: exitCode === 0 ? 'completed' : 'failed',\n 'runner.exit_code': exitCode,\n duration_ms: Date.now() - startedAt,\n 'runner.argument_count': argv.length,\n 'runner.stdout_bytes': stdoutBytes,\n 'runner.stderr_bytes': stderrBytes,\n });\n return exitCode;\n } catch (error) {\n await telemetry.recordError('doom_runner.cli_failed', error, {\n duration_ms: Date.now() - startedAt,\n 'runner.argument_count': argv.length,\n 'runner.stdout_bytes': stdoutBytes,\n 'runner.stderr_bytes': stderrBytes,\n });\n throw error;\n } finally {\n registry.close();\n await telemetry.shutdown();\n }\n}\n\nif (process.argv[1] && import.meta.url === pathToFileURL(process.argv[1]).href) {\n main().then(\n (code) => {\n process.exitCode = code;\n },\n (error: unknown) => {\n process.stderr.write(`${error instanceof Error ? error.message : String(error)}\\n`);\n process.exitCode = 1;\n },\n );\n}\n"],"mappings":";gOAOA,eAAe,GAA6B,CAC1C,IAAM,EAAmB,CAAC,EAC1B,UAAW,IAAM,KAAS,QAAQ,MAAO,EAAO,KAAK,OAAO,SAAS,CAAK,EAAI,EAAQ,OAAO,KAAK,CAAK,CAAC,EACxG,OAAO,OAAO,OAAO,CAAM,CAAC,CAAC,SAAS,MAAM,CAC9C,CAEA,eAAsB,EAAK,EAA0B,QAAQ,KAAK,MAAM,CAAC,EAAoB,CAC3F,IAAM,EAAY,KAAK,IAAI,EACrB,GAAA,EAAYA,EAAAA,oBAAAA,CAAoB,CACpC,YAAa,kBACb,YAAa,2BACb,IAAK,QAAQ,IACb,WAAY,GACZ,aAAc,EAChB,CAAC,EACK,EAAYC,EAAAA,sBAAsB,EAClC,EAAW,EAAU,eACvB,EAAc,EACd,EAAc,EAClB,GAAI,CACF,IAAM,EAAW,MAAMC,EAAAA,OAAO,EAAM,CAClC,WACA,SAAU,EAAU,SACpB,YAAa,EAAU,YACvB,UAAW,EAAU,UACrB,IAAK,QAAQ,IACb,OAAS,GAAS,CAChB,IAAM,EAAS,EAAK,SAAS;CAAI,EAAI,EAAO,GAAG,EAAK,IACpD,GAAe,OAAO,WAAW,EAAQ,MAAM,EAC/C,QAAQ,OAAO,MAAM,CAAM,CAC7B,EACA,OAAS,GAAS,CAChB,IAAM,EAAS,EAAK,SAAS;CAAI,EAAI,EAAO,GAAG,EAAK,IACpD,GAAe,OAAO,WAAW,EAAQ,MAAM,EAC/C,QAAQ,OAAO,MAAM,CAAM,CAC7B,EACA,WACF,CAAC,EASD,OARA,MAAM,EAAU,YAAY,2BAA4B,CACtD,QAAS,IAAa,EAAI,YAAc,SACxC,mBAAoB,EACpB,YAAa,KAAK,IAAI,EAAI,EAC1B,wBAAyB,EAAK,OAC9B,sBAAuB,EACvB,sBAAuB,CACzB,CAAC,EACM,CACT,OAAS,EAAO,CAOd,MANA,MAAM,EAAU,YAAY,yBAA0B,EAAO,CAC3D,YAAa,KAAK,IAAI,EAAI,EAC1B,wBAAyB,EAAK,OAC9B,sBAAuB,EACvB,sBAAuB,CACzB,CAAC,EACK,CACR,QAAU,CACR,EAAS,MAAM,EACf,MAAM,EAAU,SAAS,CAC3B,CACF,CAEI,QAAQ,KAAK,IAAA,QAAA,KAAA,CAAA,CAAA,cAAA,UAAA,CAAA,CAAA,QAAA,EAA0BC,EAAAA,cAAAA,CAAc,QAAQ,KAAK,EAAE,CAAC,CAAC,MACxE,EAAK,CAAC,CAAC,KACJ,GAAS,CACR,QAAQ,SAAW,CACrB,EACC,GAAmB,CAClB,QAAQ,OAAO,MAAM,GAAG,aAAiB,MAAQ,EAAM,QAAU,OAAO,CAAK,EAAE,GAAG,EAClF,QAAQ,SAAW,CACrB,CACF"}
@@ -0,0 +1,5 @@
1
+ //#region src/bin/cli.d.ts
2
+ declare function main(argv?: readonly string[]): Promise<number>;
3
+ //#endregion
4
+ export { main };
5
+ //# sourceMappingURL=cli.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.cts","names":[],"sources":["../../src/bin/cli.ts"],"mappings":";iBAasB,KAAK,2BAAkD"}
@@ -0,0 +1,5 @@
1
+ //#region src/bin/cli.d.ts
2
+ declare function main(argv?: readonly string[]): Promise<number>;
3
+ //#endregion
4
+ export { main };
5
+ //# sourceMappingURL=cli.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.mts","names":[],"sources":["../../src/bin/cli.ts"],"mappings":";iBAasB,KAAK,2BAAkD"}
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env node
2
+ import{createRunnerContainer as e}from"../src/container/index.mjs";import{runCli as t}from"../src/commands/cli/cliApp.mjs";import{pathToFileURL as n}from"node:url";import{createDoomTelemetry as r}from"@agimon-ai/doompi-telemetry";async function i(){let e=[];for await(let t of process.stdin)e.push(Buffer.isBuffer(t)?t:Buffer.from(t));return Buffer.concat(e).toString(`utf8`)}async function a(n=process.argv.slice(2)){let a=Date.now(),o=r({serviceName:`doom-runner-cli`,packageName:`@agimon-ai/doompi-runner`,env:process.env,enableLogs:!0,enableTraces:!0}),s=e(),c=s.runnerRegistry,l=0,u=0;try{let e=await t(n,{registry:c,launcher:s.launcher,rmuxBackend:s.rmuxBackend,logReader:s.logReader,env:process.env,stdout:e=>{let t=e.endsWith(`
3
+ `)?e:`${e}\n`;l+=Buffer.byteLength(t,`utf8`),process.stdout.write(t)},stderr:e=>{let t=e.endsWith(`
4
+ `)?e:`${e}\n`;u+=Buffer.byteLength(t,`utf8`),process.stderr.write(t)},readStdin:i});return await o.recordEvent(`doom_runner.cli_finished`,{outcome:e===0?`completed`:`failed`,"runner.exit_code":e,duration_ms:Date.now()-a,"runner.argument_count":n.length,"runner.stdout_bytes":l,"runner.stderr_bytes":u}),e}catch(e){throw await o.recordError(`doom_runner.cli_failed`,e,{duration_ms:Date.now()-a,"runner.argument_count":n.length,"runner.stdout_bytes":l,"runner.stderr_bytes":u}),e}finally{c.close(),await o.shutdown()}}process.argv[1]&&import.meta.url===n(process.argv[1]).href&&a().then(e=>{process.exitCode=e},e=>{process.stderr.write(`${e instanceof Error?e.message:String(e)}\n`),process.exitCode=1});export{a as main};
5
+ //# sourceMappingURL=cli.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.mjs","names":[],"sources":["../../src/bin/cli.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { pathToFileURL } from 'node:url';\nimport { createDoomTelemetry } from '@agimon-ai/doompi-telemetry';\nimport { runCli } from '../commands/cli/cliApp.ts';\nimport { createRunnerContainer } from '../container/index.ts';\n\nasync function readStdin(): Promise<string> {\n const chunks: Buffer[] = [];\n for await (const chunk of process.stdin) chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));\n return Buffer.concat(chunks).toString('utf8');\n}\n\nexport async function main(argv: readonly string[] = process.argv.slice(2)): Promise<number> {\n const startedAt = Date.now();\n const telemetry = createDoomTelemetry({\n serviceName: 'doom-runner-cli',\n packageName: '@agimon-ai/doompi-runner',\n env: process.env,\n enableLogs: true,\n enableTraces: true,\n });\n const container = createRunnerContainer();\n const registry = container.runnerRegistry;\n let stdoutBytes = 0;\n let stderrBytes = 0;\n try {\n const exitCode = await runCli(argv, {\n registry,\n launcher: container.launcher,\n rmuxBackend: container.rmuxBackend,\n logReader: container.logReader,\n env: process.env,\n stdout: (text) => {\n const output = text.endsWith('\\n') ? text : `${text}\\n`;\n stdoutBytes += Buffer.byteLength(output, 'utf8');\n process.stdout.write(output);\n },\n stderr: (text) => {\n const output = text.endsWith('\\n') ? text : `${text}\\n`;\n stderrBytes += Buffer.byteLength(output, 'utf8');\n process.stderr.write(output);\n },\n readStdin,\n });\n await telemetry.recordEvent('doom_runner.cli_finished', {\n outcome: exitCode === 0 ? 'completed' : 'failed',\n 'runner.exit_code': exitCode,\n duration_ms: Date.now() - startedAt,\n 'runner.argument_count': argv.length,\n 'runner.stdout_bytes': stdoutBytes,\n 'runner.stderr_bytes': stderrBytes,\n });\n return exitCode;\n } catch (error) {\n await telemetry.recordError('doom_runner.cli_failed', error, {\n duration_ms: Date.now() - startedAt,\n 'runner.argument_count': argv.length,\n 'runner.stdout_bytes': stdoutBytes,\n 'runner.stderr_bytes': stderrBytes,\n });\n throw error;\n } finally {\n registry.close();\n await telemetry.shutdown();\n }\n}\n\nif (process.argv[1] && import.meta.url === pathToFileURL(process.argv[1]).href) {\n main().then(\n (code) => {\n process.exitCode = code;\n },\n (error: unknown) => {\n process.stderr.write(`${error instanceof Error ? error.message : String(error)}\\n`);\n process.exitCode = 1;\n },\n );\n}\n"],"mappings":";sOAOA,eAAe,GAA6B,CAC1C,IAAM,EAAmB,CAAC,EAC1B,UAAW,IAAM,KAAS,QAAQ,MAAO,EAAO,KAAK,OAAO,SAAS,CAAK,EAAI,EAAQ,OAAO,KAAK,CAAK,CAAC,EACxG,OAAO,OAAO,OAAO,CAAM,CAAC,CAAC,SAAS,MAAM,CAC9C,CAEA,eAAsB,EAAK,EAA0B,QAAQ,KAAK,MAAM,CAAC,EAAoB,CAC3F,IAAM,EAAY,KAAK,IAAI,EACrB,EAAY,EAAoB,CACpC,YAAa,kBACb,YAAa,2BACb,IAAK,QAAQ,IACb,WAAY,GACZ,aAAc,EAChB,CAAC,EACK,EAAY,EAAsB,EAClC,EAAW,EAAU,eACvB,EAAc,EACd,EAAc,EAClB,GAAI,CACF,IAAM,EAAW,MAAM,EAAO,EAAM,CAClC,WACA,SAAU,EAAU,SACpB,YAAa,EAAU,YACvB,UAAW,EAAU,UACrB,IAAK,QAAQ,IACb,OAAS,GAAS,CAChB,IAAM,EAAS,EAAK,SAAS;CAAI,EAAI,EAAO,GAAG,EAAK,IACpD,GAAe,OAAO,WAAW,EAAQ,MAAM,EAC/C,QAAQ,OAAO,MAAM,CAAM,CAC7B,EACA,OAAS,GAAS,CAChB,IAAM,EAAS,EAAK,SAAS;CAAI,EAAI,EAAO,GAAG,EAAK,IACpD,GAAe,OAAO,WAAW,EAAQ,MAAM,EAC/C,QAAQ,OAAO,MAAM,CAAM,CAC7B,EACA,WACF,CAAC,EASD,OARA,MAAM,EAAU,YAAY,2BAA4B,CACtD,QAAS,IAAa,EAAI,YAAc,SACxC,mBAAoB,EACpB,YAAa,KAAK,IAAI,EAAI,EAC1B,wBAAyB,EAAK,OAC9B,sBAAuB,EACvB,sBAAuB,CACzB,CAAC,EACM,CACT,OAAS,EAAO,CAOd,MANA,MAAM,EAAU,YAAY,yBAA0B,EAAO,CAC3D,YAAa,KAAK,IAAI,EAAI,EAC1B,wBAAyB,EAAK,OAC9B,sBAAuB,EACvB,sBAAuB,CACzB,CAAC,EACK,CACR,QAAU,CACR,EAAS,MAAM,EACf,MAAM,EAAU,SAAS,CAC3B,CACF,CAEI,QAAQ,KAAK,IAAM,YAAY,MAAQ,EAAc,QAAQ,KAAK,EAAE,CAAC,CAAC,MACxE,EAAK,CAAC,CAAC,KACJ,GAAS,CACR,QAAQ,SAAW,CACrB,EACC,GAAmB,CAClB,QAAQ,OAAO,MAAM,GAAG,aAAiB,MAAQ,EAAM,QAAU,OAAO,CAAK,EAAE,GAAG,EAClF,QAAQ,SAAW,CACrB,CACF"}
@@ -0,0 +1,2 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../_virtual/_rolldown/runtime.cjs"),t=require("../src/services/AnsiScrub/ansiScrub.cjs");let n=require("node:fs");n=e.__toESM(n,1);let r=require("node:url"),i=require("@agimon-ai/doompi-telemetry");async function a(e=process.argv.slice(2)){let r=Date.now(),a=(0,i.createDoomTelemetry)({serviceName:`doom-runner-log-sink`,packageName:`@agimon-ai/doompi-runner`,env:process.env,enableLogs:!0,enableTraces:!0}),[s,c,l,u]=e,d;try{if(!s||!c||!l||!u)throw Error(`logSink requires log, rotated log, max bytes, and completion paths`);if(d=Number(l),!Number.isFinite(d)||d<=0)throw Error(`logSink max bytes must be positive`)}catch(e){throw await a.recordError(`doom_runner.file_sink_failed`,e,{duration_ms:Date.now()-r}),await a.shutdown(),e}let f,p;try{f=n.default.openSync(s,`a`),p=n.default.statSync(s).size}catch(e){throw await a.recordError(`doom_runner.file_sink_failed`,e,{duration_ms:Date.now()-r}),await a.shutdown(),e}let m=0,h=0;try{process.stdin.setEncoding(`utf8`);for await(let e of process.stdin){let r=t.scrubTerminalOutput(String(e));if(!r)continue;let i=Buffer.from(r,`utf8`);p+i.byteLength>d&&(n.default.closeSync(f),n.default.renameSync(s,c),f=n.default.openSync(s,`w`),p=0,h+=1),n.default.writeSync(f,i),p+=i.byteLength,m+=1}return n.default.closeSync(f),o(u),await a.recordEvent(`doom_runner.file_sink_finished`,{outcome:`completed`,"runner.chunk_count":m,"runner.bytes_written":p,"runner.rotation_count":h,duration_ms:Date.now()-r}),0}catch(e){throw await a.recordError(`doom_runner.file_sink_failed`,e,{duration_ms:Date.now()-r}),e}finally{await a.shutdown()}}function o(e){let t=`${e}.${process.pid}.tmp`;n.default.writeFileSync(t,``,{mode:384}),n.default.renameSync(t,e)}process.argv[1]&&require("url").pathToFileURL(__filename).href===(0,r.pathToFileURL)(process.argv[1]).href&&a().then(e=>{process.exitCode=e},e=>{process.stderr.write(`${e instanceof Error?e.message:String(e)}\n`),process.exitCode=1}),exports.main=a;
2
+ //# sourceMappingURL=logSink.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logSink.cjs","names":["createDoomTelemetry","fs","scrubTerminalOutput","pathToFileURL"],"sources":["../../src/bin/logSink.ts"],"sourcesContent":["import fs from 'node:fs';\nimport { pathToFileURL } from 'node:url';\nimport { createDoomTelemetry } from '@agimon-ai/doompi-telemetry';\nimport { scrubTerminalOutput } from '../services/AnsiScrub/ansiScrub';\n\nexport async function main(argv: readonly string[] = process.argv.slice(2)): Promise<number> {\n const startedAt = Date.now();\n const telemetry = createDoomTelemetry({\n serviceName: 'doom-runner-log-sink',\n packageName: '@agimon-ai/doompi-runner',\n env: process.env,\n enableLogs: true,\n enableTraces: true,\n });\n const [logPath, rotatedPath, maxBytesRaw, donePath] = argv;\n let maxBytes: number;\n try {\n if (!logPath || !rotatedPath || !maxBytesRaw || !donePath) {\n throw new Error('logSink requires log, rotated log, max bytes, and completion paths');\n }\n maxBytes = Number(maxBytesRaw);\n if (!Number.isFinite(maxBytes) || maxBytes <= 0) throw new Error('logSink max bytes must be positive');\n } catch (error) {\n await telemetry.recordError('doom_runner.file_sink_failed', error, { duration_ms: Date.now() - startedAt });\n await telemetry.shutdown();\n throw error;\n }\n\n let handle: number;\n let written: number;\n try {\n handle = fs.openSync(logPath, 'a');\n written = fs.statSync(logPath).size;\n } catch (error) {\n await telemetry.recordError('doom_runner.file_sink_failed', error, { duration_ms: Date.now() - startedAt });\n await telemetry.shutdown();\n throw error;\n }\n let chunks = 0;\n let rotations = 0;\n try {\n process.stdin.setEncoding('utf8');\n for await (const chunk of process.stdin) {\n const text = scrubTerminalOutput(String(chunk));\n if (!text) continue;\n const bytes = Buffer.from(text, 'utf8');\n if (written + bytes.byteLength > maxBytes) {\n fs.closeSync(handle);\n fs.renameSync(logPath, rotatedPath);\n handle = fs.openSync(logPath, 'w');\n written = 0;\n rotations += 1;\n }\n fs.writeSync(handle, bytes);\n written += bytes.byteLength;\n chunks += 1;\n }\n fs.closeSync(handle);\n writeDone(donePath);\n await telemetry.recordEvent('doom_runner.file_sink_finished', {\n outcome: 'completed',\n 'runner.chunk_count': chunks,\n 'runner.bytes_written': written,\n 'runner.rotation_count': rotations,\n duration_ms: Date.now() - startedAt,\n });\n return 0;\n } catch (error) {\n await telemetry.recordError('doom_runner.file_sink_failed', error, { duration_ms: Date.now() - startedAt });\n throw error;\n } finally {\n await telemetry.shutdown();\n }\n}\n\nfunction writeDone(target: string): void {\n const temporary = `${target}.${process.pid}.tmp`;\n fs.writeFileSync(temporary, '', { mode: 0o600 });\n fs.renameSync(temporary, target);\n}\n\nif (process.argv[1] && import.meta.url === pathToFileURL(process.argv[1]).href) {\n main().then(\n (code) => {\n process.exitCode = code;\n },\n (error: unknown) => {\n process.stderr.write(`${error instanceof Error ? error.message : String(error)}\\n`);\n process.exitCode = 1;\n },\n );\n}\n"],"mappings":"0RAKA,eAAsB,EAAK,EAA0B,QAAQ,KAAK,MAAM,CAAC,EAAoB,CAC3F,IAAM,EAAY,KAAK,IAAI,EACrB,GAAA,EAAYA,EAAAA,oBAAAA,CAAoB,CACpC,YAAa,uBACb,YAAa,2BACb,IAAK,QAAQ,IACb,WAAY,GACZ,aAAc,EAChB,CAAC,EACK,CAAC,EAAS,EAAa,EAAa,GAAY,EAClD,EACJ,GAAI,CACF,GAAI,CAAC,GAAW,CAAC,GAAe,CAAC,GAAe,CAAC,EAC/C,MAAU,MAAM,oEAAoE,EAGtF,GADA,EAAW,OAAO,CAAW,EACzB,CAAC,OAAO,SAAS,CAAQ,GAAK,GAAY,EAAG,MAAU,MAAM,oCAAoC,CACvG,OAAS,EAAO,CAGd,MAFA,MAAM,EAAU,YAAY,+BAAgC,EAAO,CAAE,YAAa,KAAK,IAAI,EAAI,CAAU,CAAC,EAC1G,MAAM,EAAU,SAAS,EACnB,CACR,CAEA,IAAI,EACA,EACJ,GAAI,CACF,EAASC,EAAAA,QAAG,SAAS,EAAS,GAAG,EACjC,EAAUA,EAAAA,QAAG,SAAS,CAAO,CAAC,CAAC,IACjC,OAAS,EAAO,CAGd,MAFA,MAAM,EAAU,YAAY,+BAAgC,EAAO,CAAE,YAAa,KAAK,IAAI,EAAI,CAAU,CAAC,EAC1G,MAAM,EAAU,SAAS,EACnB,CACR,CACA,IAAI,EAAS,EACT,EAAY,EAChB,GAAI,CACF,QAAQ,MAAM,YAAY,MAAM,EAChC,UAAW,IAAM,KAAS,QAAQ,MAAO,CACvC,IAAM,EAAOC,EAAAA,oBAAoB,OAAO,CAAK,CAAC,EAC9C,GAAI,CAAC,EAAM,SACX,IAAM,EAAQ,OAAO,KAAK,EAAM,MAAM,EAClC,EAAU,EAAM,WAAa,IAC/B,EAAA,QAAG,UAAU,CAAM,EACnB,EAAA,QAAG,WAAW,EAAS,CAAW,EAClC,EAASD,EAAAA,QAAG,SAAS,EAAS,GAAG,EACjC,EAAU,EACV,GAAa,GAEf,EAAA,QAAG,UAAU,EAAQ,CAAK,EAC1B,GAAW,EAAM,WACjB,GAAU,CACZ,CAUA,OATA,EAAA,QAAG,UAAU,CAAM,EACnB,EAAU,CAAQ,EAClB,MAAM,EAAU,YAAY,iCAAkC,CAC5D,QAAS,YACT,qBAAsB,EACtB,uBAAwB,EACxB,wBAAyB,EACzB,YAAa,KAAK,IAAI,EAAI,CAC5B,CAAC,EACM,CACT,OAAS,EAAO,CAEd,MADA,MAAM,EAAU,YAAY,+BAAgC,EAAO,CAAE,YAAa,KAAK,IAAI,EAAI,CAAU,CAAC,EACpG,CACR,QAAU,CACR,MAAM,EAAU,SAAS,CAC3B,CACF,CAEA,SAAS,EAAU,EAAsB,CACvC,IAAM,EAAY,GAAG,EAAO,GAAG,QAAQ,IAAI,MAC3C,EAAA,QAAG,cAAc,EAAW,GAAI,CAAE,KAAM,GAAM,CAAC,EAC/C,EAAA,QAAG,WAAW,EAAW,CAAM,CACjC,CAEI,QAAQ,KAAK,IAAA,QAAA,KAAA,CAAA,CAAA,cAAA,UAAA,CAAA,CAAA,QAAA,EAA0BE,EAAAA,cAAAA,CAAc,QAAQ,KAAK,EAAE,CAAC,CAAC,MACxE,EAAK,CAAC,CAAC,KACJ,GAAS,CACR,QAAQ,SAAW,CACrB,EACC,GAAmB,CAClB,QAAQ,OAAO,MAAM,GAAG,aAAiB,MAAQ,EAAM,QAAU,OAAO,CAAK,EAAE,GAAG,EAClF,QAAQ,SAAW,CACrB,CACF"}
@@ -0,0 +1,5 @@
1
+ //#region src/bin/logSink.d.ts
2
+ declare function main(argv?: readonly string[]): Promise<number>;
3
+ //#endregion
4
+ export { main };
5
+ //# sourceMappingURL=logSink.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logSink.d.cts","names":[],"sources":["../../src/bin/logSink.ts"],"mappings":";iBAKsB,KAAK,2BAAkD"}
@@ -0,0 +1,5 @@
1
+ //#region src/bin/logSink.d.ts
2
+ declare function main(argv?: readonly string[]): Promise<number>;
3
+ //#endregion
4
+ export { main };
5
+ //# sourceMappingURL=logSink.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logSink.d.mts","names":[],"sources":["../../src/bin/logSink.ts"],"mappings":";iBAKsB,KAAK,2BAAkD"}
@@ -0,0 +1,2 @@
1
+ import{scrubTerminalOutput as e}from"../src/services/AnsiScrub/ansiScrub.mjs";import t from"node:fs";import{pathToFileURL as n}from"node:url";import{createDoomTelemetry as r}from"@agimon-ai/doompi-telemetry";async function i(n=process.argv.slice(2)){let i=Date.now(),o=r({serviceName:`doom-runner-log-sink`,packageName:`@agimon-ai/doompi-runner`,env:process.env,enableLogs:!0,enableTraces:!0}),[s,c,l,u]=n,d;try{if(!s||!c||!l||!u)throw Error(`logSink requires log, rotated log, max bytes, and completion paths`);if(d=Number(l),!Number.isFinite(d)||d<=0)throw Error(`logSink max bytes must be positive`)}catch(e){throw await o.recordError(`doom_runner.file_sink_failed`,e,{duration_ms:Date.now()-i}),await o.shutdown(),e}let f,p;try{f=t.openSync(s,`a`),p=t.statSync(s).size}catch(e){throw await o.recordError(`doom_runner.file_sink_failed`,e,{duration_ms:Date.now()-i}),await o.shutdown(),e}let m=0,h=0;try{process.stdin.setEncoding(`utf8`);for await(let n of process.stdin){let r=e(String(n));if(!r)continue;let i=Buffer.from(r,`utf8`);p+i.byteLength>d&&(t.closeSync(f),t.renameSync(s,c),f=t.openSync(s,`w`),p=0,h+=1),t.writeSync(f,i),p+=i.byteLength,m+=1}return t.closeSync(f),a(u),await o.recordEvent(`doom_runner.file_sink_finished`,{outcome:`completed`,"runner.chunk_count":m,"runner.bytes_written":p,"runner.rotation_count":h,duration_ms:Date.now()-i}),0}catch(e){throw await o.recordError(`doom_runner.file_sink_failed`,e,{duration_ms:Date.now()-i}),e}finally{await o.shutdown()}}function a(e){let n=`${e}.${process.pid}.tmp`;t.writeFileSync(n,``,{mode:384}),t.renameSync(n,e)}process.argv[1]&&import.meta.url===n(process.argv[1]).href&&i().then(e=>{process.exitCode=e},e=>{process.stderr.write(`${e instanceof Error?e.message:String(e)}\n`),process.exitCode=1});export{i as main};
2
+ //# sourceMappingURL=logSink.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logSink.mjs","names":[],"sources":["../../src/bin/logSink.ts"],"sourcesContent":["import fs from 'node:fs';\nimport { pathToFileURL } from 'node:url';\nimport { createDoomTelemetry } from '@agimon-ai/doompi-telemetry';\nimport { scrubTerminalOutput } from '../services/AnsiScrub/ansiScrub';\n\nexport async function main(argv: readonly string[] = process.argv.slice(2)): Promise<number> {\n const startedAt = Date.now();\n const telemetry = createDoomTelemetry({\n serviceName: 'doom-runner-log-sink',\n packageName: '@agimon-ai/doompi-runner',\n env: process.env,\n enableLogs: true,\n enableTraces: true,\n });\n const [logPath, rotatedPath, maxBytesRaw, donePath] = argv;\n let maxBytes: number;\n try {\n if (!logPath || !rotatedPath || !maxBytesRaw || !donePath) {\n throw new Error('logSink requires log, rotated log, max bytes, and completion paths');\n }\n maxBytes = Number(maxBytesRaw);\n if (!Number.isFinite(maxBytes) || maxBytes <= 0) throw new Error('logSink max bytes must be positive');\n } catch (error) {\n await telemetry.recordError('doom_runner.file_sink_failed', error, { duration_ms: Date.now() - startedAt });\n await telemetry.shutdown();\n throw error;\n }\n\n let handle: number;\n let written: number;\n try {\n handle = fs.openSync(logPath, 'a');\n written = fs.statSync(logPath).size;\n } catch (error) {\n await telemetry.recordError('doom_runner.file_sink_failed', error, { duration_ms: Date.now() - startedAt });\n await telemetry.shutdown();\n throw error;\n }\n let chunks = 0;\n let rotations = 0;\n try {\n process.stdin.setEncoding('utf8');\n for await (const chunk of process.stdin) {\n const text = scrubTerminalOutput(String(chunk));\n if (!text) continue;\n const bytes = Buffer.from(text, 'utf8');\n if (written + bytes.byteLength > maxBytes) {\n fs.closeSync(handle);\n fs.renameSync(logPath, rotatedPath);\n handle = fs.openSync(logPath, 'w');\n written = 0;\n rotations += 1;\n }\n fs.writeSync(handle, bytes);\n written += bytes.byteLength;\n chunks += 1;\n }\n fs.closeSync(handle);\n writeDone(donePath);\n await telemetry.recordEvent('doom_runner.file_sink_finished', {\n outcome: 'completed',\n 'runner.chunk_count': chunks,\n 'runner.bytes_written': written,\n 'runner.rotation_count': rotations,\n duration_ms: Date.now() - startedAt,\n });\n return 0;\n } catch (error) {\n await telemetry.recordError('doom_runner.file_sink_failed', error, { duration_ms: Date.now() - startedAt });\n throw error;\n } finally {\n await telemetry.shutdown();\n }\n}\n\nfunction writeDone(target: string): void {\n const temporary = `${target}.${process.pid}.tmp`;\n fs.writeFileSync(temporary, '', { mode: 0o600 });\n fs.renameSync(temporary, target);\n}\n\nif (process.argv[1] && import.meta.url === pathToFileURL(process.argv[1]).href) {\n main().then(\n (code) => {\n process.exitCode = code;\n },\n (error: unknown) => {\n process.stderr.write(`${error instanceof Error ? error.message : String(error)}\\n`);\n process.exitCode = 1;\n },\n );\n}\n"],"mappings":"gNAKA,eAAsB,EAAK,EAA0B,QAAQ,KAAK,MAAM,CAAC,EAAoB,CAC3F,IAAM,EAAY,KAAK,IAAI,EACrB,EAAY,EAAoB,CACpC,YAAa,uBACb,YAAa,2BACb,IAAK,QAAQ,IACb,WAAY,GACZ,aAAc,EAChB,CAAC,EACK,CAAC,EAAS,EAAa,EAAa,GAAY,EAClD,EACJ,GAAI,CACF,GAAI,CAAC,GAAW,CAAC,GAAe,CAAC,GAAe,CAAC,EAC/C,MAAU,MAAM,oEAAoE,EAGtF,GADA,EAAW,OAAO,CAAW,EACzB,CAAC,OAAO,SAAS,CAAQ,GAAK,GAAY,EAAG,MAAU,MAAM,oCAAoC,CACvG,OAAS,EAAO,CAGd,MAFA,MAAM,EAAU,YAAY,+BAAgC,EAAO,CAAE,YAAa,KAAK,IAAI,EAAI,CAAU,CAAC,EAC1G,MAAM,EAAU,SAAS,EACnB,CACR,CAEA,IAAI,EACA,EACJ,GAAI,CACF,EAAS,EAAG,SAAS,EAAS,GAAG,EACjC,EAAU,EAAG,SAAS,CAAO,CAAC,CAAC,IACjC,OAAS,EAAO,CAGd,MAFA,MAAM,EAAU,YAAY,+BAAgC,EAAO,CAAE,YAAa,KAAK,IAAI,EAAI,CAAU,CAAC,EAC1G,MAAM,EAAU,SAAS,EACnB,CACR,CACA,IAAI,EAAS,EACT,EAAY,EAChB,GAAI,CACF,QAAQ,MAAM,YAAY,MAAM,EAChC,UAAW,IAAM,KAAS,QAAQ,MAAO,CACvC,IAAM,EAAO,EAAoB,OAAO,CAAK,CAAC,EAC9C,GAAI,CAAC,EAAM,SACX,IAAM,EAAQ,OAAO,KAAK,EAAM,MAAM,EAClC,EAAU,EAAM,WAAa,IAC/B,EAAG,UAAU,CAAM,EACnB,EAAG,WAAW,EAAS,CAAW,EAClC,EAAS,EAAG,SAAS,EAAS,GAAG,EACjC,EAAU,EACV,GAAa,GAEf,EAAG,UAAU,EAAQ,CAAK,EAC1B,GAAW,EAAM,WACjB,GAAU,CACZ,CAUA,OATA,EAAG,UAAU,CAAM,EACnB,EAAU,CAAQ,EAClB,MAAM,EAAU,YAAY,iCAAkC,CAC5D,QAAS,YACT,qBAAsB,EACtB,uBAAwB,EACxB,wBAAyB,EACzB,YAAa,KAAK,IAAI,EAAI,CAC5B,CAAC,EACM,CACT,OAAS,EAAO,CAEd,MADA,MAAM,EAAU,YAAY,+BAAgC,EAAO,CAAE,YAAa,KAAK,IAAI,EAAI,CAAU,CAAC,EACpG,CACR,QAAU,CACR,MAAM,EAAU,SAAS,CAC3B,CACF,CAEA,SAAS,EAAU,EAAsB,CACvC,IAAM,EAAY,GAAG,EAAO,GAAG,QAAQ,IAAI,MAC3C,EAAG,cAAc,EAAW,GAAI,CAAE,KAAM,GAAM,CAAC,EAC/C,EAAG,WAAW,EAAW,CAAM,CACjC,CAEI,QAAQ,KAAK,IAAM,YAAY,MAAQ,EAAc,QAAQ,KAAK,EAAE,CAAC,CAAC,MACxE,EAAK,CAAC,CAAC,KACJ,GAAS,CACR,QAAQ,SAAW,CACrB,EACC,GAAmB,CAClB,QAAQ,OAAO,MAAM,GAAG,aAAiB,MAAQ,EAAM,QAAU,OAAO,CAAK,EAAE,GAAG,EAClF,QAAQ,SAAW,CACrB,CACF"}
@@ -0,0 +1,2 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../_virtual/_rolldown/runtime.cjs"),t=require("../src/adapters/Lifeline/client.cjs");let n=require("node:fs");n=e.__toESM(n,1);let r=require("node:url"),i=require("node:os");i=e.__toESM(i,1);let a=require("node:child_process"),o=require("@agimon-ai/doompi-telemetry");const s=`doom_runner.host_failed`,c=`invalid runner command spec`;async function l(e=process.argv.slice(2)){let n=Date.now(),r=(0,o.createDoomTelemetry)({serviceName:`doom-runner-host`,packageName:`@agimon-ai/doompi-runner`,env:process.env,enableLogs:!0,enableTraces:!0}),[c,l,p]=e,m;try{if(!c||!l||!p)throw Error(`runnerHost requires spec, gate, and exit paths`);m=u(c),await d(l)}catch(e){throw await r.recordError(s,e,{duration_ms:Date.now()-n}),await r.shutdown(),e}let h,g=null,_,v=e=>{if(h?.pid)try{process.kill(-h.pid,e)}catch{h.kill(e)}},y=e=>{g=e,v(e),_??=setTimeout(()=>v(`SIGKILL`),2e3)};for(let e of[`SIGTERM`,`SIGINT`,`SIGHUP`])process.once(e,()=>y(e));h=(0,a.spawn)(m.command,{cwd:m.cwd,env:m.env,shell:`/bin/bash`,stdio:`inherit`,detached:!0}),g&&y(g);let b=t.watchOwner(()=>y(`SIGTERM`),m.env[t.LIFELINE_ENV]);try{let e=await new Promise((e,t)=>{h?.once(`error`,t),h?.once(`exit`,(t,n)=>e({code:t,signal:n??g}))});f(p,e);let t=e.code===null?e.signal?128+i.default.constants.signals[e.signal]:1:e.code;return await r.recordEvent(`doom_runner.host_finished`,{outcome:e.signal||g?`signaled`:t===0?`completed`:`failed`,"runner.exit_code":t,...e.signal||g?{"runner.signal":e.signal??g??``}:{},duration_ms:Date.now()-n}),t}catch(e){throw await r.recordError(s,e,{duration_ms:Date.now()-n}),e}finally{b(),_&&clearTimeout(_),await r.shutdown()}}function u(e){let t=JSON.parse(n.default.readFileSync(e,`utf8`));if(typeof t!=`object`||!t)throw Error(c);let r=t;if(typeof r.command!=`string`||typeof r.cwd!=`string`||!r.env)throw Error(c);return{command:r.command,cwd:r.cwd,env:r.env}}async function d(e){for(;!n.default.existsSync(e);)await new Promise(e=>setTimeout(e,10))}function f(e,t){let r=`${e}.${process.pid}.tmp`;n.default.writeFileSync(r,`${JSON.stringify(t)}\n`,{mode:384}),n.default.renameSync(r,e)}process.argv[1]&&require("url").pathToFileURL(__filename).href===(0,r.pathToFileURL)(process.argv[1]).href&&l().then(e=>{process.exitCode=e},e=>{process.stderr.write(`${e instanceof Error?e.message:String(e)}\n`),process.exitCode=1}),exports.main=l;
2
+ //# sourceMappingURL=runnerHost.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runnerHost.cjs","names":["createDoomTelemetry","spawn","watchOwner","LIFELINE_ENV","os","fs","pathToFileURL"],"sources":["../../src/bin/runnerHost.ts"],"sourcesContent":["import { type ChildProcess, spawn } from 'node:child_process';\nimport fs from 'node:fs';\nimport os from 'node:os';\nimport { pathToFileURL } from 'node:url';\nimport { createDoomTelemetry } from '@agimon-ai/doompi-telemetry';\nimport { LIFELINE_ENV, watchOwner } from '../adapters/Lifeline/client.ts';\n\ninterface CommandSpec {\n command: string;\n cwd: string;\n env: Record<string, string>;\n}\n\nconst POLL_MS = 10;\nconst FORWARDED_SIGNAL_GRACE_MS = 2_000;\nconst HOST_FAILED_EVENT = 'doom_runner.host_failed';\nconst INVALID_COMMAND_SPEC_ERROR = 'invalid runner command spec';\n\nexport async function main(argv: readonly string[] = process.argv.slice(2)): Promise<number> {\n const startedAt = Date.now();\n const telemetry = createDoomTelemetry({\n serviceName: 'doom-runner-host',\n packageName: '@agimon-ai/doompi-runner',\n env: process.env,\n enableLogs: true,\n enableTraces: true,\n });\n const [specPath, gatePath, exitPath] = argv;\n let spec: CommandSpec;\n try {\n if (!specPath || !gatePath || !exitPath) throw new Error('runnerHost requires spec, gate, and exit paths');\n spec = readSpec(specPath);\n await waitForGate(gatePath);\n } catch (error) {\n await telemetry.recordError(HOST_FAILED_EVENT, error, { duration_ms: Date.now() - startedAt });\n await telemetry.shutdown();\n throw error;\n }\n let child: ChildProcess | undefined;\n let forwardedSignal: NodeJS.Signals | null = null;\n let escalationTimer: NodeJS.Timeout | undefined;\n const signalChild = (signal: NodeJS.Signals): void => {\n if (!child?.pid) return;\n try {\n process.kill(-child.pid, signal);\n } catch {\n child.kill(signal);\n }\n };\n const forward = (signal: NodeJS.Signals): void => {\n forwardedSignal = signal;\n signalChild(signal);\n escalationTimer ??= setTimeout(() => signalChild('SIGKILL'), FORWARDED_SIGNAL_GRACE_MS);\n };\n const signals: NodeJS.Signals[] = ['SIGTERM', 'SIGINT', 'SIGHUP'];\n for (const signal of signals) process.once(signal, () => forward(signal));\n\n child = spawn(spec.command, {\n cwd: spec.cwd,\n env: spec.env,\n shell: '/bin/bash',\n stdio: 'inherit',\n detached: true,\n });\n if (forwardedSignal) forward(forwardedSignal);\n\n // This process supervises the command for its whole life, so it is also the\n // right place to notice an owner that died without stopping it.\n //\n // The lifeline comes from the spec rather than this process's environment: an\n // rmux server outlives the session that started it, so its own environment can\n // still name a previous session's socket.\n const detachLifeline = watchOwner(() => forward('SIGTERM'), spec.env[LIFELINE_ENV]);\n\n try {\n const result = await new Promise<{ code: number | null; signal: NodeJS.Signals | null }>((resolve, reject) => {\n child?.once('error', reject);\n child?.once('exit', (code, signal) => resolve({ code, signal: signal ?? forwardedSignal }));\n });\n writeAtomic(exitPath, result);\n const exitCode = result.code !== null ? result.code : result.signal ? 128 + os.constants.signals[result.signal] : 1;\n await telemetry.recordEvent('doom_runner.host_finished', {\n outcome: result.signal || forwardedSignal ? 'signaled' : exitCode === 0 ? 'completed' : 'failed',\n 'runner.exit_code': exitCode,\n ...(result.signal || forwardedSignal ? { 'runner.signal': result.signal ?? forwardedSignal ?? '' } : {}),\n duration_ms: Date.now() - startedAt,\n });\n return exitCode;\n } catch (error) {\n await telemetry.recordError(HOST_FAILED_EVENT, error, { duration_ms: Date.now() - startedAt });\n throw error;\n } finally {\n detachLifeline();\n if (escalationTimer) clearTimeout(escalationTimer);\n await telemetry.shutdown();\n }\n}\n\nfunction readSpec(target: string): CommandSpec {\n const value: unknown = JSON.parse(fs.readFileSync(target, 'utf8'));\n if (typeof value !== 'object' || value === null) throw new Error(INVALID_COMMAND_SPEC_ERROR);\n const spec = value as Partial<CommandSpec>;\n if (typeof spec.command !== 'string' || typeof spec.cwd !== 'string' || !spec.env) {\n throw new Error(INVALID_COMMAND_SPEC_ERROR);\n }\n return { command: spec.command, cwd: spec.cwd, env: spec.env };\n}\n\nasync function waitForGate(target: string): Promise<void> {\n while (!fs.existsSync(target)) await new Promise((resolve) => setTimeout(resolve, POLL_MS));\n}\n\nfunction writeAtomic(target: string, value: unknown): void {\n const temporary = `${target}.${process.pid}.tmp`;\n fs.writeFileSync(temporary, `${JSON.stringify(value)}\\n`, { mode: 0o600 });\n fs.renameSync(temporary, target);\n}\n\nif (process.argv[1] && import.meta.url === pathToFileURL(process.argv[1]).href) {\n main().then(\n (code) => {\n process.exitCode = code;\n },\n (error: unknown) => {\n process.stderr.write(`${error instanceof Error ? error.message : String(error)}\\n`);\n process.exitCode = 1;\n },\n );\n}\n"],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ //#region src/bin/runnerHost.d.ts
2
+ declare function main(argv?: readonly string[]): Promise<number>;
3
+ //#endregion
4
+ export { main };
5
+ //# sourceMappingURL=runnerHost.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runnerHost.d.cts","names":[],"sources":["../../src/bin/runnerHost.ts"],"mappings":";iBAkBsB,KAAK,2BAAkD"}
@@ -0,0 +1,5 @@
1
+ //#region src/bin/runnerHost.d.ts
2
+ declare function main(argv?: readonly string[]): Promise<number>;
3
+ //#endregion
4
+ export { main };
5
+ //# sourceMappingURL=runnerHost.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runnerHost.d.mts","names":[],"sources":["../../src/bin/runnerHost.ts"],"mappings":";iBAkBsB,KAAK,2BAAkD"}
@@ -0,0 +1,2 @@
1
+ import{LIFELINE_ENV as e,watchOwner as t}from"../src/adapters/Lifeline/client.mjs";import n from"node:fs";import{pathToFileURL as r}from"node:url";import i from"node:os";import{spawn as a}from"node:child_process";import{createDoomTelemetry as o}from"@agimon-ai/doompi-telemetry";const s=`doom_runner.host_failed`,c=`invalid runner command spec`;async function l(n=process.argv.slice(2)){let r=Date.now(),c=o({serviceName:`doom-runner-host`,packageName:`@agimon-ai/doompi-runner`,env:process.env,enableLogs:!0,enableTraces:!0}),[l,p,m]=n,h;try{if(!l||!p||!m)throw Error(`runnerHost requires spec, gate, and exit paths`);h=u(l),await d(p)}catch(e){throw await c.recordError(s,e,{duration_ms:Date.now()-r}),await c.shutdown(),e}let g,_=null,v,y=e=>{if(g?.pid)try{process.kill(-g.pid,e)}catch{g.kill(e)}},b=e=>{_=e,y(e),v??=setTimeout(()=>y(`SIGKILL`),2e3)};for(let e of[`SIGTERM`,`SIGINT`,`SIGHUP`])process.once(e,()=>b(e));g=a(h.command,{cwd:h.cwd,env:h.env,shell:`/bin/bash`,stdio:`inherit`,detached:!0}),_&&b(_);let x=t(()=>b(`SIGTERM`),h.env[e]);try{let e=await new Promise((e,t)=>{g?.once(`error`,t),g?.once(`exit`,(t,n)=>e({code:t,signal:n??_}))});f(m,e);let t=e.code===null?e.signal?128+i.constants.signals[e.signal]:1:e.code;return await c.recordEvent(`doom_runner.host_finished`,{outcome:e.signal||_?`signaled`:t===0?`completed`:`failed`,"runner.exit_code":t,...e.signal||_?{"runner.signal":e.signal??_??``}:{},duration_ms:Date.now()-r}),t}catch(e){throw await c.recordError(s,e,{duration_ms:Date.now()-r}),e}finally{x(),v&&clearTimeout(v),await c.shutdown()}}function u(e){let t=JSON.parse(n.readFileSync(e,`utf8`));if(typeof t!=`object`||!t)throw Error(c);let r=t;if(typeof r.command!=`string`||typeof r.cwd!=`string`||!r.env)throw Error(c);return{command:r.command,cwd:r.cwd,env:r.env}}async function d(e){for(;!n.existsSync(e);)await new Promise(e=>setTimeout(e,10))}function f(e,t){let r=`${e}.${process.pid}.tmp`;n.writeFileSync(r,`${JSON.stringify(t)}\n`,{mode:384}),n.renameSync(r,e)}process.argv[1]&&import.meta.url===r(process.argv[1]).href&&l().then(e=>{process.exitCode=e},e=>{process.stderr.write(`${e instanceof Error?e.message:String(e)}\n`),process.exitCode=1});export{l as main};
2
+ //# sourceMappingURL=runnerHost.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runnerHost.mjs","names":[],"sources":["../../src/bin/runnerHost.ts"],"sourcesContent":["import { type ChildProcess, spawn } from 'node:child_process';\nimport fs from 'node:fs';\nimport os from 'node:os';\nimport { pathToFileURL } from 'node:url';\nimport { createDoomTelemetry } from '@agimon-ai/doompi-telemetry';\nimport { LIFELINE_ENV, watchOwner } from '../adapters/Lifeline/client.ts';\n\ninterface CommandSpec {\n command: string;\n cwd: string;\n env: Record<string, string>;\n}\n\nconst POLL_MS = 10;\nconst FORWARDED_SIGNAL_GRACE_MS = 2_000;\nconst HOST_FAILED_EVENT = 'doom_runner.host_failed';\nconst INVALID_COMMAND_SPEC_ERROR = 'invalid runner command spec';\n\nexport async function main(argv: readonly string[] = process.argv.slice(2)): Promise<number> {\n const startedAt = Date.now();\n const telemetry = createDoomTelemetry({\n serviceName: 'doom-runner-host',\n packageName: '@agimon-ai/doompi-runner',\n env: process.env,\n enableLogs: true,\n enableTraces: true,\n });\n const [specPath, gatePath, exitPath] = argv;\n let spec: CommandSpec;\n try {\n if (!specPath || !gatePath || !exitPath) throw new Error('runnerHost requires spec, gate, and exit paths');\n spec = readSpec(specPath);\n await waitForGate(gatePath);\n } catch (error) {\n await telemetry.recordError(HOST_FAILED_EVENT, error, { duration_ms: Date.now() - startedAt });\n await telemetry.shutdown();\n throw error;\n }\n let child: ChildProcess | undefined;\n let forwardedSignal: NodeJS.Signals | null = null;\n let escalationTimer: NodeJS.Timeout | undefined;\n const signalChild = (signal: NodeJS.Signals): void => {\n if (!child?.pid) return;\n try {\n process.kill(-child.pid, signal);\n } catch {\n child.kill(signal);\n }\n };\n const forward = (signal: NodeJS.Signals): void => {\n forwardedSignal = signal;\n signalChild(signal);\n escalationTimer ??= setTimeout(() => signalChild('SIGKILL'), FORWARDED_SIGNAL_GRACE_MS);\n };\n const signals: NodeJS.Signals[] = ['SIGTERM', 'SIGINT', 'SIGHUP'];\n for (const signal of signals) process.once(signal, () => forward(signal));\n\n child = spawn(spec.command, {\n cwd: spec.cwd,\n env: spec.env,\n shell: '/bin/bash',\n stdio: 'inherit',\n detached: true,\n });\n if (forwardedSignal) forward(forwardedSignal);\n\n // This process supervises the command for its whole life, so it is also the\n // right place to notice an owner that died without stopping it.\n //\n // The lifeline comes from the spec rather than this process's environment: an\n // rmux server outlives the session that started it, so its own environment can\n // still name a previous session's socket.\n const detachLifeline = watchOwner(() => forward('SIGTERM'), spec.env[LIFELINE_ENV]);\n\n try {\n const result = await new Promise<{ code: number | null; signal: NodeJS.Signals | null }>((resolve, reject) => {\n child?.once('error', reject);\n child?.once('exit', (code, signal) => resolve({ code, signal: signal ?? forwardedSignal }));\n });\n writeAtomic(exitPath, result);\n const exitCode = result.code !== null ? result.code : result.signal ? 128 + os.constants.signals[result.signal] : 1;\n await telemetry.recordEvent('doom_runner.host_finished', {\n outcome: result.signal || forwardedSignal ? 'signaled' : exitCode === 0 ? 'completed' : 'failed',\n 'runner.exit_code': exitCode,\n ...(result.signal || forwardedSignal ? { 'runner.signal': result.signal ?? forwardedSignal ?? '' } : {}),\n duration_ms: Date.now() - startedAt,\n });\n return exitCode;\n } catch (error) {\n await telemetry.recordError(HOST_FAILED_EVENT, error, { duration_ms: Date.now() - startedAt });\n throw error;\n } finally {\n detachLifeline();\n if (escalationTimer) clearTimeout(escalationTimer);\n await telemetry.shutdown();\n }\n}\n\nfunction readSpec(target: string): CommandSpec {\n const value: unknown = JSON.parse(fs.readFileSync(target, 'utf8'));\n if (typeof value !== 'object' || value === null) throw new Error(INVALID_COMMAND_SPEC_ERROR);\n const spec = value as Partial<CommandSpec>;\n if (typeof spec.command !== 'string' || typeof spec.cwd !== 'string' || !spec.env) {\n throw new Error(INVALID_COMMAND_SPEC_ERROR);\n }\n return { command: spec.command, cwd: spec.cwd, env: spec.env };\n}\n\nasync function waitForGate(target: string): Promise<void> {\n while (!fs.existsSync(target)) await new Promise((resolve) => setTimeout(resolve, POLL_MS));\n}\n\nfunction writeAtomic(target: string, value: unknown): void {\n const temporary = `${target}.${process.pid}.tmp`;\n fs.writeFileSync(temporary, `${JSON.stringify(value)}\\n`, { mode: 0o600 });\n fs.renameSync(temporary, target);\n}\n\nif (process.argv[1] && import.meta.url === pathToFileURL(process.argv[1]).href) {\n main().then(\n (code) => {\n process.exitCode = code;\n },\n (error: unknown) => {\n process.stderr.write(`${error instanceof Error ? error.message : String(error)}\\n`);\n process.exitCode = 1;\n },\n );\n}\n"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../src/commands/cli/cliApp.cjs");exports.runCli=e.runCli;
@@ -0,0 +1,2 @@
1
+ import { CliDependencies, runCli } from "../src/commands/cli/cliApp.cjs";
2
+ export { CliDependencies, runCli };
@@ -0,0 +1,2 @@
1
+ import { CliDependencies, runCli } from "../src/commands/cli/cliApp.mjs";
2
+ export { CliDependencies, runCli };
@@ -0,0 +1 @@
1
+ import{runCli as e}from"../src/commands/cli/cliApp.mjs";export{e as runCli};
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./src/services/runs/compaction.cjs");exports.activeRunnerRecovery=e.activeRunnerRecovery,exports.appendActiveRunnersToSummary=e.appendActiveRunnersToSummary,exports.registerRunnerCompactionRecovery=e.registerRunnerCompactionRecovery;
@@ -0,0 +1,2 @@
1
+ import { RunnerCompactionDependencies, activeRunnerRecovery, appendActiveRunnersToSummary, registerRunnerCompactionRecovery } from "./src/services/runs/compaction.cjs";
2
+ export { RunnerCompactionDependencies, activeRunnerRecovery, appendActiveRunnersToSummary, registerRunnerCompactionRecovery };
@@ -0,0 +1,2 @@
1
+ import { RunnerCompactionDependencies, activeRunnerRecovery, appendActiveRunnersToSummary, registerRunnerCompactionRecovery } from "./src/services/runs/compaction.mjs";
2
+ export { RunnerCompactionDependencies, activeRunnerRecovery, appendActiveRunnersToSummary, registerRunnerCompactionRecovery };
@@ -0,0 +1 @@
1
+ import{activeRunnerRecovery as e,appendActiveRunnersToSummary as t,registerRunnerCompactionRecovery as n}from"./src/services/runs/compaction.mjs";export{e as activeRunnerRecovery,t as appendActiveRunnersToSummary,n as registerRunnerCompactionRecovery};
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./src/types/config.cjs");exports.BG_THRESHOLD_MS_ENV=e.BG_THRESHOLD_MS_ENV,exports.DEFAULT_BG_THRESHOLD_MS=e.DEFAULT_BG_THRESHOLD_MS,exports.DEFAULT_LOG_MAX_BYTES=e.DEFAULT_LOG_MAX_BYTES,exports.DEFAULT_LOG_TTL_MS=e.DEFAULT_LOG_TTL_MS,exports.DEFAULT_RESULT_MAX_BYTES=e.DEFAULT_RESULT_MAX_BYTES,exports.LOG_DIR_ENV=e.LOG_DIR_ENV,exports.LOG_MAX_BYTES_ENV=e.LOG_MAX_BYTES_ENV,exports.LOG_TTL_MS_ENV=e.LOG_TTL_MS_ENV,exports.RESULT_MAX_BYTES_ENV=e.RESULT_MAX_BYTES_ENV,exports.getBackgroundThresholdMs=e.getBackgroundThresholdMs,exports.getLogMaxBytes=e.getLogMaxBytes,exports.getLogTtlMs=e.getLogTtlMs,exports.getResultMaxBytes=e.getResultMaxBytes;
@@ -0,0 +1,2 @@
1
+ import { BG_THRESHOLD_MS_ENV, DEFAULT_BG_THRESHOLD_MS, DEFAULT_LOG_MAX_BYTES, DEFAULT_LOG_TTL_MS, DEFAULT_RESULT_MAX_BYTES, LOG_DIR_ENV, LOG_MAX_BYTES_ENV, LOG_TTL_MS_ENV, RESULT_MAX_BYTES_ENV, getBackgroundThresholdMs, getLogMaxBytes, getLogTtlMs, getResultMaxBytes } from "./src/types/config.cjs";
2
+ export { BG_THRESHOLD_MS_ENV, DEFAULT_BG_THRESHOLD_MS, DEFAULT_LOG_MAX_BYTES, DEFAULT_LOG_TTL_MS, DEFAULT_RESULT_MAX_BYTES, LOG_DIR_ENV, LOG_MAX_BYTES_ENV, LOG_TTL_MS_ENV, RESULT_MAX_BYTES_ENV, getBackgroundThresholdMs, getLogMaxBytes, getLogTtlMs, getResultMaxBytes };
@@ -0,0 +1,2 @@
1
+ import { BG_THRESHOLD_MS_ENV, DEFAULT_BG_THRESHOLD_MS, DEFAULT_LOG_MAX_BYTES, DEFAULT_LOG_TTL_MS, DEFAULT_RESULT_MAX_BYTES, LOG_DIR_ENV, LOG_MAX_BYTES_ENV, LOG_TTL_MS_ENV, RESULT_MAX_BYTES_ENV, getBackgroundThresholdMs, getLogMaxBytes, getLogTtlMs, getResultMaxBytes } from "./src/types/config.mjs";
2
+ export { BG_THRESHOLD_MS_ENV, DEFAULT_BG_THRESHOLD_MS, DEFAULT_LOG_MAX_BYTES, DEFAULT_LOG_TTL_MS, DEFAULT_RESULT_MAX_BYTES, LOG_DIR_ENV, LOG_MAX_BYTES_ENV, LOG_TTL_MS_ENV, RESULT_MAX_BYTES_ENV, getBackgroundThresholdMs, getLogMaxBytes, getLogTtlMs, getResultMaxBytes };
@@ -0,0 +1 @@
1
+ import{BG_THRESHOLD_MS_ENV as e,DEFAULT_BG_THRESHOLD_MS as t,DEFAULT_LOG_MAX_BYTES as n,DEFAULT_LOG_TTL_MS as r,DEFAULT_RESULT_MAX_BYTES as i,LOG_DIR_ENV as a,LOG_MAX_BYTES_ENV as o,LOG_TTL_MS_ENV as s,RESULT_MAX_BYTES_ENV as c,getBackgroundThresholdMs as l,getLogMaxBytes as u,getLogTtlMs as d,getResultMaxBytes as f}from"./src/types/config.mjs";export{e as BG_THRESHOLD_MS_ENV,t as DEFAULT_BG_THRESHOLD_MS,n as DEFAULT_LOG_MAX_BYTES,r as DEFAULT_LOG_TTL_MS,i as DEFAULT_RESULT_MAX_BYTES,a as LOG_DIR_ENV,o as LOG_MAX_BYTES_ENV,s as LOG_TTL_MS_ENV,c as RESULT_MAX_BYTES_ENV,l as getBackgroundThresholdMs,u as getLogMaxBytes,d as getLogTtlMs,f as getResultMaxBytes};
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../src/container/index.cjs");exports.createRunnerContainer=e.createRunnerContainer;
@@ -0,0 +1,2 @@
1
+ import { createRunnerContainer } from "../src/container/index.cjs";
2
+ export { createRunnerContainer };
@@ -0,0 +1,2 @@
1
+ import { createRunnerContainer } from "../src/container/index.mjs";
2
+ export { createRunnerContainer };
@@ -0,0 +1 @@
1
+ import{createRunnerContainer as e}from"../src/container/index.mjs";export{e as createRunnerContainer};
@@ -0,0 +1 @@
1
+ Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("../src/adapters/pi/extension.cjs");exports.default=e.default,exports.runnerExtension=e.default;
@@ -0,0 +1,2 @@
1
+ import runnerExtension from "../src/adapters/pi/extension.cjs";
2
+ export { runnerExtension as default, runnerExtension };
@@ -0,0 +1,2 @@
1
+ import runnerExtension from "../src/adapters/pi/extension.mjs";
2
+ export { runnerExtension as default, runnerExtension };
@@ -0,0 +1 @@
1
+ import e from"../src/adapters/pi/extension.mjs";export{e as default,e as runnerExtension};
package/dist/index.cjs ADDED
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./src/types/config.cjs"),t=require("./src/adapters/RmuxBackend/RmuxBackend.cjs"),n=require("./src/container/index.cjs");exports.DEFAULT_BG_THRESHOLD_MS=e.DEFAULT_BG_THRESHOLD_MS,exports.DEFAULT_LOG_MAX_BYTES=e.DEFAULT_LOG_MAX_BYTES,exports.DEFAULT_LOG_TTL_MS=e.DEFAULT_LOG_TTL_MS,exports.DEFAULT_RESULT_MAX_BYTES=e.DEFAULT_RESULT_MAX_BYTES,exports.RmuxBackend=t.RmuxBackend,exports.createRunnerContainer=n.createRunnerContainer,exports.getBackgroundThresholdMs=e.getBackgroundThresholdMs,exports.getLogMaxBytes=e.getLogMaxBytes,exports.getLogTtlMs=e.getLogTtlMs,exports.getResultMaxBytes=e.getResultMaxBytes;
@@ -0,0 +1,5 @@
1
+ import { IRmuxBackend, RmuxLaunchRequest } from "./src/types/rmuxBackend.cjs";
2
+ import { DEFAULT_BG_THRESHOLD_MS, DEFAULT_LOG_MAX_BYTES, DEFAULT_LOG_TTL_MS, DEFAULT_RESULT_MAX_BYTES, getBackgroundThresholdMs, getLogMaxBytes, getLogTtlMs, getResultMaxBytes } from "./src/types/config.cjs";
3
+ import { createRunnerContainer } from "./src/container/index.cjs";
4
+ import { RmuxBackend } from "./src/adapters/RmuxBackend/RmuxBackend.cjs";
5
+ export { DEFAULT_BG_THRESHOLD_MS, DEFAULT_LOG_MAX_BYTES, DEFAULT_LOG_TTL_MS, DEFAULT_RESULT_MAX_BYTES, type IRmuxBackend, RmuxBackend, type RmuxLaunchRequest, createRunnerContainer, getBackgroundThresholdMs, getLogMaxBytes, getLogTtlMs, getResultMaxBytes };
@@ -0,0 +1,5 @@
1
+ import { IRmuxBackend, RmuxLaunchRequest } from "./src/types/rmuxBackend.mjs";
2
+ import { DEFAULT_BG_THRESHOLD_MS, DEFAULT_LOG_MAX_BYTES, DEFAULT_LOG_TTL_MS, DEFAULT_RESULT_MAX_BYTES, getBackgroundThresholdMs, getLogMaxBytes, getLogTtlMs, getResultMaxBytes } from "./src/types/config.mjs";
3
+ import { createRunnerContainer } from "./src/container/index.mjs";
4
+ import { RmuxBackend } from "./src/adapters/RmuxBackend/RmuxBackend.mjs";
5
+ export { DEFAULT_BG_THRESHOLD_MS, DEFAULT_LOG_MAX_BYTES, DEFAULT_LOG_TTL_MS, DEFAULT_RESULT_MAX_BYTES, type IRmuxBackend, RmuxBackend, type RmuxLaunchRequest, createRunnerContainer, getBackgroundThresholdMs, getLogMaxBytes, getLogTtlMs, getResultMaxBytes };
package/dist/index.mjs ADDED
@@ -0,0 +1 @@
1
+ import{DEFAULT_BG_THRESHOLD_MS as e,DEFAULT_LOG_MAX_BYTES as t,DEFAULT_LOG_TTL_MS as n,DEFAULT_RESULT_MAX_BYTES as r,getBackgroundThresholdMs as i,getLogMaxBytes as a,getLogTtlMs as o,getResultMaxBytes as s}from"./src/types/config.mjs";import{RmuxBackend as c}from"./src/adapters/RmuxBackend/RmuxBackend.mjs";import{createRunnerContainer as l}from"./src/container/index.mjs";export{e as DEFAULT_BG_THRESHOLD_MS,t as DEFAULT_LOG_MAX_BYTES,n as DEFAULT_LOG_TTL_MS,r as DEFAULT_RESULT_MAX_BYTES,c as RmuxBackend,l as createRunnerContainer,i as getBackgroundThresholdMs,a as getLogMaxBytes,o as getLogTtlMs,s as getResultMaxBytes};
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./src/services/runs/reconcile.cjs");exports.cleanupLegacyRunnerStore=e.cleanupLegacyRunnerStore,exports.reconcileActiveRunners=e.reconcileActiveRunners,exports.stopRunnerProcess=e.stopRunnerProcess;
@@ -0,0 +1,2 @@
1
+ import { RunnerReconcileResult, cleanupLegacyRunnerStore, reconcileActiveRunners, stopRunnerProcess } from "./src/services/runs/reconcile.cjs";
2
+ export { RunnerReconcileResult, cleanupLegacyRunnerStore, reconcileActiveRunners, stopRunnerProcess };
@@ -0,0 +1,2 @@
1
+ import { RunnerReconcileResult, cleanupLegacyRunnerStore, reconcileActiveRunners, stopRunnerProcess } from "./src/services/runs/reconcile.mjs";
2
+ export { RunnerReconcileResult, cleanupLegacyRunnerStore, reconcileActiveRunners, stopRunnerProcess };
@@ -0,0 +1 @@
1
+ import{cleanupLegacyRunnerStore as e,reconcileActiveRunners as t,stopRunnerProcess as n}from"./src/services/runs/reconcile.mjs";export{e as cleanupLegacyRunnerStore,t as reconcileActiveRunners,n as stopRunnerProcess};
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../src/services/AnsiScrub/ansiScrub.cjs");exports.collapseCarriageReturns=e.collapseCarriageReturns,exports.scrubTerminalOutput=e.scrubTerminalOutput,exports.scrubTerminalOutputToPlainText=e.scrubTerminalOutputToPlainText,exports.stripAnsi=e.stripAnsi,exports.stripAnsiKeepingColour=e.stripAnsiKeepingColour;
@@ -0,0 +1,2 @@
1
+ import { collapseCarriageReturns, scrubTerminalOutput, scrubTerminalOutputToPlainText, stripAnsi, stripAnsiKeepingColour } from "../../src/services/AnsiScrub/ansiScrub.cjs";
2
+ export { collapseCarriageReturns, scrubTerminalOutput, scrubTerminalOutputToPlainText, stripAnsi, stripAnsiKeepingColour };
@@ -0,0 +1,2 @@
1
+ import { collapseCarriageReturns, scrubTerminalOutput, scrubTerminalOutputToPlainText, stripAnsi, stripAnsiKeepingColour } from "../../src/services/AnsiScrub/ansiScrub.mjs";
2
+ export { collapseCarriageReturns, scrubTerminalOutput, scrubTerminalOutputToPlainText, stripAnsi, stripAnsiKeepingColour };
@@ -0,0 +1 @@
1
+ import{collapseCarriageReturns as e,scrubTerminalOutput as t,scrubTerminalOutputToPlainText as n,stripAnsi as r,stripAnsiKeepingColour as i}from"../../src/services/AnsiScrub/ansiScrub.mjs";export{e as collapseCarriageReturns,t as scrubTerminalOutput,n as scrubTerminalOutputToPlainText,r as stripAnsi,i as stripAnsiKeepingColour};
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../src/services/AnsiScrub/ansiScrub.cjs");exports.collapseCarriageReturns=e.collapseCarriageReturns,exports.scrubTerminalOutput=e.scrubTerminalOutput,exports.scrubTerminalOutputToPlainText=e.scrubTerminalOutputToPlainText,exports.stripAnsi=e.stripAnsi,exports.stripAnsiKeepingColour=e.stripAnsiKeepingColour;
@@ -0,0 +1,2 @@
1
+ import { collapseCarriageReturns, scrubTerminalOutput, scrubTerminalOutputToPlainText, stripAnsi, stripAnsiKeepingColour } from "../../src/services/AnsiScrub/ansiScrub.cjs";
2
+ export { collapseCarriageReturns, scrubTerminalOutput, scrubTerminalOutputToPlainText, stripAnsi, stripAnsiKeepingColour };
@@ -0,0 +1,2 @@
1
+ import { collapseCarriageReturns, scrubTerminalOutput, scrubTerminalOutputToPlainText, stripAnsi, stripAnsiKeepingColour } from "../../src/services/AnsiScrub/ansiScrub.mjs";
2
+ export { collapseCarriageReturns, scrubTerminalOutput, scrubTerminalOutputToPlainText, stripAnsi, stripAnsiKeepingColour };
@@ -0,0 +1 @@
1
+ import{collapseCarriageReturns as e,scrubTerminalOutput as t,scrubTerminalOutputToPlainText as n,stripAnsi as r,stripAnsiKeepingColour as i}from"../../src/services/AnsiScrub/ansiScrub.mjs";export{e as collapseCarriageReturns,t as scrubTerminalOutput,n as scrubTerminalOutputToPlainText,r as stripAnsi,i as stripAnsiKeepingColour};
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../src/adapters/BashRunService/BashRunService.cjs");exports.BashRunService=e.BashRunService;
@@ -0,0 +1,2 @@
1
+ import { BashRunService } from "../../src/adapters/BashRunService/BashRunService.cjs";
2
+ export { BashRunService };
@@ -0,0 +1,2 @@
1
+ import { BashRunService } from "../../src/adapters/BashRunService/BashRunService.mjs";
2
+ export { BashRunService };
@@ -0,0 +1 @@
1
+ import{BashRunService as e}from"../../src/adapters/BashRunService/BashRunService.mjs";export{e as BashRunService};
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../src/adapters/BashRunService/BashRunService.cjs");exports.BashRunService=e.BashRunService;
@@ -0,0 +1,3 @@
1
+ import { BashRunRequest, BashRunResult, CompletedRun, FailedRun, IBashRunService, PromotedRun } from "../../src/types/bashRunService.cjs";
2
+ import { BashRunService } from "../../src/adapters/BashRunService/BashRunService.cjs";
3
+ export { type BashRunRequest, type BashRunResult, BashRunService, type CompletedRun, type FailedRun, type IBashRunService, type PromotedRun };
@@ -0,0 +1,3 @@
1
+ import { BashRunRequest, BashRunResult, CompletedRun, FailedRun, IBashRunService, PromotedRun } from "../../src/types/bashRunService.mjs";
2
+ import { BashRunService } from "../../src/adapters/BashRunService/BashRunService.mjs";
3
+ export { type BashRunRequest, type BashRunResult, BashRunService, type CompletedRun, type FailedRun, type IBashRunService, type PromotedRun };
@@ -0,0 +1 @@
1
+ import{BashRunService as e}from"../../src/adapters/BashRunService/BashRunService.mjs";export{e as BashRunService};
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../src/adapters/Clock/SystemClock.cjs");exports.SystemClock=e.SystemClock;
@@ -0,0 +1,2 @@
1
+ import { SystemClock } from "../../src/adapters/Clock/SystemClock.cjs";
2
+ export { SystemClock };
@@ -0,0 +1,2 @@
1
+ import { SystemClock } from "../../src/adapters/Clock/SystemClock.mjs";
2
+ export { SystemClock };
@@ -0,0 +1 @@
1
+ import{SystemClock as e}from"../../src/adapters/Clock/SystemClock.mjs";export{e as SystemClock};
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../src/adapters/Clock/SystemClock.cjs");exports.SystemClock=e.SystemClock;
@@ -0,0 +1,3 @@
1
+ import { IClock } from "../../src/types/clock.cjs";
2
+ import { SystemClock } from "../../src/adapters/Clock/SystemClock.cjs";
3
+ export { type IClock, SystemClock };
@@ -0,0 +1,3 @@
1
+ import { IClock } from "../../src/types/clock.mjs";
2
+ import { SystemClock } from "../../src/adapters/Clock/SystemClock.mjs";
3
+ export { type IClock, SystemClock };
@@ -0,0 +1 @@
1
+ import{SystemClock as e}from"../../src/adapters/Clock/SystemClock.mjs";export{e as SystemClock};
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../src/adapters/Launcher/Launcher.cjs");exports.Launcher=e.Launcher;
@@ -0,0 +1,2 @@
1
+ import { Launcher } from "../../src/adapters/Launcher/Launcher.cjs";
2
+ export { Launcher };
@@ -0,0 +1,2 @@
1
+ import { Launcher } from "../../src/adapters/Launcher/Launcher.mjs";
2
+ export { Launcher };
@@ -0,0 +1 @@
1
+ import{Launcher as e}from"../../src/adapters/Launcher/Launcher.mjs";export{e as Launcher};
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../src/adapters/Launcher/Launcher.cjs");exports.Launcher=e.Launcher;
@@ -0,0 +1,3 @@
1
+ import { ILauncher, LaunchRequest, RunHandle } from "../../src/types/launcher.cjs";
2
+ import { Launcher } from "../../src/adapters/Launcher/Launcher.cjs";
3
+ export { type ILauncher, type LaunchRequest, Launcher, type RunHandle };