@ai-devkit/agent-manager 0.31.0 → 0.33.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 (519) hide show
  1. package/dist/AgentManager.d.ts +3 -3
  2. package/dist/AgentManager.d.ts.map +1 -1
  3. package/dist/AgentManager.js +80 -79
  4. package/dist/AgentManager.js.map +1 -1
  5. package/dist/__tests__/AgentManager.test.js +413 -388
  6. package/dist/__tests__/AgentManager.test.js.map +1 -1
  7. package/dist/__tests__/adapters/ClaudeCodeAdapter.test.js +642 -642
  8. package/dist/__tests__/adapters/ClaudeCodeAdapter.test.js.map +1 -1
  9. package/dist/__tests__/adapters/CodexAdapter.test.js +322 -2321
  10. package/dist/__tests__/adapters/CodexAdapter.test.js.map +1 -1
  11. package/dist/__tests__/adapters/CopilotAdapter.test.js +254 -248
  12. package/dist/__tests__/adapters/CopilotAdapter.test.js.map +1 -1
  13. package/dist/__tests__/adapters/GeminiCliAdapter.test.js +564 -558
  14. package/dist/__tests__/adapters/GeminiCliAdapter.test.js.map +1 -1
  15. package/dist/__tests__/adapters/GrokCliAdapter.test.js +114 -114
  16. package/dist/__tests__/adapters/GrokCliAdapter.test.js.map +1 -1
  17. package/dist/__tests__/adapters/OpenCodeAdapter.test.js +169 -169
  18. package/dist/__tests__/adapters/OpenCodeAdapter.test.js.map +1 -1
  19. package/dist/__tests__/capacity/codex.test.js +93 -93
  20. package/dist/__tests__/capacity/codex.test.js.map +1 -1
  21. package/dist/__tests__/capacity/index.test.js +17 -17
  22. package/dist/__tests__/capacity/index.test.js.map +1 -1
  23. package/dist/__tests__/durable/CodexCliProbe.test.js +60 -60
  24. package/dist/__tests__/durable/CodexCliProbe.test.js.map +1 -1
  25. package/dist/__tests__/durable/CodexDurableAgentRepository.test.js +28 -28
  26. package/dist/__tests__/durable/CodexDurableAgentRepository.test.js.map +1 -1
  27. package/dist/__tests__/durable/CodexPrintAgent.integration.test.js +30 -30
  28. package/dist/__tests__/durable/CodexPrintAgent.integration.test.js.map +1 -1
  29. package/dist/__tests__/durable/CodexPrintAgentService.test.js +71 -71
  30. package/dist/__tests__/durable/CodexPrintAgentService.test.js.map +1 -1
  31. package/dist/__tests__/durable/CodexPrintRunner.test.js +125 -125
  32. package/dist/__tests__/durable/CodexPrintRunner.test.js.map +1 -1
  33. package/dist/__tests__/print/ClaudeCliProbe.test.js +20 -20
  34. package/dist/__tests__/print/ClaudeCliProbe.test.js.map +1 -1
  35. package/dist/__tests__/print/ClaudePrintAgent.integration.test.js +20 -20
  36. package/dist/__tests__/print/ClaudePrintAgent.integration.test.js.map +1 -1
  37. package/dist/__tests__/print/ClaudePrintAgentService.test.js +58 -58
  38. package/dist/__tests__/print/ClaudePrintAgentService.test.js.map +1 -1
  39. package/dist/__tests__/print/ClaudePrintRunner.test.js +55 -55
  40. package/dist/__tests__/print/ClaudePrintRunner.test.js.map +1 -1
  41. package/dist/__tests__/print/DurableAgent.test.js +9 -9
  42. package/dist/__tests__/print/DurableAgent.test.js.map +1 -1
  43. package/dist/__tests__/print/DurableAgentRepository.sqlite.test.js +40 -40
  44. package/dist/__tests__/print/DurableAgentRepository.sqlite.test.js.map +1 -1
  45. package/dist/__tests__/print/DurableAgentRepository.test.js +66 -66
  46. package/dist/__tests__/print/DurableAgentRepository.test.js.map +1 -1
  47. package/dist/__tests__/providers/claude/ClaudeAgentMapper.test.js +34 -34
  48. package/dist/__tests__/providers/claude/ClaudeAgentMapper.test.js.map +1 -1
  49. package/dist/__tests__/providers/claude/ClaudeSessionLocator.test.js +132 -132
  50. package/dist/__tests__/providers/claude/ClaudeSessionLocator.test.js.map +1 -1
  51. package/dist/__tests__/providers/codex/CodexSessionLocator.test.js +194 -0
  52. package/dist/__tests__/providers/codex/CodexSessionLocator.test.js.map +1 -0
  53. package/dist/__tests__/providers/codex/CodexSessionMapping.test.js +86 -0
  54. package/dist/__tests__/providers/codex/CodexSessionMapping.test.js.map +1 -0
  55. package/dist/__tests__/providers/codex/CodexSessionParser.test.js +254 -0
  56. package/dist/__tests__/providers/codex/CodexSessionParser.test.js.map +1 -0
  57. package/dist/__tests__/providers/pi/PiAdapter.test.js +337 -0
  58. package/dist/__tests__/providers/pi/PiAdapter.test.js.map +1 -0
  59. package/dist/__tests__/providers/pi/PiSessionParser.test.js +246 -0
  60. package/dist/__tests__/providers/pi/PiSessionParser.test.js.map +1 -0
  61. package/dist/__tests__/providers/pi/PiSessionTracker.test.js +108 -0
  62. package/dist/__tests__/providers/pi/PiSessionTracker.test.js.map +1 -0
  63. package/dist/__tests__/providers/pi/durable/PiCliProbe.test.js +33 -33
  64. package/dist/__tests__/providers/pi/durable/PiCliProbe.test.js.map +1 -1
  65. package/dist/__tests__/providers/pi/durable/PiDurableAgentRepository.test.js +16 -16
  66. package/dist/__tests__/providers/pi/durable/PiDurableAgentRepository.test.js.map +1 -1
  67. package/dist/__tests__/providers/pi/durable/PiPrintAgentService.test.js +52 -52
  68. package/dist/__tests__/providers/pi/durable/PiPrintAgentService.test.js.map +1 -1
  69. package/dist/__tests__/providers/pi/durable/PiPrintProtocol.test.js +44 -44
  70. package/dist/__tests__/providers/pi/durable/PiPrintProtocol.test.js.map +1 -1
  71. package/dist/__tests__/providers/pi/durable/PiPrintRunner.test.js +126 -126
  72. package/dist/__tests__/providers/pi/durable/PiPrintRunner.test.js.map +1 -1
  73. package/dist/__tests__/providers/pi/durable/PiStreamParser.test.js +14 -14
  74. package/dist/__tests__/providers/pi/durable/PiStreamParser.test.js.map +1 -1
  75. package/dist/__tests__/readiness/AgentReadiness.test.js +301 -0
  76. package/dist/__tests__/readiness/AgentReadiness.test.js.map +1 -0
  77. package/dist/__tests__/runtime/AgentRuntime.test.js +13 -0
  78. package/dist/__tests__/runtime/AgentRuntime.test.js.map +1 -0
  79. package/dist/__tests__/runtime/HerdrAgentRuntime.test.js +452 -0
  80. package/dist/__tests__/runtime/HerdrAgentRuntime.test.js.map +1 -0
  81. package/dist/__tests__/runtime/ManagedAgentRuntime.test.js +588 -0
  82. package/dist/__tests__/runtime/ManagedAgentRuntime.test.js.map +1 -0
  83. package/dist/__tests__/terminal/TerminalFocusManager.test.js +100 -100
  84. package/dist/__tests__/terminal/TerminalFocusManager.test.js.map +1 -1
  85. package/dist/__tests__/terminal/TmuxManager.test.js +101 -101
  86. package/dist/__tests__/terminal/TmuxManager.test.js.map +1 -1
  87. package/dist/__tests__/terminal/TtyWriter.test.js +185 -185
  88. package/dist/__tests__/terminal/TtyWriter.test.js.map +1 -1
  89. package/dist/__tests__/utils/AgentRegistry.test.js +335 -217
  90. package/dist/__tests__/utils/AgentRegistry.test.js.map +1 -1
  91. package/dist/__tests__/utils/ClaudeSessionParser.test.js +103 -101
  92. package/dist/__tests__/utils/ClaudeSessionParser.test.js.map +1 -1
  93. package/dist/__tests__/utils/agent-requests.test.js +43 -43
  94. package/dist/__tests__/utils/agent-requests.test.js.map +1 -1
  95. package/dist/__tests__/utils/agents.test.js +17 -17
  96. package/dist/__tests__/utils/agents.test.js.map +1 -1
  97. package/dist/__tests__/utils/matching.test.js +92 -92
  98. package/dist/__tests__/utils/matching.test.js.map +1 -1
  99. package/dist/__tests__/utils/process.test.js +108 -108
  100. package/dist/__tests__/utils/process.test.js.map +1 -1
  101. package/dist/__tests__/utils/session.test.js +53 -53
  102. package/dist/__tests__/utils/session.test.js.map +1 -1
  103. package/dist/adapters/AgentAdapter.d.ts +2 -2
  104. package/dist/adapters/AgentAdapter.d.ts.map +1 -1
  105. package/dist/adapters/AgentAdapter.js +1 -1
  106. package/dist/adapters/AgentAdapter.js.map +1 -1
  107. package/dist/adapters/CopilotAdapter.d.ts +2 -2
  108. package/dist/adapters/CopilotAdapter.d.ts.map +1 -1
  109. package/dist/adapters/CopilotAdapter.js +51 -51
  110. package/dist/adapters/CopilotAdapter.js.map +1 -1
  111. package/dist/adapters/GeminiCliAdapter.d.ts +2 -2
  112. package/dist/adapters/GeminiCliAdapter.d.ts.map +1 -1
  113. package/dist/adapters/GeminiCliAdapter.js +86 -86
  114. package/dist/adapters/GeminiCliAdapter.js.map +1 -1
  115. package/dist/adapters/GrokCliAdapter.d.ts +1 -1
  116. package/dist/adapters/GrokCliAdapter.d.ts.map +1 -1
  117. package/dist/adapters/GrokCliAdapter.js +80 -80
  118. package/dist/adapters/GrokCliAdapter.js.map +1 -1
  119. package/dist/adapters/OpenCodeAdapter.d.ts +1 -1
  120. package/dist/adapters/OpenCodeAdapter.d.ts.map +1 -1
  121. package/dist/adapters/OpenCodeAdapter.js +37 -36
  122. package/dist/adapters/OpenCodeAdapter.js.map +1 -1
  123. package/dist/adapters/index.d.ts +9 -9
  124. package/dist/adapters/index.d.ts.map +1 -1
  125. package/dist/adapters/index.js +8 -8
  126. package/dist/adapters/index.js.map +1 -1
  127. package/dist/capacity/codex.d.ts +3 -3
  128. package/dist/capacity/codex.d.ts.map +1 -1
  129. package/dist/capacity/codex.js +57 -57
  130. package/dist/capacity/codex.js.map +1 -1
  131. package/dist/capacity/index.d.ts +3 -3
  132. package/dist/capacity/index.d.ts.map +1 -1
  133. package/dist/capacity/index.js +8 -8
  134. package/dist/capacity/index.js.map +1 -1
  135. package/dist/capacity/types.d.ts +1 -1
  136. package/dist/capacity/types.js.map +1 -1
  137. package/dist/database/connection.d.ts +1 -1
  138. package/dist/database/connection.d.ts.map +1 -1
  139. package/dist/database/connection.js +15 -15
  140. package/dist/database/connection.js.map +1 -1
  141. package/dist/database/index.d.ts +3 -3
  142. package/dist/database/index.d.ts.map +1 -1
  143. package/dist/database/index.js +2 -2
  144. package/dist/database/index.js.map +1 -1
  145. package/dist/database/migrations/005_agent_runtime.sql +2 -0
  146. package/dist/database/schema.d.ts +1 -1
  147. package/dist/database/schema.d.ts.map +1 -1
  148. package/dist/database/schema.js +7 -7
  149. package/dist/database/schema.js.map +1 -1
  150. package/dist/durable/DurableAgent.d.ts +9 -9
  151. package/dist/durable/DurableAgent.d.ts.map +1 -1
  152. package/dist/durable/DurableAgent.js +16 -16
  153. package/dist/durable/DurableAgent.js.map +1 -1
  154. package/dist/durable/DurableAgentRepository.d.ts +4 -4
  155. package/dist/durable/DurableAgentRepository.d.ts.map +1 -1
  156. package/dist/durable/DurableAgentRepository.js +49 -48
  157. package/dist/durable/DurableAgentRepository.js.map +1 -1
  158. package/dist/durable/process.d.ts +1 -1
  159. package/dist/durable/process.d.ts.map +1 -1
  160. package/dist/durable/process.js +14 -14
  161. package/dist/durable/process.js.map +1 -1
  162. package/dist/durable/run.d.ts +2 -2
  163. package/dist/durable/run.d.ts.map +1 -1
  164. package/dist/durable/run.js +6 -6
  165. package/dist/durable/run.js.map +1 -1
  166. package/dist/durable/utils.d.ts +1 -1
  167. package/dist/durable/utils.d.ts.map +1 -1
  168. package/dist/durable/utils.js +4 -4
  169. package/dist/durable/utils.js.map +1 -1
  170. package/dist/index.d.ts +46 -41
  171. package/dist/index.d.ts.map +1 -1
  172. package/dist/index.js +27 -25
  173. package/dist/index.js.map +1 -1
  174. package/dist/providers/claude/ClaudeAgentMapper.d.ts +4 -4
  175. package/dist/providers/claude/ClaudeAgentMapper.d.ts.map +1 -1
  176. package/dist/providers/claude/ClaudeAgentMapper.js +10 -10
  177. package/dist/providers/claude/ClaudeAgentMapper.js.map +1 -1
  178. package/dist/providers/claude/ClaudeCodeAdapter.d.ts +1 -1
  179. package/dist/providers/claude/ClaudeCodeAdapter.d.ts.map +1 -1
  180. package/dist/providers/claude/ClaudeCodeAdapter.js +14 -14
  181. package/dist/providers/claude/ClaudeCodeAdapter.js.map +1 -1
  182. package/dist/providers/claude/ClaudeSessionLocator.d.ts +4 -4
  183. package/dist/providers/claude/ClaudeSessionLocator.d.ts.map +1 -1
  184. package/dist/providers/claude/ClaudeSessionLocator.js +79 -79
  185. package/dist/providers/claude/ClaudeSessionLocator.js.map +1 -1
  186. package/dist/providers/claude/ClaudeSessionParser.d.ts +2 -2
  187. package/dist/providers/claude/ClaudeSessionParser.d.ts.map +1 -1
  188. package/dist/providers/claude/ClaudeSessionParser.js +99 -99
  189. package/dist/providers/claude/ClaudeSessionParser.js.map +1 -1
  190. package/dist/providers/claude/durable/ClaudeCliProbe.d.ts.map +1 -1
  191. package/dist/providers/claude/durable/ClaudeCliProbe.js +16 -16
  192. package/dist/providers/claude/durable/ClaudeCliProbe.js.map +1 -1
  193. package/dist/providers/claude/durable/ClaudePrintAgentService.d.ts +5 -5
  194. package/dist/providers/claude/durable/ClaudePrintAgentService.d.ts.map +1 -1
  195. package/dist/providers/claude/durable/ClaudePrintAgentService.js +10 -10
  196. package/dist/providers/claude/durable/ClaudePrintAgentService.js.map +1 -1
  197. package/dist/providers/claude/durable/ClaudePrintRunner.d.ts +4 -4
  198. package/dist/providers/claude/durable/ClaudePrintRunner.d.ts.map +1 -1
  199. package/dist/providers/claude/durable/ClaudePrintRunner.js +18 -18
  200. package/dist/providers/claude/durable/ClaudePrintRunner.js.map +1 -1
  201. package/dist/providers/claude/durable/ClaudeStreamParser.d.ts +2 -2
  202. package/dist/providers/claude/durable/ClaudeStreamParser.d.ts.map +1 -1
  203. package/dist/providers/claude/durable/ClaudeStreamParser.js +17 -17
  204. package/dist/providers/claude/durable/ClaudeStreamParser.js.map +1 -1
  205. package/dist/providers/codex/CodexAdapter.d.ts +27 -0
  206. package/dist/providers/codex/CodexAdapter.d.ts.map +1 -0
  207. package/dist/providers/codex/CodexAdapter.js +162 -0
  208. package/dist/providers/codex/CodexAdapter.js.map +1 -0
  209. package/dist/providers/codex/CodexAgentMapper.d.ts +9 -0
  210. package/dist/providers/codex/CodexAgentMapper.d.ts.map +1 -0
  211. package/dist/providers/codex/CodexAgentMapper.js +35 -0
  212. package/dist/providers/codex/CodexAgentMapper.js.map +1 -0
  213. package/dist/providers/codex/CodexSessionLocator.d.ts +44 -0
  214. package/dist/providers/codex/CodexSessionLocator.d.ts.map +1 -0
  215. package/dist/providers/codex/CodexSessionLocator.js +207 -0
  216. package/dist/providers/codex/CodexSessionLocator.js.map +1 -0
  217. package/dist/providers/codex/CodexSessionMapping.d.ts +23 -0
  218. package/dist/providers/codex/CodexSessionMapping.d.ts.map +1 -0
  219. package/dist/providers/codex/CodexSessionMapping.js +68 -0
  220. package/dist/providers/codex/CodexSessionMapping.js.map +1 -0
  221. package/dist/providers/codex/CodexSessionParser.d.ts +58 -0
  222. package/dist/providers/codex/CodexSessionParser.d.ts.map +1 -0
  223. package/dist/providers/codex/CodexSessionParser.js +262 -0
  224. package/dist/providers/codex/CodexSessionParser.js.map +1 -0
  225. package/dist/providers/codex/durable/CodexCliProbe.d.ts.map +1 -1
  226. package/dist/providers/codex/durable/CodexCliProbe.js +22 -22
  227. package/dist/providers/codex/durable/CodexCliProbe.js.map +1 -1
  228. package/dist/providers/codex/durable/CodexPrintAgentService.d.ts +6 -6
  229. package/dist/providers/codex/durable/CodexPrintAgentService.d.ts.map +1 -1
  230. package/dist/providers/codex/durable/CodexPrintAgentService.js +10 -10
  231. package/dist/providers/codex/durable/CodexPrintAgentService.js.map +1 -1
  232. package/dist/providers/codex/durable/CodexPrintRunner.d.ts +4 -4
  233. package/dist/providers/codex/durable/CodexPrintRunner.d.ts.map +1 -1
  234. package/dist/providers/codex/durable/CodexPrintRunner.js +20 -20
  235. package/dist/providers/codex/durable/CodexPrintRunner.js.map +1 -1
  236. package/dist/providers/codex/durable/CodexStreamParser.d.ts +2 -2
  237. package/dist/providers/codex/durable/CodexStreamParser.d.ts.map +1 -1
  238. package/dist/providers/codex/durable/CodexStreamParser.js +21 -21
  239. package/dist/providers/codex/durable/CodexStreamParser.js.map +1 -1
  240. package/dist/providers/pi/PiAdapter.d.ts +28 -0
  241. package/dist/providers/pi/PiAdapter.d.ts.map +1 -0
  242. package/dist/providers/pi/PiAdapter.js +153 -0
  243. package/dist/providers/pi/PiAdapter.js.map +1 -0
  244. package/dist/providers/pi/PiAgentMapper.d.ts +9 -0
  245. package/dist/providers/pi/PiAgentMapper.d.ts.map +1 -0
  246. package/dist/providers/pi/PiAgentMapper.js +37 -0
  247. package/dist/providers/pi/PiAgentMapper.js.map +1 -0
  248. package/dist/providers/pi/PiSessionLocator.d.ts +23 -0
  249. package/dist/providers/pi/PiSessionLocator.d.ts.map +1 -0
  250. package/dist/providers/pi/PiSessionLocator.js +79 -0
  251. package/dist/providers/pi/PiSessionLocator.js.map +1 -0
  252. package/dist/providers/pi/PiSessionParser.d.ts +36 -0
  253. package/dist/providers/pi/PiSessionParser.d.ts.map +1 -0
  254. package/dist/providers/pi/PiSessionParser.js +191 -0
  255. package/dist/providers/pi/PiSessionParser.js.map +1 -0
  256. package/dist/providers/pi/PiSessionTracker.d.ts +23 -0
  257. package/dist/providers/pi/PiSessionTracker.d.ts.map +1 -0
  258. package/dist/providers/pi/PiSessionTracker.js +69 -0
  259. package/dist/providers/pi/PiSessionTracker.js.map +1 -0
  260. package/dist/providers/pi/durable/PiCliProbe.d.ts.map +1 -1
  261. package/dist/providers/pi/durable/PiCliProbe.js +15 -15
  262. package/dist/providers/pi/durable/PiCliProbe.js.map +1 -1
  263. package/dist/providers/pi/durable/PiPrintAgentService.d.ts +6 -6
  264. package/dist/providers/pi/durable/PiPrintAgentService.d.ts.map +1 -1
  265. package/dist/providers/pi/durable/PiPrintAgentService.js +10 -10
  266. package/dist/providers/pi/durable/PiPrintAgentService.js.map +1 -1
  267. package/dist/providers/pi/durable/PiPrintProtocol.d.ts.map +1 -1
  268. package/dist/providers/pi/durable/PiPrintProtocol.js +18 -18
  269. package/dist/providers/pi/durable/PiPrintProtocol.js.map +1 -1
  270. package/dist/providers/pi/durable/PiPrintRunner.d.ts +4 -4
  271. package/dist/providers/pi/durable/PiPrintRunner.d.ts.map +1 -1
  272. package/dist/providers/pi/durable/PiPrintRunner.js +15 -15
  273. package/dist/providers/pi/durable/PiPrintRunner.js.map +1 -1
  274. package/dist/providers/pi/durable/PiStreamParser.d.ts +1 -1
  275. package/dist/providers/pi/durable/PiStreamParser.d.ts.map +1 -1
  276. package/dist/providers/pi/durable/PiStreamParser.js +16 -16
  277. package/dist/providers/pi/durable/PiStreamParser.js.map +1 -1
  278. package/dist/readiness/AgentReadiness.d.ts +67 -0
  279. package/dist/readiness/AgentReadiness.d.ts.map +1 -0
  280. package/dist/readiness/AgentReadiness.js +614 -0
  281. package/dist/readiness/AgentReadiness.js.map +1 -0
  282. package/dist/runtime/ManagedAgentRuntime.d.ts +69 -0
  283. package/dist/runtime/ManagedAgentRuntime.d.ts.map +1 -0
  284. package/dist/runtime/ManagedAgentRuntime.js +156 -0
  285. package/dist/runtime/ManagedAgentRuntime.js.map +1 -0
  286. package/dist/runtime/RuntimeFactory.d.ts +4 -0
  287. package/dist/runtime/RuntimeFactory.d.ts.map +1 -0
  288. package/dist/runtime/RuntimeFactory.js +11 -0
  289. package/dist/runtime/RuntimeFactory.js.map +1 -0
  290. package/dist/runtime/errors.d.ts +27 -0
  291. package/dist/runtime/errors.d.ts.map +1 -0
  292. package/dist/runtime/errors.js +42 -0
  293. package/dist/runtime/errors.js.map +1 -0
  294. package/dist/runtime/herdr/HerdrAgentRuntime.d.ts +31 -0
  295. package/dist/runtime/herdr/HerdrAgentRuntime.d.ts.map +1 -0
  296. package/dist/runtime/herdr/HerdrAgentRuntime.js +184 -0
  297. package/dist/runtime/herdr/HerdrAgentRuntime.js.map +1 -0
  298. package/dist/runtime/herdr/HerdrCliClient.d.ts +13 -0
  299. package/dist/runtime/herdr/HerdrCliClient.d.ts.map +1 -0
  300. package/dist/runtime/herdr/HerdrCliClient.js +60 -0
  301. package/dist/runtime/herdr/HerdrCliClient.js.map +1 -0
  302. package/dist/runtime/herdr/HerdrErrors.d.ts +7 -0
  303. package/dist/runtime/herdr/HerdrErrors.d.ts.map +1 -0
  304. package/dist/runtime/herdr/HerdrErrors.js +10 -0
  305. package/dist/runtime/herdr/HerdrErrors.js.map +1 -0
  306. package/dist/runtime/herdr/HerdrResponseParsers.d.ts +14 -0
  307. package/dist/runtime/herdr/HerdrResponseParsers.d.ts.map +1 -0
  308. package/dist/runtime/herdr/HerdrResponseParsers.js +96 -0
  309. package/dist/runtime/herdr/HerdrResponseParsers.js.map +1 -0
  310. package/dist/runtime/herdr/HerdrRuntimeRef.d.ts +9 -0
  311. package/dist/runtime/herdr/HerdrRuntimeRef.d.ts.map +1 -0
  312. package/dist/runtime/herdr/HerdrRuntimeRef.js +33 -0
  313. package/dist/runtime/herdr/HerdrRuntimeRef.js.map +1 -0
  314. package/dist/runtime/tmux/PidPolling.d.ts +5 -0
  315. package/dist/runtime/tmux/PidPolling.d.ts.map +1 -0
  316. package/dist/runtime/tmux/PidPolling.js +24 -0
  317. package/dist/runtime/tmux/PidPolling.js.map +1 -0
  318. package/dist/runtime/tmux/TmuxAgentRuntime.d.ts +17 -0
  319. package/dist/runtime/tmux/TmuxAgentRuntime.d.ts.map +1 -0
  320. package/dist/runtime/tmux/TmuxAgentRuntime.js +80 -0
  321. package/dist/runtime/tmux/TmuxAgentRuntime.js.map +1 -0
  322. package/dist/runtime/tmux/TmuxRuntimeRef.d.ts +5 -0
  323. package/dist/runtime/tmux/TmuxRuntimeRef.d.ts.map +1 -0
  324. package/dist/runtime/tmux/TmuxRuntimeRef.js +9 -0
  325. package/dist/runtime/tmux/TmuxRuntimeRef.js.map +1 -0
  326. package/dist/runtime/types.d.ts +54 -0
  327. package/dist/runtime/types.d.ts.map +1 -0
  328. package/dist/runtime/types.js +3 -0
  329. package/dist/runtime/types.js.map +1 -0
  330. package/dist/terminal/TerminalFocusManager.d.ts.map +1 -1
  331. package/dist/terminal/TerminalFocusManager.js +50 -50
  332. package/dist/terminal/TerminalFocusManager.js.map +1 -1
  333. package/dist/terminal/TmuxManager.d.ts.map +1 -1
  334. package/dist/terminal/TmuxManager.js +47 -47
  335. package/dist/terminal/TmuxManager.js.map +1 -1
  336. package/dist/terminal/TtyWriter.d.ts +1 -1
  337. package/dist/terminal/TtyWriter.d.ts.map +1 -1
  338. package/dist/terminal/TtyWriter.js +89 -89
  339. package/dist/terminal/TtyWriter.js.map +1 -1
  340. package/dist/terminal/index.d.ts +4 -4
  341. package/dist/terminal/index.js +3 -3
  342. package/dist/terminal/index.js.map +1 -1
  343. package/dist/utils/AgentRegistry.d.ts +10 -2
  344. package/dist/utils/AgentRegistry.d.ts.map +1 -1
  345. package/dist/utils/AgentRegistry.js +57 -24
  346. package/dist/utils/AgentRegistry.js.map +1 -1
  347. package/dist/utils/agent-requests.d.ts.map +1 -1
  348. package/dist/utils/agent-requests.js +5 -5
  349. package/dist/utils/agent-requests.js.map +1 -1
  350. package/dist/utils/agents.d.ts +2 -2
  351. package/dist/utils/agents.d.ts.map +1 -1
  352. package/dist/utils/agents.js +15 -15
  353. package/dist/utils/agents.js.map +1 -1
  354. package/dist/utils/applescript.js +1 -1
  355. package/dist/utils/applescript.js.map +1 -1
  356. package/dist/utils/index.d.ts +6 -6
  357. package/dist/utils/index.d.ts.map +1 -1
  358. package/dist/utils/index.js +4 -4
  359. package/dist/utils/index.js.map +1 -1
  360. package/dist/utils/matching.d.ts +2 -2
  361. package/dist/utils/matching.d.ts.map +1 -1
  362. package/dist/utils/matching.js +4 -4
  363. package/dist/utils/matching.js.map +1 -1
  364. package/dist/utils/process.d.ts +1 -1
  365. package/dist/utils/process.d.ts.map +1 -1
  366. package/dist/utils/process.js +74 -74
  367. package/dist/utils/process.js.map +1 -1
  368. package/dist/utils/session.d.ts +1 -1
  369. package/dist/utils/session.d.ts.map +1 -1
  370. package/dist/utils/session.js +7 -7
  371. package/dist/utils/session.js.map +1 -1
  372. package/dist/utils/sortAgents.d.ts +2 -2
  373. package/dist/utils/sortAgents.d.ts.map +1 -1
  374. package/dist/utils/sortAgents.js +5 -5
  375. package/dist/utils/sortAgents.js.map +1 -1
  376. package/package.json +18 -19
  377. package/src/AgentManager.ts +283 -281
  378. package/src/__tests__/AgentManager.test.ts +917 -907
  379. package/src/__tests__/adapters/ClaudeCodeAdapter.test.ts +1657 -1368
  380. package/src/__tests__/adapters/CodexAdapter.test.ts +365 -1698
  381. package/src/__tests__/adapters/CopilotAdapter.test.ts +576 -481
  382. package/src/__tests__/adapters/GeminiCliAdapter.test.ts +1189 -1157
  383. package/src/__tests__/adapters/GrokCliAdapter.test.ts +325 -272
  384. package/src/__tests__/adapters/OpenCodeAdapter.test.ts +510 -455
  385. package/src/__tests__/capacity/codex.test.ts +178 -91
  386. package/src/__tests__/capacity/index.test.ts +27 -18
  387. package/src/__tests__/durable/CodexCliProbe.test.ts +75 -53
  388. package/src/__tests__/durable/CodexDurableAgentRepository.test.ts +51 -40
  389. package/src/__tests__/durable/CodexPrintAgent.integration.test.ts +89 -64
  390. package/src/__tests__/durable/CodexPrintAgentService.test.ts +196 -118
  391. package/src/__tests__/durable/CodexPrintRunner.test.ts +282 -162
  392. package/src/__tests__/fixtures/fake-claude.cjs +20 -13
  393. package/src/__tests__/fixtures/fake-codex.cjs +41 -30
  394. package/src/__tests__/print/ClaudeCliProbe.test.ts +27 -21
  395. package/src/__tests__/print/ClaudePrintAgent.integration.test.ts +48 -40
  396. package/src/__tests__/print/ClaudePrintAgentService.test.ts +118 -67
  397. package/src/__tests__/print/ClaudePrintRunner.test.ts +136 -83
  398. package/src/__tests__/print/DurableAgent.test.ts +19 -16
  399. package/src/__tests__/print/DurableAgentRepository.sqlite.test.ts +109 -86
  400. package/src/__tests__/print/DurableAgentRepository.test.ts +170 -137
  401. package/src/__tests__/providers/claude/ClaudeAgentMapper.test.ts +65 -65
  402. package/src/__tests__/providers/claude/ClaudeSessionLocator.test.ts +400 -377
  403. package/src/__tests__/providers/codex/CodexSessionLocator.test.ts +182 -0
  404. package/src/__tests__/providers/codex/CodexSessionMapping.test.ts +63 -0
  405. package/src/__tests__/providers/codex/CodexSessionParser.test.ts +192 -0
  406. package/src/__tests__/providers/pi/PiAdapter.test.ts +310 -0
  407. package/src/__tests__/providers/pi/PiSessionParser.test.ts +190 -0
  408. package/src/__tests__/providers/pi/PiSessionTracker.test.ts +79 -0
  409. package/src/__tests__/providers/pi/durable/PiCliProbe.test.ts +48 -32
  410. package/src/__tests__/providers/pi/durable/PiDurableAgentRepository.test.ts +24 -23
  411. package/src/__tests__/providers/pi/durable/PiPrintAgentService.test.ts +131 -59
  412. package/src/__tests__/providers/pi/durable/PiPrintProtocol.test.ts +66 -28
  413. package/src/__tests__/providers/pi/durable/PiPrintRunner.test.ts +236 -90
  414. package/src/__tests__/providers/pi/durable/PiStreamParser.test.ts +20 -18
  415. package/src/__tests__/readiness/AgentReadiness.test.ts +242 -0
  416. package/src/__tests__/runtime/AgentRuntime.test.ts +8 -0
  417. package/src/__tests__/runtime/HerdrAgentRuntime.test.ts +358 -0
  418. package/src/__tests__/runtime/ManagedAgentRuntime.test.ts +555 -0
  419. package/src/__tests__/terminal/TerminalFocusManager.test.ts +254 -253
  420. package/src/__tests__/terminal/TmuxManager.test.ts +157 -157
  421. package/src/__tests__/terminal/TtyWriter.test.ts +423 -419
  422. package/src/__tests__/utils/AgentRegistry.test.ts +506 -402
  423. package/src/__tests__/utils/ClaudeSessionParser.test.ts +276 -242
  424. package/src/__tests__/utils/agent-requests.test.ts +76 -56
  425. package/src/__tests__/utils/agents.test.ts +20 -20
  426. package/src/__tests__/utils/matching.test.ts +206 -171
  427. package/src/__tests__/utils/process.test.ts +276 -262
  428. package/src/__tests__/utils/session.test.ts +133 -139
  429. package/src/adapters/AgentAdapter.ts +134 -126
  430. package/src/adapters/CopilotAdapter.ts +405 -395
  431. package/src/adapters/GeminiCliAdapter.ts +598 -600
  432. package/src/adapters/GrokCliAdapter.ts +353 -342
  433. package/src/adapters/OpenCodeAdapter.ts +285 -259
  434. package/src/adapters/index.ts +15 -9
  435. package/src/capacity/codex.ts +137 -84
  436. package/src/capacity/index.ts +18 -13
  437. package/src/capacity/types.ts +1 -1
  438. package/src/database/connection.ts +73 -68
  439. package/src/database/index.ts +6 -6
  440. package/src/database/migrations/005_agent_runtime.sql +2 -0
  441. package/src/database/schema.ts +40 -38
  442. package/src/durable/DurableAgent.ts +85 -85
  443. package/src/durable/DurableAgentRepository.ts +409 -260
  444. package/src/durable/process.ts +22 -21
  445. package/src/durable/run.ts +61 -51
  446. package/src/durable/utils.ts +46 -41
  447. package/src/index.ts +145 -86
  448. package/src/providers/claude/ClaudeAgentMapper.ts +51 -50
  449. package/src/providers/claude/ClaudeCodeAdapter.ts +144 -136
  450. package/src/providers/claude/ClaudeSessionLocator.ts +291 -293
  451. package/src/providers/claude/ClaudeSessionParser.ts +322 -338
  452. package/src/providers/claude/durable/ClaudeCliProbe.ts +42 -37
  453. package/src/providers/claude/durable/ClaudePrintAgentService.ts +63 -50
  454. package/src/providers/claude/durable/ClaudePrintRunner.ts +79 -69
  455. package/src/providers/claude/durable/ClaudeStreamParser.ts +91 -62
  456. package/src/providers/codex/CodexAdapter.ts +205 -0
  457. package/src/providers/codex/CodexAgentMapper.ts +35 -0
  458. package/src/providers/codex/CodexSessionLocator.ts +279 -0
  459. package/src/providers/codex/CodexSessionMapping.ts +89 -0
  460. package/src/providers/codex/CodexSessionParser.ts +385 -0
  461. package/src/providers/codex/durable/CodexCliProbe.ts +50 -42
  462. package/src/providers/codex/durable/CodexPrintAgentService.ts +63 -49
  463. package/src/providers/codex/durable/CodexPrintRunner.ts +79 -69
  464. package/src/providers/codex/durable/CodexStreamParser.ts +97 -84
  465. package/src/providers/pi/PiAdapter.ts +183 -0
  466. package/src/providers/pi/PiAgentMapper.ts +36 -0
  467. package/src/providers/pi/PiSessionLocator.ts +95 -0
  468. package/src/providers/pi/PiSessionParser.ts +284 -0
  469. package/src/providers/pi/PiSessionTracker.ts +87 -0
  470. package/src/providers/pi/durable/PiCliProbe.ts +42 -34
  471. package/src/providers/pi/durable/PiPrintAgentService.ts +61 -53
  472. package/src/providers/pi/durable/PiPrintProtocol.ts +31 -29
  473. package/src/providers/pi/durable/PiPrintRunner.ts +75 -68
  474. package/src/providers/pi/durable/PiStreamParser.ts +82 -72
  475. package/src/readiness/AgentReadiness.ts +727 -0
  476. package/src/runtime/ManagedAgentRuntime.ts +266 -0
  477. package/src/runtime/RuntimeFactory.ts +13 -0
  478. package/src/runtime/errors.ts +50 -0
  479. package/src/runtime/herdr/HerdrAgentRuntime.ts +190 -0
  480. package/src/runtime/herdr/HerdrCliClient.ts +78 -0
  481. package/src/runtime/herdr/HerdrErrors.ts +9 -0
  482. package/src/runtime/herdr/HerdrResponseParsers.ts +76 -0
  483. package/src/runtime/herdr/HerdrRuntimeRef.ts +41 -0
  484. package/src/runtime/tmux/PidPolling.ts +34 -0
  485. package/src/runtime/tmux/TmuxAgentRuntime.ts +113 -0
  486. package/src/runtime/tmux/TmuxRuntimeRef.ts +9 -0
  487. package/src/runtime/types.ts +56 -0
  488. package/src/terminal/TerminalFocusManager.ts +215 -212
  489. package/src/terminal/TmuxManager.ts +99 -92
  490. package/src/terminal/TtyWriter.ts +203 -194
  491. package/src/terminal/index.ts +4 -4
  492. package/src/utils/AgentRegistry.ts +299 -238
  493. package/src/utils/agent-requests.ts +16 -16
  494. package/src/utils/agents.ts +41 -38
  495. package/src/utils/applescript.ts +4 -4
  496. package/src/utils/index.ts +12 -6
  497. package/src/utils/matching.ts +43 -43
  498. package/src/utils/process.ts +261 -258
  499. package/src/utils/session.ts +66 -66
  500. package/src/utils/sortAgents.ts +35 -33
  501. package/tsconfig.json +2 -8
  502. package/vitest.config.ts +16 -16
  503. package/.eslintrc.json +0 -31
  504. package/dist/__tests__/adapters/PiAdapter.test.js +0 -618
  505. package/dist/__tests__/adapters/PiAdapter.test.js.map +0 -1
  506. package/dist/__tests__/database/DurableAgentsDatabase.test.js +0 -128
  507. package/dist/__tests__/database/DurableAgentsDatabase.test.js.map +0 -1
  508. package/dist/adapters/CodexAdapter.d.ts +0 -109
  509. package/dist/adapters/CodexAdapter.d.ts.map +0 -1
  510. package/dist/adapters/CodexAdapter.js +0 -710
  511. package/dist/adapters/CodexAdapter.js.map +0 -1
  512. package/dist/adapters/PiAdapter.d.ts +0 -63
  513. package/dist/adapters/PiAdapter.d.ts.map +0 -1
  514. package/dist/adapters/PiAdapter.js +0 -453
  515. package/dist/adapters/PiAdapter.js.map +0 -1
  516. package/src/__tests__/adapters/PiAdapter.test.ts +0 -458
  517. package/src/__tests__/database/DurableAgentsDatabase.test.ts +0 -102
  518. package/src/adapters/CodexAdapter.ts +0 -923
  519. package/src/adapters/PiAdapter.ts +0 -598
@@ -1,28 +1,29 @@
1
- import fs from 'fs';
2
- import { execFileSync } from 'child_process';
3
- import type { ProcessIdentity } from './DurableAgent.js';
1
+ import fs from "fs";
2
+ import { execFileSync } from "child_process";
3
+ import type { ProcessIdentity } from "./DurableAgent.js";
4
4
 
5
5
  export interface ProcessInspector {
6
- getIdentity(pid: number): ProcessIdentity | null;
6
+ getIdentity(pid: number): ProcessIdentity | null;
7
7
  }
8
8
 
9
9
  export class LocalProcessInspector implements ProcessInspector {
10
- getIdentity(pid: number): ProcessIdentity | null {
11
- if (!Number.isInteger(pid) || pid <= 0) return null;
12
- try {
13
- if (process.platform === 'linux') {
14
- const stat = fs.readFileSync(`/proc/${pid}/stat`, 'utf8');
15
- const close = stat.lastIndexOf(')');
16
- const fields = stat.slice(close + 2).split(' ');
17
- const startTicks = fields[19];
18
- return startTicks ? { pid, startedAt: `linux:${startTicks}` } : null;
19
- }
20
- const startedAt = execFileSync('ps', ['-o', 'lstart=', '-p', String(pid)], {
21
- encoding: 'utf8', stdio: ['ignore', 'pipe', 'ignore'],
22
- }).trim();
23
- return startedAt ? { pid, startedAt } : null;
24
- } catch {
25
- return null;
26
- }
10
+ getIdentity(pid: number): ProcessIdentity | null {
11
+ if (!Number.isInteger(pid) || pid <= 0) return null;
12
+ try {
13
+ if (process.platform === "linux") {
14
+ const stat = fs.readFileSync(`/proc/${pid}/stat`, "utf8");
15
+ const close = stat.lastIndexOf(")");
16
+ const fields = stat.slice(close + 2).split(" ");
17
+ const startTicks = fields[19];
18
+ return startTicks ? { pid, startedAt: `linux:${startTicks}` } : null;
19
+ }
20
+ const startedAt = execFileSync("ps", ["-o", "lstart=", "-p", String(pid)], {
21
+ encoding: "utf8",
22
+ stdio: ["ignore", "pipe", "ignore"],
23
+ }).trim();
24
+ return startedAt ? { pid, startedAt } : null;
25
+ } catch {
26
+ return null;
27
27
  }
28
+ }
28
29
  }
@@ -1,74 +1,84 @@
1
- import type { DurableAgent, DurableProvider } from './DurableAgent.js';
2
- import { DurableAgentNotFoundError } from './DurableAgent.js';
3
- import type { DurableRunCompletion } from './DurableAgentRepository.js';
4
- import { sanitizeText } from './utils.js';
1
+ import type { DurableAgent, DurableProvider } from "./DurableAgent.js";
2
+ import { DurableAgentNotFoundError } from "./DurableAgent.js";
3
+ import type { DurableRunCompletion } from "./DurableAgentRepository.js";
4
+ import { sanitizeText } from "./utils.js";
5
5
 
6
6
  const MAX_RESULT_SUMMARY_LENGTH = 4096;
7
7
 
8
8
  export interface DurableRunRepository {
9
- resolve(reference: string): Promise<DurableAgent | DurableAgent[] | null>;
10
- acquireRun(id: string): Promise<{ agent: DurableAgent; token: string }>;
11
- completeRun(id: string, token: string, result: DurableRunCompletion): Promise<DurableAgent>;
9
+ resolve(reference: string): Promise<DurableAgent | DurableAgent[] | null>;
10
+ acquireRun(id: string): Promise<{ agent: DurableAgent; token: string }>;
11
+ completeRun(id: string, token: string, result: DurableRunCompletion): Promise<DurableAgent>;
12
12
  }
13
13
 
14
- type ProviderAgent<Provider extends DurableProvider> = Extract<DurableAgent, { provider: Provider }>;
14
+ type ProviderAgent<Provider extends DurableProvider> = Extract<
15
+ DurableAgent,
16
+ { provider: Provider }
17
+ >;
15
18
 
16
19
  interface DurableRunResult {
17
- result: string;
18
- exitCode: number;
20
+ result: string;
21
+ exitCode: number;
19
22
  }
20
23
 
21
24
  interface DurableRunOptions<Provider extends DurableProvider, Result extends DurableRunResult> {
22
- reference: string;
23
- provider: Provider;
24
- repository: DurableRunRepository;
25
- ambiguousError(): Error;
26
- providerError(): Error;
27
- execute(agent: ProviderAgent<Provider>, token: string): Promise<Result>;
28
- isSessionMismatch(error: unknown): boolean;
25
+ reference: string;
26
+ provider: Provider;
27
+ repository: DurableRunRepository;
28
+ ambiguousError(): Error;
29
+ providerError(): Error;
30
+ execute(agent: ProviderAgent<Provider>, token: string): Promise<Result>;
31
+ isSessionMismatch(error: unknown): boolean;
29
32
  }
30
33
 
31
- export async function runDurableAgent<Provider extends DurableProvider, Result extends DurableRunResult>(
32
- options: DurableRunOptions<Provider, Result>,
34
+ export async function runDurableAgent<
35
+ Provider extends DurableProvider,
36
+ Result extends DurableRunResult,
37
+ >(
38
+ options: DurableRunOptions<Provider, Result>,
33
39
  ): Promise<{ agent: ProviderAgent<Provider>; result: Result }> {
34
- const resolved = await options.repository.resolve(options.reference);
35
- if (!resolved) throw new DurableAgentNotFoundError(options.reference);
36
- if (Array.isArray(resolved)) throw options.ambiguousError();
37
- if (resolved.provider !== options.provider) throw options.providerError();
40
+ const resolved = await options.repository.resolve(options.reference);
41
+ if (!resolved) throw new DurableAgentNotFoundError(options.reference);
42
+ if (Array.isArray(resolved)) throw options.ambiguousError();
43
+ if (resolved.provider !== options.provider) throw options.providerError();
38
44
 
39
- const target = resolved as ProviderAgent<Provider>;
40
- const acquired = await options.repository.acquireRun(target.id);
41
- let result: Result;
42
- try {
43
- result = await options.execute(acquired.agent as ProviderAgent<Provider>, acquired.token);
44
- } catch (error) {
45
- await options.repository.completeRun(
46
- target.id,
47
- acquired.token,
48
- createFailedCompletion(error, options.isSessionMismatch(error)),
49
- );
50
- throw error;
51
- }
45
+ const target = resolved as ProviderAgent<Provider>;
46
+ const acquired = await options.repository.acquireRun(target.id);
47
+ let result: Result;
48
+ try {
49
+ result = await options.execute(acquired.agent as ProviderAgent<Provider>, acquired.token);
50
+ } catch (error) {
51
+ await options.repository.completeRun(
52
+ target.id,
53
+ acquired.token,
54
+ createFailedCompletion(error, options.isSessionMismatch(error)),
55
+ );
56
+ throw error;
57
+ }
52
58
 
53
- await options.repository.completeRun(target.id, acquired.token, createSucceededCompletion(result));
54
- return { agent: target, result };
59
+ await options.repository.completeRun(
60
+ target.id,
61
+ acquired.token,
62
+ createSucceededCompletion(result),
63
+ );
64
+ return { agent: target, result };
55
65
  }
56
66
 
57
67
  function createSucceededCompletion(result: DurableRunResult): DurableRunCompletion {
58
- return {
59
- status: 'succeeded',
60
- exitCode: result.exitCode,
61
- summary: sanitizeText(result.result, MAX_RESULT_SUMMARY_LENGTH, { preserveFormatting: true }),
62
- sessionHealth: 'healthy',
63
- };
68
+ return {
69
+ status: "succeeded",
70
+ exitCode: result.exitCode,
71
+ summary: sanitizeText(result.result, MAX_RESULT_SUMMARY_LENGTH, { preserveFormatting: true }),
72
+ sessionHealth: "healthy",
73
+ };
64
74
  }
65
75
 
66
76
  function createFailedCompletion(error: unknown, sessionMismatch: boolean): DurableRunCompletion {
67
- const message = error instanceof Error ? error.message : String(error);
68
- return {
69
- status: 'failed',
70
- exitCode: null,
71
- summary: sanitizeText(message, MAX_RESULT_SUMMARY_LENGTH, { preserveFormatting: true }),
72
- sessionHealth: sessionMismatch ? 'mismatch' : 'unknown',
73
- };
77
+ const message = error instanceof Error ? error.message : String(error);
78
+ return {
79
+ status: "failed",
80
+ exitCode: null,
81
+ summary: sanitizeText(message, MAX_RESULT_SUMMARY_LENGTH, { preserveFormatting: true }),
82
+ sessionHealth: sessionMismatch ? "mismatch" : "unknown",
83
+ };
74
84
  }
@@ -1,61 +1,66 @@
1
- import type { ChildProcessWithoutNullStreams } from 'child_process';
1
+ import type { ChildProcessWithoutNullStreams } from "child_process";
2
2
 
3
3
  export interface ChildCloseResult {
4
- code: number | null;
5
- signal: NodeJS.Signals | null;
4
+ code: number | null;
5
+ signal: NodeJS.Signals | null;
6
6
  }
7
7
 
8
- export function waitForChildClose(child: ChildProcessWithoutNullStreams): Promise<ChildCloseResult> {
9
- return new Promise((resolve, reject) => {
10
- child.once('error', reject);
11
- child.once('close', (code, signal) => resolve({ code, signal }));
12
- });
8
+ export function waitForChildClose(
9
+ child: ChildProcessWithoutNullStreams,
10
+ ): Promise<ChildCloseResult> {
11
+ return new Promise((resolve, reject) => {
12
+ child.once("error", reject);
13
+ child.once("close", (code, signal) => resolve({ code, signal }));
14
+ });
13
15
  }
14
16
 
15
17
  export function sanitizeText(
16
- value: string,
17
- max: number,
18
- options: { preserveFormatting?: boolean } = {},
18
+ value: string,
19
+ max: number,
20
+ options: { preserveFormatting?: boolean } = {},
19
21
  ): string {
20
- return Array.from(value, (character) => {
21
- const code = character.charCodeAt(0);
22
- if (options.preserveFormatting && (code === 9 || code === 10 || code === 13)) return character;
23
- return code <= 31 || code === 127 ? ' ' : character;
24
- }).join('').trim().slice(0, max);
22
+ return Array.from(value, (character) => {
23
+ const code = character.charCodeAt(0);
24
+ if (options.preserveFormatting && (code === 9 || code === 10 || code === 13)) return character;
25
+ return code <= 31 || code === 127 ? " " : character;
26
+ })
27
+ .join("")
28
+ .trim()
29
+ .slice(0, max);
25
30
  }
26
31
 
27
32
  const UUID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
28
33
 
29
34
  export function isUuid(value: string): boolean {
30
- return UUID_PATTERN.test(value);
35
+ return UUID_PATTERN.test(value);
31
36
  }
32
37
 
33
38
  export class LineBuffer {
34
- private buffer = Buffer.alloc(0);
35
-
36
- constructor(
37
- private readonly maxLineBytes: number,
38
- private readonly createOversizedLineError: () => Error,
39
- ) {}
40
-
41
- accept(chunk: Buffer | string): Buffer[] {
42
- this.buffer = Buffer.concat([this.buffer, Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk)]);
43
- if (this.buffer.length > this.maxLineBytes && this.buffer.indexOf(0x0a) < 0) {
44
- throw this.createOversizedLineError();
45
- }
46
-
47
- const lines: Buffer[] = [];
48
- let newline: number;
49
- while ((newline = this.buffer.indexOf(0x0a)) >= 0) {
50
- const line = this.buffer.subarray(0, newline);
51
- this.buffer = this.buffer.subarray(newline + 1);
52
- if (line.length > this.maxLineBytes) throw this.createOversizedLineError();
53
- lines.push(line);
54
- }
55
- return lines;
39
+ private buffer = Buffer.alloc(0);
40
+
41
+ constructor(
42
+ private readonly maxLineBytes: number,
43
+ private readonly createOversizedLineError: () => Error,
44
+ ) {}
45
+
46
+ accept(chunk: Buffer | string): Buffer[] {
47
+ this.buffer = Buffer.concat([this.buffer, Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk)]);
48
+ if (this.buffer.length > this.maxLineBytes && this.buffer.indexOf(0x0a) < 0) {
49
+ throw this.createOversizedLineError();
56
50
  }
57
51
 
58
- assertComplete(createIncompleteLineError: () => Error): void {
59
- if (this.buffer.length > 0) throw createIncompleteLineError();
52
+ const lines: Buffer[] = [];
53
+ let newline: number;
54
+ while ((newline = this.buffer.indexOf(0x0a)) >= 0) {
55
+ const line = this.buffer.subarray(0, newline);
56
+ this.buffer = this.buffer.subarray(newline + 1);
57
+ if (line.length > this.maxLineBytes) throw this.createOversizedLineError();
58
+ lines.push(line);
60
59
  }
60
+ return lines;
61
+ }
62
+
63
+ assertComplete(createIncompleteLineError: () => Error): void {
64
+ if (this.buffer.length > 0) throw createIncompleteLineError();
65
+ }
61
66
  }
package/src/index.ts CHANGED
@@ -1,100 +1,159 @@
1
- export { AgentManager, AgentNotRunningError } from './AgentManager.js';
2
- export { getCodexCapacityReport } from './capacity/index.js';
1
+ export { AgentManager, AgentNotRunningError } from "./AgentManager.js";
2
+ export { getCodexCapacityReport } from "./capacity/index.js";
3
+ export type { CapacityProbeOptions, CapacityReport, CapacityWindow } from "./capacity/index.js";
4
+ export {
5
+ getAgentReadinessReport,
6
+ getAgentReadinessReports,
7
+ worstReadinessStatus,
8
+ } from "./readiness/AgentReadiness.js";
3
9
  export type {
4
- CapacityProbeOptions,
5
- CapacityReport,
6
- CapacityWindow,
7
- } from './capacity/index.js';
10
+ AgentReadinessOptions,
11
+ AgentReadinessReport,
12
+ AuthReadinessCheck,
13
+ BuiltInSkillsReadinessCheck,
14
+ DirectoryReadinessCheck,
15
+ ExecutableReadinessCheck,
16
+ IntegrationReadinessCheck,
17
+ ReadinessAgentType,
18
+ ReadinessAuthState,
19
+ ReadinessCheck,
20
+ ReadinessStatus,
21
+ } from "./readiness/AgentReadiness.js";
8
22
 
9
- export { ClaudeCodeAdapter } from './providers/claude/ClaudeCodeAdapter.js';
10
- export { CodexAdapter } from './adapters/CodexAdapter.js';
11
- export { CopilotAdapter } from './adapters/CopilotAdapter.js';
12
- export { GeminiCliAdapter } from './adapters/GeminiCliAdapter.js';
13
- export { GrokCliAdapter } from './adapters/GrokCliAdapter.js';
14
- export { OpenCodeAdapter } from './adapters/OpenCodeAdapter.js';
15
- export { PiAdapter } from './adapters/PiAdapter.js';
16
- export { AgentStatus } from './adapters/AgentAdapter.js';
23
+ export { ClaudeCodeAdapter } from "./providers/claude/ClaudeCodeAdapter.js";
24
+ export { CodexAdapter } from "./providers/codex/CodexAdapter.js";
25
+ export { CopilotAdapter } from "./adapters/CopilotAdapter.js";
26
+ export { GeminiCliAdapter } from "./adapters/GeminiCliAdapter.js";
27
+ export { GrokCliAdapter } from "./adapters/GrokCliAdapter.js";
28
+ export { OpenCodeAdapter } from "./adapters/OpenCodeAdapter.js";
29
+ export { PiAdapter } from "./providers/pi/PiAdapter.js";
30
+ export { AgentStatus } from "./adapters/AgentAdapter.js";
17
31
  export type {
18
- AgentAdapter,
19
- AgentType,
20
- AgentInfo,
21
- ProcessInfo,
22
- ConversationMessage,
23
- SessionSummary,
24
- ListSessionsOptions,
25
- AgentDetectionContext,
26
- } from './adapters/AgentAdapter.js';
32
+ AgentAdapter,
33
+ AgentType,
34
+ AgentInfo,
35
+ ProcessInfo,
36
+ ConversationMessage,
37
+ SessionSummary,
38
+ ListSessionsOptions,
39
+ AgentDetectionContext,
40
+ } from "./adapters/AgentAdapter.js";
27
41
 
28
- export { TerminalFocusManager, TerminalType } from './terminal/TerminalFocusManager.js';
29
- export type { TerminalLocation } from './terminal/TerminalFocusManager.js';
30
- export { TtyWriter } from './terminal/TtyWriter.js';
42
+ export { TerminalFocusManager, TerminalType } from "./terminal/TerminalFocusManager.js";
43
+ export type { TerminalLocation } from "./terminal/TerminalFocusManager.js";
44
+ export { TtyWriter } from "./terminal/TtyWriter.js";
31
45
 
32
- export type { ListAgentsOptions } from './AgentManager.js';
46
+ export type { ListAgentsOptions } from "./AgentManager.js";
33
47
 
34
- export { AgentRegistry, RenameNotFoundError, RenameConflictError } from './utils/AgentRegistry.js';
35
- export type { AgentRegistryOptions, RegistryEntry } from './utils/AgentRegistry.js';
36
- export { TmuxManager } from './terminal/TmuxManager.js';
37
- export { AGENTS } from './utils/agents.js';
38
- export type { AgentConfig, StartableAgentType } from './utils/agents.js';
48
+ export {
49
+ AgentRegistry,
50
+ RenameNotFoundError,
51
+ RenameConflictError,
52
+ AGENT_RUNTIME_PROVIDERS,
53
+ parseTmuxRuntimeRef,
54
+ } from "./utils/AgentRegistry.js";
55
+ export type {
56
+ AgentRegistryOptions,
57
+ RegistryEntry,
58
+ AgentRuntimeProvider,
59
+ TmuxRuntimeRef,
60
+ } from "./utils/AgentRegistry.js";
61
+ export { TmuxManager } from "./terminal/TmuxManager.js";
62
+ export type { AgentRuntimeAvailability, InteractiveAgentRuntime } from "./runtime/types.js";
63
+ export {
64
+ startAgent,
65
+ stopAgent,
66
+ focusAgent,
67
+ sendAgentPrompt,
68
+ TmuxUnavailableError,
69
+ AgentNameInUseError,
70
+ AgentPidPollTimeoutError,
71
+ AgentRuntimeUnavailableError,
72
+ AgentTerminalNotFoundError,
73
+ DEFAULT_PID_POLL_INTERVAL_MS,
74
+ DEFAULT_PID_POLL_TIMEOUT_MS,
75
+ } from "./runtime/ManagedAgentRuntime.js";
76
+ export type {
77
+ FocusAgentDeps,
78
+ StartAgentDeps,
79
+ StartAgentOptions,
80
+ StopAgentDeps,
81
+ StopAgentResult,
82
+ FocusAgentResult,
83
+ SendAgentPromptDeps,
84
+ } from "./runtime/ManagedAgentRuntime.js";
85
+ export { AGENTS } from "./utils/agents.js";
86
+ export type { AgentConfig, StartableAgentType } from "./utils/agents.js";
39
87
 
40
- export type { AgentRequest } from './utils/agent-requests.js';
41
- export { getAgentRequestPath, readLatestAgentRequest, writeAgentRequest } from './utils/agent-requests.js';
88
+ export type { AgentRequest } from "./utils/agent-requests.js";
89
+ export {
90
+ getAgentRequestPath,
91
+ readLatestAgentRequest,
92
+ writeAgentRequest,
93
+ } from "./utils/agent-requests.js";
42
94
 
43
95
  export {
44
- AGENT_MODES,
45
- DurableAgentError,
46
- DurableAgentBusyError,
47
- DurableAgentNotFoundError,
48
- DurableAgentRepositoryError,
49
- DurableAgentNameConflictError,
50
- ClaudePrintError,
51
- CodexPrintError,
52
- PiPrintError,
53
- } from './durable/DurableAgent.js';
96
+ AGENT_MODES,
97
+ DurableAgentError,
98
+ DurableAgentBusyError,
99
+ DurableAgentNotFoundError,
100
+ DurableAgentRepositoryError,
101
+ DurableAgentNameConflictError,
102
+ ClaudePrintError,
103
+ CodexPrintError,
104
+ PiPrintError,
105
+ } from "./durable/DurableAgent.js";
106
+ export type {
107
+ DurableAgent,
108
+ DurableAgentBase,
109
+ ClaudeDurableAgent,
110
+ CodexDurableAgent,
111
+ PiDurableAgent,
112
+ DurableProvider,
113
+ CodexPrintErrorCode,
114
+ DurableAgentState,
115
+ DurableSessionHealth,
116
+ DurableRunStatus,
117
+ DurableActiveRun,
118
+ DurableLastResult,
119
+ PiPrintErrorCode,
120
+ ProcessIdentity,
121
+ } from "./durable/DurableAgent.js";
122
+ export { DurableAgentRepository } from "./durable/DurableAgentRepository.js";
123
+ export type {
124
+ CreateDurableAgentInput,
125
+ DurableAgentRepositoryOptions,
126
+ ProcessInspector,
127
+ DurableRunCompletion,
128
+ } from "./durable/DurableAgentRepository.js";
129
+ export { ClaudePrintAgentService } from "./providers/claude/durable/ClaudePrintAgentService.js";
54
130
  export type {
55
- DurableAgent,
56
- DurableAgentBase,
57
- ClaudeDurableAgent,
58
- CodexDurableAgent,
59
- PiDurableAgent,
60
- DurableProvider,
61
- CodexPrintErrorCode,
62
- DurableAgentState,
63
- DurableSessionHealth,
64
- DurableRunStatus,
65
- DurableActiveRun,
66
- DurableLastResult,
67
- PiPrintErrorCode,
68
- ProcessIdentity,
69
- } from './durable/DurableAgent.js';
70
- export { DurableAgentRepository } from './durable/DurableAgentRepository.js';
131
+ ClaudePrintAgentServiceOptions,
132
+ ClaudePrintSendResult,
133
+ } from "./providers/claude/durable/ClaudePrintAgentService.js";
134
+ export { CodexCliProbe } from "./providers/codex/durable/CodexCliProbe.js";
135
+ export type { CodexCliProbeOptions } from "./providers/codex/durable/CodexCliProbe.js";
136
+ export { CodexPrintRunner } from "./providers/codex/durable/CodexPrintRunner.js";
71
137
  export type {
72
- CreateDurableAgentInput,
73
- DurableAgentRepositoryOptions,
74
- ProcessInspector,
75
- DurableRunCompletion,
76
- } from './durable/DurableAgentRepository.js';
77
- export { ClaudePrintAgentService } from './providers/claude/durable/ClaudePrintAgentService.js';
138
+ CodexPrintRunnerOptions,
139
+ CodexPrintRunRequest,
140
+ CodexPrintRunResult,
141
+ } from "./providers/codex/durable/CodexPrintRunner.js";
142
+ export { CodexPrintAgentService } from "./providers/codex/durable/CodexPrintAgentService.js";
78
143
  export type {
79
- ClaudePrintAgentServiceOptions,
80
- ClaudePrintSendResult,
81
- } from './providers/claude/durable/ClaudePrintAgentService.js';
82
- export { CodexCliProbe } from './providers/codex/durable/CodexCliProbe.js';
83
- export type { CodexCliProbeOptions } from './providers/codex/durable/CodexCliProbe.js';
84
- export { CodexPrintRunner } from './providers/codex/durable/CodexPrintRunner.js';
144
+ CodexPrintAgentServiceOptions,
145
+ CodexPrintSendResult,
146
+ } from "./providers/codex/durable/CodexPrintAgentService.js";
147
+ export { PiCliProbe } from "./providers/pi/durable/PiCliProbe.js";
148
+ export type { PiCliProbeOptions } from "./providers/pi/durable/PiCliProbe.js";
149
+ export { PiPrintRunner } from "./providers/pi/durable/PiPrintRunner.js";
85
150
  export type {
86
- CodexPrintRunnerOptions,
87
- CodexPrintRunRequest,
88
- CodexPrintRunResult,
89
- } from './providers/codex/durable/CodexPrintRunner.js';
90
- export { CodexPrintAgentService } from './providers/codex/durable/CodexPrintAgentService.js';
151
+ PiPrintRunnerOptions,
152
+ PiPrintRunRequest,
153
+ PiPrintRunResult,
154
+ } from "./providers/pi/durable/PiPrintRunner.js";
155
+ export { PiPrintAgentService } from "./providers/pi/durable/PiPrintAgentService.js";
91
156
  export type {
92
- CodexPrintAgentServiceOptions,
93
- CodexPrintSendResult,
94
- } from './providers/codex/durable/CodexPrintAgentService.js';
95
- export { PiCliProbe } from './providers/pi/durable/PiCliProbe.js';
96
- export type { PiCliProbeOptions } from './providers/pi/durable/PiCliProbe.js';
97
- export { PiPrintRunner } from './providers/pi/durable/PiPrintRunner.js';
98
- export type { PiPrintRunnerOptions, PiPrintRunRequest, PiPrintRunResult } from './providers/pi/durable/PiPrintRunner.js';
99
- export { PiPrintAgentService } from './providers/pi/durable/PiPrintAgentService.js';
100
- export type { PiPrintAgentServiceOptions, PiPrintSendResult } from './providers/pi/durable/PiPrintAgentService.js';
157
+ PiPrintAgentServiceOptions,
158
+ PiPrintSendResult,
159
+ } from "./providers/pi/durable/PiPrintAgentService.js";