@agimon-ai/po-runner 0.0.0-alpha.2 → 0.0.0-alpha.21

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 (238) hide show
  1. package/LICENSE +149 -21
  2. package/README.md +17 -17
  3. package/dist/ansiScrub.mjs +1 -2
  4. package/dist/apiContracts.cjs +1 -1
  5. package/dist/apiContracts.cjs.map +1 -1
  6. package/dist/apiContracts.mjs +1 -1
  7. package/dist/apiContracts.mjs.map +1 -1
  8. package/dist/{bashResult-bIVSzoj-.mjs → bashResult-BqDa7sbC.mjs} +10 -9
  9. package/dist/bashResult-BqDa7sbC.mjs.map +1 -0
  10. package/dist/{bashResult-DNgtahGR.cjs → bashResult-C2iKhHpD.cjs} +10 -9
  11. package/dist/bashResult-C2iKhHpD.cjs.map +1 -0
  12. package/dist/{bashRunService-CJ02XaAq.mjs → bashRunService-Cl3pYccr.mjs} +2 -2
  13. package/dist/bashRunService-Cl3pYccr.mjs.map +1 -0
  14. package/dist/{bashRunService-DyqxOSlx.cjs → bashRunService-DjOH5kye.cjs} +2 -2
  15. package/dist/bashRunService-DjOH5kye.cjs.map +1 -0
  16. package/dist/bashRunService.cjs +1 -1
  17. package/dist/bashRunService.d.mts +3 -3
  18. package/dist/bashRunService.mjs +1 -2
  19. package/dist/bashSchema.cjs +1 -1
  20. package/dist/bashSchema.mjs +1 -2
  21. package/dist/{bashTool-C-k7fmyh.mjs → bashTool-BvC3YOgG.mjs} +2 -2
  22. package/dist/{bashTool-C-k7fmyh.mjs.map → bashTool-BvC3YOgG.mjs.map} +1 -1
  23. package/dist/{bashTool-CdgtqVFD.cjs → bashTool-euL6zMDl.cjs} +2 -2
  24. package/dist/{bashTool-CdgtqVFD.cjs.map → bashTool-euL6zMDl.cjs.map} +1 -1
  25. package/dist/bashTool.cjs +3 -3
  26. package/dist/bashTool.d.mts +1 -1
  27. package/dist/bashTool.mjs +3 -3
  28. package/dist/bin/cli.cjs +6 -6
  29. package/dist/bin/cli.cjs.map +1 -1
  30. package/dist/bin/cli.mjs +7 -7
  31. package/dist/bin/cli.mjs.map +1 -1
  32. package/dist/bin/logSink.cjs +6 -6
  33. package/dist/bin/logSink.cjs.map +1 -1
  34. package/dist/bin/logSink.mjs +7 -7
  35. package/dist/bin/logSink.mjs.map +1 -1
  36. package/dist/bin/runnerHost.cjs +4 -4
  37. package/dist/bin/runnerHost.cjs.map +1 -1
  38. package/dist/bin/runnerHost.mjs +5 -5
  39. package/dist/bin/runnerHost.mjs.map +1 -1
  40. package/dist/{cliApp-Dj9nwaOv.cjs → cliApp-T8Fx_-1j.cjs} +6 -6
  41. package/dist/cliApp-T8Fx_-1j.cjs.map +1 -0
  42. package/dist/{cliApp-v8Z3rMCi.mjs → cliApp-q97eVh4E.mjs} +6 -6
  43. package/dist/cliApp-q97eVh4E.mjs.map +1 -0
  44. package/dist/cliApp.cjs +1 -1
  45. package/dist/cliApp.d.mts +1 -1
  46. package/dist/cliApp.mjs +1 -2
  47. package/dist/clock.mjs +1 -2
  48. package/dist/{compaction-4QSUsBxq.cjs → compaction-Cduebib_.cjs} +3 -3
  49. package/dist/compaction-Cduebib_.cjs.map +1 -0
  50. package/dist/{compaction-DCw80VZj.mjs → compaction-nNlE6e5I.mjs} +3 -3
  51. package/dist/compaction-nNlE6e5I.mjs.map +1 -0
  52. package/dist/compaction.cjs +1 -1
  53. package/dist/compaction.d.mts +1 -1
  54. package/dist/compaction.mjs +1 -2
  55. package/dist/config.cjs +1 -1
  56. package/dist/config.d.mts +1 -1
  57. package/dist/config.mjs +1 -2
  58. package/dist/extensions/mcp-ui.mjs.map +1 -1
  59. package/dist/extensions/mcp.cjs +8 -7
  60. package/dist/extensions/mcp.cjs.map +1 -1
  61. package/dist/extensions/mcp.d.mts +1 -1
  62. package/dist/extensions/mcp.mjs +7 -6
  63. package/dist/extensions/mcp.mjs.map +1 -1
  64. package/dist/extensions/native.mjs +1 -1
  65. package/dist/extensions/native.mjs.map +1 -1
  66. package/dist/extensions/server.cjs +233 -119
  67. package/dist/extensions/server.cjs.map +1 -1
  68. package/dist/extensions/server.d.mts +2 -2
  69. package/dist/extensions/server.d.mts.map +1 -1
  70. package/dist/extensions/server.mjs +233 -119
  71. package/dist/extensions/server.mjs.map +1 -1
  72. package/dist/extensions/web.mjs +88 -62
  73. package/dist/extensions/web.mjs.map +1 -1
  74. package/dist/{headless-BGYfIlNk.mjs → headless-DOlCixyf.mjs} +5 -5
  75. package/dist/headless-DOlCixyf.mjs.map +1 -0
  76. package/dist/{headless-CHUsBGhg.cjs → headless-Dko_yBiy.cjs} +5 -5
  77. package/dist/headless-Dko_yBiy.cjs.map +1 -0
  78. package/dist/{index-Dhi8asLH.d.mts → index--xF7DvsE.d.mts} +4 -4
  79. package/dist/{index-Dhi8asLH.d.mts.map → index--xF7DvsE.d.mts.map} +1 -1
  80. package/dist/{index-BZL7keVW.d.mts → index-BCCF1sGD.d.mts} +2 -2
  81. package/dist/{index-BZL7keVW.d.mts.map → index-BCCF1sGD.d.mts.map} +1 -1
  82. package/dist/{index-BwB_jTI9.d.mts → index-BzeXJk6V.d.mts} +5 -5
  83. package/dist/index-BzeXJk6V.d.mts.map +1 -0
  84. package/dist/{index-D9-IXax4.d.mts → index-C-IC35d9.d.mts} +2 -2
  85. package/dist/{index-D9-IXax4.d.mts.map → index-C-IC35d9.d.mts.map} +1 -1
  86. package/dist/{index-DBz0DxnL.d.mts → index-CzCF_OP9.d.mts} +3 -4
  87. package/dist/index-CzCF_OP9.d.mts.map +1 -0
  88. package/dist/index.cjs +5 -5
  89. package/dist/index.d.mts +5 -5
  90. package/dist/index.mjs +5 -5
  91. package/dist/{launcher-BDm6-DiQ.mjs → launcher-CCYsFBM9.mjs} +3 -3
  92. package/dist/{launcher-BDm6-DiQ.mjs.map → launcher-CCYsFBM9.mjs.map} +1 -1
  93. package/dist/{launcher-SlyE8R3b.cjs → launcher-ZgDdyXpq.cjs} +8 -2
  94. package/dist/{launcher-SlyE8R3b.cjs.map → launcher-ZgDdyXpq.cjs.map} +1 -1
  95. package/dist/launcher.cjs +1 -1
  96. package/dist/launcher.d.mts +1 -1
  97. package/dist/launcher.mjs +1 -2
  98. package/dist/{lifeline-BZaQA0rm.mjs → lifeline-Bm-bHIjS.mjs} +6 -6
  99. package/dist/lifeline-Bm-bHIjS.mjs.map +1 -0
  100. package/dist/{lifeline-BuV_erib.cjs → lifeline-m7laIzIP.cjs} +6 -6
  101. package/dist/lifeline-m7laIzIP.cjs.map +1 -0
  102. package/dist/lifeline.cjs +1 -1
  103. package/dist/lifeline.d.mts +1 -1
  104. package/dist/lifeline.mjs +1 -1
  105. package/dist/{logFile-CNvepZh0.cjs → logFile-CnPKtxPy.cjs} +2 -2
  106. package/dist/{logFile-CNvepZh0.cjs.map → logFile-CnPKtxPy.cjs.map} +1 -1
  107. package/dist/{logFile-KKPbkC-a.mjs → logFile-XcDHBwu1.mjs} +2 -2
  108. package/dist/{logFile-KKPbkC-a.mjs.map → logFile-XcDHBwu1.mjs.map} +1 -1
  109. package/dist/logFile.cjs +1 -1
  110. package/dist/logFile.d.mts +1 -1
  111. package/dist/logFile.mjs +1 -2
  112. package/dist/{logReader-B6J7L7Ua.cjs → logReader-DHCK2BEr.cjs} +4 -4
  113. package/dist/{logReader-B6J7L7Ua.cjs.map → logReader-DHCK2BEr.cjs.map} +1 -1
  114. package/dist/{logReader-UfbDbwQl.mjs → logReader-mq9uVurh.mjs} +4 -4
  115. package/dist/{logReader-UfbDbwQl.mjs.map → logReader-mq9uVurh.mjs.map} +1 -1
  116. package/dist/logReader.cjs +1 -1
  117. package/dist/logReader.mjs +1 -2
  118. package/dist/processControl.mjs +1 -2
  119. package/dist/{ptyHost-DlQtTB8F.mjs → ptyHost-CwbLLr90.mjs} +2 -2
  120. package/dist/{ptyHost-DlQtTB8F.mjs.map → ptyHost-CwbLLr90.mjs.map} +1 -1
  121. package/dist/{ptyHost-MI2Z6WTG.cjs → ptyHost-D35hNmtd.cjs} +2 -2
  122. package/dist/{ptyHost-MI2Z6WTG.cjs.map → ptyHost-D35hNmtd.cjs.map} +1 -1
  123. package/dist/ptyHost.cjs +1 -1
  124. package/dist/ptyHost.mjs +1 -2
  125. package/dist/{ptySpawner-DEi1KOnd.mjs → ptySpawner-C375NJnj.mjs} +2 -2
  126. package/dist/ptySpawner-C375NJnj.mjs.map +1 -0
  127. package/dist/{ptySpawner-ijw0g5_T.cjs → ptySpawner-C39IzbRo.cjs} +2 -2
  128. package/dist/ptySpawner-C39IzbRo.cjs.map +1 -0
  129. package/dist/ptySpawner.cjs +1 -1
  130. package/dist/ptySpawner.d.mts +1 -1
  131. package/dist/ptySpawner.mjs +1 -2
  132. package/dist/{reconcile-DMeNSxwn.mjs → reconcile-5cZ11jSD.cjs} +12 -42
  133. package/dist/reconcile-5cZ11jSD.cjs.map +1 -0
  134. package/dist/{reconcile-BugwYFbV.cjs → reconcile-wNYQJZF-.mjs} +2 -62
  135. package/dist/reconcile-wNYQJZF-.mjs.map +1 -0
  136. package/dist/reconcile.cjs +1 -2
  137. package/dist/reconcile.d.mts +2 -9
  138. package/dist/reconcile.d.mts.map +1 -1
  139. package/dist/reconcile.mjs +1 -2
  140. package/dist/responseEnvelope.cjs +2 -2
  141. package/dist/responseEnvelope.d.mts +3 -3
  142. package/dist/responseEnvelope.mjs +2 -2
  143. package/dist/{rmuxBackend-DlxgqRZ1.cjs → rmuxBackend-Dh0CYVAL.cjs} +5 -5
  144. package/dist/rmuxBackend-Dh0CYVAL.cjs.map +1 -0
  145. package/dist/{rmuxBackend-DfyQwJrc.mjs → rmuxBackend-rjrVTG6K.mjs} +4 -4
  146. package/dist/rmuxBackend-rjrVTG6K.mjs.map +1 -0
  147. package/dist/rmuxBackend.cjs +1 -1
  148. package/dist/rmuxBackend.d.mts +1 -1
  149. package/dist/rmuxBackend.mjs +1 -2
  150. package/dist/{rtkProcessor-Bc4L4o_8.cjs → rtkProcessor-DSGbM-Cm.cjs} +4 -4
  151. package/dist/rtkProcessor-DSGbM-Cm.cjs.map +1 -0
  152. package/dist/{rtkProcessor-B9KPdyzr.mjs → rtkProcessor-Iw9gP5Xp.mjs} +3 -3
  153. package/dist/rtkProcessor-Iw9gP5Xp.mjs.map +1 -0
  154. package/dist/rtkProcessor.cjs +1 -1
  155. package/dist/rtkProcessor.d.mts +1 -1
  156. package/dist/rtkProcessor.mjs +1 -1
  157. package/dist/{runnerConfig-D2tGq5ZM.cjs → runnerConfig-BoLMinlx.cjs} +11 -11
  158. package/dist/runnerConfig-BoLMinlx.cjs.map +1 -0
  159. package/dist/{runnerConfig-BjtulXBI.d.mts → runnerConfig-DuWL6TJx.d.mts} +10 -10
  160. package/dist/{runnerConfig-BjtulXBI.d.mts.map → runnerConfig-DuWL6TJx.d.mts.map} +1 -1
  161. package/dist/{runnerConfig-BQBlVAXn.mjs → runnerConfig-XXMq4VQA.mjs} +11 -11
  162. package/dist/runnerConfig-XXMq4VQA.mjs.map +1 -0
  163. package/dist/{runnerDependencies-DruByBGS.mjs → runnerDependencies-7h_cxOva.mjs} +17 -17
  164. package/dist/runnerDependencies-7h_cxOva.mjs.map +1 -0
  165. package/dist/{runnerDependencies-KMZigIxB.cjs → runnerDependencies-DSun3xO-.cjs} +17 -17
  166. package/dist/runnerDependencies-DSun3xO-.cjs.map +1 -0
  167. package/dist/runnerDependencies.cjs +1 -1
  168. package/dist/runnerDependencies.d.mts +1 -1
  169. package/dist/runnerDependencies.mjs +1 -2
  170. package/dist/runnerNamer.d.mts +1 -1
  171. package/dist/runnerNamer.mjs +1 -2
  172. package/dist/{runnerPaths-BTEuzxw0.cjs → runnerPaths-B41rMOY6.cjs} +20 -38
  173. package/dist/runnerPaths-B41rMOY6.cjs.map +1 -0
  174. package/dist/{runnerPaths-B_dAAeco.mjs → runnerPaths-Dibbvyx_.mjs} +20 -38
  175. package/dist/runnerPaths-Dibbvyx_.mjs.map +1 -0
  176. package/dist/runnerPaths.cjs +1 -1
  177. package/dist/runnerPaths.d.mts +5 -7
  178. package/dist/runnerPaths.d.mts.map +1 -1
  179. package/dist/runnerPaths.mjs +1 -2
  180. package/dist/{runnerRegistry-CeOHEjBv.mjs → runnerRegistry-BgaR5O86.mjs} +12 -11
  181. package/dist/runnerRegistry-BgaR5O86.mjs.map +1 -0
  182. package/dist/{runnerRegistry-CtJiD02R.d.mts → runnerRegistry-V-Ocaf4N.d.mts} +1 -3
  183. package/dist/{runnerRegistry-CtJiD02R.d.mts.map → runnerRegistry-V-Ocaf4N.d.mts.map} +1 -1
  184. package/dist/{runnerRegistry-BmkZTJHi.cjs → runnerRegistry-dQYlMSpQ.cjs} +23 -10
  185. package/dist/runnerRegistry-dQYlMSpQ.cjs.map +1 -0
  186. package/dist/runnerRegistry.cjs +1 -1
  187. package/dist/runnerRegistry.d.mts +2 -2
  188. package/dist/runnerRegistry.mjs +1 -2
  189. package/dist/services/lifeline/client.cjs +2 -2
  190. package/dist/services/lifeline/client.cjs.map +1 -1
  191. package/dist/services/lifeline/client.d.mts +1 -1
  192. package/dist/services/lifeline/client.mjs +2 -2
  193. package/dist/services/lifeline/client.mjs.map +1 -1
  194. package/dist/{session-Chsb_Nh2.mjs → session-BKYnH4R6.mjs} +2 -2
  195. package/dist/{session-Chsb_Nh2.mjs.map → session-BKYnH4R6.mjs.map} +1 -1
  196. package/dist/{session-BC43uEyG.cjs → session-BvqzhXZY.cjs} +2 -2
  197. package/dist/{session-BC43uEyG.cjs.map → session-BvqzhXZY.cjs.map} +1 -1
  198. package/dist/session.cjs +1 -1
  199. package/dist/session.mjs +1 -1
  200. package/dist/spawner.mjs +1 -2
  201. package/dist/{type-C31e1gla.d.mts → type-Do0YxwVQ.d.mts} +4 -4
  202. package/dist/{type-C31e1gla.d.mts.map → type-Do0YxwVQ.d.mts.map} +1 -1
  203. package/dist/{type-BXM03qSw.d.mts → type-DwMZoINK.d.mts} +8 -8
  204. package/dist/{type-BXM03qSw.d.mts.map → type-DwMZoINK.d.mts.map} +1 -1
  205. package/dist/types.d.mts +1 -1
  206. package/package.json +31 -34
  207. package/skills/{doom-runner → po-runner}/SKILL.md +15 -15
  208. package/src/prompts/po-use-runner/SKILL.md +11 -11
  209. package/dist/bashResult-DNgtahGR.cjs.map +0 -1
  210. package/dist/bashResult-bIVSzoj-.mjs.map +0 -1
  211. package/dist/bashRunService-CJ02XaAq.mjs.map +0 -1
  212. package/dist/bashRunService-DyqxOSlx.cjs.map +0 -1
  213. package/dist/cliApp-Dj9nwaOv.cjs.map +0 -1
  214. package/dist/cliApp-v8Z3rMCi.mjs.map +0 -1
  215. package/dist/compaction-4QSUsBxq.cjs.map +0 -1
  216. package/dist/compaction-DCw80VZj.mjs.map +0 -1
  217. package/dist/headless-BGYfIlNk.mjs.map +0 -1
  218. package/dist/headless-CHUsBGhg.cjs.map +0 -1
  219. package/dist/index-BwB_jTI9.d.mts.map +0 -1
  220. package/dist/index-DBz0DxnL.d.mts.map +0 -1
  221. package/dist/lifeline-BZaQA0rm.mjs.map +0 -1
  222. package/dist/lifeline-BuV_erib.cjs.map +0 -1
  223. package/dist/ptySpawner-DEi1KOnd.mjs.map +0 -1
  224. package/dist/ptySpawner-ijw0g5_T.cjs.map +0 -1
  225. package/dist/reconcile-BugwYFbV.cjs.map +0 -1
  226. package/dist/reconcile-DMeNSxwn.mjs.map +0 -1
  227. package/dist/rmuxBackend-DfyQwJrc.mjs.map +0 -1
  228. package/dist/rmuxBackend-DlxgqRZ1.cjs.map +0 -1
  229. package/dist/rtkProcessor-B9KPdyzr.mjs.map +0 -1
  230. package/dist/rtkProcessor-Bc4L4o_8.cjs.map +0 -1
  231. package/dist/runnerConfig-BQBlVAXn.mjs.map +0 -1
  232. package/dist/runnerConfig-D2tGq5ZM.cjs.map +0 -1
  233. package/dist/runnerDependencies-DruByBGS.mjs.map +0 -1
  234. package/dist/runnerDependencies-KMZigIxB.cjs.map +0 -1
  235. package/dist/runnerPaths-BTEuzxw0.cjs.map +0 -1
  236. package/dist/runnerPaths-B_dAAeco.mjs.map +0 -1
  237. package/dist/runnerRegistry-BmkZTJHi.cjs.map +0 -1
  238. package/dist/runnerRegistry-CeOHEjBv.mjs.map +0 -1
@@ -3,21 +3,23 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_rolldown_runtime = require("../rolldown-runtime-VH7oDXx4.cjs");
6
- const require_runnerConfig = require("../runnerConfig-D2tGq5ZM.cjs");
7
- const require_logReader = require("../logReader-B6J7L7Ua.cjs");
8
- const require_headless = require("../headless-CHUsBGhg.cjs");
9
- const require_reconcile = require("../reconcile-BugwYFbV.cjs");
10
- const require_compaction = require("../compaction-4QSUsBxq.cjs");
11
- const require_rmuxBackend = require("../rmuxBackend-DlxgqRZ1.cjs");
12
- const require_runnerDependencies = require("../runnerDependencies-KMZigIxB.cjs");
13
- const require_runnerPaths = require("../runnerPaths-BTEuzxw0.cjs");
14
- const require_runnerRegistry = require("../runnerRegistry-BmkZTJHi.cjs");
6
+ const require_runnerConfig = require("../runnerConfig-BoLMinlx.cjs");
7
+ const require_logReader = require("../logReader-DHCK2BEr.cjs");
8
+ const require_headless = require("../headless-Dko_yBiy.cjs");
9
+ const require_reconcile = require("../reconcile-5cZ11jSD.cjs");
10
+ const require_clock = require("../clock-jqnLWziT.cjs");
11
+ const require_compaction = require("../compaction-Cduebib_.cjs");
12
+ const require_rmuxBackend = require("../rmuxBackend-Dh0CYVAL.cjs");
13
+ const require_launcher = require("../launcher-ZgDdyXpq.cjs");
14
+ const require_runnerDependencies = require("../runnerDependencies-DSun3xO-.cjs");
15
+ const require_runnerPaths = require("../runnerPaths-B41rMOY6.cjs");
16
+ const require_runnerRegistry = require("../runnerRegistry-dQYlMSpQ.cjs");
15
17
  let node_fs = require("node:fs");
16
18
  node_fs = require_rolldown_runtime.__toESM(node_fs, 1);
17
19
  let node_path = require("node:path");
18
20
  node_path = require_rolldown_runtime.__toESM(node_path, 1);
19
21
  let _agimon_ai_po_core_childProcess = require("@agimon-ai/po-core/childProcess");
20
- let _agimon_ai_po_core_serverFacet = require("@agimon-ai/po-core/serverFacet");
22
+ let _agimon_ai_po_core_serverPlugin = require("@agimon-ai/po-core/serverPlugin");
21
23
  let _agimon_ai_po_core_extensionFile = require("@agimon-ai/po-core/extensionFile");
22
24
  let _agimon_ai_po_core_backgroundWork = require("@agimon-ai/po-core/backgroundWork");
23
25
  let _agimon_ai_po_telemetry = require("@agimon-ai/po-telemetry");
@@ -25,6 +27,10 @@ let _earendil_works_pi_coding_agent = require("@earendil-works/pi-coding-agent")
25
27
  let hono = require("hono");
26
28
  let hono_streaming = require("hono/streaming");
27
29
  let _agimon_ai_po_core_help = require("@agimon-ai/po-core/help");
30
+ const RUNNER_STATUS_KEY = "po-runner-runners";
31
+ const BACKGROUND_WORK_PROVIDER = "po-runner";
32
+ const HISTORY_SWEEP_INTERVAL_MS = 6e5;
33
+ //#endregion
28
34
  //#region src/constants/runnerSettings.ts
29
35
  const RUNNER_SETTINGS_FILE = "po-runner.json";
30
36
  const RATIO_KEYS = ["headRatio", "errorBudgetRatio"];
@@ -32,10 +38,110 @@ const MAX_RESULT_BYTES_CEILING = 262144;
32
38
  const MAX_RESULT_LINES_CEILING = 5e3;
33
39
  const MAX_RESULT_TOKENS_CEILING = 1e5;
34
40
  //#endregion
35
- //#region src/constants/runnerRuntime.ts
36
- const RUNNER_STATUS_KEY = "doom-runner-runners";
37
- const BACKGROUND_WORK_PROVIDER = "doom-runner";
38
- const HISTORY_SWEEP_INTERVAL_MS = 6e5;
41
+ //#region src/services/runnerHost/index.ts
42
+ const describe = (error) => error instanceof Error ? error.message : String(error);
43
+ /** Runs `pass` again `ms` after the previous pass finished, so two passes never overlap. */
44
+ function repeat(clock, ms, pass) {
45
+ let stopped = false;
46
+ let cancel;
47
+ let running;
48
+ const arm = () => {
49
+ cancel = clock.after(ms, () => {
50
+ cancel = void 0;
51
+ running = pass().finally(() => {
52
+ running = void 0;
53
+ if (!stopped) arm();
54
+ });
55
+ });
56
+ };
57
+ arm();
58
+ return { async stop() {
59
+ stopped = true;
60
+ cancel?.();
61
+ await running;
62
+ } };
63
+ }
64
+ /**
65
+ * The housekeeping every session running one po-runner build in one hub shares.
66
+ *
67
+ * A session used to open its own registry connection and arm its own status poll and history
68
+ * sweep, and each sweep walked the whole runner store. Here one loop refreshes the attached sessions
69
+ * one at a time, one sweep per store spares every attached session at once, and runners a crashed
70
+ * server left behind are reclaimed once rather than at every session start.
71
+ */
72
+ function createRunnerHost(options) {
73
+ const sessions = /* @__PURE__ */ new Set();
74
+ let closed = false;
75
+ let reclaiming;
76
+ let sweeping;
77
+ const refreshAll = async () => {
78
+ for (const session of sessions) {
79
+ if (closed) return;
80
+ try {
81
+ await session.refresh();
82
+ } catch (error) {
83
+ options.onWarning(`Could not refresh po-runner session ${session.sessionId}: ${describe(error)}`);
84
+ }
85
+ }
86
+ };
87
+ const sweepAll = () => {
88
+ sweeping ??= (async () => {
89
+ try {
90
+ const byStore = /* @__PURE__ */ new Map();
91
+ for (const session of sessions) {
92
+ const store = session.paths.storeDirectory();
93
+ byStore.set(store, [...byStore.get(store) ?? [], session]);
94
+ }
95
+ for (const group of byStore.values()) {
96
+ const [first] = group;
97
+ if (closed || first === void 0) return;
98
+ const live = new Set(group.map((session) => session.sessionId));
99
+ const now = options.clock.now();
100
+ const result = first.paths.sweepHistoryAsync ? await first.paths.sweepHistoryAsync(first.historyTtlMs, now, live) : first.paths.sweepHistory(first.historyTtlMs, now, live);
101
+ for (const error of result.errors) options.onWarning(error);
102
+ }
103
+ } catch (error) {
104
+ options.onWarning(`Could not sweep po-runner history: ${describe(error)}`);
105
+ }
106
+ })().finally(() => {
107
+ sweeping = void 0;
108
+ });
109
+ return sweeping;
110
+ };
111
+ const polling = repeat(options.clock, options.statusPollMs, refreshAll);
112
+ const sweeper = repeat(options.clock, options.historySweepMs, sweepAll);
113
+ return {
114
+ processRegistry: {
115
+ registerProcess: (...args) => options.processRegistry.registerProcess(...args),
116
+ releaseProcess: (...args) => options.processRegistry.releaseProcess(...args),
117
+ listProcesses: (...args) => options.processRegistry.listProcesses(...args),
118
+ close: () => void 0
119
+ },
120
+ attach(session) {
121
+ if (closed) throw new Error("The po-runner host is disposed.");
122
+ sessions.add(session);
123
+ if (reclaiming === void 0) {
124
+ reclaiming = session.reclaimOrphans().catch((error) => options.onWarning(`Could not reclaim orphaned runners: ${describe(error)}`));
125
+ sweepAll();
126
+ }
127
+ return () => {
128
+ sessions.delete(session);
129
+ };
130
+ },
131
+ async dispose() {
132
+ if (closed) return;
133
+ closed = true;
134
+ sessions.clear();
135
+ await Promise.all([
136
+ polling.stop(),
137
+ sweeper.stop(),
138
+ reclaiming,
139
+ sweeping
140
+ ]);
141
+ options.processRegistry.close();
142
+ }
143
+ };
144
+ }
39
145
  //#endregion
40
146
  //#region src/constants/webRunners.ts
41
147
  const RUNNER_RUNS_TYPE = "runner_runs";
@@ -91,9 +197,9 @@ function presentRunnerRuns(records, now) {
91
197
  //#endregion
92
198
  //#region src/services/runnerServerRuntime/index.ts
93
199
  const COMPLETION_RETRY_MS = 1e3;
94
- function createRunnerServerRuntime(container, directEvents, wakeAgent, execution) {
95
- const telemetry = execution ? (0, _agimon_ai_po_telemetry.createDoomTelemetry)({
96
- serviceName: "doom-runner",
200
+ function createRunnerServerRuntime(container, host, directEvents, wakeAgent, execution) {
201
+ const telemetry = execution ? (0, _agimon_ai_po_telemetry.createPoTelemetry)({
202
+ serviceName: "po-runner",
97
203
  packageName: "@agimon-ai/po-runner",
98
204
  cwd: execution.cwd,
99
205
  env: execution.environment,
@@ -112,41 +218,31 @@ function createRunnerServerRuntime(container, directEvents, wakeAgent, execution
112
218
  let wakes = Promise.resolve();
113
219
  let closing = false;
114
220
  let retryTimer;
115
- let statusTimer;
116
- let historyTimer;
117
- let historySweep;
118
- const sweepHistory = () => {
119
- if (closing) return Promise.resolve();
120
- historySweep ??= (async () => {
121
- const ttl = require_runnerConfig.getLogTtlMs(container.environment);
122
- const result = container.paths.sweepHistoryAsync ? await container.paths.sweepHistoryAsync(ttl) : container.paths.sweepHistory(ttl);
123
- for (const error of result.errors) process.emitWarning(error);
124
- })().catch((error) => process.emitWarning(`Could not sweep doom-runner history: ${String(error)}`)).finally(() => {
125
- historySweep = void 0;
221
+ /** Stops the shared loop refreshing this session and sweeping around it. */
222
+ let detach;
223
+ /** Every runner of every session the registry knows, reclaimed when its owning process is gone. */
224
+ const reclaimOrphans = async () => {
225
+ const reclaimed = await require_reconcile.reconcileActiveRunners({
226
+ registry: container.runnerRegistry,
227
+ launcher: container.launcher,
228
+ rmuxBackend: container.rmuxBackend,
229
+ processControl: container.processControl,
230
+ currentHostPid: process.pid,
231
+ startup: false
126
232
  });
127
- return historySweep;
233
+ for (const error of reclaimed.errors) process.emitWarning(error);
128
234
  };
129
235
  const ensureSession = (requestedSessionId) => {
130
236
  if (closing) return Promise.reject(/* @__PURE__ */ new Error("Runner runtime is closing."));
131
237
  if (sessionId !== void 0 && sessionId !== requestedSessionId) throw new Error(`Runner runtime belongs to session ${sessionId}.`);
132
238
  sessionId ??= requestedSessionId;
133
239
  supervision ??= (async () => {
134
- await telemetry?.recordEvent("doom_runner.session_started", { outcome: "started" });
240
+ telemetry?.recordEvent("po_runner.session_started", { outcome: "started" }).catch((error) => process.emitWarning(`Could not record runner session telemetry: ${String(error)}`));
135
241
  if (closing) return;
136
242
  container.paths.setSessionId(requestedSessionId);
137
243
  if (await container.lifeline.arm(requestedSessionId) === void 0) throw new Error("Could not arm runner supervision lifeline.");
138
244
  if (closing) return;
139
245
  const promotedIds = (await container.runnerRegistry.listAll(requestedSessionId)).filter((record) => record.state === "running" && record.promoted).map((record) => record.id);
140
- const legacy = await require_reconcile.cleanupLegacyRunnerStore({
141
- registry: container.runnerRegistry,
142
- launcher: container.launcher,
143
- rmuxBackend: container.rmuxBackend,
144
- processControl: container.processControl,
145
- currentHostPid: process.pid,
146
- paths: container.paths
147
- });
148
- for (const error of legacy.errors) process.emitWarning(error);
149
- if (closing) return;
150
246
  const reconciled = await require_reconcile.reconcileActiveRunners({
151
247
  registry: container.runnerRegistry,
152
248
  launcher: container.launcher,
@@ -154,28 +250,26 @@ function createRunnerServerRuntime(container, directEvents, wakeAgent, execution
154
250
  processControl: container.processControl,
155
251
  currentHostPid: process.pid,
156
252
  startup: true,
157
- startupSessionId: requestedSessionId
253
+ startupSessionId: requestedSessionId,
254
+ active: await container.runnerRegistry.listBySession(requestedSessionId)
158
255
  });
159
256
  for (const error of reconciled.errors) process.emitWarning(error);
160
- await telemetry?.recordEvent("doom_runner.reconciled", {
161
- "runner.reclaimed_count": legacy.reclaimed.length + reconciled.reclaimed.length,
162
- "runner.error_count": legacy.errors.length + reconciled.errors.length,
163
- outcome: legacy.errors.length + reconciled.errors.length === 0 ? "completed" : "degraded"
164
- });
257
+ telemetry?.recordEvent("po_runner.reconciled", {
258
+ "runner.reclaimed_count": reconciled.reclaimed.length,
259
+ "runner.error_count": reconciled.errors.length,
260
+ outcome: reconciled.errors.length === 0 ? "completed" : "degraded"
261
+ }).catch((error) => process.emitWarning(`Could not record runner reconcile telemetry: ${String(error)}`));
165
262
  if (!closing) {
166
263
  unsubscribeRunnerUpdates ??= container.runnerRegistry.subscribe(() => requestPublish(requestedSessionId), requestedSessionId);
167
264
  for (const id of promotedIds) watchRunner(id);
168
265
  requestPublish(requestedSessionId);
169
- await sweepHistory();
170
- if (closing) return;
171
- statusTimer ??= setInterval(() => {
172
- refreshSession(requestedSessionId);
173
- }, 500);
174
- statusTimer.unref?.();
175
- historyTimer ??= setInterval(() => {
176
- sweepHistory();
177
- }, HISTORY_SWEEP_INTERVAL_MS);
178
- historyTimer.unref?.();
266
+ detach ??= host.attach({
267
+ sessionId: requestedSessionId,
268
+ paths: container.paths,
269
+ historyTtlMs: require_runnerConfig.getLogTtlMs(container.environment),
270
+ refresh: () => refreshSession(requestedSessionId),
271
+ reclaimOrphans
272
+ });
179
273
  }
180
274
  })().catch((error) => {
181
275
  supervision = void 0;
@@ -188,36 +282,36 @@ function createRunnerServerRuntime(container, directEvents, wakeAgent, execution
188
282
  await supervision?.catch((error) => process.emitWarning(`Could not initialize headless runner supervision: ${String(error)}`));
189
283
  const ownedSessionId = sessionId;
190
284
  if (ownedSessionId === void 0) return;
191
- const records = await container.runnerRegistry.listBySession(ownedSessionId).catch(() => []);
192
- await Promise.all(records.map(async (record) => {
193
- try {
194
- if (!await require_reconcile.stopRunnerProcess(record, container.launcher, container.rmuxBackend, {
195
- registry: container.runnerRegistry,
196
- intent: {
285
+ await (0, _agimon_ai_po_core_extensionFile.runCleanups)([
286
+ async () => {
287
+ const records = await container.runnerRegistry.listBySession(ownedSessionId);
288
+ const errors = (await Promise.allSettled(records.map(async (record) => {
289
+ await require_reconcile.stopRunnerProcess(record, container.launcher, container.rmuxBackend, {
290
+ registry: container.runnerRegistry,
291
+ intent: {
292
+ reason: "stopped",
293
+ terminationReason: "parent_session_cleanup",
294
+ stopReason: "session ended"
295
+ }
296
+ });
297
+ const deadline = container.clock.now() + require_launcher.TERM_GRACE_MS;
298
+ while (container.processControl.isAlive(record.pid)) {
299
+ if (container.clock.now() >= deadline) throw new Error(`Could not stop runner ${record.id} during session shutdown`);
300
+ await new Promise((resolve) => container.clock.after(100, resolve));
301
+ }
302
+ await container.runnerRegistry.complete(record.id, {
197
303
  reason: "stopped",
198
- terminationReason: "parent_session_cleanup",
304
+ code: null,
305
+ signal: null,
199
306
  stopReason: "session ended"
200
- }
201
- }) && container.processControl.isAlive(record.pid)) {
202
- process.emitWarning(`Could not stop runner ${record.id} during session shutdown`);
203
- return;
204
- }
205
- await container.runnerRegistry.complete(record.id, {
206
- reason: "stopped",
207
- code: null,
208
- signal: null,
209
- stopReason: "session ended"
210
- }, ownedSessionId);
211
- } catch (error) {
212
- process.emitWarning(`Could not clean up runner ${record.id}: ${String(error)}`);
213
- }
214
- }));
215
- try {
216
- await container.ptyHost.disposeAll();
217
- } finally {
218
- container.lifeline.dispose();
219
- container.runnerRegistry.close();
220
- }
307
+ }, ownedSessionId);
308
+ }))).filter((result) => result.status === "rejected").map((result) => result.reason);
309
+ if (errors.length) throw new AggregateError(errors, "Runner process cleanup failed.");
310
+ },
311
+ () => container.ptyHost.disposeAll(),
312
+ () => container.lifeline.dispose(),
313
+ () => container.runnerRegistry.close()
314
+ ], "Runner runtime cleanup failed.");
221
315
  })();
222
316
  return runtimeDisposal;
223
317
  };
@@ -247,7 +341,7 @@ function createRunnerServerRuntime(container, directEvents, wakeAgent, execution
247
341
  wakeForFinished(ownedSessionId);
248
342
  }
249
343
  } catch (error) {
250
- process.emitWarning(`Could not refresh doom-runner: ${String(error)}`);
344
+ process.emitWarning(`Could not refresh po-runner: ${String(error)}`);
251
345
  }
252
346
  };
253
347
  const publishRuns = async (ownedSessionId) => {
@@ -306,8 +400,8 @@ function createRunnerServerRuntime(container, directEvents, wakeAgent, execution
306
400
  const record = await container.runnerRegistry.get(id, ownedSessionId);
307
401
  if (closing) return;
308
402
  if (record?.state === "running") continue;
309
- if (record) await wakeAgent?.(require_runnerRegistry.formatRunnerFinished(record), `runner-finished:${JSON.stringify([ownedSessionId, id])}`);
310
- if (record) await telemetry?.recordEvent("doom_runner.process_finished", {
403
+ if (record) await wakeAgent?.(require_runnerRegistry.formatRunnerFinished(record), `runner-finished:${JSON.stringify([ownedSessionId, id])}`, require_runnerRegistry.formatRunnerFinishedNotice(record));
404
+ if (record) await telemetry?.recordEvent("po_runner.process_finished", {
311
405
  outcome: "completed",
312
406
  "runner.exit_code": record.exit?.code ?? 0,
313
407
  "runner.backend": record.backend
@@ -349,7 +443,7 @@ function createRunnerServerRuntime(container, directEvents, wakeAgent, execution
349
443
  activity: {
350
444
  name: "runner",
351
445
  start: async (executionContext) => {
352
- await ensureSession(executionContext.sessionId);
446
+ ensureSession(executionContext.sessionId).catch((error) => process.emitWarning(`Could not initialize headless runner supervision: ${String(error)}`));
353
447
  requestPublish(executionContext.sessionId);
354
448
  return () => {};
355
449
  }
@@ -372,7 +466,7 @@ function createRunnerServerRuntime(container, directEvents, wakeAgent, execution
372
466
  const text = require_compaction.activeRunnerRecovery(active);
373
467
  if (!text) return;
374
468
  await execution.session.appendMessage?.({
375
- type: "doom-runner-compaction",
469
+ type: "po-runner-compaction",
376
470
  text,
377
471
  display: false,
378
472
  details: {
@@ -383,8 +477,8 @@ function createRunnerServerRuntime(container, directEvents, wakeAgent, execution
383
477
  if (!closing) recoveredCompactionId = event.entryId;
384
478
  },
385
479
  backgroundWorkPlugin: (context) => {
386
- context.inject([_agimon_ai_po_core_backgroundWork.DOOM_BACKGROUND_WORK_SERVICE], (serviceContext) => {
387
- const service = (0, _agimon_ai_po_core_backgroundWork.readDoomBackgroundWorkService)(serviceContext);
480
+ context.inject([_agimon_ai_po_core_backgroundWork.PO_BACKGROUND_WORK_SERVICE], (serviceContext) => {
481
+ const service = (0, _agimon_ai_po_core_backgroundWork.readPoBackgroundWorkService)(serviceContext);
388
482
  if (!service) return void 0;
389
483
  const registration = service.register({
390
484
  provider: BACKGROUND_WORK_PROVIDER,
@@ -402,8 +496,8 @@ function createRunnerServerRuntime(container, directEvents, wakeAgent, execution
402
496
  closing = true;
403
497
  disposal = (async () => {
404
498
  closing = true;
405
- clearInterval(statusTimer);
406
- clearInterval(historyTimer);
499
+ detach?.();
500
+ detach = void 0;
407
501
  clearTimeout(retryTimer);
408
502
  retryTimer = void 0;
409
503
  watched.clear();
@@ -413,16 +507,17 @@ function createRunnerServerRuntime(container, directEvents, wakeAgent, execution
413
507
  unsubscribeRunnerUpdates = void 0;
414
508
  await wakes;
415
509
  await publishInFlight;
416
- await historySweep;
417
510
  await refreshInFlight;
418
511
  try {
419
512
  execution?.client.setStatus(RUNNER_STATUS_KEY, void 0);
420
513
  } catch (error) {
421
514
  process.emitWarning(`Could not clear runner status: ${String(error)}`);
422
515
  }
423
- await disposeRuntime();
424
- await telemetry?.recordEvent("doom_runner.session_finished", { outcome: "stopped" });
425
- await telemetry?.shutdown();
516
+ await (0, _agimon_ai_po_core_extensionFile.runCleanups)([
517
+ disposeRuntime,
518
+ () => telemetry?.recordEvent("po_runner.session_finished", { outcome: "stopped" }),
519
+ () => telemetry?.shutdown()
520
+ ], "Runner shutdown failed.");
426
521
  })();
427
522
  return disposal;
428
523
  }
@@ -538,27 +633,41 @@ function validate(parsed) {
538
633
  }
539
634
  //#endregion
540
635
  //#region src/extensions/workspaces/sessions/(backend)/_lib/serverRoot.ts
541
- const RUNNER_SERVER_SCOPE_SERVICE = "doom/runner-server-scope";
542
- const createRunnerServerRoot = ({ host, agent, signal }) => {
543
- if (!host.context.directEvents) throw new Error("Runner headless facet requires the session direct event bus.");
544
- if (!host.context.cwd || !host.context.environment) throw new Error("Runner headless facet requires session cwd and environment.");
636
+ const RUNNER_SERVER_SCOPE_SERVICE = "po/runner-server-scope";
637
+ const createRunnerServerRoot = async ({ host, agent, signal, resources }) => {
638
+ if (!host.context.directEvents) throw new Error("Runner server plugin requires the session direct event bus.");
639
+ if (!host.context.cwd || !host.context.environment) throw new Error("Runner server plugin requires session cwd and environment.");
545
640
  const loaded = new RunnerSettingsLoader().load(host.context.cwd, true);
546
641
  const settings = Object.freeze({
547
642
  ...loaded.settings,
548
643
  ...loaded.settings.errorPatterns ? { errorPatterns: Object.freeze([...loaded.settings.errorPatterns]) } : {}
549
644
  });
550
645
  for (const issue of loaded.issues) process.emitWarning(`${RUNNER_SETTINGS_FILE}: ${issue}`);
646
+ const environment = host.context.environment;
647
+ const runnerHost = await resources.acquire(["runner-host", environment["PROCESS_REGISTRY_PATH"] ?? null], () => createRunnerHost({
648
+ processRegistry: require_runnerRegistry.createDefaultProcessRegistry(environment),
649
+ clock: new require_clock.SystemClock(),
650
+ statusPollMs: 500,
651
+ historySweepMs: HISTORY_SWEEP_INTERVAL_MS,
652
+ onWarning: (message) => process.emitWarning(message)
653
+ }), (shared) => shared.dispose());
551
654
  const dependencies = require_runnerDependencies.createRunnerDependencies({
552
655
  settings,
553
656
  cwd: host.context.cwd,
554
- environment: host.context.environment,
657
+ environment,
658
+ processRegistry: runnerHost.processRegistry,
555
659
  ...host.context.executionBudget === void 0 ? {} : { executionBudget: host.context.executionBudget }
556
660
  });
557
661
  const execution = agent?.context;
558
- const wakeAgent = execution && (async (content, requestId) => {
662
+ const wakeAgent = execution && (async (content, requestId, notice) => {
559
663
  try {
560
- if (!execution.session.admitPrompt) throw new Error("The session cannot admit a runner notification.");
561
- await execution.session.admitPrompt(content, "steer", void 0, requestId);
664
+ if (!execution.session.admitMessage) throw new Error("The session cannot admit a runner notification.");
665
+ await execution.session.admitMessage({
666
+ type: "po-runner-finished",
667
+ text: content,
668
+ display: true,
669
+ details: { notice }
670
+ }, "steer", requestId);
562
671
  } catch (error) {
563
672
  await Promise.resolve().then(() => execution.client.notify({
564
673
  body: String(error),
@@ -567,7 +676,7 @@ const createRunnerServerRoot = ({ host, agent, signal }) => {
567
676
  throw error;
568
677
  }
569
678
  });
570
- const runtime = createRunnerServerRuntime(dependencies, host.context.directEvents, wakeAgent, execution);
679
+ const runtime = createRunnerServerRuntime(dependencies, runnerHost, host.context.directEvents, wakeAgent, execution);
571
680
  const bash = (wakeOnExit) => require_headless.createHeadlessBashTool({ run: async (request) => {
572
681
  await runtime.ensureSession(request.sessionId);
573
682
  const result = await dependencies.bashRunService.run({
@@ -589,7 +698,9 @@ const createRunnerServerRoot = ({ host, agent, signal }) => {
589
698
  context.plugin((providerContext) => providerContext.provide(RUNNER_SERVER_SCOPE_SERVICE, value));
590
699
  }],
591
700
  activities: [runtime.activity],
592
- onStart: execution ? () => runtime.ensureSession(execution.sessionId) : void 0,
701
+ onStart: execution ? () => {
702
+ runtime.ensureSession(execution.sessionId).catch((error) => process.emitWarning(`Could not initialize headless runner supervision: ${String(error)}`));
703
+ } : void 0,
593
704
  onStop: runtime.dispose
594
705
  };
595
706
  };
@@ -1173,11 +1284,11 @@ var session_compact_server_default = (0, _agimon_ai_po_core_extensionFile.define
1173
1284
  //#region src/extensions/workspaces/sessions/(backend)/resource/po-use-runner.server.ts
1174
1285
  var po_use_runner_server_default = (0, _agimon_ai_po_core_extensionFile.defineResource)({
1175
1286
  name: "po-use-runner",
1176
- description: "Use Doom Pi Runner to supervise shell commands, inspect durable logs, provide interactive input, and stop background runs.",
1177
- when: _agimon_ai_po_core_help.DOOM_HELP_WHEN,
1287
+ description: "Use Po Pi Runner to supervise shell commands, inspect durable logs, provide interactive input, and stop background runs.",
1288
+ when: _agimon_ai_po_core_help.PO_HELP_WHEN,
1178
1289
  kind: "skill",
1179
- path: (0, _agimon_ai_po_core_serverFacet.packageResourcePath)(require("url").pathToFileURL(__filename).href, "src/prompts/po-use-runner/SKILL.md"),
1180
- read: () => (0, _agimon_ai_po_core_serverFacet.readPackageResource)(require("url").pathToFileURL(__filename).href, "src/prompts/po-use-runner/SKILL.md")
1290
+ path: (0, _agimon_ai_po_core_serverPlugin.packageResourcePath)(require("url").pathToFileURL(__filename).href, "src/prompts/po-use-runner/SKILL.md"),
1291
+ read: () => (0, _agimon_ai_po_core_serverPlugin.readPackageResource)(require("url").pathToFileURL(__filename).href, "src/prompts/po-use-runner/SKILL.md")
1181
1292
  });
1182
1293
  //#endregion
1183
1294
  //#region src/extensions/workspaces/sessions/(backend)/tool/bash.server.ts
@@ -1185,21 +1296,24 @@ var bash_server_default = (0, _agimon_ai_po_core_extensionFile.defineServerTool)
1185
1296
  //#endregion
1186
1297
  //#region generated/server.ts
1187
1298
  const at = (value, context) => typeof value === "function" ? value(context) : value;
1299
+ /* v8 ignore next -- generated normalization branch */
1300
+ const defined = (values) => values.filter((value) => value !== void 0);
1188
1301
  const via = (identity, value) => value === void 0 ? void 0 : {
1189
1302
  ...identity,
1190
1303
  ...value
1191
1304
  };
1192
- const facet = (0, _agimon_ai_po_core_serverFacet.defineServerPlugin)({
1305
+ const serverPlugin = (0, _agimon_ai_po_core_serverPlugin.defineServerPlugin)({
1193
1306
  name: "@agimon-ai/po-runner",
1194
- providerOverrides: (0, _agimon_ai_po_core_serverFacet.composeServerProviderOverrides)(root_server_default),
1307
+ providerOverrides: (0, _agimon_ai_po_core_serverPlugin.composeServerProviderOverrides)(root_server_default),
1308
+ injects: (0, _agimon_ai_po_core_extensionFile.composeRootInjects)({ session: [root_server_default] }),
1195
1309
  global: () => ({ get channels() {
1196
1310
  return [() => via({ frameType: "runner_runs" }, runnerRuns_server_default())];
1197
1311
  } }),
1198
- workspace: () => ({ get channels() {
1199
- return [() => via({ frameType: "runner_runs" }, runnerRuns_server_default())];
1312
+ workspace: (context) => ({ get channels() {
1313
+ return defined([context.hosted("global") ? void 0 : () => via({ frameType: "runner_runs" }, runnerRuns_server_default())]);
1200
1314
  } }),
1201
1315
  session: async (context) => {
1202
- const scopeSession = await root_server_default(context);
1316
+ const scopeSession = await context.scopeRoot("session", root_server_default, context);
1203
1317
  const contextSession = {
1204
1318
  ...context,
1205
1319
  root: scopeSession.value
@@ -1210,7 +1324,7 @@ const facet = (0, _agimon_ai_po_core_serverFacet.defineServerPlugin)({
1210
1324
  return [at(route_server_default, contextSession)];
1211
1325
  },
1212
1326
  get channels() {
1213
- return [() => via({ frameType: "runner_runs" }, runnerRuns_server_default())];
1327
+ return defined([context.hosted("global") ? void 0 : () => via({ frameType: "runner_runs" }, runnerRuns_server_default())]);
1214
1328
  },
1215
1329
  get commands() {
1216
1330
  return [via({ name: "runners" }, at(runners_server_default, contextSession))];
@@ -1232,7 +1346,7 @@ const facet = (0, _agimon_ai_po_core_serverFacet.defineServerPlugin)({
1232
1346
  }
1233
1347
  });
1234
1348
  //#endregion
1235
- exports.default = facet;
1236
- exports.facet = facet;
1349
+ exports.default = serverPlugin;
1350
+ exports.serverPlugin = serverPlugin;
1237
1351
 
1238
1352
  //# sourceMappingURL=server.cjs.map