@agimon-ai/doompi-runner 0.0.1-alpha.7 → 0.0.1-alpha.70

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 (1109) hide show
  1. package/README.md +220 -23
  2. package/dist/ansi-scrub.cjs +1 -0
  3. package/dist/ansi-scrub.d.cts +2 -0
  4. package/dist/ansi-scrub.d.mts +2 -0
  5. package/dist/ansi-scrub.mjs +1 -0
  6. package/dist/api-contracts.cjs +1 -0
  7. package/dist/api-contracts.d.cts +2 -0
  8. package/dist/api-contracts.d.mts +2 -0
  9. package/dist/api-contracts.mjs +1 -0
  10. package/dist/bash-render.cjs +1 -0
  11. package/dist/bash-render.d.cts +2 -0
  12. package/dist/bash-render.d.mts +2 -0
  13. package/dist/bash-render.mjs +1 -0
  14. package/dist/bash-run-service.cjs +1 -0
  15. package/dist/bash-run-service.d.cts +3 -0
  16. package/dist/bash-run-service.d.mts +3 -0
  17. package/dist/bash-run-service.mjs +1 -0
  18. package/dist/bash-schema.cjs +1 -0
  19. package/dist/bash-schema.d.cts +3 -0
  20. package/dist/bash-schema.d.mts +3 -0
  21. package/dist/bash-schema.mjs +1 -0
  22. package/dist/bash-tool.cjs +1 -0
  23. package/dist/bash-tool.d.cts +4 -0
  24. package/dist/bash-tool.d.mts +4 -0
  25. package/dist/bash-tool.mjs +1 -0
  26. package/dist/bin/cli.cjs +2 -2
  27. package/dist/bin/cli.cjs.map +1 -1
  28. package/dist/bin/cli.d.cts +1 -2
  29. package/dist/bin/cli.d.cts.map +1 -1
  30. package/dist/bin/cli.d.mts +1 -2
  31. package/dist/bin/cli.d.mts.map +1 -1
  32. package/dist/bin/cli.mjs +2 -2
  33. package/dist/bin/cli.mjs.map +1 -1
  34. package/dist/bin/logSink.cjs +1 -1
  35. package/dist/bin/logSink.cjs.map +1 -1
  36. package/dist/bin/logSink.d.cts +1 -2
  37. package/dist/bin/logSink.d.cts.map +1 -1
  38. package/dist/bin/logSink.d.mts +1 -2
  39. package/dist/bin/logSink.d.mts.map +1 -1
  40. package/dist/bin/logSink.mjs +1 -1
  41. package/dist/bin/logSink.mjs.map +1 -1
  42. package/dist/bin/runnerHost.cjs +1 -1
  43. package/dist/bin/runnerHost.cjs.map +1 -1
  44. package/dist/bin/runnerHost.d.cts +1 -2
  45. package/dist/bin/runnerHost.d.cts.map +1 -1
  46. package/dist/bin/runnerHost.d.mts +1 -2
  47. package/dist/bin/runnerHost.d.mts.map +1 -1
  48. package/dist/bin/runnerHost.mjs +1 -1
  49. package/dist/bin/runnerHost.mjs.map +1 -1
  50. package/dist/cli-app.cjs +1 -0
  51. package/dist/cli-app.d.cts +2 -0
  52. package/dist/cli-app.d.mts +2 -0
  53. package/dist/cli-app.mjs +1 -0
  54. package/dist/clock.cjs +1 -0
  55. package/dist/clock.d.cts +3 -0
  56. package/dist/clock.d.mts +3 -0
  57. package/dist/clock.mjs +1 -0
  58. package/dist/compaction.cjs +1 -4
  59. package/dist/compaction.d.cts +2 -14
  60. package/dist/compaction.d.mts +2 -14
  61. package/dist/compaction.mjs +1 -4
  62. package/dist/config.cjs +1 -2
  63. package/dist/config.d.cts +3 -32
  64. package/dist/config.d.mts +3 -32
  65. package/dist/config.mjs +1 -2
  66. package/dist/constants/ansiScrub.cjs +2 -0
  67. package/dist/constants/ansiScrub.cjs.map +1 -0
  68. package/dist/constants/ansiScrub.mjs +2 -0
  69. package/dist/constants/ansiScrub.mjs.map +1 -0
  70. package/dist/constants/bashRender.cjs +2 -0
  71. package/dist/constants/bashRender.cjs.map +1 -0
  72. package/dist/constants/bashRender.mjs +2 -0
  73. package/dist/constants/bashRender.mjs.map +1 -0
  74. package/dist/constants/bashResult.cjs +2 -0
  75. package/dist/constants/bashResult.cjs.map +1 -0
  76. package/dist/constants/bashResult.mjs +2 -0
  77. package/dist/constants/bashResult.mjs.map +1 -0
  78. package/dist/constants/bashRunService.cjs +2 -0
  79. package/dist/constants/bashRunService.cjs.map +1 -0
  80. package/dist/constants/bashRunService.mjs +2 -0
  81. package/dist/constants/bashRunService.mjs.map +1 -0
  82. package/dist/constants/bashTool.cjs +2 -0
  83. package/dist/constants/bashTool.cjs.map +1 -0
  84. package/dist/constants/bashTool.d.cts +5 -0
  85. package/dist/constants/bashTool.d.cts.map +1 -0
  86. package/dist/constants/bashTool.d.mts +5 -0
  87. package/dist/constants/bashTool.d.mts.map +1 -0
  88. package/dist/constants/bashTool.mjs +2 -0
  89. package/dist/constants/bashTool.mjs.map +1 -0
  90. package/dist/constants/cliApp.cjs +2 -0
  91. package/dist/constants/cliApp.cjs.map +1 -0
  92. package/dist/constants/cliApp.mjs +2 -0
  93. package/dist/constants/cliApp.mjs.map +1 -0
  94. package/dist/constants/compaction.cjs +2 -0
  95. package/dist/constants/compaction.cjs.map +1 -0
  96. package/dist/constants/compaction.mjs +2 -0
  97. package/dist/constants/compaction.mjs.map +1 -0
  98. package/dist/constants/format.cjs +2 -0
  99. package/dist/constants/format.cjs.map +1 -0
  100. package/dist/constants/format.d.cts +5 -0
  101. package/dist/constants/format.d.cts.map +1 -0
  102. package/dist/constants/format.d.mts +5 -0
  103. package/dist/constants/format.d.mts.map +1 -0
  104. package/dist/constants/format.mjs +2 -0
  105. package/dist/constants/format.mjs.map +1 -0
  106. package/dist/constants/headless.cjs +2 -0
  107. package/dist/constants/headless.cjs.map +1 -0
  108. package/dist/constants/headless.mjs +2 -0
  109. package/dist/constants/headless.mjs.map +1 -0
  110. package/dist/constants/launcher.cjs +2 -0
  111. package/dist/constants/launcher.cjs.map +1 -0
  112. package/dist/constants/launcher.mjs +2 -0
  113. package/dist/constants/launcher.mjs.map +1 -0
  114. package/dist/constants/lifeline.cjs +2 -0
  115. package/dist/constants/lifeline.cjs.map +1 -0
  116. package/dist/constants/lifeline.mjs +2 -0
  117. package/dist/constants/lifeline.mjs.map +1 -0
  118. package/dist/constants/logReader.cjs +2 -0
  119. package/dist/constants/logReader.cjs.map +1 -0
  120. package/dist/constants/logReader.mjs +2 -0
  121. package/dist/constants/logReader.mjs.map +1 -0
  122. package/dist/constants/ptyHost.cjs +2 -0
  123. package/dist/constants/ptyHost.cjs.map +1 -0
  124. package/dist/constants/ptyHost.mjs +2 -0
  125. package/dist/constants/ptyHost.mjs.map +1 -0
  126. package/dist/constants/reconcile.cjs +2 -0
  127. package/dist/constants/reconcile.cjs.map +1 -0
  128. package/dist/constants/reconcile.mjs +2 -0
  129. package/dist/constants/reconcile.mjs.map +1 -0
  130. package/dist/constants/rmuxBackend.cjs +2 -0
  131. package/dist/constants/rmuxBackend.cjs.map +1 -0
  132. package/dist/constants/rmuxBackend.mjs +2 -0
  133. package/dist/constants/rmuxBackend.mjs.map +1 -0
  134. package/dist/constants/rtkProcessor.cjs +2 -0
  135. package/dist/constants/rtkProcessor.cjs.map +1 -0
  136. package/dist/constants/rtkProcessor.d.cts +4 -0
  137. package/dist/constants/rtkProcessor.d.cts.map +1 -0
  138. package/dist/constants/rtkProcessor.d.mts +4 -0
  139. package/dist/constants/rtkProcessor.d.mts.map +1 -0
  140. package/dist/constants/rtkProcessor.mjs +2 -0
  141. package/dist/constants/rtkProcessor.mjs.map +1 -0
  142. package/dist/constants/runnerConfig.cjs +2 -0
  143. package/dist/constants/runnerConfig.cjs.map +1 -0
  144. package/dist/constants/runnerConfig.d.cts +25 -0
  145. package/dist/constants/runnerConfig.d.cts.map +1 -0
  146. package/dist/constants/runnerConfig.d.mts +25 -0
  147. package/dist/constants/runnerConfig.d.mts.map +1 -0
  148. package/dist/constants/runnerConfig.mjs +2 -0
  149. package/dist/constants/runnerConfig.mjs.map +1 -0
  150. package/dist/constants/runnerLogApi.cjs +2 -0
  151. package/dist/constants/runnerLogApi.cjs.map +1 -0
  152. package/dist/constants/runnerLogApi.mjs +2 -0
  153. package/dist/constants/runnerLogApi.mjs.map +1 -0
  154. package/dist/constants/runnerNamer.cjs +2 -0
  155. package/dist/constants/runnerNamer.cjs.map +1 -0
  156. package/dist/constants/runnerNamer.mjs +2 -0
  157. package/dist/constants/runnerNamer.mjs.map +1 -0
  158. package/dist/constants/runnerPaths.cjs +2 -0
  159. package/dist/constants/runnerPaths.cjs.map +1 -0
  160. package/dist/constants/runnerPaths.mjs +2 -0
  161. package/dist/constants/runnerPaths.mjs.map +1 -0
  162. package/dist/constants/runnerRegistry.cjs +2 -0
  163. package/dist/constants/runnerRegistry.cjs.map +1 -0
  164. package/dist/constants/runnerRegistry.mjs +2 -0
  165. package/dist/constants/runnerRegistry.mjs.map +1 -0
  166. package/dist/constants/runnerRuntime.cjs +2 -0
  167. package/dist/constants/runnerRuntime.cjs.map +1 -0
  168. package/dist/constants/runnerRuntime.mjs +2 -0
  169. package/dist/constants/runnerRuntime.mjs.map +1 -0
  170. package/dist/constants/runnerSettings.cjs +2 -0
  171. package/dist/constants/runnerSettings.cjs.map +1 -0
  172. package/dist/constants/runnerSettings.mjs +2 -0
  173. package/dist/constants/runnerSettings.mjs.map +1 -0
  174. package/dist/constants/runnerSpace.cjs +2 -0
  175. package/dist/constants/runnerSpace.cjs.map +1 -0
  176. package/dist/constants/runnerSpace.mjs +2 -0
  177. package/dist/constants/runnerSpace.mjs.map +1 -0
  178. package/dist/constants/runners.cjs +2 -0
  179. package/dist/constants/runners.cjs.map +1 -0
  180. package/dist/constants/runners.mjs +2 -0
  181. package/dist/constants/runners.mjs.map +1 -0
  182. package/dist/constants/runnersCommand.cjs +2 -0
  183. package/dist/constants/runnersCommand.cjs.map +1 -0
  184. package/dist/constants/runnersCommand.mjs +2 -0
  185. package/dist/constants/runnersCommand.mjs.map +1 -0
  186. package/dist/constants/session.cjs +2 -0
  187. package/dist/constants/session.cjs.map +1 -0
  188. package/dist/constants/session.d.cts +4 -0
  189. package/dist/constants/session.d.cts.map +1 -0
  190. package/dist/constants/session.d.mts +4 -0
  191. package/dist/constants/session.d.mts.map +1 -0
  192. package/dist/constants/session.mjs +2 -0
  193. package/dist/constants/session.mjs.map +1 -0
  194. package/dist/constants/spawner.cjs +2 -0
  195. package/dist/constants/spawner.cjs.map +1 -0
  196. package/dist/constants/spawner.mjs +2 -0
  197. package/dist/constants/spawner.mjs.map +1 -0
  198. package/dist/constants/tmuxBackend.cjs +2 -0
  199. package/dist/constants/tmuxBackend.cjs.map +1 -0
  200. package/dist/constants/tmuxBackend.mjs +2 -0
  201. package/dist/constants/tmuxBackend.mjs.map +1 -0
  202. package/dist/constants/tokenEstimate.cjs +2 -0
  203. package/dist/constants/tokenEstimate.cjs.map +1 -0
  204. package/dist/constants/tokenEstimate.mjs +2 -0
  205. package/dist/constants/tokenEstimate.mjs.map +1 -0
  206. package/dist/constants/webRunnerLog.cjs +2 -0
  207. package/dist/constants/webRunnerLog.cjs.map +1 -0
  208. package/dist/constants/webRunnerLog.mjs +2 -0
  209. package/dist/constants/webRunnerLog.mjs.map +1 -0
  210. package/dist/constants/webRunnerRuns.cjs +2 -0
  211. package/dist/constants/webRunnerRuns.cjs.map +1 -0
  212. package/dist/constants/webRunnerRuns.mjs +2 -0
  213. package/dist/constants/webRunnerRuns.mjs.map +1 -0
  214. package/dist/constants/webRunners.cjs +2 -0
  215. package/dist/constants/webRunners.cjs.map +1 -0
  216. package/dist/constants/webRunners.mjs +2 -0
  217. package/dist/constants/webRunners.mjs.map +1 -0
  218. package/dist/controllers/cliApp.cjs +6 -0
  219. package/dist/controllers/cliApp.cjs.map +1 -0
  220. package/dist/controllers/cliApp.d.cts +18 -0
  221. package/dist/controllers/cliApp.d.cts.map +1 -0
  222. package/dist/controllers/cliApp.d.mts +18 -0
  223. package/dist/controllers/cliApp.d.mts.map +1 -0
  224. package/dist/controllers/cliApp.mjs +6 -0
  225. package/dist/controllers/cliApp.mjs.map +1 -0
  226. package/dist/controllers/headless.cjs +2 -0
  227. package/dist/controllers/headless.cjs.map +1 -0
  228. package/dist/controllers/headless.d.cts +10 -0
  229. package/dist/controllers/headless.d.cts.map +1 -0
  230. package/dist/controllers/headless.d.mts +10 -0
  231. package/dist/controllers/headless.d.mts.map +1 -0
  232. package/dist/controllers/headless.mjs +2 -0
  233. package/dist/controllers/headless.mjs.map +1 -0
  234. package/dist/controllers/runnerLogApi.cjs +2 -0
  235. package/dist/controllers/runnerLogApi.cjs.map +1 -0
  236. package/dist/controllers/runnerLogApi.mjs +2 -0
  237. package/dist/controllers/runnerLogApi.mjs.map +1 -0
  238. package/dist/extensions/pi.cjs +1 -1
  239. package/dist/extensions/pi.cjs.map +1 -1
  240. package/dist/extensions/pi.d.cts +5 -2
  241. package/dist/extensions/pi.d.cts.map +1 -0
  242. package/dist/extensions/pi.d.mts +5 -2
  243. package/dist/extensions/pi.d.mts.map +1 -0
  244. package/dist/extensions/pi.mjs +1 -1
  245. package/dist/extensions/pi.mjs.map +1 -1
  246. package/dist/extensions/server.cjs +2 -0
  247. package/dist/extensions/server.cjs.map +1 -0
  248. package/dist/extensions/server.d.cts +5 -0
  249. package/dist/extensions/server.d.cts.map +1 -0
  250. package/dist/extensions/server.d.mts +5 -0
  251. package/dist/extensions/server.d.mts.map +1 -0
  252. package/dist/extensions/server.mjs +2 -0
  253. package/dist/extensions/server.mjs.map +1 -0
  254. package/dist/index.cjs +1 -1
  255. package/dist/index.d.cts +8 -7
  256. package/dist/index.d.mts +8 -7
  257. package/dist/index.mjs +1 -1
  258. package/dist/launcher.cjs +1 -0
  259. package/dist/launcher.d.cts +3 -0
  260. package/dist/launcher.d.mts +3 -0
  261. package/dist/launcher.mjs +1 -0
  262. package/dist/lifeline.cjs +1 -0
  263. package/dist/lifeline.d.cts +4 -0
  264. package/dist/lifeline.d.mts +4 -0
  265. package/dist/lifeline.mjs +1 -0
  266. package/dist/log-file.cjs +1 -0
  267. package/dist/log-file.d.cts +3 -0
  268. package/dist/log-file.d.mts +3 -0
  269. package/dist/log-file.mjs +1 -0
  270. package/dist/log-reader.cjs +1 -0
  271. package/dist/log-reader.d.cts +3 -0
  272. package/dist/log-reader.d.mts +3 -0
  273. package/dist/log-reader.mjs +1 -0
  274. package/dist/models/runnerSettings.cjs +2 -0
  275. package/dist/models/runnerSettings.cjs.map +1 -0
  276. package/dist/models/runnerSettings.mjs +2 -0
  277. package/dist/models/runnerSettings.mjs.map +1 -0
  278. package/dist/process-control.cjs +1 -0
  279. package/dist/process-control.d.cts +3 -0
  280. package/dist/process-control.d.mts +3 -0
  281. package/dist/process-control.mjs +1 -0
  282. package/dist/pty-host.cjs +1 -0
  283. package/dist/pty-host.d.cts +3 -0
  284. package/dist/pty-host.d.mts +3 -0
  285. package/dist/pty-host.mjs +1 -0
  286. package/dist/pty-spawner.cjs +1 -0
  287. package/dist/pty-spawner.d.cts +3 -0
  288. package/dist/pty-spawner.d.mts +3 -0
  289. package/dist/pty-spawner.mjs +1 -0
  290. package/dist/reconcile.cjs +1 -2
  291. package/dist/reconcile.d.cts +2 -37
  292. package/dist/reconcile.d.mts +2 -37
  293. package/dist/reconcile.mjs +1 -2
  294. package/dist/response-envelope.cjs +1 -0
  295. package/dist/response-envelope.d.cts +4 -0
  296. package/dist/response-envelope.d.mts +4 -0
  297. package/dist/response-envelope.mjs +1 -0
  298. package/dist/rmux-backend.cjs +1 -0
  299. package/dist/rmux-backend.d.cts +3 -0
  300. package/dist/rmux-backend.d.mts +3 -0
  301. package/dist/rmux-backend.mjs +1 -0
  302. package/dist/rtk-processor.cjs +1 -0
  303. package/dist/rtk-processor.d.cts +4 -0
  304. package/dist/rtk-processor.d.mts +4 -0
  305. package/dist/rtk-processor.mjs +1 -0
  306. package/dist/runner-dependencies.cjs +1 -0
  307. package/dist/runner-dependencies.d.cts +2 -0
  308. package/dist/runner-dependencies.d.mts +2 -0
  309. package/dist/runner-dependencies.mjs +1 -0
  310. package/dist/runner-format.cjs +1 -0
  311. package/dist/runner-format.d.cts +3 -0
  312. package/dist/runner-format.d.mts +3 -0
  313. package/dist/runner-format.mjs +1 -0
  314. package/dist/runner-namer.cjs +1 -0
  315. package/dist/runner-namer.d.cts +3 -0
  316. package/dist/runner-namer.d.mts +3 -0
  317. package/dist/runner-namer.mjs +1 -0
  318. package/dist/runner-paths.cjs +1 -0
  319. package/dist/runner-paths.d.cts +3 -0
  320. package/dist/runner-paths.d.mts +3 -0
  321. package/dist/runner-paths.mjs +1 -0
  322. package/dist/runner-registry.cjs +1 -0
  323. package/dist/runner-registry.d.cts +3 -0
  324. package/dist/runner-registry.d.mts +3 -0
  325. package/dist/runner-registry.mjs +1 -0
  326. package/dist/runner-space.cjs +1 -0
  327. package/dist/runner-space.d.cts +2 -0
  328. package/dist/runner-space.d.mts +2 -0
  329. package/dist/runner-space.mjs +1 -0
  330. package/dist/schemas/apiContracts.cjs +2 -0
  331. package/dist/schemas/apiContracts.cjs.map +1 -0
  332. package/dist/schemas/apiContracts.d.cts +53 -0
  333. package/dist/schemas/apiContracts.d.cts.map +1 -0
  334. package/dist/schemas/apiContracts.d.mts +53 -0
  335. package/dist/schemas/apiContracts.d.mts.map +1 -0
  336. package/dist/schemas/apiContracts.mjs +2 -0
  337. package/dist/schemas/apiContracts.mjs.map +1 -0
  338. package/dist/schemas/bashTool.cjs +2 -0
  339. package/dist/schemas/bashTool.cjs.map +1 -0
  340. package/dist/schemas/bashTool.d.cts +19 -0
  341. package/dist/schemas/bashTool.d.cts.map +1 -0
  342. package/dist/schemas/bashTool.d.mts +19 -0
  343. package/dist/schemas/bashTool.d.mts.map +1 -0
  344. package/dist/schemas/bashTool.mjs +2 -0
  345. package/dist/schemas/bashTool.mjs.map +1 -0
  346. package/dist/services/ansiScrub/index.cjs +5 -0
  347. package/dist/services/ansiScrub/index.cjs.map +1 -0
  348. package/dist/services/ansiScrub/index.d.cts +26 -0
  349. package/dist/services/ansiScrub/index.d.cts.map +1 -0
  350. package/dist/services/ansiScrub/index.d.mts +26 -0
  351. package/dist/services/ansiScrub/index.d.mts.map +1 -0
  352. package/dist/services/ansiScrub/index.mjs +5 -0
  353. package/dist/services/ansiScrub/index.mjs.map +1 -0
  354. package/dist/services/bashResult/index.cjs +15 -0
  355. package/dist/services/bashResult/index.cjs.map +1 -0
  356. package/dist/services/bashResult/index.d.cts +47 -0
  357. package/dist/services/bashResult/index.d.cts.map +1 -0
  358. package/dist/services/bashResult/index.d.mts +47 -0
  359. package/dist/services/bashResult/index.d.mts.map +1 -0
  360. package/dist/services/bashResult/index.mjs +15 -0
  361. package/dist/services/bashResult/index.mjs.map +1 -0
  362. package/dist/services/bashRunService/index.cjs +2 -0
  363. package/dist/services/bashRunService/index.cjs.map +1 -0
  364. package/dist/services/bashRunService/index.d.cts +31 -0
  365. package/dist/services/bashRunService/index.d.cts.map +1 -0
  366. package/dist/services/bashRunService/index.d.mts +31 -0
  367. package/dist/services/bashRunService/index.d.mts.map +1 -0
  368. package/dist/services/bashRunService/index.mjs +2 -0
  369. package/dist/services/bashRunService/index.mjs.map +1 -0
  370. package/dist/services/clock/index.cjs +2 -0
  371. package/dist/services/clock/index.cjs.map +1 -0
  372. package/dist/services/clock/index.d.cts +9 -0
  373. package/dist/services/clock/index.d.cts.map +1 -0
  374. package/dist/services/clock/index.d.mts +9 -0
  375. package/dist/services/clock/index.d.mts.map +1 -0
  376. package/dist/services/clock/index.mjs +2 -0
  377. package/dist/services/clock/index.mjs.map +1 -0
  378. package/dist/services/compaction/index.cjs +4 -0
  379. package/dist/services/compaction/index.cjs.map +1 -0
  380. package/dist/services/compaction/index.d.cts +13 -0
  381. package/dist/services/compaction/index.d.cts.map +1 -0
  382. package/dist/services/compaction/index.d.mts +13 -0
  383. package/dist/services/compaction/index.d.mts.map +1 -0
  384. package/dist/services/compaction/index.mjs +4 -0
  385. package/dist/services/compaction/index.mjs.map +1 -0
  386. package/dist/services/launcher/index.cjs +2 -0
  387. package/dist/services/launcher/index.cjs.map +1 -0
  388. package/dist/services/launcher/index.d.cts +27 -0
  389. package/dist/services/launcher/index.d.cts.map +1 -0
  390. package/dist/services/launcher/index.d.mts +27 -0
  391. package/dist/services/launcher/index.d.mts.map +1 -0
  392. package/dist/services/launcher/index.mjs +2 -0
  393. package/dist/services/launcher/index.mjs.map +1 -0
  394. package/dist/services/lifeline/client.cjs +2 -0
  395. package/dist/services/lifeline/client.cjs.map +1 -0
  396. package/dist/services/lifeline/client.d.cts +22 -0
  397. package/dist/services/lifeline/client.d.cts.map +1 -0
  398. package/dist/services/lifeline/client.d.mts +22 -0
  399. package/dist/services/lifeline/client.d.mts.map +1 -0
  400. package/dist/services/lifeline/client.mjs.map +1 -0
  401. package/dist/services/lifeline/index.cjs +2 -0
  402. package/dist/services/lifeline/index.cjs.map +1 -0
  403. package/dist/services/lifeline/index.d.cts +19 -0
  404. package/dist/services/lifeline/index.d.cts.map +1 -0
  405. package/dist/services/lifeline/index.d.mts +19 -0
  406. package/dist/services/lifeline/index.d.mts.map +1 -0
  407. package/dist/services/lifeline/index.mjs +2 -0
  408. package/dist/services/lifeline/index.mjs.map +1 -0
  409. package/dist/services/logFile/index.cjs +2 -0
  410. package/dist/services/logFile/index.cjs.map +1 -0
  411. package/dist/services/logFile/index.d.cts +10 -0
  412. package/dist/services/logFile/index.d.cts.map +1 -0
  413. package/dist/services/logFile/index.d.mts +10 -0
  414. package/dist/services/logFile/index.d.mts.map +1 -0
  415. package/dist/services/logFile/index.mjs +2 -0
  416. package/dist/services/logFile/index.mjs.map +1 -0
  417. package/dist/services/logReader/index.cjs +10 -0
  418. package/dist/services/logReader/index.cjs.map +1 -0
  419. package/dist/services/logReader/index.d.cts +23 -0
  420. package/dist/services/logReader/index.d.cts.map +1 -0
  421. package/dist/services/logReader/index.d.mts +23 -0
  422. package/dist/services/logReader/index.d.mts.map +1 -0
  423. package/dist/services/logReader/index.mjs +10 -0
  424. package/dist/services/logReader/index.mjs.map +1 -0
  425. package/dist/services/logTail/index.cjs +3 -0
  426. package/dist/services/logTail/index.cjs.map +1 -0
  427. package/dist/services/logTail/index.mjs +3 -0
  428. package/dist/services/logTail/index.mjs.map +1 -0
  429. package/dist/services/processControl/index.cjs +2 -0
  430. package/dist/services/processControl/index.cjs.map +1 -0
  431. package/dist/services/processControl/index.d.cts +9 -0
  432. package/dist/services/processControl/index.d.cts.map +1 -0
  433. package/dist/services/processControl/index.d.mts +9 -0
  434. package/dist/services/processControl/index.d.mts.map +1 -0
  435. package/dist/services/processControl/index.mjs +2 -0
  436. package/dist/services/processControl/index.mjs.map +1 -0
  437. package/dist/services/ptyBackendChain/index.cjs +2 -0
  438. package/dist/services/ptyBackendChain/index.cjs.map +1 -0
  439. package/dist/services/ptyBackendChain/index.mjs +2 -0
  440. package/dist/services/ptyBackendChain/index.mjs.map +1 -0
  441. package/dist/services/ptyHost/index.cjs +5 -0
  442. package/dist/services/ptyHost/index.cjs.map +1 -0
  443. package/dist/services/ptyHost/index.d.cts +22 -0
  444. package/dist/services/ptyHost/index.d.cts.map +1 -0
  445. package/dist/services/ptyHost/index.d.mts +22 -0
  446. package/dist/services/ptyHost/index.d.mts.map +1 -0
  447. package/dist/services/ptyHost/index.mjs +5 -0
  448. package/dist/services/ptyHost/index.mjs.map +1 -0
  449. package/dist/services/ptySpawner/index.cjs +2 -0
  450. package/dist/services/ptySpawner/index.cjs.map +1 -0
  451. package/dist/services/ptySpawner/index.d.cts +13 -0
  452. package/dist/services/ptySpawner/index.d.cts.map +1 -0
  453. package/dist/services/ptySpawner/index.d.mts +13 -0
  454. package/dist/services/ptySpawner/index.d.mts.map +1 -0
  455. package/dist/services/ptySpawner/index.mjs +2 -0
  456. package/dist/services/ptySpawner/index.mjs.map +1 -0
  457. package/dist/services/reconcile/index.cjs +2 -0
  458. package/dist/services/reconcile/index.cjs.map +1 -0
  459. package/dist/services/reconcile/index.d.cts +31 -0
  460. package/dist/services/reconcile/index.d.cts.map +1 -0
  461. package/dist/services/reconcile/index.d.mts +31 -0
  462. package/dist/services/reconcile/index.d.mts.map +1 -0
  463. package/dist/services/reconcile/index.mjs +2 -0
  464. package/dist/services/reconcile/index.mjs.map +1 -0
  465. package/dist/services/rmuxBackend/index.cjs +2 -0
  466. package/dist/services/rmuxBackend/index.cjs.map +1 -0
  467. package/dist/services/rmuxBackend/index.d.cts +39 -0
  468. package/dist/services/rmuxBackend/index.d.cts.map +1 -0
  469. package/dist/services/rmuxBackend/index.d.mts +39 -0
  470. package/dist/services/rmuxBackend/index.d.mts.map +1 -0
  471. package/dist/services/rmuxBackend/index.mjs +2 -0
  472. package/dist/services/rmuxBackend/index.mjs.map +1 -0
  473. package/dist/services/rtkProcessor/index.cjs +2 -0
  474. package/dist/services/rtkProcessor/index.cjs.map +1 -0
  475. package/dist/services/rtkProcessor/index.d.cts +27 -0
  476. package/dist/services/rtkProcessor/index.d.cts.map +1 -0
  477. package/dist/services/rtkProcessor/index.d.mts +27 -0
  478. package/dist/services/rtkProcessor/index.d.mts.map +1 -0
  479. package/dist/services/rtkProcessor/index.mjs +2 -0
  480. package/dist/services/rtkProcessor/index.mjs.map +1 -0
  481. package/dist/services/runnerConfig/index.cjs +2 -0
  482. package/dist/services/runnerConfig/index.cjs.map +1 -0
  483. package/dist/services/runnerConfig/index.d.cts +30 -0
  484. package/dist/services/runnerConfig/index.d.cts.map +1 -0
  485. package/dist/services/runnerConfig/index.d.mts +30 -0
  486. package/dist/services/runnerConfig/index.d.mts.map +1 -0
  487. package/dist/services/runnerConfig/index.mjs +2 -0
  488. package/dist/services/runnerConfig/index.mjs.map +1 -0
  489. package/dist/services/runnerDependencies/index.cjs +2 -0
  490. package/dist/services/runnerDependencies/index.cjs.map +1 -0
  491. package/dist/services/runnerDependencies/index.d.cts +18 -0
  492. package/dist/services/runnerDependencies/index.d.cts.map +1 -0
  493. package/dist/services/runnerDependencies/index.d.mts +18 -0
  494. package/dist/services/runnerDependencies/index.d.mts.map +1 -0
  495. package/dist/services/runnerDependencies/index.mjs +2 -0
  496. package/dist/services/runnerDependencies/index.mjs.map +1 -0
  497. package/dist/services/runnerDependencies/type.d.cts +40 -0
  498. package/dist/services/runnerDependencies/type.d.cts.map +1 -0
  499. package/dist/services/runnerDependencies/type.d.mts +40 -0
  500. package/dist/services/runnerDependencies/type.d.mts.map +1 -0
  501. package/dist/services/runnerNamer/index.cjs +2 -0
  502. package/dist/services/runnerNamer/index.cjs.map +1 -0
  503. package/dist/services/runnerNamer/index.d.cts +10 -0
  504. package/dist/services/runnerNamer/index.d.cts.map +1 -0
  505. package/dist/services/runnerNamer/index.d.mts +10 -0
  506. package/dist/services/runnerNamer/index.d.mts.map +1 -0
  507. package/dist/services/runnerNamer/index.mjs +2 -0
  508. package/dist/services/runnerNamer/index.mjs.map +1 -0
  509. package/dist/services/runnerNamer/type.d.cts +11 -0
  510. package/dist/services/runnerNamer/type.d.cts.map +1 -0
  511. package/dist/services/runnerNamer/type.d.mts +11 -0
  512. package/dist/services/runnerNamer/type.d.mts.map +1 -0
  513. package/dist/services/runnerPaths/index.cjs +2 -0
  514. package/dist/services/runnerPaths/index.cjs.map +1 -0
  515. package/dist/services/runnerPaths/index.d.cts +46 -0
  516. package/dist/services/runnerPaths/index.d.cts.map +1 -0
  517. package/dist/services/runnerPaths/index.d.mts +46 -0
  518. package/dist/services/runnerPaths/index.d.mts.map +1 -0
  519. package/dist/services/runnerPaths/index.mjs +2 -0
  520. package/dist/services/runnerPaths/index.mjs.map +1 -0
  521. package/dist/services/runnerPaths/type.d.cts +43 -0
  522. package/dist/services/runnerPaths/type.d.cts.map +1 -0
  523. package/dist/services/runnerPaths/type.d.mts +43 -0
  524. package/dist/services/runnerPaths/type.d.mts.map +1 -0
  525. package/dist/services/runnerRecord/index.cjs +2 -0
  526. package/dist/services/runnerRecord/index.cjs.map +1 -0
  527. package/dist/services/runnerRecord/index.mjs +2 -0
  528. package/dist/services/runnerRecord/index.mjs.map +1 -0
  529. package/dist/services/runnerRegistry/index.cjs +2 -0
  530. package/dist/services/runnerRegistry/index.cjs.map +1 -0
  531. package/dist/services/runnerRegistry/index.d.cts +35 -0
  532. package/dist/services/runnerRegistry/index.d.cts.map +1 -0
  533. package/dist/services/runnerRegistry/index.d.mts +35 -0
  534. package/dist/services/runnerRegistry/index.d.mts.map +1 -0
  535. package/dist/services/runnerRegistry/index.mjs +2 -0
  536. package/dist/services/runnerRegistry/index.mjs.map +1 -0
  537. package/dist/services/runnerResult/index.cjs +2 -0
  538. package/dist/services/runnerResult/index.cjs.map +1 -0
  539. package/dist/services/runnerResult/index.d.cts +6 -0
  540. package/dist/services/runnerResult/index.d.cts.map +1 -0
  541. package/dist/services/runnerResult/index.d.mts +6 -0
  542. package/dist/services/runnerResult/index.d.mts.map +1 -0
  543. package/dist/services/runnerResult/index.mjs +2 -0
  544. package/dist/services/runnerResult/index.mjs.map +1 -0
  545. package/dist/services/runnerServerRuntime/index.cjs +2 -0
  546. package/dist/services/runnerServerRuntime/index.cjs.map +1 -0
  547. package/dist/services/runnerServerRuntime/index.mjs +2 -0
  548. package/dist/services/runnerServerRuntime/index.mjs.map +1 -0
  549. package/dist/services/runnerSettings/index.cjs +2 -0
  550. package/dist/services/runnerSettings/index.cjs.map +1 -0
  551. package/dist/services/runnerSettings/index.mjs +2 -0
  552. package/dist/services/runnerSettings/index.mjs.map +1 -0
  553. package/dist/services/runnerSupervisor/index.cjs +2 -0
  554. package/dist/services/runnerSupervisor/index.cjs.map +1 -0
  555. package/dist/services/runnerSupervisor/index.mjs +2 -0
  556. package/dist/services/runnerSupervisor/index.mjs.map +1 -0
  557. package/dist/services/runnersChannel/index.cjs +2 -0
  558. package/dist/services/runnersChannel/index.cjs.map +1 -0
  559. package/dist/services/runnersChannel/index.mjs +2 -0
  560. package/dist/services/runnersChannel/index.mjs.map +1 -0
  561. package/dist/services/runnersCommand/index.cjs +2 -0
  562. package/dist/services/runnersCommand/index.cjs.map +1 -0
  563. package/dist/services/runnersCommand/index.mjs +2 -0
  564. package/dist/services/runnersCommand/index.mjs.map +1 -0
  565. package/dist/services/session/index.cjs +2 -0
  566. package/dist/services/session/index.cjs.map +1 -0
  567. package/dist/services/session/index.d.cts +8 -0
  568. package/dist/services/session/index.d.cts.map +1 -0
  569. package/dist/services/session/index.d.mts +8 -0
  570. package/dist/services/session/index.d.mts.map +1 -0
  571. package/dist/services/session/index.mjs +2 -0
  572. package/dist/services/session/index.mjs.map +1 -0
  573. package/dist/services/spawner/index.cjs +2 -0
  574. package/dist/services/spawner/index.cjs.map +1 -0
  575. package/dist/services/spawner/index.d.cts +8 -0
  576. package/dist/services/spawner/index.d.cts.map +1 -0
  577. package/dist/services/spawner/index.d.mts +8 -0
  578. package/dist/services/spawner/index.d.mts.map +1 -0
  579. package/dist/services/spawner/index.mjs +2 -0
  580. package/dist/services/spawner/index.mjs.map +1 -0
  581. package/dist/services/tmuxBackend/TmuxClient.cjs +2 -0
  582. package/dist/services/tmuxBackend/TmuxClient.cjs.map +1 -0
  583. package/dist/services/tmuxBackend/TmuxClient.mjs +2 -0
  584. package/dist/services/tmuxBackend/TmuxClient.mjs.map +1 -0
  585. package/dist/services/tmuxBackend/index.cjs +2 -0
  586. package/dist/services/tmuxBackend/index.cjs.map +1 -0
  587. package/dist/services/tmuxBackend/index.mjs +2 -0
  588. package/dist/services/tmuxBackend/index.mjs.map +1 -0
  589. package/dist/services/tokenEstimate/index.cjs +2 -0
  590. package/dist/services/tokenEstimate/index.cjs.map +1 -0
  591. package/dist/services/tokenEstimate/index.mjs +2 -0
  592. package/dist/services/tokenEstimate/index.mjs.map +1 -0
  593. package/dist/services/webRunnerRuns/index.cjs +2 -0
  594. package/dist/services/webRunnerRuns/index.cjs.map +1 -0
  595. package/dist/services/webRunnerRuns/index.mjs +2 -0
  596. package/dist/services/webRunnerRuns/index.mjs.map +1 -0
  597. package/dist/session.cjs +1 -2
  598. package/dist/session.d.cts +3 -10
  599. package/dist/session.d.mts +3 -10
  600. package/dist/session.mjs +1 -2
  601. package/dist/spawner.cjs +1 -0
  602. package/dist/spawner.d.cts +3 -0
  603. package/dist/spawner.d.mts +3 -0
  604. package/dist/spawner.mjs +1 -0
  605. package/dist/tools/bashTool.cjs +3 -0
  606. package/dist/tools/bashTool.cjs.map +1 -0
  607. package/dist/tools/bashTool.d.cts +15 -0
  608. package/dist/tools/bashTool.d.cts.map +1 -0
  609. package/dist/tools/bashTool.d.mts +15 -0
  610. package/dist/tools/bashTool.d.mts.map +1 -0
  611. package/dist/tools/bashTool.mjs +3 -0
  612. package/dist/tools/bashTool.mjs.map +1 -0
  613. package/dist/tui/bashRender.cjs +4 -7
  614. package/dist/tui/bashRender.cjs.map +1 -1
  615. package/dist/tui/bashRender.d.cts +16 -15
  616. package/dist/tui/bashRender.d.cts.map +1 -1
  617. package/dist/tui/bashRender.d.mts +16 -15
  618. package/dist/tui/bashRender.d.mts.map +1 -1
  619. package/dist/tui/bashRender.mjs +4 -7
  620. package/dist/tui/bashRender.mjs.map +1 -1
  621. package/dist/tui/format.cjs +1 -1
  622. package/dist/tui/format.cjs.map +1 -1
  623. package/dist/tui/format.d.cts +7 -11
  624. package/dist/tui/format.d.cts.map +1 -1
  625. package/dist/tui/format.d.mts +7 -11
  626. package/dist/tui/format.d.mts.map +1 -1
  627. package/dist/tui/format.mjs +1 -1
  628. package/dist/tui/format.mjs.map +1 -1
  629. package/dist/tui/runnerRuntime.cjs +3 -0
  630. package/dist/tui/runnerRuntime.cjs.map +1 -0
  631. package/dist/tui/runnerRuntime.mjs +3 -0
  632. package/dist/tui/runnerRuntime.mjs.map +1 -0
  633. package/dist/tui/runnerSpace.cjs +4 -4
  634. package/dist/tui/runnerSpace.cjs.map +1 -1
  635. package/dist/tui/runnerSpace.d.cts +13 -15
  636. package/dist/tui/runnerSpace.d.cts.map +1 -1
  637. package/dist/tui/runnerSpace.d.mts +13 -15
  638. package/dist/tui/runnerSpace.d.mts.map +1 -1
  639. package/dist/tui/runnerSpace.mjs +4 -4
  640. package/dist/tui/runnerSpace.mjs.map +1 -1
  641. package/dist/types/bashResult.d.cts +48 -0
  642. package/dist/types/bashResult.d.cts.map +1 -0
  643. package/dist/types/bashResult.d.mts +48 -0
  644. package/dist/types/bashResult.d.mts.map +1 -0
  645. package/dist/types/bashRunService.d.cts +66 -0
  646. package/dist/types/bashRunService.d.cts.map +1 -0
  647. package/dist/types/bashRunService.d.mts +66 -0
  648. package/dist/types/bashRunService.d.mts.map +1 -0
  649. package/dist/types/bashTool.d.cts +15 -0
  650. package/dist/types/bashTool.d.cts.map +1 -0
  651. package/dist/types/bashTool.d.mts +15 -0
  652. package/dist/types/bashTool.d.mts.map +1 -0
  653. package/dist/types/clock.d.cts +10 -0
  654. package/dist/types/clock.d.cts.map +1 -0
  655. package/dist/types/clock.d.mts +10 -0
  656. package/dist/types/clock.d.mts.map +1 -0
  657. package/dist/types/launcher.d.cts +38 -0
  658. package/dist/types/launcher.d.cts.map +1 -0
  659. package/dist/types/launcher.d.mts +38 -0
  660. package/dist/types/launcher.d.mts.map +1 -0
  661. package/dist/types/lifeline.d.cts +18 -0
  662. package/dist/types/lifeline.d.cts.map +1 -0
  663. package/dist/types/lifeline.d.mts +18 -0
  664. package/dist/types/lifeline.d.mts.map +1 -0
  665. package/dist/types/logFile.d.cts +15 -0
  666. package/dist/types/logFile.d.cts.map +1 -0
  667. package/dist/types/logFile.d.mts +15 -0
  668. package/dist/types/logFile.d.mts.map +1 -0
  669. package/dist/types/logReader.d.cts +42 -0
  670. package/dist/types/logReader.d.cts.map +1 -0
  671. package/dist/types/logReader.d.mts +42 -0
  672. package/dist/types/logReader.d.mts.map +1 -0
  673. package/dist/types/processControl.d.cts +13 -0
  674. package/dist/types/processControl.d.cts.map +1 -0
  675. package/dist/types/processControl.d.mts +13 -0
  676. package/dist/types/processControl.d.mts.map +1 -0
  677. package/dist/types/ptyHost.d.cts +37 -0
  678. package/dist/types/ptyHost.d.cts.map +1 -0
  679. package/dist/types/ptyHost.d.mts +37 -0
  680. package/dist/types/ptyHost.d.mts.map +1 -0
  681. package/dist/types/ptySpawner.d.cts +27 -0
  682. package/dist/types/ptySpawner.d.cts.map +1 -0
  683. package/dist/types/ptySpawner.d.mts +27 -0
  684. package/dist/types/ptySpawner.d.mts.map +1 -0
  685. package/dist/types/rmuxBackend.d.cts +35 -0
  686. package/dist/types/rmuxBackend.d.cts.map +1 -0
  687. package/dist/types/rmuxBackend.d.mts +35 -0
  688. package/dist/types/rmuxBackend.d.mts.map +1 -0
  689. package/dist/types/rtkProcessor.cjs +2 -0
  690. package/dist/types/rtkProcessor.cjs.map +1 -0
  691. package/dist/types/rtkProcessor.d.cts +34 -0
  692. package/dist/types/rtkProcessor.d.cts.map +1 -0
  693. package/dist/types/rtkProcessor.d.mts +34 -0
  694. package/dist/types/rtkProcessor.d.mts.map +1 -0
  695. package/dist/types/rtkProcessor.mjs +2 -0
  696. package/dist/types/rtkProcessor.mjs.map +1 -0
  697. package/dist/types/runnerRegistry.d.cts +76 -0
  698. package/dist/types/runnerRegistry.d.cts.map +1 -0
  699. package/dist/types/runnerRegistry.d.mts +76 -0
  700. package/dist/types/runnerRegistry.d.mts.map +1 -0
  701. package/dist/types/runnerSettings.d.cts +33 -0
  702. package/dist/types/runnerSettings.d.cts.map +1 -0
  703. package/dist/types/runnerSettings.d.mts +33 -0
  704. package/dist/types/runnerSettings.d.mts.map +1 -0
  705. package/dist/types/spawner.d.cts +30 -0
  706. package/dist/types/spawner.d.cts.map +1 -0
  707. package/dist/types/spawner.d.mts +30 -0
  708. package/dist/types/spawner.d.mts.map +1 -0
  709. package/dist/types/webRunnerLog.cjs +2 -0
  710. package/dist/types/webRunnerLog.cjs.map +1 -0
  711. package/dist/types/webRunnerLog.mjs +2 -0
  712. package/dist/types/webRunnerLog.mjs.map +1 -0
  713. package/dist/types.cjs +0 -2
  714. package/dist/types.d.cts +3 -28
  715. package/dist/types.d.mts +3 -28
  716. package/dist/types.mjs +1 -2
  717. package/llms.txt +9 -0
  718. package/package.json +211 -220
  719. package/skills/doom-runner/SKILL.md +13 -5
  720. package/src/constants/ansiScrub.ts +2 -0
  721. package/src/constants/bashRender.ts +7 -0
  722. package/src/constants/bashResult.ts +9 -0
  723. package/src/constants/bashRunService.ts +6 -0
  724. package/src/constants/bashTool.ts +4 -0
  725. package/src/constants/cliApp.ts +5 -0
  726. package/src/constants/compaction.ts +2 -0
  727. package/src/constants/format.ts +2 -0
  728. package/src/constants/headless.ts +1 -0
  729. package/src/constants/launcher.ts +5 -0
  730. package/src/constants/lifeline.ts +4 -0
  731. package/src/constants/logReader.ts +2 -0
  732. package/src/constants/logTail.ts +1 -0
  733. package/src/constants/processControl.ts +1 -0
  734. package/src/constants/ptyHost.ts +7 -0
  735. package/src/constants/reconcile.ts +1 -0
  736. package/src/constants/rmuxBackend.ts +12 -0
  737. package/src/constants/rtkProcessor.ts +9 -0
  738. package/src/constants/runnerConfig.ts +22 -0
  739. package/src/constants/runnerLogApi.ts +12 -0
  740. package/src/constants/runnerNamer.ts +3 -0
  741. package/src/constants/runnerPaths.ts +15 -0
  742. package/src/constants/runnerRegistry.ts +8 -0
  743. package/src/constants/runnerRuntime.ts +15 -0
  744. package/src/constants/runnerSettings.ts +8 -0
  745. package/src/constants/runnerSpace.ts +8 -0
  746. package/src/constants/runnerWidget.ts +2 -0
  747. package/src/constants/runners.ts +4 -0
  748. package/src/constants/runnersCommand.ts +6 -0
  749. package/src/constants/session.ts +1 -0
  750. package/src/constants/spawner.ts +1 -0
  751. package/src/constants/tmuxBackend.ts +11 -0
  752. package/src/constants/tokenEstimate.ts +9 -0
  753. package/src/constants/webRunnerLog.ts +5 -0
  754. package/src/constants/webRunnerRuns.ts +1 -0
  755. package/src/constants/webRunners.ts +1 -0
  756. package/src/extensions/web.ts +35 -0
  757. package/src/prompts/doompi-use-runner/SKILL.md +38 -0
  758. package/src/types/logReader.ts +41 -0
  759. package/src/types/runnerRegistry.ts +85 -0
  760. package/src/types/webRunnerLog.ts +155 -0
  761. package/src/types/webRunners.ts +37 -0
  762. package/src/web/api/logApi.ts +128 -0
  763. package/src/web/api/screenApi.ts +104 -0
  764. package/src/web/components/BashToolMessage.tsx +178 -0
  765. package/src/web/components/LaunchRunnerDialog.tsx +159 -0
  766. package/src/web/components/RunnerLogPanel.tsx +381 -0
  767. package/src/web/components/RunnerShellPanel.tsx +131 -0
  768. package/src/web/components/RunnersActivitySection.tsx +156 -0
  769. package/src/web/components/RunnersPanel.tsx +253 -0
  770. package/src/web/hooks/runnerTail.ts +84 -0
  771. package/src/web/lib/bashToolFormat.ts +214 -0
  772. package/src/web/lib/format.ts +77 -0
  773. package/src/web/lib/launchLine.ts +55 -0
  774. package/src/web/stores/runnersStore.ts +76 -0
  775. package/src/web/tsconfig.json +23 -0
  776. package/dist/_virtual/_@oxc-project_runtime@0.143.0/helpers/esm/decorate.cjs +0 -1
  777. package/dist/_virtual/_@oxc-project_runtime@0.143.0/helpers/esm/decorate.mjs +0 -1
  778. package/dist/_virtual/_@oxc-project_runtime@0.143.0/helpers/esm/decorateMetadata.cjs +0 -1
  779. package/dist/_virtual/_@oxc-project_runtime@0.143.0/helpers/esm/decorateMetadata.mjs +0 -1
  780. package/dist/_virtual/_@oxc-project_runtime@0.143.0/helpers/esm/decorateParam.cjs +0 -1
  781. package/dist/_virtual/_@oxc-project_runtime@0.143.0/helpers/esm/decorateParam.mjs +0 -1
  782. package/dist/cli/cliApp.cjs +0 -6
  783. package/dist/cli/cliApp.cjs.map +0 -1
  784. package/dist/cli/cliApp.d.cts +0 -23
  785. package/dist/cli/cliApp.d.cts.map +0 -1
  786. package/dist/cli/cliApp.d.mts +0 -23
  787. package/dist/cli/cliApp.d.mts.map +0 -1
  788. package/dist/cli/cliApp.mjs +0 -6
  789. package/dist/cli/cliApp.mjs.map +0 -1
  790. package/dist/compaction.cjs.map +0 -1
  791. package/dist/compaction.d.cts.map +0 -1
  792. package/dist/compaction.d.mts.map +0 -1
  793. package/dist/compaction.mjs.map +0 -1
  794. package/dist/config.cjs.map +0 -1
  795. package/dist/config.d.cts.map +0 -1
  796. package/dist/config.d.mts.map +0 -1
  797. package/dist/config.mjs.map +0 -1
  798. package/dist/container/index.cjs +0 -2
  799. package/dist/container/index.cjs.map +0 -1
  800. package/dist/container/index.d.cts +0 -14
  801. package/dist/container/index.d.cts.map +0 -1
  802. package/dist/container/index.d.mts +0 -14
  803. package/dist/container/index.d.mts.map +0 -1
  804. package/dist/container/index.mjs +0 -2
  805. package/dist/container/index.mjs.map +0 -1
  806. package/dist/extension.cjs +0 -3
  807. package/dist/extension.cjs.map +0 -1
  808. package/dist/extension.d.cts +0 -10
  809. package/dist/extension.d.cts.map +0 -1
  810. package/dist/extension.d.mts +0 -10
  811. package/dist/extension.d.mts.map +0 -1
  812. package/dist/extension.mjs +0 -3
  813. package/dist/extension.mjs.map +0 -1
  814. package/dist/ptyProvider.cjs +0 -2
  815. package/dist/ptyProvider.cjs.map +0 -1
  816. package/dist/ptyProvider.d.cts +0 -13
  817. package/dist/ptyProvider.d.cts.map +0 -1
  818. package/dist/ptyProvider.d.mts +0 -13
  819. package/dist/ptyProvider.d.mts.map +0 -1
  820. package/dist/ptyProvider.mjs +0 -2
  821. package/dist/ptyProvider.mjs.map +0 -1
  822. package/dist/reconcile.cjs.map +0 -1
  823. package/dist/reconcile.d.cts.map +0 -1
  824. package/dist/reconcile.d.mts.map +0 -1
  825. package/dist/reconcile.mjs.map +0 -1
  826. package/dist/runnerSpec.cjs +0 -2
  827. package/dist/runnerSpec.cjs.map +0 -1
  828. package/dist/runnerSpec.d.cts +0 -50
  829. package/dist/runnerSpec.d.cts.map +0 -1
  830. package/dist/runnerSpec.d.mts +0 -50
  831. package/dist/runnerSpec.d.mts.map +0 -1
  832. package/dist/runnerSpec.mjs +0 -2
  833. package/dist/runnerSpec.mjs.map +0 -1
  834. package/dist/services/AnsiScrub/ansiScrub.cjs +0 -5
  835. package/dist/services/AnsiScrub/ansiScrub.cjs.map +0 -1
  836. package/dist/services/AnsiScrub/ansiScrub.d.cts +0 -34
  837. package/dist/services/AnsiScrub/ansiScrub.d.cts.map +0 -1
  838. package/dist/services/AnsiScrub/ansiScrub.d.mts +0 -34
  839. package/dist/services/AnsiScrub/ansiScrub.d.mts.map +0 -1
  840. package/dist/services/AnsiScrub/ansiScrub.mjs +0 -5
  841. package/dist/services/AnsiScrub/ansiScrub.mjs.map +0 -1
  842. package/dist/services/AnsiScrub/index.cjs +0 -1
  843. package/dist/services/AnsiScrub/index.d.cts +0 -2
  844. package/dist/services/AnsiScrub/index.d.mts +0 -2
  845. package/dist/services/AnsiScrub/index.mjs +0 -1
  846. package/dist/services/BashRunService/BashRunService.cjs +0 -2
  847. package/dist/services/BashRunService/BashRunService.cjs.map +0 -1
  848. package/dist/services/BashRunService/BashRunService.d.cts +0 -38
  849. package/dist/services/BashRunService/BashRunService.d.cts.map +0 -1
  850. package/dist/services/BashRunService/BashRunService.d.mts +0 -38
  851. package/dist/services/BashRunService/BashRunService.d.mts.map +0 -1
  852. package/dist/services/BashRunService/BashRunService.mjs +0 -2
  853. package/dist/services/BashRunService/BashRunService.mjs.map +0 -1
  854. package/dist/services/BashRunService/index.cjs +0 -1
  855. package/dist/services/BashRunService/index.d.cts +0 -3
  856. package/dist/services/BashRunService/index.d.mts +0 -3
  857. package/dist/services/BashRunService/index.mjs +0 -1
  858. package/dist/services/BashRunService/types.d.cts +0 -62
  859. package/dist/services/BashRunService/types.d.cts.map +0 -1
  860. package/dist/services/BashRunService/types.d.mts +0 -62
  861. package/dist/services/BashRunService/types.d.mts.map +0 -1
  862. package/dist/services/Clock/SystemClock.cjs +0 -2
  863. package/dist/services/Clock/SystemClock.cjs.map +0 -1
  864. package/dist/services/Clock/SystemClock.d.cts +0 -11
  865. package/dist/services/Clock/SystemClock.d.cts.map +0 -1
  866. package/dist/services/Clock/SystemClock.d.mts +0 -11
  867. package/dist/services/Clock/SystemClock.d.mts.map +0 -1
  868. package/dist/services/Clock/SystemClock.mjs +0 -2
  869. package/dist/services/Clock/SystemClock.mjs.map +0 -1
  870. package/dist/services/Clock/index.cjs +0 -1
  871. package/dist/services/Clock/index.d.cts +0 -3
  872. package/dist/services/Clock/index.d.mts +0 -3
  873. package/dist/services/Clock/index.mjs +0 -1
  874. package/dist/services/Clock/types.d.cts +0 -11
  875. package/dist/services/Clock/types.d.cts.map +0 -1
  876. package/dist/services/Clock/types.d.mts +0 -11
  877. package/dist/services/Clock/types.d.mts.map +0 -1
  878. package/dist/services/Launcher/Launcher.cjs +0 -2
  879. package/dist/services/Launcher/Launcher.cjs.map +0 -1
  880. package/dist/services/Launcher/Launcher.d.cts +0 -27
  881. package/dist/services/Launcher/Launcher.d.cts.map +0 -1
  882. package/dist/services/Launcher/Launcher.d.mts +0 -27
  883. package/dist/services/Launcher/Launcher.d.mts.map +0 -1
  884. package/dist/services/Launcher/Launcher.mjs +0 -2
  885. package/dist/services/Launcher/Launcher.mjs.map +0 -1
  886. package/dist/services/Launcher/index.cjs +0 -1
  887. package/dist/services/Launcher/index.d.cts +0 -3
  888. package/dist/services/Launcher/index.d.mts +0 -3
  889. package/dist/services/Launcher/index.mjs +0 -1
  890. package/dist/services/Launcher/types.d.cts +0 -40
  891. package/dist/services/Launcher/types.d.cts.map +0 -1
  892. package/dist/services/Launcher/types.d.mts +0 -40
  893. package/dist/services/Launcher/types.d.mts.map +0 -1
  894. package/dist/services/Lifeline/NodeLifeline.cjs +0 -2
  895. package/dist/services/Lifeline/NodeLifeline.cjs.map +0 -1
  896. package/dist/services/Lifeline/NodeLifeline.d.cts +0 -21
  897. package/dist/services/Lifeline/NodeLifeline.d.cts.map +0 -1
  898. package/dist/services/Lifeline/NodeLifeline.d.mts +0 -21
  899. package/dist/services/Lifeline/NodeLifeline.d.mts.map +0 -1
  900. package/dist/services/Lifeline/NodeLifeline.mjs +0 -2
  901. package/dist/services/Lifeline/NodeLifeline.mjs.map +0 -1
  902. package/dist/services/Lifeline/client.cjs +0 -2
  903. package/dist/services/Lifeline/client.cjs.map +0 -1
  904. package/dist/services/Lifeline/client.d.cts +0 -23
  905. package/dist/services/Lifeline/client.d.cts.map +0 -1
  906. package/dist/services/Lifeline/client.d.mts +0 -23
  907. package/dist/services/Lifeline/client.d.mts.map +0 -1
  908. package/dist/services/Lifeline/client.mjs.map +0 -1
  909. package/dist/services/Lifeline/index.cjs +0 -1
  910. package/dist/services/Lifeline/index.d.cts +0 -4
  911. package/dist/services/Lifeline/index.d.mts +0 -4
  912. package/dist/services/Lifeline/index.mjs +0 -1
  913. package/dist/services/Lifeline/types.d.cts +0 -19
  914. package/dist/services/Lifeline/types.d.cts.map +0 -1
  915. package/dist/services/Lifeline/types.d.mts +0 -19
  916. package/dist/services/Lifeline/types.d.mts.map +0 -1
  917. package/dist/services/LogFile/LogFile.cjs +0 -2
  918. package/dist/services/LogFile/LogFile.cjs.map +0 -1
  919. package/dist/services/LogFile/LogFile.d.cts +0 -13
  920. package/dist/services/LogFile/LogFile.d.cts.map +0 -1
  921. package/dist/services/LogFile/LogFile.d.mts +0 -13
  922. package/dist/services/LogFile/LogFile.d.mts.map +0 -1
  923. package/dist/services/LogFile/LogFile.mjs +0 -2
  924. package/dist/services/LogFile/LogFile.mjs.map +0 -1
  925. package/dist/services/LogFile/index.cjs +0 -1
  926. package/dist/services/LogFile/index.d.cts +0 -3
  927. package/dist/services/LogFile/index.d.mts +0 -3
  928. package/dist/services/LogFile/index.mjs +0 -1
  929. package/dist/services/LogFile/types.d.cts +0 -16
  930. package/dist/services/LogFile/types.d.cts.map +0 -1
  931. package/dist/services/LogFile/types.d.mts +0 -16
  932. package/dist/services/LogFile/types.d.mts.map +0 -1
  933. package/dist/services/LogReader/LogReader.cjs +0 -10
  934. package/dist/services/LogReader/LogReader.cjs.map +0 -1
  935. package/dist/services/LogReader/LogReader.d.cts +0 -14
  936. package/dist/services/LogReader/LogReader.d.cts.map +0 -1
  937. package/dist/services/LogReader/LogReader.d.mts +0 -14
  938. package/dist/services/LogReader/LogReader.d.mts.map +0 -1
  939. package/dist/services/LogReader/LogReader.mjs +0 -10
  940. package/dist/services/LogReader/LogReader.mjs.map +0 -1
  941. package/dist/services/LogReader/index.cjs +0 -1
  942. package/dist/services/LogReader/index.d.cts +0 -3
  943. package/dist/services/LogReader/index.d.mts +0 -3
  944. package/dist/services/LogReader/index.mjs +0 -1
  945. package/dist/services/LogReader/types.d.cts +0 -27
  946. package/dist/services/LogReader/types.d.cts.map +0 -1
  947. package/dist/services/LogReader/types.d.mts +0 -27
  948. package/dist/services/LogReader/types.d.mts.map +0 -1
  949. package/dist/services/ProcessControl/NodeProcessControl.cjs +0 -2
  950. package/dist/services/ProcessControl/NodeProcessControl.cjs.map +0 -1
  951. package/dist/services/ProcessControl/NodeProcessControl.d.cts +0 -11
  952. package/dist/services/ProcessControl/NodeProcessControl.d.cts.map +0 -1
  953. package/dist/services/ProcessControl/NodeProcessControl.d.mts +0 -11
  954. package/dist/services/ProcessControl/NodeProcessControl.d.mts.map +0 -1
  955. package/dist/services/ProcessControl/NodeProcessControl.mjs +0 -2
  956. package/dist/services/ProcessControl/NodeProcessControl.mjs.map +0 -1
  957. package/dist/services/ProcessControl/index.cjs +0 -1
  958. package/dist/services/ProcessControl/index.d.cts +0 -3
  959. package/dist/services/ProcessControl/index.d.mts +0 -3
  960. package/dist/services/ProcessControl/index.mjs +0 -1
  961. package/dist/services/ProcessControl/types.d.cts +0 -14
  962. package/dist/services/ProcessControl/types.d.cts.map +0 -1
  963. package/dist/services/ProcessControl/types.d.mts +0 -14
  964. package/dist/services/ProcessControl/types.d.mts.map +0 -1
  965. package/dist/services/PtyHost/PtyHost.cjs +0 -5
  966. package/dist/services/PtyHost/PtyHost.cjs.map +0 -1
  967. package/dist/services/PtyHost/PtyHost.d.cts +0 -28
  968. package/dist/services/PtyHost/PtyHost.d.cts.map +0 -1
  969. package/dist/services/PtyHost/PtyHost.d.mts +0 -28
  970. package/dist/services/PtyHost/PtyHost.d.mts.map +0 -1
  971. package/dist/services/PtyHost/PtyHost.mjs +0 -5
  972. package/dist/services/PtyHost/PtyHost.mjs.map +0 -1
  973. package/dist/services/PtyHost/index.cjs +0 -1
  974. package/dist/services/PtyHost/index.d.cts +0 -3
  975. package/dist/services/PtyHost/index.d.mts +0 -3
  976. package/dist/services/PtyHost/index.mjs +0 -1
  977. package/dist/services/PtyHost/types.d.cts +0 -39
  978. package/dist/services/PtyHost/types.d.cts.map +0 -1
  979. package/dist/services/PtyHost/types.d.mts +0 -39
  980. package/dist/services/PtyHost/types.d.mts.map +0 -1
  981. package/dist/services/PtySpawner/NodePtySpawner.cjs +0 -2
  982. package/dist/services/PtySpawner/NodePtySpawner.cjs.map +0 -1
  983. package/dist/services/PtySpawner/NodePtySpawner.d.cts +0 -18
  984. package/dist/services/PtySpawner/NodePtySpawner.d.cts.map +0 -1
  985. package/dist/services/PtySpawner/NodePtySpawner.d.mts +0 -18
  986. package/dist/services/PtySpawner/NodePtySpawner.d.mts.map +0 -1
  987. package/dist/services/PtySpawner/NodePtySpawner.mjs +0 -2
  988. package/dist/services/PtySpawner/NodePtySpawner.mjs.map +0 -1
  989. package/dist/services/PtySpawner/index.cjs +0 -1
  990. package/dist/services/PtySpawner/index.d.cts +0 -3
  991. package/dist/services/PtySpawner/index.d.mts +0 -3
  992. package/dist/services/PtySpawner/index.mjs +0 -1
  993. package/dist/services/PtySpawner/types.d.cts +0 -28
  994. package/dist/services/PtySpawner/types.d.cts.map +0 -1
  995. package/dist/services/PtySpawner/types.d.mts +0 -28
  996. package/dist/services/PtySpawner/types.d.mts.map +0 -1
  997. package/dist/services/RmuxBackend/RmuxBackend.cjs +0 -2
  998. package/dist/services/RmuxBackend/RmuxBackend.cjs.map +0 -1
  999. package/dist/services/RmuxBackend/RmuxBackend.d.cts +0 -36
  1000. package/dist/services/RmuxBackend/RmuxBackend.d.cts.map +0 -1
  1001. package/dist/services/RmuxBackend/RmuxBackend.d.mts +0 -36
  1002. package/dist/services/RmuxBackend/RmuxBackend.d.mts.map +0 -1
  1003. package/dist/services/RmuxBackend/RmuxBackend.mjs +0 -2
  1004. package/dist/services/RmuxBackend/RmuxBackend.mjs.map +0 -1
  1005. package/dist/services/RmuxBackend/index.cjs +0 -1
  1006. package/dist/services/RmuxBackend/index.d.cts +0 -3
  1007. package/dist/services/RmuxBackend/index.d.mts +0 -3
  1008. package/dist/services/RmuxBackend/index.mjs +0 -1
  1009. package/dist/services/RmuxBackend/types.d.cts +0 -29
  1010. package/dist/services/RmuxBackend/types.d.cts.map +0 -1
  1011. package/dist/services/RmuxBackend/types.d.mts +0 -29
  1012. package/dist/services/RmuxBackend/types.d.mts.map +0 -1
  1013. package/dist/services/RunnerNamer/RunnerNamer.cjs +0 -2
  1014. package/dist/services/RunnerNamer/RunnerNamer.cjs.map +0 -1
  1015. package/dist/services/RunnerNamer/RunnerNamer.d.cts +0 -13
  1016. package/dist/services/RunnerNamer/RunnerNamer.d.cts.map +0 -1
  1017. package/dist/services/RunnerNamer/RunnerNamer.d.mts +0 -13
  1018. package/dist/services/RunnerNamer/RunnerNamer.d.mts.map +0 -1
  1019. package/dist/services/RunnerNamer/RunnerNamer.mjs +0 -2
  1020. package/dist/services/RunnerNamer/RunnerNamer.mjs.map +0 -1
  1021. package/dist/services/RunnerNamer/index.cjs +0 -1
  1022. package/dist/services/RunnerNamer/index.d.cts +0 -3
  1023. package/dist/services/RunnerNamer/index.d.mts +0 -3
  1024. package/dist/services/RunnerNamer/index.mjs +0 -1
  1025. package/dist/services/RunnerNamer/types.d.cts +0 -12
  1026. package/dist/services/RunnerNamer/types.d.cts.map +0 -1
  1027. package/dist/services/RunnerNamer/types.d.mts +0 -12
  1028. package/dist/services/RunnerNamer/types.d.mts.map +0 -1
  1029. package/dist/services/RunnerPaths/RunnerPaths.cjs +0 -2
  1030. package/dist/services/RunnerPaths/RunnerPaths.cjs.map +0 -1
  1031. package/dist/services/RunnerPaths/RunnerPaths.d.cts +0 -31
  1032. package/dist/services/RunnerPaths/RunnerPaths.d.cts.map +0 -1
  1033. package/dist/services/RunnerPaths/RunnerPaths.d.mts +0 -31
  1034. package/dist/services/RunnerPaths/RunnerPaths.d.mts.map +0 -1
  1035. package/dist/services/RunnerPaths/RunnerPaths.mjs +0 -2
  1036. package/dist/services/RunnerPaths/RunnerPaths.mjs.map +0 -1
  1037. package/dist/services/RunnerPaths/index.cjs +0 -1
  1038. package/dist/services/RunnerPaths/index.d.cts +0 -3
  1039. package/dist/services/RunnerPaths/index.d.mts +0 -3
  1040. package/dist/services/RunnerPaths/index.mjs +0 -1
  1041. package/dist/services/RunnerPaths/types.d.cts +0 -33
  1042. package/dist/services/RunnerPaths/types.d.cts.map +0 -1
  1043. package/dist/services/RunnerPaths/types.d.mts +0 -33
  1044. package/dist/services/RunnerPaths/types.d.mts.map +0 -1
  1045. package/dist/services/RunnerRegistry/RunnerRegistry.cjs +0 -2
  1046. package/dist/services/RunnerRegistry/RunnerRegistry.cjs.map +0 -1
  1047. package/dist/services/RunnerRegistry/RunnerRegistry.d.cts +0 -40
  1048. package/dist/services/RunnerRegistry/RunnerRegistry.d.cts.map +0 -1
  1049. package/dist/services/RunnerRegistry/RunnerRegistry.d.mts +0 -40
  1050. package/dist/services/RunnerRegistry/RunnerRegistry.d.mts.map +0 -1
  1051. package/dist/services/RunnerRegistry/RunnerRegistry.mjs +0 -2
  1052. package/dist/services/RunnerRegistry/RunnerRegistry.mjs.map +0 -1
  1053. package/dist/services/RunnerRegistry/index.cjs +0 -1
  1054. package/dist/services/RunnerRegistry/index.d.cts +0 -3
  1055. package/dist/services/RunnerRegistry/index.d.mts +0 -3
  1056. package/dist/services/RunnerRegistry/index.mjs +0 -1
  1057. package/dist/services/RunnerRegistry/types.d.cts +0 -98
  1058. package/dist/services/RunnerRegistry/types.d.cts.map +0 -1
  1059. package/dist/services/RunnerRegistry/types.d.mts +0 -98
  1060. package/dist/services/RunnerRegistry/types.d.mts.map +0 -1
  1061. package/dist/services/Spawner/NodeSpawner.cjs +0 -2
  1062. package/dist/services/Spawner/NodeSpawner.cjs.map +0 -1
  1063. package/dist/services/Spawner/NodeSpawner.d.cts +0 -10
  1064. package/dist/services/Spawner/NodeSpawner.d.cts.map +0 -1
  1065. package/dist/services/Spawner/NodeSpawner.d.mts +0 -10
  1066. package/dist/services/Spawner/NodeSpawner.d.mts.map +0 -1
  1067. package/dist/services/Spawner/NodeSpawner.mjs +0 -2
  1068. package/dist/services/Spawner/NodeSpawner.mjs.map +0 -1
  1069. package/dist/services/Spawner/index.cjs +0 -1
  1070. package/dist/services/Spawner/index.d.cts +0 -3
  1071. package/dist/services/Spawner/index.d.mts +0 -3
  1072. package/dist/services/Spawner/index.mjs +0 -1
  1073. package/dist/services/Spawner/types.d.cts +0 -31
  1074. package/dist/services/Spawner/types.d.cts.map +0 -1
  1075. package/dist/services/Spawner/types.d.mts +0 -31
  1076. package/dist/services/Spawner/types.d.mts.map +0 -1
  1077. package/dist/session.cjs.map +0 -1
  1078. package/dist/session.d.cts.map +0 -1
  1079. package/dist/session.d.mts.map +0 -1
  1080. package/dist/session.mjs.map +0 -1
  1081. package/dist/tool/bashTool.cjs +0 -7
  1082. package/dist/tool/bashTool.cjs.map +0 -1
  1083. package/dist/tool/bashTool.d.cts +0 -25
  1084. package/dist/tool/bashTool.d.cts.map +0 -1
  1085. package/dist/tool/bashTool.d.mts +0 -25
  1086. package/dist/tool/bashTool.d.mts.map +0 -1
  1087. package/dist/tool/bashTool.mjs +0 -7
  1088. package/dist/tool/bashTool.mjs.map +0 -1
  1089. package/dist/tool/responseEnvelope.cjs +0 -10
  1090. package/dist/tool/responseEnvelope.cjs.map +0 -1
  1091. package/dist/tool/responseEnvelope.d.cts +0 -45
  1092. package/dist/tool/responseEnvelope.d.cts.map +0 -1
  1093. package/dist/tool/responseEnvelope.d.mts +0 -45
  1094. package/dist/tool/responseEnvelope.d.mts.map +0 -1
  1095. package/dist/tool/responseEnvelope.mjs +0 -10
  1096. package/dist/tool/responseEnvelope.mjs.map +0 -1
  1097. package/dist/tool/schema.cjs +0 -2
  1098. package/dist/tool/schema.cjs.map +0 -1
  1099. package/dist/tool/schema.d.cts +0 -25
  1100. package/dist/tool/schema.d.cts.map +0 -1
  1101. package/dist/tool/schema.d.mts +0 -25
  1102. package/dist/tool/schema.d.mts.map +0 -1
  1103. package/dist/tool/schema.mjs +0 -2
  1104. package/dist/tool/schema.mjs.map +0 -1
  1105. package/dist/types.cjs.map +0 -1
  1106. package/dist/types.d.cts.map +0 -1
  1107. package/dist/types.d.mts.map +0 -1
  1108. package/dist/types.mjs.map +0 -1
  1109. /package/dist/services/{Lifeline → lifeline}/client.mjs +0 -0
package/README.md CHANGED
@@ -1,47 +1,244 @@
1
1
  # @agimon-ai/doompi-runner
2
2
 
3
- Pi bash tool replacement with background process supervision.
3
+ Supervised shell execution, background process control, durable logs, and Runner Space for Pi.
4
4
 
5
- Replaces the built-in bash tool with a supervised one. Long commands are backgrounded
6
- instead of blocking, a process tool manages them, and detached runs reconcile themselves
7
- after the context is rewritten.
5
+ Part of the [DoomPi distribution](https://www.npmjs.com/package/@agimon-ai/doompi).
8
6
 
9
- Part of [Doompi](https://www.npmjs.com/package/@agimon-ai/doompi), a coding agent that loads
10
- only the skills and tools you name. This package is composed by Doompi and is not usually
11
- installed on its own.
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.
9
+
10
+ > **Alpha:** tool and process contracts may change between releases.
11
+
12
+ ## Requirements
13
+
14
+ - Node.js 22.19.0 or newer
15
+ - Pi 0.85.0 and Pi TUI 0.85.0
16
+ - `/bin/bash`
17
+ - macOS or Linux on arm64 or x64 for bundled RMUX and RTK support
18
+
19
+ Linux native loading also depends on a compatible system loader and libc. The bundled binaries are
20
+ glibc-linked, so a musl host such as Alpine cannot run them.
21
+
22
+ RTK is optional. Eligible commands return bounded raw output with an "RTK is unavailable" note
23
+ when its binary is missing or cannot start. A synchronous spawn failure or an `ENOENT`, `EACCES`,
24
+ or `ENOEXEC` spawn error disables further attempts for that `RtkProcessor` instance. Missing-path
25
+ resolution and ordinary processing failures are not latched.
26
+
27
+ Panes come from the first backend that answers: bundled RMUX, then `rmux` on PATH, then `tmux` on
28
+ PATH. Only when none is available does a non-interactive command fall back to a supervised
29
+ subprocess, and interactive commands need one of them. A tmux-backed run is supervised by the same
30
+ host process as an RMUX one, so exit metadata and logs behave the same; its session names carry a
31
+ `doom-tmux-` prefix rather than `doom-runner-`.
12
32
 
13
33
  ## Install
14
34
 
35
+ `doompi init` and `dpi init` include Runner in `default.packages` in `.doom/modes.yaml`. Remove
36
+ it to keep Pi's `bash`, or move it to a named layer to enable it only in selected major modes.
37
+ For direct Pi installation:
38
+
39
+ ```bash
40
+ pi install npm:@agimon-ai/doompi-runner
41
+ ```
42
+
43
+ Pi discovers Runner's sole extension factory from `package.json.pi.extensions`. The extension joins
44
+ the runner-scoped Cordis host and releases its plugin resources and host lease when the Pi session
45
+ shuts down.
46
+
47
+ ## Use the `bash` tool
48
+
49
+ ```json
50
+ {
51
+ "command": "pnpm test",
52
+ "timeout": 60
53
+ }
54
+ ```
55
+
56
+ Commands crossing the promotion threshold move to a supervised runner. The default threshold is 60
57
+ seconds. Set `background: true` to detach immediately, or `interactive: true` only when a command
58
+ needs terminal input.
59
+
60
+ Runner requires `PI_SESSION_ID` for session ownership. Processes, controls, and logs remain
61
+ addressable after transcript compaction because their identity is outside model context.
62
+
63
+ ### RTK result processing
64
+
65
+ Runner keeps the complete original log, then uses the matching RTK stdin filter only for
66
+ conservatively recognized single commands. Current safe mappings cover `cargo test`, `pytest`, plain
67
+ unified `git diff`, structured `grep` or `rg`, `go test -json`, and JSON-formatted `ruff check`.
68
+ Compound commands, pipelines, redirects, substitutions, incompatible formats, unsupported commands,
69
+ and logs above RTK's 10 MiB stdin limit return bounded raw output instead. An eligible RTK failure
70
+ also returns bounded raw output with a warning and does not change the command exit result.
71
+
72
+ ## Inspect and control runs
73
+
74
+ Use `/runners` or `SPC r l` in the TUI. The `doom-runner` CLI supports:
75
+
15
76
  ```bash
16
- npm install @agimon-ai/doompi-runner
77
+ doom-runner list
78
+ doom-runner status <runner-id>
79
+ doom-runner logs <runner-id>
80
+ doom-runner input <runner-id> --text "y" --enter
81
+ doom-runner stop <runner-id>
82
+ doom-runner stop-all
17
83
  ```
18
84
 
19
- ## How it loads
85
+ The `input` command requires a running interactive process backed by RMUX or tmux.
86
+
87
+ Stop runs that are no longer required.
20
88
 
21
- Name it in a layer in `.doom/modes.yaml`, then add that layer to a major mode:
89
+ ## Storage and limits
22
90
 
23
- ```yaml
24
- layers:
25
- runner:
26
- packages: ['@agimon-ai/doompi-runner/extensions/pi']
91
+ By default, session-scoped logs and registry data live under:
27
92
 
28
- majorMode:
29
- dev: [runner]
93
+ ```text
94
+ ~/.pi/agent/doom-runner/<session>/
30
95
  ```
31
96
 
32
- ## Leader
97
+ Logs remain complete until TTL cleanup and are eligible for cleanup after seven days by default. The
98
+ legacy log-size configuration exports remain available for compatibility but no longer rotate log
99
+ content. Result limits, retention, and the promotion threshold remain environment-configurable.
100
+
101
+ ### Result excerpts
102
+
103
+ A result that exceeds the ceiling is returned as an excerpt: roughly the first fifth of the budget
104
+ holds the opening lines, the rest holds the closing ones, and a marker between them states how many
105
+ lines were dropped.
106
+
107
+ The budget depends on the exit status. A command that **failed** gets 8 KiB and 120 lines, because
108
+ its output is the evidence. A command that **succeeded** gets 2 KiB, because exiting 0 has already
109
+ reported the outcome and the rest is mostly progress lines and repeated warnings:
110
+
111
+ ```text
112
+ Log excerpt (71 of 604 lines):
113
+ $ pnpm build
114
+ Compiling 1200 modules...
115
+ compiled src/module-0.ts
116
+ … [5 lines elided] …
117
+ compiled src/module-599.ts
118
+ Build succeeded in 12.4s
119
+ exit status 0
120
+ Full log: /path/to/run.log (17.0 KB, 604 lines); inspect with doom-runner logs run-a
121
+ ```
33
122
 
34
- `SPC r r` opens background processes, once the extension is loaded.
123
+ Three ceilings apply and whichever binds first wins: bytes, lines, and tokens. Tokens are there
124
+ because bytes do not track context cost. Measured against `gpt-tokenizer`, real text runs from about
125
+ 1.4 characters per token for base64 to 4.7 for English prose, so 8 KiB of one costs several times
126
+ what 8 KiB of the other does. The defaults are 2,048 tokens on failure and 512 on success.
127
+
128
+ Token counts are estimated rather than tokenized: truncation runs on every command and is
129
+ synchronous, so loading a vocabulary would charge every session for a table most never need. The
130
+ estimator models how BPE behaves, with punctuation forcing boundaries, natural words cheap, and
131
+ letter-digit runs expensive. Its worst error against `gpt-tokenizer` is a factor of about 1.46
132
+ either way, which is why the byte ceiling stays behind it as the hard bound.
133
+
134
+ `DOOM_RUNNER_RESULT_MAX_BYTES`, `DOOM_RUNNER_RESULT_MAX_TOKENS`, and their
135
+ `DOOM_RUNNER_SUCCESS_*` counterparts move these for one invocation. A pragma overrides all of
136
+ them, which is how one noisy successful command can still ask for the wider result. Raising only
137
+ `maxResultBytes` will not help when the token ceiling is the one binding.
138
+
139
+ Error lines found in the dropped span are rescued into that marker's block, up to ten entries.
140
+ Matching looks for a severity word in the first 60 characters, so `[widget] build: error TS2322`
141
+ and a line behind a timestamp both count, while `0 errors`, `no failures`, and `--error-format` do
142
+ not. Byte-identical lines collapse to one entry with an occurrence count. Lines that share a shape
143
+ but differ in detail keep every variant, joined inside brackets so nothing actionable is lost:
144
+
145
+ ```text
146
+ ERROR in [src/widget-100.ts:100:7|src/widget-200.ts:200:7] - Type mismatch
147
+ error: connection refused (×40)
148
+ ```
35
149
 
36
- ## Notes
150
+ The complete raw log on disk is never truncated.
37
151
 
38
- Ships a prebuilt `rmux` binary per platform through the `@agimon-ai/doompi-runner-rmux-*`
39
- optional dependencies.
152
+ ### Configuration
40
153
 
41
- ## Entry points
154
+ Four layers, most specific first: a per-command pragma, then an environment variable, then project
155
+ configuration, then the built-in default. Project configuration is the project's baseline, so an
156
+ environment variable set for one invocation still wins over it.
42
157
 
43
- 51 subpaths are declared in the `exports` field of `package.json`.
158
+ One command that needs a wider result can say so on its first line. The pragma is a shell comment,
159
+ so it stays harmless to the command itself:
160
+
161
+ ```bash
162
+ # @doom: {"maxResultBytes": 32768, "maxResultTokens": 8192, "maxResultLines": 300}
163
+ pnpm build
164
+ ```
165
+
166
+ Project settings follow Pi's convention for extension configuration: one JSON file per extension
167
+ under the config directory, at `.pi/doompi-runner.json`. It is read only when the project is
168
+ trusted, and an unrecognized or out-of-range key is reported rather than silently ignored.
169
+
170
+ ```json
171
+ {
172
+ "maxResultBytes": 16384,
173
+ "maxResultLines": 200,
174
+ "successMaxResultBytes": 2048,
175
+ "maxResultTokens": 2048,
176
+ "successMaxResultTokens": 512,
177
+ "headRatio": 0.2,
178
+ "errorPatterns": ["^FEHLER", "^\\s*FAILED\\b"],
179
+ "errorMaxEntries": 10,
180
+ "errorMaxVariantsJoined": 6,
181
+ "errorBudgetRatio": 0.2
182
+ }
183
+ ```
184
+
185
+ `errorPatterns` extends the built-in matcher rather than replacing it, which is what makes output
186
+ it does not recognize reachable. Ceilings apply to every numeric key so a checked-in file cannot
187
+ flood the model's context.
188
+
189
+ Commands inherit the DoomPi process environment and the operating system user's privileges. Logs
190
+ may contain prompts, source, command output, credentials, or other secrets; restrict access and
191
+ retention accordingly.
192
+
193
+ ## Native artifacts
194
+
195
+ Runner selects the matching optional dependencies automatically:
196
+
197
+ | Host | RMUX package | RTK package |
198
+ | ----------- | -------------------------------------------- | ------------------------------------------- |
199
+ | macOS arm64 | `@agimon-ai/doompi-runner-rmux-darwin-arm64` | `@agimon-ai/doompi-runner-rtk-darwin-arm64` |
200
+ | macOS x64 | `@agimon-ai/doompi-runner-rmux-darwin-x64` | `@agimon-ai/doompi-runner-rtk-darwin-x64` |
201
+ | Linux arm64 | `@agimon-ai/doompi-runner-rmux-linux-arm64` | `@agimon-ai/doompi-runner-rtk-linux-arm64` |
202
+ | Linux x64 | `@agimon-ai/doompi-runner-rmux-linux-x64` | `@agimon-ai/doompi-runner-rtk-linux-x64` |
203
+
204
+ Do not install platform packages directly. They contain native executables and export only package
205
+ metadata. RMUX is dual-licensed under MIT or Apache-2.0. RTK v0.45.0 is licensed under Apache-2.0.
206
+
207
+ ## Public API
208
+
209
+ ```ts
210
+ import {
211
+ createRunnerDependencies,
212
+ DEFAULT_BG_THRESHOLD_MS,
213
+ DEFAULT_LOG_MAX_BYTES,
214
+ DEFAULT_LOG_TTL_MS,
215
+ RmuxBackend,
216
+ rtkPackageForTarget,
217
+ } from '@agimon-ai/doompi-runner';
218
+ ```
219
+
220
+ Declared subpaths expose process supervision, configuration, tools, response envelopes, and TUI
221
+ integration for host authors.
222
+
223
+ ## Development
224
+
225
+ ```bash
226
+ pnpm build
227
+ pnpm typecheck
228
+ pnpm test
229
+ pnpm lint
230
+ ```
231
+
232
+ Maintained by [Agimon](https://agimon.ai/about).
44
233
 
45
234
  ## License
46
235
 
47
236
  MIT
237
+
238
+ ## Extension lifecycle and source layout
239
+
240
+ `extensions/pi.ts` assembles the Runner UI runtime and native Bash tool declaration. `onStart` resolves the lazy service graph, subscribes to registry updates, and starts retention/status polling. `onStop` awaits initialization and pending operations, stops owned processes, closes PTYs and the registry, and releases telemetry. Partial startup closes an already opened registry.
241
+
242
+ The Pi UI orchestration is in `tui/runnerRuntime.ts`; process and filesystem implementations live in `services/<name>/`. Controllers implement HTTP, CLI, and server command handling. `extensions/server.ts` composes the per-session supervision activity with those controllers. Model state, constants, and schemas have dedicated roots. The browser declaration lives directly in `extensions/web.ts`.
243
+
244
+ Public capabilities use flat kebab-case subpaths such as `runner-dependencies`, `rmux-backend`, `runner-paths`, `bash-tool`, and `response-envelope`. Flat `src/exports/` files only forward these capabilities. Executable `bin/*` paths remain unchanged. The former nested service aliases and container entry are removed.
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./services/ansiScrub/index.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 "./services/ansiScrub/index.cjs";
2
+ export { collapseCarriageReturns, scrubTerminalOutput, scrubTerminalOutputToPlainText, stripAnsi, stripAnsiKeepingColour };
@@ -0,0 +1,2 @@
1
+ import { collapseCarriageReturns, scrubTerminalOutput, scrubTerminalOutputToPlainText, stripAnsi, stripAnsiKeepingColour } from "./services/ansiScrub/index.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"./services/ansiScrub/index.mjs";export{e as collapseCarriageReturns,t as scrubTerminalOutput,n as scrubTerminalOutputToPlainText,r as stripAnsi,i as stripAnsiKeepingColour};
@@ -0,0 +1 @@
1
+ Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("./schemas/apiContracts.cjs");exports.apiContracts=e.apiContracts,exports.default=e.apiContracts;
@@ -0,0 +1,2 @@
1
+ import { apiContracts } from "./schemas/apiContracts.cjs";
2
+ export { apiContracts, apiContracts as default };
@@ -0,0 +1,2 @@
1
+ import { apiContracts } from "./schemas/apiContracts.mjs";
2
+ export { apiContracts, apiContracts as default };
@@ -0,0 +1 @@
1
+ import{apiContracts as e}from"./schemas/apiContracts.mjs";export{e as apiContracts,e as default};
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./tui/bashRender.cjs");exports.abbreviateHome=e.abbreviateHome,exports.collapseCommand=e.collapseCommand,exports.formatBashCommand=e.formatBashCommand,exports.formatBashFlags=e.formatBashFlags,exports.formatResultSummary=e.formatResultSummary,exports.renderBashCall=e.renderBashCall,exports.renderBashResult=e.renderBashResult,exports.truncateMiddle=e.truncateMiddle;
@@ -0,0 +1,2 @@
1
+ import { BashResultDetails, Highlighter, abbreviateHome, collapseCommand, formatBashCommand, formatBashFlags, formatResultSummary, renderBashCall, renderBashResult, truncateMiddle } from "./tui/bashRender.cjs";
2
+ export { BashResultDetails, Highlighter, abbreviateHome, collapseCommand, formatBashCommand, formatBashFlags, formatResultSummary, renderBashCall, renderBashResult, truncateMiddle };
@@ -0,0 +1,2 @@
1
+ import { BashResultDetails, Highlighter, abbreviateHome, collapseCommand, formatBashCommand, formatBashFlags, formatResultSummary, renderBashCall, renderBashResult, truncateMiddle } from "./tui/bashRender.mjs";
2
+ export { BashResultDetails, Highlighter, abbreviateHome, collapseCommand, formatBashCommand, formatBashFlags, formatResultSummary, renderBashCall, renderBashResult, truncateMiddle };
@@ -0,0 +1 @@
1
+ import{abbreviateHome as e,collapseCommand as t,formatBashCommand as n,formatBashFlags as r,formatResultSummary as i,renderBashCall as a,renderBashResult as o,truncateMiddle as s}from"./tui/bashRender.mjs";export{e as abbreviateHome,t as collapseCommand,n as formatBashCommand,r as formatBashFlags,i as formatResultSummary,a as renderBashCall,o as renderBashResult,s as truncateMiddle};
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./services/bashRunService/index.cjs");exports.BashRunService=e.BashRunService;
@@ -0,0 +1,3 @@
1
+ import { BashRunRequest, BashRunResult, CompletedRun, FailedRun, IBashRunService, PromotedRun } from "./types/bashRunService.cjs";
2
+ import { BashRunService } from "./services/bashRunService/index.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 "./types/bashRunService.mjs";
2
+ import { BashRunService } from "./services/bashRunService/index.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"./services/bashRunService/index.mjs";export{e as BashRunService};
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./constants/bashTool.cjs"),t=require("./schemas/bashTool.cjs");exports.BASH_TOOL_LABEL=e.BASH_TOOL_LABEL,exports.BASH_TOOL_NAME=e.BASH_TOOL_NAME,exports.BashParamsSchema=t.BashParamsSchema;
@@ -0,0 +1,3 @@
1
+ import { BashParams, BashParamsSchema } from "./schemas/bashTool.cjs";
2
+ import { BASH_TOOL_LABEL, BASH_TOOL_NAME } from "./constants/bashTool.cjs";
3
+ export { BASH_TOOL_LABEL, BASH_TOOL_NAME, BashParams, BashParamsSchema };
@@ -0,0 +1,3 @@
1
+ import { BashParams, BashParamsSchema } from "./schemas/bashTool.mjs";
2
+ import { BASH_TOOL_LABEL, BASH_TOOL_NAME } from "./constants/bashTool.mjs";
3
+ export { BASH_TOOL_LABEL, BASH_TOOL_NAME, BashParams, BashParamsSchema };
@@ -0,0 +1 @@
1
+ import{BASH_TOOL_LABEL as e,BASH_TOOL_NAME as t}from"./constants/bashTool.mjs";import{BashParamsSchema as n}from"./schemas/bashTool.mjs";export{e as BASH_TOOL_LABEL,t as BASH_TOOL_NAME,n as BashParamsSchema};
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./services/runnerResult/index.cjs"),t=require("./tools/bashTool.cjs");exports.BASH_PROMPT_SNIPPET=t.BASH_PROMPT_SNIPPET,exports.bashPromptGuidelines=t.bashPromptGuidelines,exports.createBashTool=t.createBashTool,exports.formatRunResult=e.formatRunnerResult;
@@ -0,0 +1,4 @@
1
+ import { formatRunnerResult } from "./services/runnerResult/index.cjs";
2
+ import { BashToolDependencies, BashToolRenderers } from "./types/bashTool.cjs";
3
+ import { BASH_PROMPT_SNIPPET, bashPromptGuidelines, createBashTool } from "./tools/bashTool.cjs";
4
+ export { BASH_PROMPT_SNIPPET, type BashToolDependencies, type BashToolRenderers, bashPromptGuidelines, createBashTool, formatRunnerResult as formatRunResult };
@@ -0,0 +1,4 @@
1
+ import { formatRunnerResult } from "./services/runnerResult/index.mjs";
2
+ import { BashToolDependencies, BashToolRenderers } from "./types/bashTool.mjs";
3
+ import { BASH_PROMPT_SNIPPET, bashPromptGuidelines, createBashTool } from "./tools/bashTool.mjs";
4
+ export { BASH_PROMPT_SNIPPET, type BashToolDependencies, type BashToolRenderers, bashPromptGuidelines, createBashTool, formatRunnerResult as formatRunResult };
@@ -0,0 +1 @@
1
+ import{formatRunnerResult as e}from"./services/runnerResult/index.mjs";import{BASH_PROMPT_SNIPPET as t,bashPromptGuidelines as n,createBashTool as r}from"./tools/bashTool.mjs";export{t as BASH_PROMPT_SNIPPET,n as bashPromptGuidelines,r as createBashTool,e as formatRunResult};
package/dist/bin/cli.cjs CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../types.cjs"),t=require("../container/index.cjs"),n=require("../cli/cliApp.cjs");let r=require("node:url"),i=require("@agimon-ai/doompi-telemetry");async function a(){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 o(r=process.argv.slice(2)){let o=Date.now(),s=(0,i.createDoomTelemetry)({serviceName:`doom-runner-cli`,packageName:`@agimon-ai/doompi-runner`,env:process.env,enableLogs:!0,enableTraces:!0}),c=t.createRunnerContainer(),l=c.get(e.TYPES.RunnerRegistry),u=0,d=0;try{let t=await n.runCli(r,{registry:l,launcher:c.get(e.TYPES.Launcher),rmuxBackend:c.get(e.TYPES.RmuxBackend),logReader:c.get(e.TYPES.LogReader),env:process.env,stdout:e=>{let t=e.endsWith(`
2
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../services/runnerDependencies/index.cjs"),t=require("../controllers/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=Object.freeze({...process.env}),s=(0,r.createDoomTelemetry)({serviceName:`doom-runner-cli`,packageName:`@agimon-ai/doompi-runner`,env:o,enableLogs:!0,enableTraces:!0}),c=e.createRunnerDependencies({environment:o}),l=c.runnerRegistry,u=0,d=0;try{let e=await t.runCli(n,{registry:l,launcher:c.launcher,rmuxBackend:c.rmuxBackend,logReader:c.logReader,env:o,stdout:e=>{let t=e.endsWith(`
3
3
  `)?e:`${e}\n`;u+=Buffer.byteLength(t,`utf8`),process.stdout.write(t)},stderr:e=>{let t=e.endsWith(`
4
- `)?e:`${e}\n`;d+=Buffer.byteLength(t,`utf8`),process.stderr.write(t)},readStdin:a});return await s.recordEvent(`doom_runner.cli_finished`,{outcome:t===0?`completed`:`failed`,"runner.exit_code":t,duration_ms:Date.now()-o,"runner.argument_count":r.length,"runner.stdout_bytes":u,"runner.stderr_bytes":d}),t}catch(e){throw await s.recordError(`doom_runner.cli_failed`,e,{duration_ms:Date.now()-o,"runner.argument_count":r.length,"runner.stdout_bytes":u,"runner.stderr_bytes":d}),e}finally{l.close(),await s.shutdown()}}process.argv[1]&&require("url").pathToFileURL(__filename).href===(0,r.pathToFileURL)(process.argv[1]).href&&o().then(e=>{process.exitCode=e},e=>{process.stderr.write(`${e instanceof Error?e.message:String(e)}\n`),process.exitCode=1}),exports.main=o;
4
+ `)?e:`${e}\n`;d+=Buffer.byteLength(t,`utf8`),process.stderr.write(t)},readStdin:i});return await s.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":u,"runner.stderr_bytes":d}),e}catch(e){throw await s.recordError(`doom_runner.cli_failed`,e,{duration_ms:Date.now()-a,"runner.argument_count":n.length,"runner.stdout_bytes":u,"runner.stderr_bytes":d}),e}finally{l.close(),await s.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
5
  //# sourceMappingURL=cli.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"cli.cjs","names":["createDoomTelemetry","createRunnerContainer","TYPES","runCli","pathToFileURL"],"sources":["../../src/bin/cli.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { createDoomTelemetry } from '@agimon-ai/doompi-telemetry';\nimport { createRunnerContainer } from '../container/index.ts';\nimport { pathToFileURL } from 'node:url';\nimport type { ILauncher } from '../services/Launcher/index.ts';\nimport type { ILogReader } from '../services/LogReader/index.ts';\nimport type { IRunnerRegistry } from '../services/RunnerRegistry/index.ts';\nimport type { IRmuxBackend } from '../services/RmuxBackend/index.ts';\nimport { TYPES } from '../types.ts';\nimport { runCli } from '../cli/cliApp.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.get<IRunnerRegistry>(TYPES.RunnerRegistry);\n let stdoutBytes = 0;\n let stderrBytes = 0;\n try {\n const exitCode = await runCli(argv, {\n registry,\n launcher: container.get<ILauncher>(TYPES.Launcher),\n rmuxBackend: container.get<IRmuxBackend>(TYPES.RmuxBackend),\n logReader: container.get<ILogReader>(TYPES.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":";yOAYA,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,IAAqBC,EAAAA,MAAM,cAAc,EAChE,EAAc,EACd,EAAc,EAClB,GAAI,CACF,IAAM,EAAW,MAAMC,EAAAA,OAAO,EAAM,CAClC,WACA,SAAU,EAAU,IAAeD,EAAAA,MAAM,QAAQ,EACjD,YAAa,EAAU,IAAkBA,EAAAA,MAAM,WAAW,EAC1D,UAAW,EAAU,IAAgBA,EAAAA,MAAM,SAAS,EACpD,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,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"}
1
+ {"version":3,"file":"cli.cjs","names":["createDoomTelemetry","createRunnerDependencies","runCli","pathToFileURL"],"sources":["../../src/bin/cli.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { pathToFileURL } from 'node:url';\n\nimport { createDoomTelemetry } from '@agimon-ai/doompi-telemetry';\n\nimport { runCli } from '../controllers/cliApp';\nimport { createRunnerDependencies } from '../services/runnerDependencies';\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 environment = Object.freeze({ ...process.env });\n const telemetry = createDoomTelemetry({\n serviceName: 'doom-runner-cli',\n packageName: '@agimon-ai/doompi-runner',\n env: environment,\n enableLogs: true,\n enableTraces: true,\n });\n const container = createRunnerDependencies({ environment });\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: environment,\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":";yOASA,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,EAAc,OAAO,OAAO,CAAE,GAAG,QAAQ,GAAI,CAAC,EAC9C,GAAA,EAAYA,EAAAA,oBAAAA,CAAoB,CACpC,YAAa,kBACb,YAAa,2BACb,IAAK,EACL,WAAY,GACZ,aAAc,EAChB,CAAC,EACK,EAAYC,EAAAA,yBAAyB,CAAE,aAAY,CAAC,EACpD,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,EACL,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"}
@@ -1,5 +1,4 @@
1
1
  //#region src/bin/cli.d.ts
2
- declare function main(argv?: readonly string[]): Promise<number>;
2
+ export declare function main(argv?: readonly string[]): Promise<number>;
3
3
  //#endregion
4
- export { main };
5
4
  //# sourceMappingURL=cli.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.cts","names":[],"sources":["../../src/bin/cli.ts"],"mappings":";iBAkBsB,KAAK,2BAAkD"}
1
+ {"version":3,"file":"cli.d.cts","names":[],"sources":["../../src/bin/cli.ts"],"mappings":";wBAesB,KAAK,2BAAkD"}
@@ -1,5 +1,4 @@
1
1
  //#region src/bin/cli.d.ts
2
- declare function main(argv?: readonly string[]): Promise<number>;
2
+ export declare function main(argv?: readonly string[]): Promise<number>;
3
3
  //#endregion
4
- export { main };
5
4
  //# sourceMappingURL=cli.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.mts","names":[],"sources":["../../src/bin/cli.ts"],"mappings":";iBAkBsB,KAAK,2BAAkD"}
1
+ {"version":3,"file":"cli.d.mts","names":[],"sources":["../../src/bin/cli.ts"],"mappings":";wBAesB,KAAK,2BAAkD"}
package/dist/bin/cli.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import{TYPES as e}from"../types.mjs";import{createRunnerContainer as t}from"../container/index.mjs";import{runCli as n}from"../cli/cliApp.mjs";import{pathToFileURL as r}from"node:url";import{createDoomTelemetry as i}from"@agimon-ai/doompi-telemetry";async function a(){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 o(r=process.argv.slice(2)){let o=Date.now(),s=i({serviceName:`doom-runner-cli`,packageName:`@agimon-ai/doompi-runner`,env:process.env,enableLogs:!0,enableTraces:!0}),c=t(),l=c.get(e.RunnerRegistry),u=0,d=0;try{let t=await n(r,{registry:l,launcher:c.get(e.Launcher),rmuxBackend:c.get(e.RmuxBackend),logReader:c.get(e.LogReader),env:process.env,stdout:e=>{let t=e.endsWith(`
2
+ import{createRunnerDependencies as e}from"../services/runnerDependencies/index.mjs";import{runCli as t}from"../controllers/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=Object.freeze({...process.env}),s=r({serviceName:`doom-runner-cli`,packageName:`@agimon-ai/doompi-runner`,env:o,enableLogs:!0,enableTraces:!0}),c=e({environment:o}),l=c.runnerRegistry,u=0,d=0;try{let e=await t(n,{registry:l,launcher:c.launcher,rmuxBackend:c.rmuxBackend,logReader:c.logReader,env:o,stdout:e=>{let t=e.endsWith(`
3
3
  `)?e:`${e}\n`;u+=Buffer.byteLength(t,`utf8`),process.stdout.write(t)},stderr:e=>{let t=e.endsWith(`
4
- `)?e:`${e}\n`;d+=Buffer.byteLength(t,`utf8`),process.stderr.write(t)},readStdin:a});return await s.recordEvent(`doom_runner.cli_finished`,{outcome:t===0?`completed`:`failed`,"runner.exit_code":t,duration_ms:Date.now()-o,"runner.argument_count":r.length,"runner.stdout_bytes":u,"runner.stderr_bytes":d}),t}catch(e){throw await s.recordError(`doom_runner.cli_failed`,e,{duration_ms:Date.now()-o,"runner.argument_count":r.length,"runner.stdout_bytes":u,"runner.stderr_bytes":d}),e}finally{l.close(),await s.shutdown()}}process.argv[1]&&import.meta.url===r(process.argv[1]).href&&o().then(e=>{process.exitCode=e},e=>{process.stderr.write(`${e instanceof Error?e.message:String(e)}\n`),process.exitCode=1});export{o as main};
4
+ `)?e:`${e}\n`;d+=Buffer.byteLength(t,`utf8`),process.stderr.write(t)},readStdin:i});return await s.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":u,"runner.stderr_bytes":d}),e}catch(e){throw await s.recordError(`doom_runner.cli_failed`,e,{duration_ms:Date.now()-a,"runner.argument_count":n.length,"runner.stdout_bytes":u,"runner.stderr_bytes":d}),e}finally{l.close(),await s.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
5
  //# sourceMappingURL=cli.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"cli.mjs","names":[],"sources":["../../src/bin/cli.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { createDoomTelemetry } from '@agimon-ai/doompi-telemetry';\nimport { createRunnerContainer } from '../container/index.ts';\nimport { pathToFileURL } from 'node:url';\nimport type { ILauncher } from '../services/Launcher/index.ts';\nimport type { ILogReader } from '../services/LogReader/index.ts';\nimport type { IRunnerRegistry } from '../services/RunnerRegistry/index.ts';\nimport type { IRmuxBackend } from '../services/RmuxBackend/index.ts';\nimport { TYPES } from '../types.ts';\nimport { runCli } from '../cli/cliApp.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.get<IRunnerRegistry>(TYPES.RunnerRegistry);\n let stdoutBytes = 0;\n let stderrBytes = 0;\n try {\n const exitCode = await runCli(argv, {\n registry,\n launcher: container.get<ILauncher>(TYPES.Launcher),\n rmuxBackend: container.get<IRmuxBackend>(TYPES.RmuxBackend),\n logReader: container.get<ILogReader>(TYPES.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":";0PAYA,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,IAAqB,EAAM,cAAc,EAChE,EAAc,EACd,EAAc,EAClB,GAAI,CACF,IAAM,EAAW,MAAM,EAAO,EAAM,CAClC,WACA,SAAU,EAAU,IAAe,EAAM,QAAQ,EACjD,YAAa,EAAU,IAAkB,EAAM,WAAW,EAC1D,UAAW,EAAU,IAAgB,EAAM,SAAS,EACpD,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"}
1
+ {"version":3,"file":"cli.mjs","names":[],"sources":["../../src/bin/cli.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { pathToFileURL } from 'node:url';\n\nimport { createDoomTelemetry } from '@agimon-ai/doompi-telemetry';\n\nimport { runCli } from '../controllers/cliApp';\nimport { createRunnerDependencies } from '../services/runnerDependencies';\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 environment = Object.freeze({ ...process.env });\n const telemetry = createDoomTelemetry({\n serviceName: 'doom-runner-cli',\n packageName: '@agimon-ai/doompi-runner',\n env: environment,\n enableLogs: true,\n enableTraces: true,\n });\n const container = createRunnerDependencies({ environment });\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: environment,\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":";kPASA,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,EAAc,OAAO,OAAO,CAAE,GAAG,QAAQ,GAAI,CAAC,EAC9C,EAAY,EAAoB,CACpC,YAAa,kBACb,YAAa,2BACb,IAAK,EACL,WAAY,GACZ,aAAc,EAChB,CAAC,EACK,EAAY,EAAyB,CAAE,aAAY,CAAC,EACpD,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,EACL,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"}
@@ -1,2 +1,2 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../_virtual/_rolldown/runtime.cjs"),t=require("../services/AnsiScrub/ansiScrub.cjs");require("../services/AnsiScrub/index.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;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../_virtual/_rolldown/runtime.cjs"),t=require("../services/ansiScrub/index.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}),[l,u,d,f,p]=e;try{if(!l||!u||!d||!f)throw Error(`logSink requires log, rotated log, max bytes, and completion paths`)}catch(e){throw await a.recordError(`doom_runner.file_sink_failed`,e,{duration_ms:Date.now()-r}),await a.shutdown(),e}let m,h;try{m=n.default.openSync(l,`a`),h=n.default.statSync(l).size}catch(e){throw await a.recordError(`doom_runner.file_sink_failed`,e,{duration_ms:Date.now()-r}),await a.shutdown(),e}let g=0,_=Number.parseInt(d,10),v=p===void 0||p===``?void 0:o(p),y=v===void 0?0:s(p);try{process.stdin.setEncoding(`utf8`);for await(let e of process.stdin){let r=String(e);if(v!==void 0){let e=Buffer.from(r,`utf8`);y+e.byteLength>_&&(n.default.ftruncateSync(v,0),y=0),n.default.writeSync(v,e),y+=e.byteLength}let i=t.scrubTerminalOutput(r);if(!i)continue;let a=Buffer.from(i,`utf8`);n.default.writeSync(m,a),h+=a.byteLength,g+=1}return n.default.closeSync(m),v!==void 0&&n.default.closeSync(v),c(f),await a.recordEvent(`doom_runner.file_sink_finished`,{outcome:`completed`,"runner.chunk_count":g,"runner.bytes_written":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){return n.default.openSync(e,`w`)}function s(e){try{return n.default.statSync(e).size}catch{return 0}}function c(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
2
  //# sourceMappingURL=logSink.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"logSink.cjs","names":["createDoomTelemetry","fs","scrubTerminalOutput","pathToFileURL"],"sources":["../../src/bin/logSink.ts"],"sourcesContent":["import { createDoomTelemetry } from '@agimon-ai/doompi-telemetry';\nimport fs from 'node:fs';\nimport { pathToFileURL } from 'node:url';\nimport { scrubTerminalOutput } from '../services/AnsiScrub/index.ts';\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":"iUAKA,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"}
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';\n\nimport { createDoomTelemetry } from '@agimon-ai/doompi-telemetry';\n\nimport { scrubTerminalOutput } from '../services/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, rawPath] = argv;\n try {\n // Keep the legacy argument shape for the published executable subpath. The\n // scrubbed log is append-only, so the former rotation path is unused; the\n // ceiling now bounds the raw copy, which only interactive runs ask for.\n if (!logPath || !rotatedPath || !maxBytesRaw || !donePath) {\n throw new Error('logSink requires log, rotated log, max bytes, and completion paths');\n }\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 // The pane's bytes before anything is taken out of them. Scrubbing exists so\n // the log stays worth grepping, and it is exactly what makes the log useless\n // to a terminal, so an attached view needs its own faithful copy.\n const rawCeiling = Number.parseInt(maxBytesRaw, 10);\n const raw = rawPath === undefined || rawPath === '' ? undefined : openRaw(rawPath);\n let rawWritten = raw === undefined ? 0 : rawSize(rawPath as string);\n try {\n process.stdin.setEncoding('utf8');\n for await (const chunk of process.stdin) {\n const source = String(chunk);\n if (raw !== undefined) {\n const rawBytes = Buffer.from(source, 'utf8');\n // A terminal that scrolls all day must not fill the disk. Past the\n // ceiling the copy starts over: a reader attaching later wants the\n // recent screen, and no part of this is the record of the run.\n if (rawWritten + rawBytes.byteLength > rawCeiling) {\n fs.ftruncateSync(raw, 0);\n rawWritten = 0;\n }\n fs.writeSync(raw, rawBytes);\n rawWritten += rawBytes.byteLength;\n }\n const text = scrubTerminalOutput(source);\n if (!text) continue;\n const bytes = Buffer.from(text, 'utf8');\n fs.writeSync(handle, bytes);\n written += bytes.byteLength;\n chunks += 1;\n }\n fs.closeSync(handle);\n if (raw !== undefined) fs.closeSync(raw);\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 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\n/** Truncating rather than appending: a stale pane from a previous run is not this one's. */\nfunction openRaw(target: string): number {\n return fs.openSync(target, 'w');\n}\n\nfunction rawSize(target: string): number {\n try {\n return fs.statSync(target).size;\n } catch {\n return 0;\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":"kRAOA,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,EAAU,GAAW,EAC/D,GAAI,CAIF,GAAI,CAAC,GAAW,CAAC,GAAe,CAAC,GAAe,CAAC,EAC/C,MAAU,MAAM,oEAAoE,CAExF,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,EAIP,EAAa,OAAO,SAAS,EAAa,EAAE,EAC5C,EAAM,IAAY,IAAA,IAAa,IAAY,GAAK,IAAA,GAAY,EAAQ,CAAO,EAC7E,EAAa,IAAQ,IAAA,GAAY,EAAI,EAAQ,CAAiB,EAClE,GAAI,CACF,QAAQ,MAAM,YAAY,MAAM,EAChC,UAAW,IAAM,KAAS,QAAQ,MAAO,CACvC,IAAM,EAAS,OAAO,CAAK,EAC3B,GAAI,IAAQ,IAAA,GAAW,CACrB,IAAM,EAAW,OAAO,KAAK,EAAQ,MAAM,EAIvC,EAAa,EAAS,WAAa,IACrC,EAAA,QAAG,cAAc,EAAK,CAAC,EACvB,EAAa,GAEf,EAAA,QAAG,UAAU,EAAK,CAAQ,EAC1B,GAAc,EAAS,UACzB,CACA,IAAM,EAAOC,EAAAA,oBAAoB,CAAM,EACvC,GAAI,CAAC,EAAM,SACX,IAAM,EAAQ,OAAO,KAAK,EAAM,MAAM,EACtC,EAAA,QAAG,UAAU,EAAQ,CAAK,EAC1B,GAAW,EAAM,WACjB,GAAU,CACZ,CAUA,OATA,EAAA,QAAG,UAAU,CAAM,EACf,IAAQ,IAAA,IAAW,EAAA,QAAG,UAAU,CAAG,EACvC,EAAU,CAAQ,EAClB,MAAM,EAAU,YAAY,iCAAkC,CAC5D,QAAS,YACT,qBAAsB,EACtB,uBAAwB,EACxB,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,CAGA,SAAS,EAAQ,EAAwB,CACvC,OAAOD,EAAAA,QAAG,SAAS,EAAQ,GAAG,CAChC,CAEA,SAAS,EAAQ,EAAwB,CACvC,GAAI,CACF,OAAOA,EAAAA,QAAG,SAAS,CAAM,CAAC,CAAC,IAC7B,MAAQ,CACN,MAAO,EACT,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"}
@@ -1,5 +1,4 @@
1
1
  //#region src/bin/logSink.d.ts
2
- declare function main(argv?: readonly string[]): Promise<number>;
2
+ export declare function main(argv?: readonly string[]): Promise<number>;
3
3
  //#endregion
4
- export { main };
5
4
  //# sourceMappingURL=logSink.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"logSink.d.cts","names":[],"sources":["../../src/bin/logSink.ts"],"mappings":";iBAKsB,KAAK,2BAAkD"}
1
+ {"version":3,"file":"logSink.d.cts","names":[],"sources":["../../src/bin/logSink.ts"],"mappings":";wBAOsB,KAAK,2BAAkD"}
@@ -1,5 +1,4 @@
1
1
  //#region src/bin/logSink.d.ts
2
- declare function main(argv?: readonly string[]): Promise<number>;
2
+ export declare function main(argv?: readonly string[]): Promise<number>;
3
3
  //#endregion
4
- export { main };
5
4
  //# sourceMappingURL=logSink.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"logSink.d.mts","names":[],"sources":["../../src/bin/logSink.ts"],"mappings":";iBAKsB,KAAK,2BAAkD"}
1
+ {"version":3,"file":"logSink.d.mts","names":[],"sources":["../../src/bin/logSink.ts"],"mappings":";wBAOsB,KAAK,2BAAkD"}
@@ -1,2 +1,2 @@
1
- import{scrubTerminalOutput as e}from"../services/AnsiScrub/ansiScrub.mjs";import"../services/AnsiScrub/index.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};
1
+ import{scrubTerminalOutput as e}from"../services/ansiScrub/index.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(),c=r({serviceName:`doom-runner-log-sink`,packageName:`@agimon-ai/doompi-runner`,env:process.env,enableLogs:!0,enableTraces:!0}),[l,u,d,f,p]=n;try{if(!l||!u||!d||!f)throw Error(`logSink requires log, rotated log, max bytes, and completion paths`)}catch(e){throw await c.recordError(`doom_runner.file_sink_failed`,e,{duration_ms:Date.now()-i}),await c.shutdown(),e}let m,h;try{m=t.openSync(l,`a`),h=t.statSync(l).size}catch(e){throw await c.recordError(`doom_runner.file_sink_failed`,e,{duration_ms:Date.now()-i}),await c.shutdown(),e}let g=0,_=Number.parseInt(d,10),v=p===void 0||p===``?void 0:a(p),y=v===void 0?0:o(p);try{process.stdin.setEncoding(`utf8`);for await(let n of process.stdin){let r=String(n);if(v!==void 0){let e=Buffer.from(r,`utf8`);y+e.byteLength>_&&(t.ftruncateSync(v,0),y=0),t.writeSync(v,e),y+=e.byteLength}let i=e(r);if(!i)continue;let a=Buffer.from(i,`utf8`);t.writeSync(m,a),h+=a.byteLength,g+=1}return t.closeSync(m),v!==void 0&&t.closeSync(v),s(f),await c.recordEvent(`doom_runner.file_sink_finished`,{outcome:`completed`,"runner.chunk_count":g,"runner.bytes_written":h,duration_ms:Date.now()-i}),0}catch(e){throw await c.recordError(`doom_runner.file_sink_failed`,e,{duration_ms:Date.now()-i}),e}finally{await c.shutdown()}}function a(e){return t.openSync(e,`w`)}function o(e){try{return t.statSync(e).size}catch{return 0}}function s(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
2
  //# sourceMappingURL=logSink.mjs.map