@ai-devkit/agent-manager 0.32.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 +134 -134
  76. package/dist/__tests__/readiness/AgentReadiness.test.js.map +1 -1
  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 -43
  171. package/dist/index.d.ts.map +1 -1
  172. package/dist/index.js +27 -26
  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 +6 -6
  279. package/dist/readiness/AgentReadiness.d.ts.map +1 -1
  280. package/dist/readiness/AgentReadiness.js +130 -130
  281. package/dist/readiness/AgentReadiness.js.map +1 -1
  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 +217 -169
  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 +144 -103
  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 +585 -513
  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,36 +1,36 @@
1
- import { constants } from 'node:fs';
2
- import { access as fsAccess, readFile as fsReadFile } from 'node:fs/promises';
3
- import { execFile } from 'node:child_process';
4
- import { delimiter, join } from 'node:path';
5
- import { promisify } from 'node:util';
6
- import { getCodexCapacityReport } from '../capacity/index.js';
7
- import { AGENTS } from '../utils/agents.js';
1
+ import { constants } from "node:fs";
2
+ import { access as fsAccess, readFile as fsReadFile } from "node:fs/promises";
3
+ import { execFile } from "node:child_process";
4
+ import { delimiter, join } from "node:path";
5
+ import { promisify } from "node:util";
6
+ import { getCodexCapacityReport } from "../capacity/index.js";
7
+ import { AGENTS } from "../utils/agents.js";
8
8
  const execFileAsync = promisify(execFile);
9
9
  const READINESS_AGENT_TYPES = [
10
- 'claude',
11
- 'codex',
12
- 'copilot',
13
- 'grok_cli',
14
- 'opencode',
15
- 'pi'
10
+ "claude",
11
+ "codex",
12
+ "copilot",
13
+ "grok_cli",
14
+ "opencode",
15
+ "pi"
16
16
  ];
17
- const ANSI_ESCAPE_PATTERN = new RegExp(`${String.fromCharCode(27)}\\[[0-?]*[ -/]*[@-~]`, 'g');
17
+ const ANSI_ESCAPE_PATTERN = new RegExp(`${String.fromCharCode(27)}\\[[0-?]*[ -/]*[@-~]`, "g");
18
18
  const AGENT_HOME_DIRS = {
19
- claude: '.claude',
20
- codex: '.codex',
21
- copilot: '.copilot',
22
- grok_cli: '.grok',
23
- opencode: '.config/opencode',
24
- pi: '.pi'
19
+ claude: ".claude",
20
+ codex: ".codex",
21
+ copilot: ".copilot",
22
+ grok_cli: ".grok",
23
+ opencode: ".config/opencode",
24
+ pi: ".pi"
25
25
  };
26
26
  function runtime(options) {
27
27
  return {
28
- homeDir: options.homeDir ?? process.env.HOME ?? '',
29
- path: options.path ?? process.env.PATH ?? '',
28
+ homeDir: options.homeDir ?? process.env.HOME ?? "",
29
+ path: options.path ?? process.env.PATH ?? "",
30
30
  assetRoot: options.assetRoot ?? null,
31
31
  builtInSkillNames: options.builtInSkillNames ?? [],
32
32
  skillRoots: options.skillRoots ?? {},
33
- readFile: options.readFile ?? ((target)=>fsReadFile(target, 'utf8')),
33
+ readFile: options.readFile ?? ((target)=>fsReadFile(target, "utf8")),
34
34
  access: options.access ?? ((target, mode = constants.R_OK)=>fsAccess(target, mode)),
35
35
  runCommand: options.runCommand ?? defaultRunCommand,
36
36
  codexAuth: options.codexAuth ?? (async ()=>(await getCodexCapacityReport()).authenticated)
@@ -38,7 +38,7 @@ function runtime(options) {
38
38
  }
39
39
  async function defaultRunCommand(command, args) {
40
40
  const result = await execFileAsync(command, args, {
41
- encoding: 'utf8',
41
+ encoding: "utf8",
42
42
  timeout: 5000,
43
43
  maxBuffer: 1024 * 1024
44
44
  });
@@ -48,19 +48,19 @@ async function defaultRunCommand(command, args) {
48
48
  };
49
49
  }
50
50
  function statusRank(status) {
51
- return status === 'fail' ? 2 : status === 'warn' ? 1 : 0;
51
+ return status === "fail" ? 2 : status === "warn" ? 1 : 0;
52
52
  }
53
53
  export function worstReadinessStatus(statuses) {
54
- return statuses.reduce((worst, current)=>statusRank(current) > statusRank(worst) ? current : worst, 'pass');
54
+ return statuses.reduce((worst, current)=>statusRank(current) > statusRank(worst) ? current : worst, "pass");
55
55
  }
56
56
  function displayHome(target, homeDir) {
57
- return target === homeDir ? '~' : target.startsWith(`${homeDir}/`) ? `~${target.slice(homeDir.length)}` : target;
57
+ return target === homeDir ? "~" : target.startsWith(`${homeDir}/`) ? `~${target.slice(homeDir.length)}` : target;
58
58
  }
59
59
  function record(value) {
60
- return value !== null && typeof value === 'object' && !Array.isArray(value) ? value : null;
60
+ return value !== null && typeof value === "object" && !Array.isArray(value) ? value : null;
61
61
  }
62
62
  function nonEmpty(value) {
63
- return typeof value === 'string' && value.trim().length > 0;
63
+ return typeof value === "string" && value.trim().length > 0;
64
64
  }
65
65
  async function accessible(target, rt, mode = constants.R_OK) {
66
66
  try {
@@ -84,7 +84,7 @@ async function executableCheck(agent, rt) {
84
84
  return {
85
85
  command,
86
86
  path: resolvedPath,
87
- status: resolvedPath ? 'pass' : 'fail',
87
+ status: resolvedPath ? "pass" : "fail",
88
88
  errors: resolvedPath ? [] : [
89
89
  `${command} was not found on PATH`
90
90
  ]
@@ -97,9 +97,9 @@ async function directoryCheck(agent, rt) {
97
97
  path: displayHome(target, rt.homeDir),
98
98
  present: readable,
99
99
  readable,
100
- status: readable ? 'pass' : 'fail',
100
+ status: readable ? "pass" : "fail",
101
101
  errors: readable ? [] : [
102
- 'global configuration directory is unavailable'
102
+ "global configuration directory is unavailable"
103
103
  ]
104
104
  };
105
105
  }
@@ -113,14 +113,14 @@ async function builtInSkillsCheck(agent, rt) {
113
113
  missing: [
114
114
  ...rt.builtInSkillNames
115
115
  ],
116
- status: 'info',
116
+ status: "info",
117
117
  errors: []
118
118
  };
119
119
  }
120
120
  const root = join(rt.homeDir, relativeRoot);
121
121
  const checks = await Promise.all(rt.builtInSkillNames.map(async (name)=>({
122
122
  name,
123
- present: await accessible(join(root, name, 'SKILL.md'), rt)
123
+ present: await accessible(join(root, name, "SKILL.md"), rt)
124
124
  })));
125
125
  const present = checks.filter((check)=>check.present).map((check)=>check.name);
126
126
  const missing = rt.builtInSkillNames.filter((name)=>!present.includes(name));
@@ -131,7 +131,7 @@ async function builtInSkillsCheck(agent, rt) {
131
131
  missing: [
132
132
  ...missing
133
133
  ],
134
- status: 'info',
134
+ status: "info",
135
135
  errors: []
136
136
  };
137
137
  }
@@ -145,9 +145,9 @@ async function scriptCheck(installed, bundled, rt) {
145
145
  present: false,
146
146
  readable: false,
147
147
  matchesBundledAsset: false,
148
- status: 'fail',
148
+ status: "fail",
149
149
  errors: [
150
- 'hook script is unavailable'
150
+ "hook script is unavailable"
151
151
  ]
152
152
  };
153
153
  }
@@ -159,9 +159,9 @@ async function scriptCheck(installed, bundled, rt) {
159
159
  present: true,
160
160
  readable: true,
161
161
  matchesBundledAsset: matches,
162
- status: matches ? 'pass' : 'fail',
162
+ status: matches ? "pass" : "fail",
163
163
  errors: matches ? [] : [
164
- 'hook script differs from the bundled AI DevKit asset'
164
+ "hook script differs from the bundled AI DevKit asset"
165
165
  ]
166
166
  };
167
167
  } catch {
@@ -170,9 +170,9 @@ async function scriptCheck(installed, bundled, rt) {
170
170
  present: true,
171
171
  readable: true,
172
172
  matchesBundledAsset: false,
173
- status: 'fail',
173
+ status: "fail",
174
174
  errors: [
175
- 'bundled hook asset is unavailable'
175
+ "bundled hook asset is unavailable"
176
176
  ]
177
177
  };
178
178
  }
@@ -185,7 +185,7 @@ function containsHook(root, event, command) {
185
185
  const commands = record(entry)?.hooks;
186
186
  return Array.isArray(commands) && commands.some((hook)=>{
187
187
  const item = record(hook);
188
- return item?.type === 'command' && item.command === command;
188
+ return item?.type === "command" && item.command === command;
189
189
  });
190
190
  });
191
191
  }
@@ -199,9 +199,9 @@ async function registrationCheck(target, event, command, rt) {
199
199
  command,
200
200
  present: true,
201
201
  valid,
202
- status: valid ? 'pass' : 'fail',
202
+ status: valid ? "pass" : "fail",
203
203
  errors: valid ? [] : [
204
- 'required hook registration is missing'
204
+ "required hook registration is missing"
205
205
  ]
206
206
  };
207
207
  } catch {
@@ -211,9 +211,9 @@ async function registrationCheck(target, event, command, rt) {
211
211
  command,
212
212
  present: false,
213
213
  valid: false,
214
- status: 'fail',
214
+ status: "fail",
215
215
  errors: [
216
- 'hook configuration is missing or invalid'
216
+ "hook configuration is missing or invalid"
217
217
  ]
218
218
  };
219
219
  }
@@ -229,9 +229,9 @@ async function mappingCheck(target, rt) {
229
229
  valid: false,
230
230
  invalidEntries: 0,
231
231
  staleEntries: 0,
232
- status: 'warn',
232
+ status: "warn",
233
233
  errors: [
234
- 'session mapping has not been created'
234
+ "session mapping has not been created"
235
235
  ]
236
236
  };
237
237
  }
@@ -248,14 +248,14 @@ async function mappingCheck(target, rt) {
248
248
  valid: false,
249
249
  invalidEntries: 0,
250
250
  staleEntries: 0,
251
- status: 'fail',
251
+ status: "fail",
252
252
  errors: [
253
- 'session mapping is invalid'
253
+ "session mapping is invalid"
254
254
  ]
255
255
  };
256
256
  }
257
257
  const entries = await Promise.all(Object.entries(parsed).map(async ([pid, sessionPath])=>{
258
- if (!/^\d+$/.test(pid) || typeof sessionPath !== 'string' || !sessionPath) {
258
+ if (!/^\d+$/.test(pid) || typeof sessionPath !== "string" || !sessionPath) {
259
259
  return {
260
260
  valid: false,
261
261
  stale: false
@@ -275,11 +275,11 @@ async function mappingCheck(target, rt) {
275
275
  valid,
276
276
  invalidEntries,
277
277
  staleEntries,
278
- status: !valid ? 'fail' : staleEntries ? 'warn' : 'pass',
278
+ status: !valid ? "fail" : staleEntries ? "warn" : "pass",
279
279
  errors: !valid ? [
280
- 'session mapping contains invalid entries'
280
+ "session mapping contains invalid entries"
281
281
  ] : staleEntries ? [
282
- 'session mapping contains stale entries'
282
+ "session mapping contains stale entries"
283
283
  ] : []
284
284
  };
285
285
  }
@@ -287,57 +287,57 @@ async function codexAuthCheck(rt) {
287
287
  try {
288
288
  const value = await rt.codexAuth();
289
289
  return {
290
- state: value === true ? 'authenticated' : value === false ? 'unauthenticated' : 'unknown',
291
- source: displayHome(join(rt.homeDir, '.codex', 'auth.json'), rt.homeDir),
290
+ state: value === true ? "authenticated" : value === false ? "unauthenticated" : "unknown",
291
+ source: displayHome(join(rt.homeDir, ".codex", "auth.json"), rt.homeDir),
292
292
  provider: null,
293
293
  availableProviders: [],
294
- status: value === true ? 'pass' : value === false ? 'fail' : 'warn',
294
+ status: value === true ? "pass" : value === false ? "fail" : "warn",
295
295
  errors: value === true ? [] : [
296
- value === false ? 'Codex is not authenticated' : 'Codex authentication is unknown'
296
+ value === false ? "Codex is not authenticated" : "Codex authentication is unknown"
297
297
  ]
298
298
  };
299
299
  } catch {
300
300
  return {
301
- state: 'unknown',
302
- source: '~/.codex/auth.json',
301
+ state: "unknown",
302
+ source: "~/.codex/auth.json",
303
303
  provider: null,
304
304
  availableProviders: [],
305
- status: 'warn',
305
+ status: "warn",
306
306
  errors: [
307
- 'Codex authentication probe failed'
307
+ "Codex authentication probe failed"
308
308
  ]
309
309
  };
310
310
  }
311
311
  }
312
312
  async function claudeAuthCheck(rt) {
313
313
  try {
314
- const result = await rt.runCommand('claude', [
315
- 'auth',
316
- 'status',
317
- '--json'
314
+ const result = await rt.runCommand("claude", [
315
+ "auth",
316
+ "status",
317
+ "--json"
318
318
  ]);
319
319
  const parsed = record(JSON.parse(result.stdout));
320
320
  const authenticated = parsed?.loggedIn === true || parsed?.authenticated === true;
321
321
  const unauthenticated = parsed?.loggedIn === false || parsed?.authenticated === false;
322
322
  return {
323
- state: authenticated ? 'authenticated' : unauthenticated ? 'unauthenticated' : 'unknown',
324
- source: 'claude auth status --json',
323
+ state: authenticated ? "authenticated" : unauthenticated ? "unauthenticated" : "unknown",
324
+ source: "claude auth status --json",
325
325
  provider: null,
326
326
  availableProviders: [],
327
- status: authenticated ? 'pass' : unauthenticated ? 'fail' : 'warn',
327
+ status: authenticated ? "pass" : unauthenticated ? "fail" : "warn",
328
328
  errors: authenticated ? [] : [
329
- unauthenticated ? 'Claude is not authenticated' : 'Claude authentication is unknown'
329
+ unauthenticated ? "Claude is not authenticated" : "Claude authentication is unknown"
330
330
  ]
331
331
  };
332
332
  } catch {
333
333
  return {
334
- state: 'unknown',
335
- source: 'claude auth status --json',
334
+ state: "unknown",
335
+ source: "claude auth status --json",
336
336
  provider: null,
337
337
  availableProviders: [],
338
- status: 'warn',
338
+ status: "warn",
339
339
  errors: [
340
- 'Claude authentication probe failed'
340
+ "Claude authentication probe failed"
341
341
  ]
342
342
  };
343
343
  }
@@ -352,7 +352,7 @@ function piProviderNames(parsed) {
352
352
  }
353
353
  }
354
354
  for (const [name, value] of Object.entries(parsed)){
355
- if (name === 'provider' || name === 'providers') continue;
355
+ if (name === "provider" || name === "providers") continue;
356
356
  if (record(value) && name.trim()) names.add(name);
357
357
  }
358
358
  return [
@@ -360,96 +360,96 @@ function piProviderNames(parsed) {
360
360
  ].sort();
361
361
  }
362
362
  async function piAuthCheck(rt) {
363
- const sourcePath = join(rt.homeDir, '.pi', 'agent', 'auth.json');
363
+ const sourcePath = join(rt.homeDir, ".pi", "agent", "auth.json");
364
364
  try {
365
365
  const parsed = record(JSON.parse(await rt.readFile(sourcePath)));
366
- if (!parsed) throw new Error('invalid');
366
+ if (!parsed) throw new Error("invalid");
367
367
  const availableProviders = piProviderNames(parsed);
368
368
  const provider = nonEmpty(parsed.provider) ? parsed.provider.trim() : null;
369
369
  const authenticated = availableProviders.length > 0;
370
370
  return {
371
- state: authenticated ? 'authenticated' : 'unauthenticated',
371
+ state: authenticated ? "authenticated" : "unauthenticated",
372
372
  source: displayHome(sourcePath, rt.homeDir),
373
373
  provider,
374
374
  availableProviders,
375
- status: authenticated ? 'pass' : 'fail',
375
+ status: authenticated ? "pass" : "fail",
376
376
  errors: authenticated ? [] : [
377
- 'Pi credential file has no configured model provider'
377
+ "Pi credential file has no configured model provider"
378
378
  ]
379
379
  };
380
380
  } catch {
381
381
  return {
382
- state: 'unauthenticated',
382
+ state: "unauthenticated",
383
383
  source: displayHome(sourcePath, rt.homeDir),
384
384
  provider: null,
385
385
  availableProviders: [],
386
- status: 'fail',
386
+ status: "fail",
387
387
  errors: [
388
- 'Pi credential file is missing or invalid'
388
+ "Pi credential file is missing or invalid"
389
389
  ]
390
390
  };
391
391
  }
392
392
  }
393
393
  async function opencodeAuthCheck(rt) {
394
394
  try {
395
- const result = await rt.runCommand('opencode', [
396
- 'auth',
397
- 'list'
395
+ const result = await rt.runCommand("opencode", [
396
+ "auth",
397
+ "list"
398
398
  ]);
399
399
  const availableProviders = opencodeAuthProviderNames(result.stdout);
400
400
  const authenticated = availableProviders.length > 0;
401
401
  return {
402
- state: authenticated ? 'authenticated' : 'unauthenticated',
403
- source: 'opencode auth list',
402
+ state: authenticated ? "authenticated" : "unauthenticated",
403
+ source: "opencode auth list",
404
404
  provider: null,
405
405
  availableProviders,
406
- status: authenticated ? 'pass' : 'fail',
406
+ status: authenticated ? "pass" : "fail",
407
407
  errors: authenticated ? [] : [
408
- 'OpenCode has no configured credentials'
408
+ "OpenCode has no configured credentials"
409
409
  ]
410
410
  };
411
411
  } catch {
412
412
  return {
413
- state: 'unknown',
414
- source: 'opencode auth list',
413
+ state: "unknown",
414
+ source: "opencode auth list",
415
415
  provider: null,
416
416
  availableProviders: [],
417
- status: 'warn',
417
+ status: "warn",
418
418
  errors: [
419
- 'OpenCode authentication probe failed'
419
+ "OpenCode authentication probe failed"
420
420
  ]
421
421
  };
422
422
  }
423
423
  }
424
424
  async function copilotAuthCheck(rt) {
425
425
  try {
426
- await rt.runCommand('gh', [
427
- 'auth',
428
- 'status',
429
- '--hostname',
430
- 'github.com'
426
+ await rt.runCommand("gh", [
427
+ "auth",
428
+ "status",
429
+ "--hostname",
430
+ "github.com"
431
431
  ]);
432
432
  return {
433
- state: 'authenticated',
434
- source: 'gh auth status --hostname github.com',
435
- provider: 'github',
433
+ state: "authenticated",
434
+ source: "gh auth status --hostname github.com",
435
+ provider: "github",
436
436
  availableProviders: [
437
- 'GitHub'
437
+ "GitHub"
438
438
  ],
439
- status: 'pass',
439
+ status: "pass",
440
440
  errors: []
441
441
  };
442
442
  } catch {
443
443
  return {
444
- state: 'unknown',
445
- source: 'gh auth status --hostname github.com',
444
+ state: "unknown",
445
+ source: "gh auth status --hostname github.com",
446
446
  provider: null,
447
447
  availableProviders: [
448
- 'GitHub'
448
+ "GitHub"
449
449
  ],
450
- status: 'warn',
450
+ status: "warn",
451
451
  errors: [
452
- 'Copilot authentication could not be verified through GitHub CLI'
452
+ "Copilot authentication could not be verified through GitHub CLI"
453
453
  ]
454
454
  };
455
455
  }
@@ -459,7 +459,7 @@ function opencodeAuthProviderNames(output) {
459
459
  for (const line of stripAnsi(output).split(/\r?\n/)){
460
460
  const match = /^\s*[●*+-]\s+(.+?)\s*$/.exec(line);
461
461
  if (!match) continue;
462
- const name = match[1].replace(/\s+(?:api|oauth|[\w-]*token|[A-Z][A-Z0-9_]+)$/i, '').trim();
462
+ const name = match[1].replace(/\s+(?:api|oauth|[\w-]*token|[A-Z][A-Z0-9_]+)$/i, "").trim();
463
463
  if (name && !/^\d+\s+(?:credentials?|environment variables?)$/i.test(name)) names.add(name);
464
464
  }
465
465
  return [
@@ -467,15 +467,15 @@ function opencodeAuthProviderNames(output) {
467
467
  ].sort();
468
468
  }
469
469
  function stripAnsi(value) {
470
- return value.replace(ANSI_ESCAPE_PATTERN, '');
470
+ return value.replace(ANSI_ESCAPE_PATTERN, "");
471
471
  }
472
472
  async function codexIntegrationCheck(rt) {
473
- const script = await scriptCheck(join(rt.homeDir, '.codex', 'hooks', 'codex-session-mapping.cjs'), join(rt.assetRoot ?? '', 'codex', 'codex-session-mapping.cjs'), rt);
474
- const registration = await registrationCheck(join(rt.homeDir, '.codex', 'hooks.json'), 'SessionStart', 'node ~/.codex/hooks/codex-session-mapping.cjs', rt);
475
- const mappingFile = await mappingCheck(join(rt.homeDir, '.codex', 'ai-devkit', 'sessions.json'), rt);
476
- const installed = script.status === 'pass' && registration.status === 'pass';
473
+ const script = await scriptCheck(join(rt.homeDir, ".codex", "hooks", "codex-session-mapping.cjs"), join(rt.assetRoot ?? "", "codex", "codex-session-mapping.cjs"), rt);
474
+ const registration = await registrationCheck(join(rt.homeDir, ".codex", "hooks.json"), "SessionStart", "node ~/.codex/hooks/codex-session-mapping.cjs", rt);
475
+ const mappingFile = await mappingCheck(join(rt.homeDir, ".codex", "ai-devkit", "sessions.json"), rt);
476
+ const installed = script.status === "pass" && registration.status === "pass";
477
477
  return {
478
- label: 'ai-devkit hook',
478
+ label: "ai-devkit hook",
479
479
  installed,
480
480
  status: worstReadinessStatus([
481
481
  script.status,
@@ -495,11 +495,11 @@ async function codexIntegrationCheck(rt) {
495
495
  };
496
496
  }
497
497
  async function claudeIntegrationCheck(rt) {
498
- const script = await scriptCheck(join(rt.homeDir, '.claude', 'hooks', 'claude-prompt-hook.js'), join(rt.assetRoot ?? '', 'claude', 'claude-prompt-hook.js'), rt);
499
- const registration = await registrationCheck(join(rt.homeDir, '.claude', 'settings.json'), 'PreToolUse', 'node ~/.claude/hooks/claude-prompt-hook.js', rt);
500
- const installed = script.status === 'pass' && registration.status === 'pass';
498
+ const script = await scriptCheck(join(rt.homeDir, ".claude", "hooks", "claude-prompt-hook.js"), join(rt.assetRoot ?? "", "claude", "claude-prompt-hook.js"), rt);
499
+ const registration = await registrationCheck(join(rt.homeDir, ".claude", "settings.json"), "PreToolUse", "node ~/.claude/hooks/claude-prompt-hook.js", rt);
500
+ const installed = script.status === "pass" && registration.status === "pass";
501
501
  return {
502
- label: 'ai-devkit hook',
502
+ label: "ai-devkit hook",
503
503
  installed,
504
504
  status: worstReadinessStatus([
505
505
  script.status,
@@ -518,31 +518,31 @@ async function claudeIntegrationCheck(rt) {
518
518
  async function piIntegrationCheck(rt) {
519
519
  let installed = false;
520
520
  try {
521
- const result = await rt.runCommand('pi', [
522
- 'list'
521
+ const result = await rt.runCommand("pi", [
522
+ "list"
523
523
  ]);
524
524
  installed = isPiSessionTrackerListed(result.stdout);
525
525
  } catch {
526
526
  // Safe fixed result below.
527
527
  }
528
- const mapping = await mappingCheck(join(rt.homeDir, '.pi', 'agent', 'sessions.json'), rt);
529
- const mappingStatus = mapping.valid || !mapping.present ? 'pass' : 'fail';
528
+ const mapping = await mappingCheck(join(rt.homeDir, ".pi", "agent", "sessions.json"), rt);
529
+ const mappingStatus = mapping.valid || !mapping.present ? "pass" : "fail";
530
530
  const status = worstReadinessStatus([
531
- installed ? 'pass' : 'fail',
531
+ installed ? "pass" : "fail",
532
532
  mappingStatus
533
533
  ]);
534
534
  return {
535
- label: 'ai-devkit plugin',
535
+ label: "ai-devkit plugin",
536
536
  installed,
537
537
  status,
538
538
  errors: [
539
539
  ...!installed ? [
540
- 'Pi session tracker is not registered'
540
+ "Pi session tracker is not registered"
541
541
  ] : [],
542
- ...mappingStatus === 'fail' ? mapping.errors : []
542
+ ...mappingStatus === "fail" ? mapping.errors : []
543
543
  ],
544
544
  details: {
545
- package: '@ai-devkit/pi-session-tracker',
545
+ package: "@ai-devkit/pi-session-tracker",
546
546
  registryPath: mapping.path,
547
547
  registryValid: mapping.valid,
548
548
  invalidEntries: mapping.invalidEntries,
@@ -552,7 +552,7 @@ async function piIntegrationCheck(rt) {
552
552
  }
553
553
  function isPiSessionTrackerListed(output) {
554
554
  const normalized = output.toLowerCase();
555
- return normalized.includes('@ai-devkit/pi-session-tracker') || /\bsession[\s-]+tracker\b/.test(normalized);
555
+ return normalized.includes("@ai-devkit/pi-session-tracker") || /\bsession[\s-]+tracker\b/.test(normalized);
556
556
  }
557
557
  const AUTH_CHECKS = {
558
558
  claude: claudeAuthCheck,