@ai-devkit/agent-manager 0.37.0 → 0.39.0

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 (357) hide show
  1. package/dist/AgentManager.d.ts +0 -4
  2. package/dist/AgentManager.d.ts.map +1 -1
  3. package/dist/AgentManager.js +2 -2
  4. package/dist/AgentManager.js.map +1 -1
  5. package/dist/__tests__/capacity/anthropic.test.js +115 -0
  6. package/dist/__tests__/capacity/anthropic.test.js.map +1 -0
  7. package/dist/__tests__/capacity/boundaries.test.js +45 -0
  8. package/dist/__tests__/capacity/boundaries.test.js.map +1 -0
  9. package/dist/__tests__/capacity/claude.test.js +3 -3
  10. package/dist/__tests__/capacity/claude.test.js.map +1 -1
  11. package/dist/__tests__/capacity/codex.test.js +3 -1
  12. package/dist/__tests__/capacity/codex.test.js.map +1 -1
  13. package/dist/__tests__/capacity/openai.test.js +21 -12
  14. package/dist/__tests__/capacity/openai.test.js.map +1 -1
  15. package/dist/__tests__/capacity/wham.test.js +1 -1
  16. package/dist/__tests__/capacity/wham.test.js.map +1 -1
  17. package/dist/__tests__/capacity/zai.test.js +7 -8
  18. package/dist/__tests__/capacity/zai.test.js.map +1 -1
  19. package/dist/__tests__/harnesses/claude/durable/ClaudePrintAgent.integration.test.js +2 -1
  20. package/dist/__tests__/harnesses/claude/durable/ClaudePrintAgent.integration.test.js.map +1 -1
  21. package/dist/__tests__/harnesses/claude/durable/ClaudePrintRunner.test.js.map +1 -1
  22. package/dist/__tests__/harnesses/codex/durable/CodexCliProbe.test.js +7 -15
  23. package/dist/__tests__/harnesses/codex/durable/CodexCliProbe.test.js.map +1 -1
  24. package/dist/__tests__/harnesses/codex/durable/CodexPrintAgent.integration.test.js +3 -1
  25. package/dist/__tests__/harnesses/codex/durable/CodexPrintAgent.integration.test.js.map +1 -1
  26. package/dist/__tests__/harnesses/codex/durable/CodexPrintAgentService.test.js +11 -26
  27. package/dist/__tests__/harnesses/codex/durable/CodexPrintAgentService.test.js.map +1 -1
  28. package/dist/__tests__/harnesses/codex/durable/CodexPrintRunner.test.js +3 -7
  29. package/dist/__tests__/harnesses/codex/durable/CodexPrintRunner.test.js.map +1 -1
  30. package/dist/__tests__/harnesses/devin/DevinAdapter.test.js +597 -0
  31. package/dist/__tests__/harnesses/devin/DevinAdapter.test.js.map +1 -0
  32. package/dist/__tests__/harnesses/devin/DevinAgentMapper.test.js +91 -0
  33. package/dist/__tests__/harnesses/devin/DevinAgentMapper.test.js.map +1 -0
  34. package/dist/__tests__/harnesses/devin/DevinSessionLocator.test.js +192 -0
  35. package/dist/__tests__/harnesses/devin/DevinSessionLocator.test.js.map +1 -0
  36. package/dist/__tests__/harnesses/devin/DevinSessionParser.test.js +407 -0
  37. package/dist/__tests__/harnesses/devin/DevinSessionParser.test.js.map +1 -0
  38. package/dist/__tests__/harnesses/devin/fixtures.js +95 -0
  39. package/dist/__tests__/harnesses/devin/fixtures.js.map +1 -0
  40. package/dist/__tests__/harnesses/pi/durable/PiCliProbe.test.js +5 -11
  41. package/dist/__tests__/harnesses/pi/durable/PiCliProbe.test.js.map +1 -1
  42. package/dist/__tests__/harnesses/pi/durable/PiPrintAgentService.test.js +9 -19
  43. package/dist/__tests__/harnesses/pi/durable/PiPrintAgentService.test.js.map +1 -1
  44. package/dist/__tests__/harnesses/pi/durable/PiPrintRunner.test.js +3 -7
  45. package/dist/__tests__/harnesses/pi/durable/PiPrintRunner.test.js.map +1 -1
  46. package/dist/__tests__/{readiness → harnesses/readiness}/AgentReadiness.test.js +95 -11
  47. package/dist/__tests__/harnesses/readiness/AgentReadiness.test.js.map +1 -0
  48. package/dist/__tests__/harnesses/runtimeProfiles.test.js +89 -0
  49. package/dist/__tests__/harnesses/runtimeProfiles.test.js.map +1 -0
  50. package/dist/__tests__/print/DurableAgent.test.js +4 -6
  51. package/dist/__tests__/print/DurableAgent.test.js.map +1 -1
  52. package/dist/__tests__/print/DurableAgentRepository.test.js +1 -12
  53. package/dist/__tests__/print/DurableAgentRepository.test.js.map +1 -1
  54. package/dist/__tests__/runtime/ManagedAgentRuntime.test.js.map +1 -1
  55. package/dist/__tests__/terminal/GhosttyBackend.test.js +334 -0
  56. package/dist/__tests__/terminal/GhosttyBackend.test.js.map +1 -0
  57. package/dist/__tests__/terminal/TmuxManager.test.js +1 -1
  58. package/dist/__tests__/terminal/TmuxManager.test.js.map +1 -1
  59. package/dist/adapters/AgentAdapter.d.ts +1 -1
  60. package/dist/adapters/AgentAdapter.d.ts.map +1 -1
  61. package/dist/adapters/AgentAdapter.js +2 -1
  62. package/dist/adapters/AgentAdapter.js.map +1 -1
  63. package/dist/capacity/index.d.ts +9 -19
  64. package/dist/capacity/index.d.ts.map +1 -1
  65. package/dist/capacity/index.js +11 -4
  66. package/dist/capacity/index.js.map +1 -1
  67. package/dist/capacity/providers/anthropic.d.ts +9 -0
  68. package/dist/capacity/providers/anthropic.d.ts.map +1 -0
  69. package/dist/capacity/{claude.js → providers/anthropic.js} +10 -128
  70. package/dist/capacity/providers/anthropic.js.map +1 -0
  71. package/dist/capacity/providers/openai-platform.d.ts +14 -0
  72. package/dist/capacity/providers/openai-platform.d.ts.map +1 -0
  73. package/dist/capacity/providers/openai-platform.js +120 -0
  74. package/dist/capacity/providers/openai-platform.js.map +1 -0
  75. package/dist/capacity/providers/openai-subscription.d.ts +20 -0
  76. package/dist/capacity/providers/openai-subscription.d.ts.map +1 -0
  77. package/dist/capacity/providers/openai-subscription.js +129 -0
  78. package/dist/capacity/providers/openai-subscription.js.map +1 -0
  79. package/dist/capacity/providers/zai.d.ts +8 -0
  80. package/dist/capacity/providers/zai.d.ts.map +1 -0
  81. package/dist/capacity/{zai.js → providers/zai.js} +17 -62
  82. package/dist/capacity/providers/zai.js.map +1 -0
  83. package/dist/capacity/sources/claude.d.ts +9 -0
  84. package/dist/capacity/sources/claude.d.ts.map +1 -0
  85. package/dist/capacity/sources/claude.js +17 -0
  86. package/dist/capacity/sources/claude.js.map +1 -0
  87. package/dist/capacity/{codex.d.ts → sources/codex.d.ts} +5 -9
  88. package/dist/capacity/sources/codex.d.ts.map +1 -0
  89. package/dist/capacity/{codex.js → sources/codex.js} +31 -84
  90. package/dist/capacity/sources/codex.js.map +1 -0
  91. package/dist/capacity/sources/pi.d.ts +30 -0
  92. package/dist/capacity/sources/pi.d.ts.map +1 -0
  93. package/dist/capacity/sources/pi.js +81 -0
  94. package/dist/capacity/sources/pi.js.map +1 -0
  95. package/dist/capacity/types.d.ts +2 -0
  96. package/dist/capacity/types.d.ts.map +1 -1
  97. package/dist/capacity/types.js +1 -1
  98. package/dist/capacity/types.js.map +1 -1
  99. package/dist/harnesses/claude/credentials.d.ts +10 -0
  100. package/dist/harnesses/claude/credentials.d.ts.map +1 -0
  101. package/dist/harnesses/claude/credentials.js +112 -0
  102. package/dist/harnesses/claude/credentials.js.map +1 -0
  103. package/dist/harnesses/claude/readiness.d.ts +3 -0
  104. package/dist/harnesses/claude/readiness.d.ts.map +1 -0
  105. package/dist/harnesses/claude/readiness.js +63 -0
  106. package/dist/harnesses/claude/readiness.js.map +1 -0
  107. package/dist/harnesses/codex/credentials.d.ts +15 -0
  108. package/dist/harnesses/codex/credentials.d.ts.map +1 -0
  109. package/dist/harnesses/codex/credentials.js +58 -0
  110. package/dist/harnesses/codex/credentials.js.map +1 -0
  111. package/dist/harnesses/codex/readiness.d.ts +3 -0
  112. package/dist/harnesses/codex/readiness.d.ts.map +1 -0
  113. package/dist/harnesses/codex/readiness.js +60 -0
  114. package/dist/harnesses/codex/readiness.js.map +1 -0
  115. package/dist/harnesses/copilot/readiness.d.ts +3 -0
  116. package/dist/harnesses/copilot/readiness.d.ts.map +1 -0
  117. package/dist/harnesses/copilot/readiness.js +39 -0
  118. package/dist/harnesses/copilot/readiness.js.map +1 -0
  119. package/dist/harnesses/devin/DevinAdapter.d.ts +39 -0
  120. package/dist/harnesses/devin/DevinAdapter.d.ts.map +1 -0
  121. package/dist/harnesses/devin/DevinAdapter.js +177 -0
  122. package/dist/harnesses/devin/DevinAdapter.js.map +1 -0
  123. package/dist/harnesses/devin/DevinAgentMapper.d.ts +11 -0
  124. package/dist/harnesses/devin/DevinAgentMapper.d.ts.map +1 -0
  125. package/dist/harnesses/devin/DevinAgentMapper.js +35 -0
  126. package/dist/harnesses/devin/DevinAgentMapper.js.map +1 -0
  127. package/dist/harnesses/devin/DevinSessionLocator.d.ts +46 -0
  128. package/dist/harnesses/devin/DevinSessionLocator.d.ts.map +1 -0
  129. package/dist/harnesses/devin/DevinSessionLocator.js +176 -0
  130. package/dist/harnesses/devin/DevinSessionLocator.js.map +1 -0
  131. package/dist/harnesses/devin/DevinSessionParser.d.ts +29 -0
  132. package/dist/harnesses/devin/DevinSessionParser.d.ts.map +1 -0
  133. package/dist/harnesses/devin/DevinSessionParser.js +166 -0
  134. package/dist/harnesses/devin/DevinSessionParser.js.map +1 -0
  135. package/dist/harnesses/devin/readiness.d.ts +3 -0
  136. package/dist/harnesses/devin/readiness.d.ts.map +1 -0
  137. package/dist/harnesses/devin/readiness.js +39 -0
  138. package/dist/harnesses/devin/readiness.js.map +1 -0
  139. package/dist/harnesses/index.d.ts.map +1 -1
  140. package/dist/harnesses/index.js +3 -1
  141. package/dist/harnesses/index.js.map +1 -1
  142. package/dist/harnesses/opencode/readiness.d.ts +3 -0
  143. package/dist/harnesses/opencode/readiness.d.ts.map +1 -0
  144. package/dist/harnesses/opencode/readiness.js +50 -0
  145. package/dist/harnesses/opencode/readiness.js.map +1 -0
  146. package/dist/harnesses/pi/credentials.d.ts +22 -0
  147. package/dist/harnesses/pi/credentials.d.ts.map +1 -0
  148. package/dist/harnesses/pi/credentials.js +98 -0
  149. package/dist/harnesses/pi/credentials.js.map +1 -0
  150. package/dist/harnesses/pi/readiness.d.ts +3 -0
  151. package/dist/harnesses/pi/readiness.d.ts.map +1 -0
  152. package/dist/harnesses/pi/readiness.js +96 -0
  153. package/dist/harnesses/pi/readiness.js.map +1 -0
  154. package/dist/harnesses/readiness/AgentReadiness.d.ts +6 -0
  155. package/dist/harnesses/readiness/AgentReadiness.d.ts.map +1 -0
  156. package/dist/harnesses/readiness/AgentReadiness.js +70 -0
  157. package/dist/harnesses/readiness/AgentReadiness.js.map +1 -0
  158. package/dist/harnesses/readiness/checks.d.ts +31 -0
  159. package/dist/harnesses/readiness/checks.d.ts.map +1 -0
  160. package/dist/harnesses/readiness/checks.js +270 -0
  161. package/dist/harnesses/readiness/checks.js.map +1 -0
  162. package/dist/{readiness/AgentReadiness.d.ts → harnesses/readiness/types.d.ts} +19 -10
  163. package/dist/harnesses/readiness/types.d.ts.map +1 -0
  164. package/dist/harnesses/readiness/types.js +4 -0
  165. package/dist/harnesses/readiness/types.js.map +1 -0
  166. package/dist/harnesses/runtimeProfiles.d.ts +11 -0
  167. package/dist/harnesses/runtimeProfiles.d.ts.map +1 -0
  168. package/dist/harnesses/runtimeProfiles.js +100 -0
  169. package/dist/harnesses/runtimeProfiles.js.map +1 -0
  170. package/dist/index.d.ts +16 -42
  171. package/dist/index.d.ts.map +1 -1
  172. package/dist/index.js +9 -23
  173. package/dist/index.js.map +1 -1
  174. package/dist/runtime/ManagedAgentRuntime.d.ts +3 -3
  175. package/dist/runtime/ManagedAgentRuntime.d.ts.map +1 -1
  176. package/dist/runtime/ManagedAgentRuntime.js +6 -20
  177. package/dist/runtime/ManagedAgentRuntime.js.map +1 -1
  178. package/dist/runtime/herdr/HerdrAgentDiscovery.d.ts.map +1 -1
  179. package/dist/runtime/herdr/HerdrAgentDiscovery.js +2 -43
  180. package/dist/runtime/herdr/HerdrAgentDiscovery.js.map +1 -1
  181. package/dist/runtime/tmux/PidPolling.d.ts +1 -1
  182. package/dist/runtime/tmux/PidPolling.d.ts.map +1 -1
  183. package/dist/runtime/tmux/PidPolling.js.map +1 -1
  184. package/dist/runtime/tmux/TmuxAgentRuntime.d.ts +1 -1
  185. package/dist/runtime/tmux/TmuxAgentRuntime.d.ts.map +1 -1
  186. package/dist/runtime/tmux/TmuxAgentRuntime.js +1 -1
  187. package/dist/runtime/tmux/TmuxAgentRuntime.js.map +1 -1
  188. package/dist/runtime/tmux/TmuxManager.d.ts +12 -0
  189. package/dist/runtime/tmux/TmuxManager.d.ts.map +1 -0
  190. package/dist/{terminal → runtime/tmux}/TmuxManager.js +9 -28
  191. package/dist/runtime/tmux/TmuxManager.js.map +1 -0
  192. package/dist/runtime/types.d.ts +1 -1
  193. package/dist/runtime/types.d.ts.map +1 -1
  194. package/dist/runtime/types.js.map +1 -1
  195. package/dist/terminal/TerminalFocusManager.d.ts +4 -32
  196. package/dist/terminal/TerminalFocusManager.d.ts.map +1 -1
  197. package/dist/terminal/TerminalFocusManager.js +17 -267
  198. package/dist/terminal/TerminalFocusManager.js.map +1 -1
  199. package/dist/terminal/TtyWriter.d.ts +1 -44
  200. package/dist/terminal/TtyWriter.d.ts.map +1 -1
  201. package/dist/terminal/TtyWriter.js +12 -347
  202. package/dist/terminal/TtyWriter.js.map +1 -1
  203. package/dist/terminal/backends/ghostty.d.ts +3 -0
  204. package/dist/terminal/backends/ghostty.d.ts.map +1 -0
  205. package/dist/terminal/backends/ghostty.js +161 -0
  206. package/dist/terminal/backends/ghostty.js.map +1 -0
  207. package/dist/terminal/backends/index.d.ts +5 -0
  208. package/dist/terminal/backends/index.d.ts.map +1 -0
  209. package/dist/terminal/backends/index.js +21 -0
  210. package/dist/terminal/backends/index.js.map +1 -0
  211. package/dist/terminal/backends/iterm2.d.ts +3 -0
  212. package/dist/terminal/backends/iterm2.d.ts.map +1 -0
  213. package/dist/terminal/backends/iterm2.js +135 -0
  214. package/dist/terminal/backends/iterm2.js.map +1 -0
  215. package/dist/terminal/backends/shared.d.ts +9 -0
  216. package/dist/terminal/backends/shared.d.ts.map +1 -0
  217. package/dist/terminal/backends/shared.js +38 -0
  218. package/dist/terminal/backends/shared.js.map +1 -0
  219. package/dist/terminal/backends/terminal-app.d.ts +3 -0
  220. package/dist/terminal/backends/terminal-app.d.ts.map +1 -0
  221. package/dist/terminal/backends/terminal-app.js +129 -0
  222. package/dist/terminal/backends/terminal-app.js.map +1 -0
  223. package/dist/terminal/backends/tmux.d.ts +3 -0
  224. package/dist/terminal/backends/tmux.d.ts.map +1 -0
  225. package/dist/terminal/backends/tmux.js +76 -0
  226. package/dist/terminal/backends/tmux.js.map +1 -0
  227. package/dist/terminal/backends/wezterm.d.ts +3 -0
  228. package/dist/terminal/backends/wezterm.d.ts.map +1 -0
  229. package/dist/terminal/backends/wezterm.js +71 -0
  230. package/dist/terminal/backends/wezterm.js.map +1 -0
  231. package/dist/terminal/types.d.ts +22 -0
  232. package/dist/terminal/types.d.ts.map +1 -0
  233. package/dist/terminal/types.js +11 -0
  234. package/dist/terminal/types.js.map +1 -0
  235. package/dist/utils/process.d.ts +2 -0
  236. package/dist/utils/process.d.ts.map +1 -1
  237. package/dist/utils/process.js +3 -0
  238. package/dist/utils/process.js.map +1 -1
  239. package/package.json +1 -1
  240. package/src/AgentManager.ts +1 -1
  241. package/src/__tests__/capacity/anthropic.test.ts +105 -0
  242. package/src/__tests__/capacity/boundaries.test.ts +36 -0
  243. package/src/__tests__/capacity/claude.test.ts +3 -8
  244. package/src/__tests__/capacity/codex.test.ts +12 -35
  245. package/src/__tests__/capacity/fixtures/openai-codex-auth.json +1 -1
  246. package/src/__tests__/capacity/openai.test.ts +15 -15
  247. package/src/__tests__/capacity/wham.test.ts +1 -1
  248. package/src/__tests__/capacity/zai.test.ts +27 -62
  249. package/src/__tests__/harnesses/claude/durable/ClaudePrintAgent.integration.test.ts +2 -2
  250. package/src/__tests__/harnesses/claude/durable/ClaudePrintRunner.test.ts +1 -1
  251. package/src/__tests__/harnesses/codex/durable/CodexCliProbe.test.ts +14 -19
  252. package/src/__tests__/harnesses/codex/durable/CodexPrintAgent.integration.test.ts +3 -3
  253. package/src/__tests__/harnesses/codex/durable/CodexPrintAgentService.test.ts +24 -30
  254. package/src/__tests__/harnesses/codex/durable/CodexPrintRunner.test.ts +4 -8
  255. package/src/__tests__/harnesses/devin/DevinAdapter.test.ts +292 -0
  256. package/src/__tests__/harnesses/devin/DevinAgentMapper.test.ts +88 -0
  257. package/src/__tests__/harnesses/devin/DevinSessionLocator.test.ts +139 -0
  258. package/src/__tests__/harnesses/devin/DevinSessionParser.test.ts +218 -0
  259. package/src/__tests__/harnesses/devin/fixtures.ts +144 -0
  260. package/src/__tests__/harnesses/pi/durable/PiCliProbe.test.ts +7 -11
  261. package/src/__tests__/harnesses/pi/durable/PiPrintAgentService.test.ts +19 -22
  262. package/src/__tests__/harnesses/pi/durable/PiPrintRunner.test.ts +7 -8
  263. package/src/__tests__/{readiness → harnesses/readiness}/AgentReadiness.test.ts +77 -9
  264. package/src/__tests__/harnesses/runtimeProfiles.test.ts +110 -0
  265. package/src/__tests__/print/DurableAgent.test.ts +4 -13
  266. package/src/__tests__/print/DurableAgentRepository.test.ts +1 -13
  267. package/src/__tests__/runtime/ManagedAgentRuntime.test.ts +1 -1
  268. package/src/__tests__/terminal/GhosttyBackend.test.ts +271 -0
  269. package/src/__tests__/terminal/TmuxManager.test.ts +1 -1
  270. package/src/adapters/AgentAdapter.ts +1 -0
  271. package/src/capacity/index.ts +29 -23
  272. package/src/capacity/{claude.ts → providers/anthropic.ts} +16 -131
  273. package/src/capacity/providers/openai-platform.ts +150 -0
  274. package/src/capacity/{wham.ts → providers/openai-subscription.ts} +86 -8
  275. package/src/capacity/{zai.ts → providers/zai.ts} +29 -111
  276. package/src/capacity/sources/claude.ts +30 -0
  277. package/src/capacity/{codex.ts → sources/codex.ts} +54 -124
  278. package/src/capacity/sources/pi.ts +131 -0
  279. package/src/capacity/types.ts +3 -0
  280. package/src/harnesses/claude/credentials.ts +122 -0
  281. package/src/harnesses/claude/readiness.ts +69 -0
  282. package/src/harnesses/codex/credentials.ts +81 -0
  283. package/src/harnesses/codex/readiness.ts +72 -0
  284. package/src/harnesses/copilot/readiness.ts +33 -0
  285. package/src/harnesses/devin/DevinAdapter.ts +224 -0
  286. package/src/harnesses/devin/DevinAgentMapper.ts +43 -0
  287. package/src/harnesses/devin/DevinSessionLocator.ts +230 -0
  288. package/src/harnesses/devin/DevinSessionParser.ts +236 -0
  289. package/src/harnesses/devin/readiness.ts +36 -0
  290. package/src/harnesses/index.ts +2 -0
  291. package/src/harnesses/opencode/readiness.ts +48 -0
  292. package/src/harnesses/pi/credentials.ts +129 -0
  293. package/src/harnesses/pi/readiness.ts +104 -0
  294. package/src/harnesses/readiness/AgentReadiness.ts +89 -0
  295. package/src/harnesses/readiness/checks.ts +336 -0
  296. package/src/harnesses/readiness/types.ts +90 -0
  297. package/src/{utils/agents.ts → harnesses/runtimeProfiles.ts} +35 -38
  298. package/src/index.ts +15 -128
  299. package/src/runtime/ManagedAgentRuntime.ts +7 -22
  300. package/src/runtime/herdr/HerdrAgentDiscovery.ts +3 -19
  301. package/src/runtime/tmux/PidPolling.ts +1 -1
  302. package/src/runtime/tmux/TmuxAgentRuntime.ts +1 -1
  303. package/src/{terminal → runtime/tmux}/TmuxManager.ts +9 -30
  304. package/src/runtime/types.ts +1 -1
  305. package/src/terminal/TerminalFocusManager.ts +19 -292
  306. package/src/terminal/TtyWriter.ts +15 -335
  307. package/src/terminal/backends/ghostty.ts +180 -0
  308. package/src/terminal/backends/index.ts +23 -0
  309. package/src/terminal/backends/iterm2.ts +126 -0
  310. package/src/terminal/backends/shared.ts +47 -0
  311. package/src/terminal/backends/terminal-app.ts +122 -0
  312. package/src/terminal/backends/tmux.ts +62 -0
  313. package/src/terminal/backends/wezterm.ts +65 -0
  314. package/src/terminal/types.ts +23 -0
  315. package/src/utils/process.ts +5 -0
  316. package/dist/__tests__/readiness/AgentReadiness.test.js.map +0 -1
  317. package/dist/__tests__/utils/agents.test.js +0 -93
  318. package/dist/__tests__/utils/agents.test.js.map +0 -1
  319. package/dist/capacity/claude.d.ts +0 -17
  320. package/dist/capacity/claude.d.ts.map +0 -1
  321. package/dist/capacity/claude.js.map +0 -1
  322. package/dist/capacity/codex.d.ts.map +0 -1
  323. package/dist/capacity/codex.js.map +0 -1
  324. package/dist/capacity/openai.d.ts +0 -47
  325. package/dist/capacity/openai.d.ts.map +0 -1
  326. package/dist/capacity/openai.js +0 -307
  327. package/dist/capacity/openai.js.map +0 -1
  328. package/dist/capacity/wham.d.ts +0 -16
  329. package/dist/capacity/wham.d.ts.map +0 -1
  330. package/dist/capacity/wham.js +0 -66
  331. package/dist/capacity/wham.js.map +0 -1
  332. package/dist/capacity/zai.d.ts +0 -14
  333. package/dist/capacity/zai.d.ts.map +0 -1
  334. package/dist/capacity/zai.js.map +0 -1
  335. package/dist/readiness/AgentReadiness.d.ts.map +0 -1
  336. package/dist/readiness/AgentReadiness.js +0 -614
  337. package/dist/readiness/AgentReadiness.js.map +0 -1
  338. package/dist/terminal/TmuxManager.d.ts +0 -28
  339. package/dist/terminal/TmuxManager.d.ts.map +0 -1
  340. package/dist/terminal/TmuxManager.js.map +0 -1
  341. package/dist/terminal/index.d.ts +0 -5
  342. package/dist/terminal/index.d.ts.map +0 -1
  343. package/dist/terminal/index.js +0 -5
  344. package/dist/terminal/index.js.map +0 -1
  345. package/dist/utils/agents.d.ts +0 -16
  346. package/dist/utils/agents.d.ts.map +0 -1
  347. package/dist/utils/agents.js +0 -117
  348. package/dist/utils/agents.js.map +0 -1
  349. package/dist/utils/index.d.ts +0 -8
  350. package/dist/utils/index.d.ts.map +0 -1
  351. package/dist/utils/index.js +0 -6
  352. package/dist/utils/index.js.map +0 -1
  353. package/src/__tests__/utils/agents.test.ts +0 -105
  354. package/src/capacity/openai.ts +0 -355
  355. package/src/readiness/AgentReadiness.ts +0 -730
  356. package/src/terminal/index.ts +0 -4
  357. package/src/utils/index.ts +0 -14
@@ -1,18 +1,13 @@
1
1
  import { readFile } from "node:fs/promises";
2
2
  import { fileURLToPath } from "node:url";
3
3
  import { describe, expect, it, vi } from "vitest";
4
- import {
5
- parseZaiQuota,
6
- probeZaiCapacity,
7
- resolveZaiApiKey,
8
- } from "../../capacity/zai.js";
4
+ import { parseZaiCapacity } from "../../capacity/providers/zai.js";
5
+ import { probeZaiCapacity } from "../../capacity/sources/pi.js";
6
+ import { resolvePiZaiApiKey as resolveZaiApiKey } from "../../harnesses/pi/credentials.js";
9
7
 
10
8
  const checkedAt = "2026-08-20T10:00:00.000Z";
11
9
  const fixture = (name: string) =>
12
- readFile(
13
- fileURLToPath(new URL(`./fixtures/${name}`, import.meta.url)),
14
- "utf8",
15
- );
10
+ readFile(fileURLToPath(new URL(`./fixtures/${name}`, import.meta.url)), "utf8");
16
11
 
17
12
  describe("z.ai credential resolution", () => {
18
13
  it("prefers Z_AI_API_KEY without reading Pi auth", async () => {
@@ -31,44 +26,28 @@ describe("z.ai credential resolution", () => {
31
26
  await expect(
32
27
  resolveZaiApiKey({ env: { HOME: "/users/test" }, readFile: readAuth }),
33
28
  ).resolves.toBe("pi-zai-test-key");
34
- expect(readAuth).toHaveBeenCalledWith(
35
- "/users/test/.pi/agent/auth.json",
36
- "utf8",
37
- );
29
+ expect(readAuth).toHaveBeenCalledWith("/users/test/.pi/agent/auth.json", "utf8");
38
30
  });
39
31
 
40
32
  it.each([
41
33
  [
42
34
  "missing",
43
- async () =>
44
- Promise.reject(Object.assign(new Error("missing"), { code: "ENOENT" })),
35
+ async () => Promise.reject(Object.assign(new Error("missing"), { code: "ENOENT" })),
45
36
  ],
46
37
  ["invalid JSON", async () => "{"],
47
- [
48
- "wrong credential type",
49
- async () => JSON.stringify({ zai: { type: "oauth", key: "x" } }),
50
- ],
38
+ ["wrong credential type", async () => JSON.stringify({ zai: { type: "oauth", key: "x" } })],
51
39
  ["missing key", async () => JSON.stringify({ zai: { type: "api_key" } })],
52
- ])(
53
- "fails clearly for %s credentials without exposing file content",
54
- async (_name, readAuth) => {
55
- await expect(
56
- resolveZaiApiKey({ env: { HOME: "/users/test" }, readFile: readAuth }),
57
- ).rejects.toThrow(/z\.ai API key|z\.ai Pi auth file/);
58
- },
59
- );
40
+ ])("fails clearly for %s credentials without exposing file content", async (_name, readAuth) => {
41
+ await expect(
42
+ resolveZaiApiKey({ env: { HOME: "/users/test" }, readFile: readAuth }),
43
+ ).rejects.toThrow(/z\.ai API key|z\.ai Pi auth file/);
44
+ });
60
45
  });
61
46
 
62
47
  describe("z.ai quota mapping", () => {
63
48
  it("maps token, credit, and monthly MCP windows with recomputed usage", async () => {
64
- const report = parseZaiQuota(
65
- JSON.parse(await fixture("zai-quota.json")),
66
- checkedAt,
67
- );
49
+ const report = parseZaiCapacity(JSON.parse(await fixture("zai-quota.json")));
68
50
  expect(report).toMatchObject({
69
- harness: "pi",
70
- provider: "zai",
71
- generatedAt: checkedAt,
72
51
  authenticated: true,
73
52
  available: "yes",
74
53
  creditsRemaining: null,
@@ -111,40 +90,26 @@ describe("z.ai quota mapping", () => {
111
90
  });
112
91
 
113
92
  it("uses and clamps the server percentage when quota amounts are unavailable", () => {
114
- const report = parseZaiQuota(
115
- {
116
- success: true,
117
- code: 200,
118
- data: {
119
- limits: [
120
- { type: "TOKENS_LIMIT", unit: 1, number: 1, percentage: 120 },
121
- { type: "CREDIT_LIMIT", unit: 5, number: 30, percentage: -5 },
122
- ],
123
- },
93
+ const report = parseZaiCapacity({
94
+ success: true,
95
+ code: 200,
96
+ data: {
97
+ limits: [
98
+ { type: "TOKENS_LIMIT", unit: 1, number: 1, percentage: 120 },
99
+ { type: "CREDIT_LIMIT", unit: 5, number: 30, percentage: -5 },
100
+ ],
124
101
  },
125
- checkedAt,
126
- );
127
- expect(report.windows.map((window) => window.usedPercent)).toEqual([
128
- 100, 0,
129
- ]);
102
+ });
103
+ expect(report.windows.map((window) => window.usedPercent)).toEqual([100, 0]);
130
104
  });
131
105
 
132
106
  it.each([
133
- [
134
- "invalid fixture",
135
- async () => JSON.parse(await fixture("zai-quota-invalid.json")),
136
- ],
137
- [
138
- "unsuccessful envelope",
139
- async () => ({ success: false, code: 401, data: { limits: [] } }),
140
- ],
141
- [
142
- "invalid entry",
143
- async () => ({ success: true, code: 200, data: { limits: [{}] } }),
144
- ],
107
+ ["invalid fixture", async () => JSON.parse(await fixture("zai-quota-invalid.json"))],
108
+ ["unsuccessful envelope", async () => ({ success: false, code: 401, data: { limits: [] } })],
109
+ ["invalid entry", async () => ({ success: true, code: 200, data: { limits: [{}] } })],
145
110
  ])("rejects %s", async (_name, input) => {
146
111
  const value = await input();
147
- expect(() => parseZaiQuota(value, checkedAt)).toThrow(/z\.ai quota/);
112
+ expect(() => parseZaiCapacity(value)).toThrow(/z\.ai quota/);
148
113
  });
149
114
  });
150
115
 
@@ -3,10 +3,10 @@ import os from "node:os";
3
3
  import path from "node:path";
4
4
  import { afterEach, describe, expect, it, vi } from "vitest";
5
5
  import {
6
- ClaudePrintAgentService,
7
6
  DurableAgentRepository,
8
7
  type ProcessInspector,
9
- } from "../../../../index.js";
8
+ } from "../../../../durable/DurableAgentRepository.js";
9
+ import { ClaudePrintAgentService } from "../../../../harnesses/claude/durable/ClaudePrintAgentService.js";
10
10
 
11
11
  const roots: string[] = [];
12
12
 
@@ -1,7 +1,7 @@
1
1
  import { EventEmitter } from "node:events";
2
2
  import { PassThrough, Writable } from "node:stream";
3
3
  import { describe, expect, it, vi } from "vitest";
4
- import type { DurableAgent } from "../../../../index.js";
4
+ import type { DurableAgent } from "../../../../durable/DurableAgent.js";
5
5
  import { ClaudePrintRunner } from "../../../../harnesses/claude/durable/ClaudePrintRunner.js";
6
6
 
7
7
  function agent(): DurableAgent {
@@ -1,9 +1,8 @@
1
1
  import { describe, expect, it, vi } from "vitest";
2
+ import { CodexCliProbe } from "../../../../harnesses/codex/durable/CodexCliProbe.js";
2
3
 
3
4
  describe("CodexCliProbe", () => {
4
5
  it("validates version, exec JSON/stdin, and resume capabilities without a model call", async () => {
5
- const api = (await import("../../../../index.js")) as Record<string, unknown>;
6
- expect(api).toHaveProperty("CodexCliProbe");
7
6
  const exec = vi
8
7
  .fn()
9
8
  .mockResolvedValueOnce({ stdout: "codex-cli 0.147.0", stderr: "" })
@@ -15,12 +14,12 @@ describe("CodexCliProbe", () => {
15
14
  stdout: "Usage: codex exec resume [SESSION_ID] [PROMPT]\n--json\n- stdin",
16
15
  stderr: "",
17
16
  });
18
- const Probe = api.CodexCliProbe as new (options: unknown) => any;
19
-
20
- await expect(new Probe({ executable: "fake-codex", exec }).validate()).resolves.toEqual({
21
- executable: "fake-codex",
22
- version: "codex-cli 0.147.0",
23
- });
17
+ await expect(new CodexCliProbe({ executable: "fake-codex", exec }).validate()).resolves.toEqual(
18
+ {
19
+ executable: "fake-codex",
20
+ version: "codex-cli 0.147.0",
21
+ },
22
+ );
24
23
  expect(exec.mock.calls).toEqual([
25
24
  ["fake-codex", ["--version"]],
26
25
  ["fake-codex", ["exec", "--help"]],
@@ -29,9 +28,7 @@ describe("CodexCliProbe", () => {
29
28
  });
30
29
 
31
30
  it("rejects unsupported and unavailable CLIs with bounded sanitized errors", async () => {
32
- const api = (await import("../../../../index.js")) as Record<string, unknown>;
33
- const Probe = api.CodexCliProbe as new (options: unknown) => any;
34
- const unsupported = new Probe({
31
+ const unsupported = new CodexCliProbe({
35
32
  exec: vi
36
33
  .fn()
37
34
  .mockResolvedValueOnce({ stdout: "version", stderr: "" })
@@ -39,7 +36,7 @@ describe("CodexCliProbe", () => {
39
36
  .mockResolvedValueOnce({ stdout: "resume", stderr: "" }),
40
37
  });
41
38
  await expect(unsupported.validate()).rejects.toMatchObject({ code: "CODEX_CLI_UNSUPPORTED" });
42
- const missingCommands = new Probe({
39
+ const missingCommands = new CodexCliProbe({
43
40
  exec: vi
44
41
  .fn()
45
42
  .mockResolvedValueOnce({ stdout: "version", stderr: "" })
@@ -50,7 +47,7 @@ describe("CodexCliProbe", () => {
50
47
  code: "CODEX_CLI_UNSUPPORTED",
51
48
  });
52
49
 
53
- const unavailable = new Probe({
50
+ const unavailable = new CodexCliProbe({
54
51
  exec: vi.fn().mockRejectedValue(new Error(`bad\0${"x".repeat(1000)}`)),
55
52
  });
56
53
  const error = await unavailable.validate().catch((value: Error & { code: string }) => value);
@@ -60,25 +57,23 @@ describe("CodexCliProbe", () => {
60
57
  });
61
58
 
62
59
  it("reports an empty version response as unknown", async () => {
63
- const api = (await import("../../../../index.js")) as Record<string, unknown>;
64
- const Probe = api.CodexCliProbe as new (options: unknown) => any;
65
60
  const exec = vi
66
61
  .fn()
67
62
  .mockResolvedValueOnce({ stdout: " \n", stderr: "" })
68
63
  .mockResolvedValueOnce({ stdout: "exec --json -", stderr: "" })
69
64
  .mockResolvedValueOnce({ stdout: "resume --json -", stderr: "" });
70
- await expect(new Probe({ exec }).validate()).resolves.toMatchObject({ version: "unknown" });
65
+ await expect(new CodexCliProbe({ exec }).validate()).resolves.toMatchObject({
66
+ version: "unknown",
67
+ });
71
68
  });
72
69
 
73
70
  it("requires a standalone stdin dash rather than accepting flag hyphens", async () => {
74
- const api = (await import("../../../../index.js")) as Record<string, unknown>;
75
- const Probe = api.CodexCliProbe as new (options: unknown) => any;
76
71
  const exec = vi
77
72
  .fn()
78
73
  .mockResolvedValueOnce({ stdout: "version", stderr: "" })
79
74
  .mockResolvedValueOnce({ stdout: "exec --json", stderr: "" })
80
75
  .mockResolvedValueOnce({ stdout: "resume --json", stderr: "" });
81
- await expect(new Probe({ exec }).validate()).rejects.toMatchObject({
76
+ await expect(new CodexCliProbe({ exec }).validate()).rejects.toMatchObject({
82
77
  code: "CODEX_CLI_UNSUPPORTED",
83
78
  });
84
79
  });
@@ -2,12 +2,12 @@ import fs from "node:fs";
2
2
  import os from "node:os";
3
3
  import path from "node:path";
4
4
  import { afterEach, describe, expect, it, vi } from "vitest";
5
+ import { CodexPrintError } from "../../../../durable/DurableAgent.js";
5
6
  import {
6
- CodexPrintError,
7
- CodexPrintAgentService,
8
7
  DurableAgentRepository,
9
8
  type ProcessInspector,
10
- } from "../../../../index.js";
9
+ } from "../../../../durable/DurableAgentRepository.js";
10
+ import { CodexPrintAgentService } from "../../../../harnesses/codex/durable/CodexPrintAgentService.js";
11
11
 
12
12
  const SESSION = "22222222-2222-4222-8222-222222222222";
13
13
  const roots: string[] = [];
@@ -1,4 +1,6 @@
1
1
  import { describe, expect, it, vi } from "vitest";
2
+ import { CodexPrintError } from "../../../../durable/DurableAgent.js";
3
+ import { CodexPrintAgentService } from "../../../../harnesses/codex/durable/CodexPrintAgentService.js";
2
4
 
3
5
  const SESSION = "22222222-2222-4222-8222-222222222222";
4
6
  const base = {
@@ -11,15 +13,15 @@ const base = {
11
13
 
12
14
  describe("CodexPrintAgentService", () => {
13
15
  it("validates before provider-aware create and never runs Codex", async () => {
14
- const api = (await import("../../../../index.js")) as Record<string, unknown>;
15
- expect(api).toHaveProperty("CodexPrintAgentService");
16
16
  const probe = {
17
17
  validate: vi.fn().mockResolvedValue({ executable: "codex", version: "0.147.0" }),
18
18
  };
19
19
  const repository = { create: vi.fn().mockResolvedValue(base) };
20
20
  const runner = { run: vi.fn() };
21
- const Service = api.CodexPrintAgentService as new (options: unknown) => any;
22
- await new Service({ repository, probe, runner }).create({ name: "reviewer", cwd: "/project" });
21
+ await new CodexPrintAgentService({ repository, probe, runner }).create({
22
+ name: "reviewer",
23
+ cwd: "/project",
24
+ });
23
25
  expect(repository.create).toHaveBeenCalledWith({
24
26
  name: "reviewer",
25
27
  cwd: "/project",
@@ -29,7 +31,6 @@ describe("CodexPrintAgentService", () => {
29
31
  });
30
32
 
31
33
  it("binds during first send and explicitly resumes later sends", async () => {
32
- const api = (await import("../../../../index.js")) as Record<string, unknown>;
33
34
  const repository = {
34
35
  resolve: vi.fn().mockResolvedValue(base),
35
36
  acquireRun: vi
@@ -50,8 +51,7 @@ describe("CodexPrintAgentService", () => {
50
51
  return { sessionId: SESSION, result: "answer", messages: ["answer"], exitCode: 0 };
51
52
  }),
52
53
  };
53
- const Service = api.CodexPrintAgentService as new (options: unknown) => any;
54
- const service = new Service({
54
+ const service = new CodexPrintAgentService({
55
55
  repository,
56
56
  probe: { validate: vi.fn() },
57
57
  runner,
@@ -74,8 +74,6 @@ describe("CodexPrintAgentService", () => {
74
74
  });
75
75
 
76
76
  it("records mismatch separately from unknown failures", async () => {
77
- const api = (await import("../../../../index.js")) as Record<string, unknown>;
78
- const ErrorType = api.CodexPrintError as new (message: string, code: string) => Error;
79
77
  const completeRun = vi.fn();
80
78
  const repository = {
81
79
  resolve: vi.fn().mockResolvedValue(base),
@@ -84,12 +82,11 @@ describe("CodexPrintAgentService", () => {
84
82
  bindProviderSession: vi.fn(),
85
83
  completeRun,
86
84
  };
87
- const Service = api.CodexPrintAgentService as new (options: unknown) => any;
88
- const service = new Service({
85
+ const service = new CodexPrintAgentService({
89
86
  repository,
90
87
  probe: { validate: vi.fn() },
91
88
  runner: {
92
- run: vi.fn().mockRejectedValue(new ErrorType("mismatch", "CODEX_SESSION_MISMATCH")),
89
+ run: vi.fn().mockRejectedValue(new CodexPrintError("mismatch", "CODEX_SESSION_MISMATCH")),
93
90
  },
94
91
  });
95
92
  await expect(service.send("reviewer", "x")).rejects.toMatchObject({
@@ -103,8 +100,6 @@ describe("CodexPrintAgentService", () => {
103
100
  });
104
101
 
105
102
  it("rejects a non-Codex target without acquiring or mutating it", async () => {
106
- const api = (await import("../../../../index.js")) as Record<string, unknown>;
107
- const Service = api.CodexPrintAgentService as new (options: unknown) => any;
108
103
  const repository = {
109
104
  resolve: vi.fn().mockResolvedValue({ ...base, provider: "claude" }),
110
105
  acquireRun: vi.fn(),
@@ -114,18 +109,17 @@ describe("CodexPrintAgentService", () => {
114
109
  };
115
110
 
116
111
  await expect(
117
- new Service({ repository, probe: { validate: vi.fn() }, runner: { run: vi.fn() } }).send(
118
- "reviewer",
119
- "x",
120
- ),
112
+ new CodexPrintAgentService({
113
+ repository,
114
+ probe: { validate: vi.fn() },
115
+ runner: { run: vi.fn() },
116
+ }).send("reviewer", "x"),
121
117
  ).rejects.toMatchObject({ code: "CODEX_UNSUPPORTED" });
122
118
  expect(repository.acquireRun).not.toHaveBeenCalled();
123
119
  expect(repository.completeRun).not.toHaveBeenCalled();
124
120
  });
125
121
 
126
122
  it("does not turn a successful completion write failure into a second completion", async () => {
127
- const api = (await import("../../../../index.js")) as Record<string, unknown>;
128
- const Service = api.CodexPrintAgentService as new (options: unknown) => any;
129
123
  const completionFailure = new Error("completion failed");
130
124
  const repository = {
131
125
  resolve: vi.fn().mockResolvedValue(base),
@@ -144,14 +138,15 @@ describe("CodexPrintAgentService", () => {
144
138
  };
145
139
 
146
140
  await expect(
147
- new Service({ repository, probe: { validate: vi.fn() }, runner }).send("reviewer", "x"),
141
+ new CodexPrintAgentService({ repository, probe: { validate: vi.fn() }, runner }).send(
142
+ "reviewer",
143
+ "x",
144
+ ),
148
145
  ).rejects.toBe(completionFailure);
149
146
  expect(repository.completeRun).toHaveBeenCalledOnce();
150
147
  });
151
148
 
152
149
  it("records a repository binding conflict as a session mismatch", async () => {
153
- const api = (await import("../../../../index.js")) as Record<string, unknown>;
154
- const BindingError = api.CodexPrintError as new (message: string, code: string) => Error;
155
150
  const completeRun = vi.fn();
156
151
  const repository = {
157
152
  resolve: vi.fn().mockResolvedValue(base),
@@ -159,7 +154,7 @@ describe("CodexPrintAgentService", () => {
159
154
  recordProviderProcess: vi.fn(),
160
155
  bindProviderSession: vi
161
156
  .fn()
162
- .mockRejectedValue(new BindingError("binding mismatch", "CODEX_SESSION_MISMATCH")),
157
+ .mockRejectedValue(new CodexPrintError("binding mismatch", "CODEX_SESSION_MISMATCH")),
163
158
  completeRun,
164
159
  };
165
160
  const runner = {
@@ -168,10 +163,11 @@ describe("CodexPrintAgentService", () => {
168
163
  return { sessionId: SESSION, result: "x", messages: ["x"], exitCode: 0 };
169
164
  }),
170
165
  };
171
- const Service = api.CodexPrintAgentService as new (options: unknown) => any;
172
-
173
166
  await expect(
174
- new Service({ repository, probe: { validate: vi.fn() }, runner }).send("reviewer", "x"),
167
+ new CodexPrintAgentService({ repository, probe: { validate: vi.fn() }, runner }).send(
168
+ "reviewer",
169
+ "x",
170
+ ),
175
171
  ).rejects.toMatchObject({ code: "CODEX_SESSION_MISMATCH" });
176
172
  expect(completeRun).toHaveBeenCalledWith(
177
173
  "id",
@@ -181,8 +177,6 @@ describe("CodexPrintAgentService", () => {
181
177
  });
182
178
 
183
179
  it("rejects missing and ambiguous records before acquiring a run", async () => {
184
- const api = (await import("../../../../index.js")) as Record<string, unknown>;
185
- const Service = api.CodexPrintAgentService as new (options: unknown) => any;
186
180
  const repository = {
187
181
  create: vi.fn(),
188
182
  resolve: vi.fn().mockResolvedValueOnce(null).mockResolvedValueOnce([base, base]),
@@ -191,7 +185,7 @@ describe("CodexPrintAgentService", () => {
191
185
  bindProviderSession: vi.fn(),
192
186
  completeRun: vi.fn(),
193
187
  };
194
- const service = new Service({
188
+ const service = new CodexPrintAgentService({
195
189
  repository,
196
190
  probe: { validate: vi.fn() },
197
191
  runner: { run: vi.fn() },
@@ -1,7 +1,8 @@
1
1
  import { EventEmitter } from "node:events";
2
2
  import { PassThrough, Writable } from "node:stream";
3
3
  import { describe, expect, it, vi } from "vitest";
4
- import type { CodexDurableAgent } from "../../../../index.js";
4
+ import type { CodexDurableAgent } from "../../../../durable/DurableAgent.js";
5
+ import { CodexPrintRunner } from "../../../../harnesses/codex/durable/CodexPrintRunner.js";
5
6
 
6
7
  const SESSION = "22222222-2222-4222-8222-222222222222";
7
8
 
@@ -64,10 +65,7 @@ function events(session = SESSION): string[] {
64
65
  }
65
66
 
66
67
  async function runner(fixture: ReturnType<typeof fakeSpawn>, maxLineBytes?: number) {
67
- const api = (await import("../../../../index.js")) as Record<string, unknown>;
68
- expect(api).toHaveProperty("CodexPrintRunner");
69
- const Runner = api.CodexPrintRunner as new (options: unknown) => any;
70
- return new Runner({
68
+ return new CodexPrintRunner({
71
69
  spawn: fixture.spawn,
72
70
  maxLineBytes,
73
71
  processInspector: {
@@ -262,10 +260,8 @@ describe("CodexPrintRunner", () => {
262
260
  });
263
261
 
264
262
  it("rejects an unverifiable positive PID", async () => {
265
- const api = (await import("../../../../index.js")) as Record<string, unknown>;
266
263
  const fixture = fakeSpawn([]);
267
- const Runner = api.CodexPrintRunner as new (options: unknown) => any;
268
- const instance = new Runner({
264
+ const instance = new CodexPrintRunner({
269
265
  spawn: fixture.spawn,
270
266
  processInspector: { getIdentity: () => null },
271
267
  });