@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,4 +1,4 @@
1
- export { DatabaseConnection, DEFAULT_AGENT_REGISTRY_DB_PATH, resolveAgentRegistryDbPath, } from './connection.js';
2
- export type { DatabaseOptions } from './connection.js';
3
- export { getSchemaVersion, initializeSchema } from './schema.js';
1
+ export { DatabaseConnection, DEFAULT_AGENT_REGISTRY_DB_PATH, resolveAgentRegistryDbPath, } from "./connection.js";
2
+ export type { DatabaseOptions } from "./connection.js";
3
+ export { getSchemaVersion, initializeSchema } from "./schema.js";
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/database/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,kBAAkB,EAClB,8BAA8B,EAC9B,0BAA0B,GAC7B,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/database/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,8BAA8B,EAC9B,0BAA0B,GAC3B,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC"}
@@ -1,4 +1,4 @@
1
- export { DatabaseConnection, DEFAULT_AGENT_REGISTRY_DB_PATH, resolveAgentRegistryDbPath } from './connection.js';
2
- export { getSchemaVersion, initializeSchema } from './schema.js';
1
+ export { DatabaseConnection, DEFAULT_AGENT_REGISTRY_DB_PATH, resolveAgentRegistryDbPath } from "./connection.js";
2
+ export { getSchemaVersion, initializeSchema } from "./schema.js";
3
3
 
4
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/database/index.ts"],"sourcesContent":["export {\n DatabaseConnection,\n DEFAULT_AGENT_REGISTRY_DB_PATH,\n resolveAgentRegistryDbPath,\n} from './connection.js';\nexport type { DatabaseOptions } from './connection.js';\nexport { getSchemaVersion, initializeSchema } from './schema.js';\n"],"names":["DatabaseConnection","DEFAULT_AGENT_REGISTRY_DB_PATH","resolveAgentRegistryDbPath","getSchemaVersion","initializeSchema"],"mappings":"AAAA,SACIA,kBAAkB,EAClBC,8BAA8B,EAC9BC,0BAA0B,QACvB,kBAAkB;AAEzB,SAASC,gBAAgB,EAAEC,gBAAgB,QAAQ,cAAc"}
1
+ {"version":3,"sources":["../../src/database/index.ts"],"sourcesContent":["export {\n DatabaseConnection,\n DEFAULT_AGENT_REGISTRY_DB_PATH,\n resolveAgentRegistryDbPath,\n} from \"./connection.js\";\nexport type { DatabaseOptions } from \"./connection.js\";\nexport { getSchemaVersion, initializeSchema } from \"./schema.js\";\n"],"names":["DatabaseConnection","DEFAULT_AGENT_REGISTRY_DB_PATH","resolveAgentRegistryDbPath","getSchemaVersion","initializeSchema"],"mappings":"AAAA,SACEA,kBAAkB,EAClBC,8BAA8B,EAC9BC,0BAA0B,QACrB,kBAAkB;AAEzB,SAASC,gBAAgB,EAAEC,gBAAgB,QAAQ,cAAc"}
@@ -0,0 +1,2 @@
1
+ ALTER TABLE agents ADD COLUMN runtime TEXT NOT NULL DEFAULT 'tmux';
2
+ ALTER TABLE agents ADD COLUMN runtime_ref TEXT NOT NULL DEFAULT '';
@@ -1,4 +1,4 @@
1
- import type { DatabaseConnection } from './connection.js';
1
+ import type { DatabaseConnection } from "./connection.js";
2
2
  export declare function getSchemaVersion(db: DatabaseConnection): number;
3
3
  export declare function initializeSchema(db: DatabaseConnection): void;
4
4
  //# sourceMappingURL=schema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/database/schema.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAI1D,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,kBAAkB,GAAG,MAAM,CAG/D;AAuCD,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,kBAAkB,GAAG,IAAI,CAY7D"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/database/schema.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAI1D,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,kBAAkB,GAAG,MAAM,CAG/D;AAyCD,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,kBAAkB,GAAG,IAAI,CAY7D"}
@@ -1,22 +1,22 @@
1
- import { readFileSync, readdirSync } from 'fs';
2
- import { dirname, join } from 'path';
3
- import { fileURLToPath } from 'url';
1
+ import { readFileSync, readdirSync } from "fs";
2
+ import { dirname, join } from "path";
3
+ import { fileURLToPath } from "url";
4
4
  const __dirname = dirname(fileURLToPath(import.meta.url));
5
5
  export function getSchemaVersion(db) {
6
- const result = db.instance.pragma('user_version');
6
+ const result = db.instance.pragma("user_version");
7
7
  return result[0]?.user_version ?? 0;
8
8
  }
9
9
  function setSchemaVersion(db, version) {
10
10
  db.instance.pragma(`user_version = ${version}`);
11
11
  }
12
12
  function getMigrationsDir() {
13
- return join(__dirname, 'migrations');
13
+ return join(__dirname, "migrations");
14
14
  }
15
15
  function getMigrationFiles() {
16
16
  const migrationsDir = getMigrationsDir();
17
17
  let files;
18
18
  try {
19
- files = readdirSync(migrationsDir).filter((f)=>f.endsWith('.sql')).sort();
19
+ files = readdirSync(migrationsDir).filter((f)=>f.endsWith(".sql")).sort();
20
20
  } catch {
21
21
  return [];
22
22
  }
@@ -36,7 +36,7 @@ export function initializeSchema(db) {
36
36
  const currentVersion = getSchemaVersion(db);
37
37
  const pendingMigrations = getMigrationFiles().filter((m)=>m.version > currentVersion);
38
38
  for (const migration of pendingMigrations){
39
- const sql = readFileSync(migration.path, 'utf-8');
39
+ const sql = readFileSync(migration.path, "utf-8");
40
40
  db.transaction(()=>{
41
41
  db.instance.exec(sql);
42
42
  setSchemaVersion(db, migration.version);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/database/schema.ts"],"sourcesContent":["import { readFileSync, readdirSync } from 'fs';\nimport { dirname, join } from 'path';\nimport { fileURLToPath } from 'url';\nimport type { DatabaseConnection } from './connection.js';\n\nconst __dirname = dirname(fileURLToPath(import.meta.url));\n\nexport function getSchemaVersion(db: DatabaseConnection): number {\n const result = db.instance.pragma('user_version') as { user_version: number }[];\n return result[0]?.user_version ?? 0;\n}\n\nfunction setSchemaVersion(db: DatabaseConnection, version: number): void {\n db.instance.pragma(`user_version = ${version}`);\n}\n\nfunction getMigrationsDir(): string {\n return join(__dirname, 'migrations');\n}\n\ninterface Migration {\n version: number;\n path: string;\n name: string;\n}\n\nfunction getMigrationFiles(): Migration[] {\n const migrationsDir = getMigrationsDir();\n\n let files: string[];\n try {\n files = readdirSync(migrationsDir).filter((f) => f.endsWith('.sql')).sort();\n } catch {\n return [];\n }\n\n return files.map((file) => {\n const match = file.match(/^(\\d+)_(.+)\\.sql$/);\n if (!match || !match[1] || !match[2]) {\n throw new Error(`Invalid migration filename: ${file}. Expected format: 001_name.sql`);\n }\n return {\n version: parseInt(match[1], 10),\n name: match[2],\n path: join(migrationsDir, file),\n };\n });\n}\n\nexport function initializeSchema(db: DatabaseConnection): void {\n const currentVersion = getSchemaVersion(db);\n const pendingMigrations = getMigrationFiles().filter((m) => m.version > currentVersion);\n\n for (const migration of pendingMigrations) {\n const sql = readFileSync(migration.path, 'utf-8');\n\n db.transaction(() => {\n db.instance.exec(sql);\n setSchemaVersion(db, migration.version);\n });\n }\n}\n"],"names":["readFileSync","readdirSync","dirname","join","fileURLToPath","__dirname","url","getSchemaVersion","db","result","instance","pragma","user_version","setSchemaVersion","version","getMigrationsDir","getMigrationFiles","migrationsDir","files","filter","f","endsWith","sort","map","file","match","Error","parseInt","name","path","initializeSchema","currentVersion","pendingMigrations","m","migration","sql","transaction","exec"],"mappings":"AAAA,SAASA,YAAY,EAAEC,WAAW,QAAQ,KAAK;AAC/C,SAASC,OAAO,EAAEC,IAAI,QAAQ,OAAO;AACrC,SAASC,aAAa,QAAQ,MAAM;AAGpC,MAAMC,YAAYH,QAAQE,cAAc,YAAYE,GAAG;AAEvD,OAAO,SAASC,iBAAiBC,EAAsB;IACnD,MAAMC,SAASD,GAAGE,QAAQ,CAACC,MAAM,CAAC;IAClC,OAAOF,MAAM,CAAC,EAAE,EAAEG,gBAAgB;AACtC;AAEA,SAASC,iBAAiBL,EAAsB,EAAEM,OAAe;IAC7DN,GAAGE,QAAQ,CAACC,MAAM,CAAC,CAAC,eAAe,EAAEG,SAAS;AAClD;AAEA,SAASC;IACL,OAAOZ,KAAKE,WAAW;AAC3B;AAQA,SAASW;IACL,MAAMC,gBAAgBF;IAEtB,IAAIG;IACJ,IAAI;QACAA,QAAQjB,YAAYgB,eAAeE,MAAM,CAAC,CAACC,IAAMA,EAAEC,QAAQ,CAAC,SAASC,IAAI;IAC7E,EAAE,OAAM;QACJ,OAAO,EAAE;IACb;IAEA,OAAOJ,MAAMK,GAAG,CAAC,CAACC;QACd,MAAMC,QAAQD,KAAKC,KAAK,CAAC;QACzB,IAAI,CAACA,SAAS,CAACA,KAAK,CAAC,EAAE,IAAI,CAACA,KAAK,CAAC,EAAE,EAAE;YAClC,MAAM,IAAIC,MAAM,CAAC,4BAA4B,EAAEF,KAAK,+BAA+B,CAAC;QACxF;QACA,OAAO;YACHV,SAASa,SAASF,KAAK,CAAC,EAAE,EAAE;YAC5BG,MAAMH,KAAK,CAAC,EAAE;YACdI,MAAM1B,KAAKc,eAAeO;QAC9B;IACJ;AACJ;AAEA,OAAO,SAASM,iBAAiBtB,EAAsB;IACnD,MAAMuB,iBAAiBxB,iBAAiBC;IACxC,MAAMwB,oBAAoBhB,oBAAoBG,MAAM,CAAC,CAACc,IAAMA,EAAEnB,OAAO,GAAGiB;IAExE,KAAK,MAAMG,aAAaF,kBAAmB;QACvC,MAAMG,MAAMnC,aAAakC,UAAUL,IAAI,EAAE;QAEzCrB,GAAG4B,WAAW,CAAC;YACX5B,GAAGE,QAAQ,CAAC2B,IAAI,CAACF;YACjBtB,iBAAiBL,IAAI0B,UAAUpB,OAAO;QAC1C;IACJ;AACJ"}
1
+ {"version":3,"sources":["../../src/database/schema.ts"],"sourcesContent":["import { readFileSync, readdirSync } from \"fs\";\nimport { dirname, join } from \"path\";\nimport { fileURLToPath } from \"url\";\nimport type { DatabaseConnection } from \"./connection.js\";\n\nconst __dirname = dirname(fileURLToPath(import.meta.url));\n\nexport function getSchemaVersion(db: DatabaseConnection): number {\n const result = db.instance.pragma(\"user_version\") as { user_version: number }[];\n return result[0]?.user_version ?? 0;\n}\n\nfunction setSchemaVersion(db: DatabaseConnection, version: number): void {\n db.instance.pragma(`user_version = ${version}`);\n}\n\nfunction getMigrationsDir(): string {\n return join(__dirname, \"migrations\");\n}\n\ninterface Migration {\n version: number;\n path: string;\n name: string;\n}\n\nfunction getMigrationFiles(): Migration[] {\n const migrationsDir = getMigrationsDir();\n\n let files: string[];\n try {\n files = readdirSync(migrationsDir)\n .filter((f) => f.endsWith(\".sql\"))\n .sort();\n } catch {\n return [];\n }\n\n return files.map((file) => {\n const match = file.match(/^(\\d+)_(.+)\\.sql$/);\n if (!match || !match[1] || !match[2]) {\n throw new Error(`Invalid migration filename: ${file}. Expected format: 001_name.sql`);\n }\n return {\n version: parseInt(match[1], 10),\n name: match[2],\n path: join(migrationsDir, file),\n };\n });\n}\n\nexport function initializeSchema(db: DatabaseConnection): void {\n const currentVersion = getSchemaVersion(db);\n const pendingMigrations = getMigrationFiles().filter((m) => m.version > currentVersion);\n\n for (const migration of pendingMigrations) {\n const sql = readFileSync(migration.path, \"utf-8\");\n\n db.transaction(() => {\n db.instance.exec(sql);\n setSchemaVersion(db, migration.version);\n });\n }\n}\n"],"names":["readFileSync","readdirSync","dirname","join","fileURLToPath","__dirname","url","getSchemaVersion","db","result","instance","pragma","user_version","setSchemaVersion","version","getMigrationsDir","getMigrationFiles","migrationsDir","files","filter","f","endsWith","sort","map","file","match","Error","parseInt","name","path","initializeSchema","currentVersion","pendingMigrations","m","migration","sql","transaction","exec"],"mappings":"AAAA,SAASA,YAAY,EAAEC,WAAW,QAAQ,KAAK;AAC/C,SAASC,OAAO,EAAEC,IAAI,QAAQ,OAAO;AACrC,SAASC,aAAa,QAAQ,MAAM;AAGpC,MAAMC,YAAYH,QAAQE,cAAc,YAAYE,GAAG;AAEvD,OAAO,SAASC,iBAAiBC,EAAsB;IACrD,MAAMC,SAASD,GAAGE,QAAQ,CAACC,MAAM,CAAC;IAClC,OAAOF,MAAM,CAAC,EAAE,EAAEG,gBAAgB;AACpC;AAEA,SAASC,iBAAiBL,EAAsB,EAAEM,OAAe;IAC/DN,GAAGE,QAAQ,CAACC,MAAM,CAAC,CAAC,eAAe,EAAEG,SAAS;AAChD;AAEA,SAASC;IACP,OAAOZ,KAAKE,WAAW;AACzB;AAQA,SAASW;IACP,MAAMC,gBAAgBF;IAEtB,IAAIG;IACJ,IAAI;QACFA,QAAQjB,YAAYgB,eACjBE,MAAM,CAAC,CAACC,IAAMA,EAAEC,QAAQ,CAAC,SACzBC,IAAI;IACT,EAAE,OAAM;QACN,OAAO,EAAE;IACX;IAEA,OAAOJ,MAAMK,GAAG,CAAC,CAACC;QAChB,MAAMC,QAAQD,KAAKC,KAAK,CAAC;QACzB,IAAI,CAACA,SAAS,CAACA,KAAK,CAAC,EAAE,IAAI,CAACA,KAAK,CAAC,EAAE,EAAE;YACpC,MAAM,IAAIC,MAAM,CAAC,4BAA4B,EAAEF,KAAK,+BAA+B,CAAC;QACtF;QACA,OAAO;YACLV,SAASa,SAASF,KAAK,CAAC,EAAE,EAAE;YAC5BG,MAAMH,KAAK,CAAC,EAAE;YACdI,MAAM1B,KAAKc,eAAeO;QAC5B;IACF;AACF;AAEA,OAAO,SAASM,iBAAiBtB,EAAsB;IACrD,MAAMuB,iBAAiBxB,iBAAiBC;IACxC,MAAMwB,oBAAoBhB,oBAAoBG,MAAM,CAAC,CAACc,IAAMA,EAAEnB,OAAO,GAAGiB;IAExE,KAAK,MAAMG,aAAaF,kBAAmB;QACzC,MAAMG,MAAMnC,aAAakC,UAAUL,IAAI,EAAE;QAEzCrB,GAAG4B,WAAW,CAAC;YACb5B,GAAGE,QAAQ,CAAC2B,IAAI,CAACF;YACjBtB,iBAAiBL,IAAI0B,UAAUpB,OAAO;QACxC;IACF;AACF"}
@@ -1,7 +1,7 @@
1
- export type DurableAgentState = 'ready' | 'running' | 'degraded';
2
- export type DurableSessionHealth = 'uninitialized' | 'healthy' | 'unknown' | 'mismatch';
3
- export type DurableRunStatus = 'succeeded' | 'failed' | 'interrupted';
4
- export type PiPrintErrorCode = 'PI_CLI_UNAVAILABLE' | 'PI_CLI_UNSUPPORTED' | 'PI_PROCESS' | 'PI_PROTOCOL' | 'PI_RESULT_MISSING' | 'PI_SESSION_MISMATCH' | 'PI_UNSUPPORTED';
1
+ export type DurableAgentState = "ready" | "running" | "degraded";
2
+ export type DurableSessionHealth = "uninitialized" | "healthy" | "unknown" | "mismatch";
3
+ export type DurableRunStatus = "succeeded" | "failed" | "interrupted";
4
+ export type PiPrintErrorCode = "PI_CLI_UNAVAILABLE" | "PI_CLI_UNSUPPORTED" | "PI_PROCESS" | "PI_PROTOCOL" | "PI_RESULT_MISSING" | "PI_SESSION_MISMATCH" | "PI_UNSUPPORTED";
5
5
  export declare const AGENT_MODES: {
6
6
  readonly INTERACTIVE: "interactive";
7
7
  readonly DURABLE: "durable";
@@ -22,7 +22,7 @@ export interface DurableLastResult {
22
22
  exitCode: number | null;
23
23
  summary: string;
24
24
  }
25
- export type DurableProvider = 'claude' | 'codex' | 'pi';
25
+ export type DurableProvider = "claude" | "codex" | "pi";
26
26
  export interface DurableAgentBase {
27
27
  id: string;
28
28
  name: string;
@@ -37,15 +37,15 @@ export interface DurableAgentBase {
37
37
  activeRun: DurableActiveRun | null;
38
38
  }
39
39
  export interface ClaudeDurableAgent extends DurableAgentBase {
40
- provider: 'claude';
40
+ provider: "claude";
41
41
  providerSessionId: string;
42
42
  }
43
43
  export interface CodexDurableAgent extends DurableAgentBase {
44
- provider: 'codex';
44
+ provider: "codex";
45
45
  providerSessionId: string | null;
46
46
  }
47
47
  export interface PiDurableAgent extends DurableAgentBase {
48
- provider: 'pi';
48
+ provider: "pi";
49
49
  providerSessionId: string;
50
50
  }
51
51
  export type DurableAgent = ClaudeDurableAgent | CodexDurableAgent | PiDurableAgent;
@@ -71,7 +71,7 @@ export declare class DurableAgentNameConflictError extends DurableAgentError {
71
71
  export declare class ClaudePrintError extends DurableAgentError {
72
72
  constructor(message: string, code?: string);
73
73
  }
74
- export type CodexPrintErrorCode = 'CODEX_PROTOCOL' | 'CODEX_PROCESS' | 'CODEX_SESSION_MISMATCH' | 'CODEX_UNSUPPORTED' | 'CODEX_RESULT_MISSING' | 'CODEX_CLI_UNSUPPORTED' | 'CODEX_CLI_UNAVAILABLE';
74
+ export type CodexPrintErrorCode = "CODEX_PROTOCOL" | "CODEX_PROCESS" | "CODEX_SESSION_MISMATCH" | "CODEX_UNSUPPORTED" | "CODEX_RESULT_MISSING" | "CODEX_CLI_UNSUPPORTED" | "CODEX_CLI_UNAVAILABLE";
75
75
  export declare class CodexPrintError extends DurableAgentError {
76
76
  constructor(message: string, code: CodexPrintErrorCode);
77
77
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DurableAgent.d.ts","sourceRoot":"","sources":["../../src/durable/DurableAgent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DurableAgent.d.ts","sourceRoot":"","sources":["../../src/durable/DurableAgent.ts"],"names":[],"mappings":"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"}
@@ -1,57 +1,57 @@
1
1
  export const AGENT_MODES = {
2
- INTERACTIVE: 'interactive',
3
- DURABLE: 'durable'
2
+ INTERACTIVE: "interactive",
3
+ DURABLE: "durable"
4
4
  };
5
5
  export class DurableAgentError extends Error {
6
6
  code;
7
7
  constructor(message, code){
8
8
  super(message), this.code = code;
9
- this.name = 'DurableAgentError';
9
+ this.name = "DurableAgentError";
10
10
  }
11
11
  }
12
12
  export class DurableAgentBusyError extends DurableAgentError {
13
13
  agentId;
14
14
  constructor(agentId, agentName){
15
- super(`Durable agent "${agentName}" is busy.`, 'DURABLE_AGENT_BUSY'), this.agentId = agentId;
16
- this.name = 'DurableAgentBusyError';
15
+ super(`Durable agent "${agentName}" is busy.`, "DURABLE_AGENT_BUSY"), this.agentId = agentId;
16
+ this.name = "DurableAgentBusyError";
17
17
  }
18
18
  }
19
19
  export class DurableAgentNotFoundError extends DurableAgentError {
20
20
  reference;
21
21
  constructor(reference){
22
- super(`Durable agent "${reference}" was not found.`, 'DURABLE_AGENT_NOT_FOUND'), this.reference = reference;
23
- this.name = 'DurableAgentNotFoundError';
22
+ super(`Durable agent "${reference}" was not found.`, "DURABLE_AGENT_NOT_FOUND"), this.reference = reference;
23
+ this.name = "DurableAgentNotFoundError";
24
24
  }
25
25
  }
26
26
  export class DurableAgentRepositoryError extends DurableAgentError {
27
27
  constructor(message){
28
- super(message, 'DURABLE_AGENT_REPOSITORY');
29
- this.name = 'DurableAgentRepositoryError';
28
+ super(message, "DURABLE_AGENT_REPOSITORY");
29
+ this.name = "DurableAgentRepositoryError";
30
30
  }
31
31
  }
32
32
  export class DurableAgentNameConflictError extends DurableAgentError {
33
33
  agentName;
34
34
  constructor(agentName){
35
- super(`Durable agent name "${agentName}" is already in use.`, 'DURABLE_AGENT_NAME_CONFLICT'), this.agentName = agentName;
36
- this.name = 'DurableAgentNameConflictError';
35
+ super(`Durable agent name "${agentName}" is already in use.`, "DURABLE_AGENT_NAME_CONFLICT"), this.agentName = agentName;
36
+ this.name = "DurableAgentNameConflictError";
37
37
  }
38
38
  }
39
39
  export class ClaudePrintError extends DurableAgentError {
40
- constructor(message, code = 'CLAUDE_PRINT_FAILED'){
40
+ constructor(message, code = "CLAUDE_PRINT_FAILED"){
41
41
  super(message, code);
42
- this.name = 'ClaudePrintError';
42
+ this.name = "ClaudePrintError";
43
43
  }
44
44
  }
45
45
  export class CodexPrintError extends DurableAgentError {
46
46
  constructor(message, code){
47
47
  super(message, code);
48
- this.name = 'CodexPrintError';
48
+ this.name = "CodexPrintError";
49
49
  }
50
50
  }
51
51
  export class PiPrintError extends DurableAgentError {
52
- constructor(message, code = 'PI_PROCESS'){
52
+ constructor(message, code = "PI_PROCESS"){
53
53
  super(message, code);
54
- this.name = 'PiPrintError';
54
+ this.name = "PiPrintError";
55
55
  }
56
56
  }
57
57
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/durable/DurableAgent.ts"],"sourcesContent":["export type DurableAgentState = 'ready' | 'running' | 'degraded';\nexport type DurableSessionHealth = 'uninitialized' | 'healthy' | 'unknown' | 'mismatch';\nexport type DurableRunStatus = 'succeeded' | 'failed' | 'interrupted';\nexport type PiPrintErrorCode =\n | 'PI_CLI_UNAVAILABLE'\n | 'PI_CLI_UNSUPPORTED'\n | 'PI_PROCESS'\n | 'PI_PROTOCOL'\n | 'PI_RESULT_MISSING'\n | 'PI_SESSION_MISMATCH'\n | 'PI_UNSUPPORTED';\n\nexport const AGENT_MODES = {\n INTERACTIVE: 'interactive',\n DURABLE: 'durable',\n} as const;\n\nexport interface ProcessIdentity {\n pid: number;\n startedAt: string;\n}\n\nexport interface DurableActiveRun {\n token: string;\n owner: ProcessIdentity;\n provider: ProcessIdentity | null;\n startedAt: string;\n}\n\nexport interface DurableLastResult {\n status: DurableRunStatus;\n completedAt: string;\n exitCode: number | null;\n summary: string;\n}\n\nexport type DurableProvider = 'claude' | 'codex' | 'pi';\n\nexport interface DurableAgentBase {\n id: string;\n name: string;\n mode: typeof AGENT_MODES.DURABLE;\n cwd: string;\n state: DurableAgentState;\n sessionHealth: DurableSessionHealth;\n createdAt: string;\n updatedAt: string;\n lastActiveAt: string | null;\n lastResult: DurableLastResult | null;\n activeRun: DurableActiveRun | null;\n}\n\nexport interface ClaudeDurableAgent extends DurableAgentBase {\n provider: 'claude';\n providerSessionId: string;\n}\n\nexport interface CodexDurableAgent extends DurableAgentBase {\n provider: 'codex';\n providerSessionId: string | null;\n}\n\nexport interface PiDurableAgent extends DurableAgentBase {\n provider: 'pi';\n providerSessionId: string;\n}\n\nexport type DurableAgent = ClaudeDurableAgent | CodexDurableAgent | PiDurableAgent;\n\nexport class DurableAgentError extends Error {\n constructor(\n message: string,\n public readonly code: string,\n ) {\n super(message);\n this.name = 'DurableAgentError';\n }\n}\n\nexport class DurableAgentBusyError extends DurableAgentError {\n constructor(\n public readonly agentId: string,\n agentName: string,\n ) {\n super(`Durable agent \"${agentName}\" is busy.`, 'DURABLE_AGENT_BUSY');\n this.name = 'DurableAgentBusyError';\n }\n}\n\nexport class DurableAgentNotFoundError extends DurableAgentError {\n constructor(public readonly reference: string) {\n super(`Durable agent \"${reference}\" was not found.`, 'DURABLE_AGENT_NOT_FOUND');\n this.name = 'DurableAgentNotFoundError';\n }\n}\n\nexport class DurableAgentRepositoryError extends DurableAgentError {\n constructor(message: string) {\n super(message, 'DURABLE_AGENT_REPOSITORY');\n this.name = 'DurableAgentRepositoryError';\n }\n}\n\nexport class DurableAgentNameConflictError extends DurableAgentError {\n constructor(public readonly agentName: string) {\n super(`Durable agent name \"${agentName}\" is already in use.`, 'DURABLE_AGENT_NAME_CONFLICT');\n this.name = 'DurableAgentNameConflictError';\n }\n}\n\nexport class ClaudePrintError extends DurableAgentError {\n constructor(message: string, code = 'CLAUDE_PRINT_FAILED') {\n super(message, code);\n this.name = 'ClaudePrintError';\n }\n}\n\nexport type CodexPrintErrorCode =\n | 'CODEX_PROTOCOL'\n | 'CODEX_PROCESS'\n | 'CODEX_SESSION_MISMATCH'\n | 'CODEX_UNSUPPORTED'\n | 'CODEX_RESULT_MISSING'\n | 'CODEX_CLI_UNSUPPORTED'\n | 'CODEX_CLI_UNAVAILABLE';\n\nexport class CodexPrintError extends DurableAgentError {\n constructor(message: string, code: CodexPrintErrorCode) {\n super(message, code);\n this.name = 'CodexPrintError';\n }\n}\n\nexport class PiPrintError extends DurableAgentError {\n constructor(message: string, code: PiPrintErrorCode = 'PI_PROCESS') {\n super(message, code);\n this.name = 'PiPrintError';\n }\n}\n"],"names":["AGENT_MODES","INTERACTIVE","DURABLE","DurableAgentError","Error","message","code","name","DurableAgentBusyError","agentId","agentName","DurableAgentNotFoundError","reference","DurableAgentRepositoryError","DurableAgentNameConflictError","ClaudePrintError","CodexPrintError","PiPrintError"],"mappings":"AAYA,OAAO,MAAMA,cAAc;IACvBC,aAAa;IACbC,SAAS;AACb,EAAW;AAsDX,OAAO,MAAMC,0BAA0BC;;IACnC,YACIC,OAAe,EACf,AAAgBC,IAAY,CAC9B;QACE,KAAK,CAACD,eAFUC,OAAAA;QAGhB,IAAI,CAACC,IAAI,GAAG;IAChB;AACJ;AAEA,OAAO,MAAMC,8BAA8BL;;IACvC,YACI,AAAgBM,OAAe,EAC/BC,SAAiB,CACnB;QACE,KAAK,CAAC,CAAC,eAAe,EAAEA,UAAU,UAAU,CAAC,EAAE,4BAH/BD,UAAAA;QAIhB,IAAI,CAACF,IAAI,GAAG;IAChB;AACJ;AAEA,OAAO,MAAMI,kCAAkCR;;IAC3C,YAAY,AAAgBS,SAAiB,CAAE;QAC3C,KAAK,CAAC,CAAC,eAAe,EAAEA,UAAU,gBAAgB,CAAC,EAAE,iCAD7BA,YAAAA;QAExB,IAAI,CAACL,IAAI,GAAG;IAChB;AACJ;AAEA,OAAO,MAAMM,oCAAoCV;IAC7C,YAAYE,OAAe,CAAE;QACzB,KAAK,CAACA,SAAS;QACf,IAAI,CAACE,IAAI,GAAG;IAChB;AACJ;AAEA,OAAO,MAAMO,sCAAsCX;;IAC/C,YAAY,AAAgBO,SAAiB,CAAE;QAC3C,KAAK,CAAC,CAAC,oBAAoB,EAAEA,UAAU,oBAAoB,CAAC,EAAE,qCADtCA,YAAAA;QAExB,IAAI,CAACH,IAAI,GAAG;IAChB;AACJ;AAEA,OAAO,MAAMQ,yBAAyBZ;IAClC,YAAYE,OAAe,EAAEC,OAAO,qBAAqB,CAAE;QACvD,KAAK,CAACD,SAASC;QACf,IAAI,CAACC,IAAI,GAAG;IAChB;AACJ;AAWA,OAAO,MAAMS,wBAAwBb;IACjC,YAAYE,OAAe,EAAEC,IAAyB,CAAE;QACpD,KAAK,CAACD,SAASC;QACf,IAAI,CAACC,IAAI,GAAG;IAChB;AACJ;AAEA,OAAO,MAAMU,qBAAqBd;IAC9B,YAAYE,OAAe,EAAEC,OAAyB,YAAY,CAAE;QAChE,KAAK,CAACD,SAASC;QACf,IAAI,CAACC,IAAI,GAAG;IAChB;AACJ"}
1
+ {"version":3,"sources":["../../src/durable/DurableAgent.ts"],"sourcesContent":["export type DurableAgentState = \"ready\" | \"running\" | \"degraded\";\nexport type DurableSessionHealth = \"uninitialized\" | \"healthy\" | \"unknown\" | \"mismatch\";\nexport type DurableRunStatus = \"succeeded\" | \"failed\" | \"interrupted\";\nexport type PiPrintErrorCode =\n | \"PI_CLI_UNAVAILABLE\"\n | \"PI_CLI_UNSUPPORTED\"\n | \"PI_PROCESS\"\n | \"PI_PROTOCOL\"\n | \"PI_RESULT_MISSING\"\n | \"PI_SESSION_MISMATCH\"\n | \"PI_UNSUPPORTED\";\n\nexport const AGENT_MODES = {\n INTERACTIVE: \"interactive\",\n DURABLE: \"durable\",\n} as const;\n\nexport interface ProcessIdentity {\n pid: number;\n startedAt: string;\n}\n\nexport interface DurableActiveRun {\n token: string;\n owner: ProcessIdentity;\n provider: ProcessIdentity | null;\n startedAt: string;\n}\n\nexport interface DurableLastResult {\n status: DurableRunStatus;\n completedAt: string;\n exitCode: number | null;\n summary: string;\n}\n\nexport type DurableProvider = \"claude\" | \"codex\" | \"pi\";\n\nexport interface DurableAgentBase {\n id: string;\n name: string;\n mode: typeof AGENT_MODES.DURABLE;\n cwd: string;\n state: DurableAgentState;\n sessionHealth: DurableSessionHealth;\n createdAt: string;\n updatedAt: string;\n lastActiveAt: string | null;\n lastResult: DurableLastResult | null;\n activeRun: DurableActiveRun | null;\n}\n\nexport interface ClaudeDurableAgent extends DurableAgentBase {\n provider: \"claude\";\n providerSessionId: string;\n}\n\nexport interface CodexDurableAgent extends DurableAgentBase {\n provider: \"codex\";\n providerSessionId: string | null;\n}\n\nexport interface PiDurableAgent extends DurableAgentBase {\n provider: \"pi\";\n providerSessionId: string;\n}\n\nexport type DurableAgent = ClaudeDurableAgent | CodexDurableAgent | PiDurableAgent;\n\nexport class DurableAgentError extends Error {\n constructor(\n message: string,\n public readonly code: string,\n ) {\n super(message);\n this.name = \"DurableAgentError\";\n }\n}\n\nexport class DurableAgentBusyError extends DurableAgentError {\n constructor(\n public readonly agentId: string,\n agentName: string,\n ) {\n super(`Durable agent \"${agentName}\" is busy.`, \"DURABLE_AGENT_BUSY\");\n this.name = \"DurableAgentBusyError\";\n }\n}\n\nexport class DurableAgentNotFoundError extends DurableAgentError {\n constructor(public readonly reference: string) {\n super(`Durable agent \"${reference}\" was not found.`, \"DURABLE_AGENT_NOT_FOUND\");\n this.name = \"DurableAgentNotFoundError\";\n }\n}\n\nexport class DurableAgentRepositoryError extends DurableAgentError {\n constructor(message: string) {\n super(message, \"DURABLE_AGENT_REPOSITORY\");\n this.name = \"DurableAgentRepositoryError\";\n }\n}\n\nexport class DurableAgentNameConflictError extends DurableAgentError {\n constructor(public readonly agentName: string) {\n super(`Durable agent name \"${agentName}\" is already in use.`, \"DURABLE_AGENT_NAME_CONFLICT\");\n this.name = \"DurableAgentNameConflictError\";\n }\n}\n\nexport class ClaudePrintError extends DurableAgentError {\n constructor(message: string, code = \"CLAUDE_PRINT_FAILED\") {\n super(message, code);\n this.name = \"ClaudePrintError\";\n }\n}\n\nexport type CodexPrintErrorCode =\n | \"CODEX_PROTOCOL\"\n | \"CODEX_PROCESS\"\n | \"CODEX_SESSION_MISMATCH\"\n | \"CODEX_UNSUPPORTED\"\n | \"CODEX_RESULT_MISSING\"\n | \"CODEX_CLI_UNSUPPORTED\"\n | \"CODEX_CLI_UNAVAILABLE\";\n\nexport class CodexPrintError extends DurableAgentError {\n constructor(message: string, code: CodexPrintErrorCode) {\n super(message, code);\n this.name = \"CodexPrintError\";\n }\n}\n\nexport class PiPrintError extends DurableAgentError {\n constructor(message: string, code: PiPrintErrorCode = \"PI_PROCESS\") {\n super(message, code);\n this.name = \"PiPrintError\";\n }\n}\n"],"names":["AGENT_MODES","INTERACTIVE","DURABLE","DurableAgentError","Error","message","code","name","DurableAgentBusyError","agentId","agentName","DurableAgentNotFoundError","reference","DurableAgentRepositoryError","DurableAgentNameConflictError","ClaudePrintError","CodexPrintError","PiPrintError"],"mappings":"AAYA,OAAO,MAAMA,cAAc;IACzBC,aAAa;IACbC,SAAS;AACX,EAAW;AAsDX,OAAO,MAAMC,0BAA0BC;;IACrC,YACEC,OAAe,EACf,AAAgBC,IAAY,CAC5B;QACA,KAAK,CAACD,eAFUC,OAAAA;QAGhB,IAAI,CAACC,IAAI,GAAG;IACd;AACF;AAEA,OAAO,MAAMC,8BAA8BL;;IACzC,YACE,AAAgBM,OAAe,EAC/BC,SAAiB,CACjB;QACA,KAAK,CAAC,CAAC,eAAe,EAAEA,UAAU,UAAU,CAAC,EAAE,4BAH/BD,UAAAA;QAIhB,IAAI,CAACF,IAAI,GAAG;IACd;AACF;AAEA,OAAO,MAAMI,kCAAkCR;;IAC7C,YAAY,AAAgBS,SAAiB,CAAE;QAC7C,KAAK,CAAC,CAAC,eAAe,EAAEA,UAAU,gBAAgB,CAAC,EAAE,iCAD3BA,YAAAA;QAE1B,IAAI,CAACL,IAAI,GAAG;IACd;AACF;AAEA,OAAO,MAAMM,oCAAoCV;IAC/C,YAAYE,OAAe,CAAE;QAC3B,KAAK,CAACA,SAAS;QACf,IAAI,CAACE,IAAI,GAAG;IACd;AACF;AAEA,OAAO,MAAMO,sCAAsCX;;IACjD,YAAY,AAAgBO,SAAiB,CAAE;QAC7C,KAAK,CAAC,CAAC,oBAAoB,EAAEA,UAAU,oBAAoB,CAAC,EAAE,qCADpCA,YAAAA;QAE1B,IAAI,CAACH,IAAI,GAAG;IACd;AACF;AAEA,OAAO,MAAMQ,yBAAyBZ;IACpC,YAAYE,OAAe,EAAEC,OAAO,qBAAqB,CAAE;QACzD,KAAK,CAACD,SAASC;QACf,IAAI,CAACC,IAAI,GAAG;IACd;AACF;AAWA,OAAO,MAAMS,wBAAwBb;IACnC,YAAYE,OAAe,EAAEC,IAAyB,CAAE;QACtD,KAAK,CAACD,SAASC;QACf,IAAI,CAACC,IAAI,GAAG;IACd;AACF;AAEA,OAAO,MAAMU,qBAAqBd;IAChC,YAAYE,OAAe,EAAEC,OAAyB,YAAY,CAAE;QAClE,KAAK,CAACD,SAASC;QACf,IAAI,CAACC,IAAI,GAAG;IACd;AACF"}
@@ -1,5 +1,5 @@
1
- import { type DurableAgent, type DurableProvider, type ProcessIdentity, type DurableRunStatus, type DurableSessionHealth } from './DurableAgent.js';
2
- import { type ProcessInspector } from './process.js';
1
+ import { type DurableAgent, type DurableProvider, type ProcessIdentity, type DurableRunStatus, type DurableSessionHealth } from "./DurableAgent.js";
2
+ import { type ProcessInspector } from "./process.js";
3
3
  export interface CreateDurableAgentInput {
4
4
  name: string;
5
5
  cwd: string;
@@ -17,8 +17,8 @@ export interface DurableAgentRepositoryOptions {
17
17
  /** @deprecated SQLite transactions replace mutation lock directories. */
18
18
  mutationLockStaleMs?: number;
19
19
  }
20
- export { LocalProcessInspector } from './process.js';
21
- export type { ProcessInspector } from './process.js';
20
+ export { LocalProcessInspector } from "./process.js";
21
+ export type { ProcessInspector } from "./process.js";
22
22
  export interface DurableRunCompletion {
23
23
  status: DurableRunStatus;
24
24
  exitCode: number | null;
@@ -1 +1 @@
1
- {"version":3,"file":"DurableAgentRepository.d.ts","sourceRoot":"","sources":["../../src/durable/DurableAgentRepository.ts"],"names":[],"mappings":"AAGA,OAAO,EAAuD,KAAK,YAAY,EAAE,KAAK,eAAe,EAAE,KAAK,eAAe,EAAE,KAAK,gBAAgB,EAAE,KAAK,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzM,OAAO,EAAyB,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAkB5E,MAAM,WAAW,uBAAuB;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,eAAe,CAAA;CAAE;AAElG,MAAM,WAAW,6BAA6B;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,wEAAwE;IACxE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;IACjB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,4DAA4D;IAC5D,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,yEAAyE;IACzE,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,YAAY,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrD,MAAM,WAAW,oBAAoB;IACjC,MAAM,EAAE,gBAAgB,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,oBAAoB,CAAC;CAC3G;AAED,qBAAa,sBAAsB;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAa;IACjC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;IACpD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;IACnC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAqB;gBAE5B,OAAO,GAAE,6BAAkC;IAajD,MAAM,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,YAAY,CAAC;IAsB7D,IAAI,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAK/B,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAKjD,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,YAAY,EAAE,GAAG,IAAI,CAAC;IAQzE,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,YAAY,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAkDvE,qBAAqB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAS1F,mBAAmB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAoChG,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,YAAY,CAAC;IAgB3F,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAoBhC,OAAO,CAAC,SAAS;IAYjB,OAAO,CAAC,OAAO;IAUf,OAAO,CAAC,QAAQ;IAKhB,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,OAAO;IAgCf,OAAO,CAAC,kBAAkB;IAU1B,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,YAAY;CAIvB"}
1
+ {"version":3,"file":"DurableAgentRepository.d.ts","sourceRoot":"","sources":["../../src/durable/DurableAgentRepository.ts"],"names":[],"mappings":"AAGA,OAAO,EAIL,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EAC1B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAyB,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAiC5E,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC5B;AAED,MAAM,WAAW,6BAA6B;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,wEAAwE;IACxE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;IACjB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,4DAA4D;IAC5D,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,yEAAyE;IACzE,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,YAAY,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrD,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,gBAAgB,CAAC;IACzB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,oBAAoB,CAAC;CACrC;AAED,qBAAa,sBAAsB;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAa;IACjC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;IACpD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;IACnC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAqB;gBAE5B,OAAO,GAAE,6BAAkC;IAejD,MAAM,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,YAAY,CAAC;IAiC7D,IAAI,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAK/B,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAKjD,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,YAAY,EAAE,GAAG,IAAI,CAAC;IAQzE,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,YAAY,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAkEvE,qBAAqB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAY1F,mBAAmB,CACvB,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,MAAM,EACb,iBAAiB,EAAE,MAAM,GACxB,OAAO,CAAC,YAAY,CAAC;IAuDlB,WAAW,CACf,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,YAAY,CAAC;IA4BlB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IA4BhC,OAAO,CAAC,SAAS;IAgBjB,OAAO,CAAC,OAAO;IAYf,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,OAAO;IAqDf,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,YAAY;CAKrB"}
@@ -1,11 +1,11 @@
1
- import fs from 'fs';
2
- import { randomUUID } from 'crypto';
3
- import { DatabaseConnection, DEFAULT_AGENT_REGISTRY_DB_PATH } from '../database/index.js';
4
- import { AGENT_MODES, CodexPrintError } from './DurableAgent.js';
5
- import { LocalProcessInspector } from './process.js';
6
- import { isUuid } from './utils.js';
7
- import { DurableAgentBusyError, DurableAgentNameConflictError, DurableAgentNotFoundError, DurableAgentRepositoryError } from './DurableAgent.js';
8
- export { LocalProcessInspector } from './process.js';
1
+ import fs from "fs";
2
+ import { randomUUID } from "crypto";
3
+ import { DatabaseConnection, DEFAULT_AGENT_REGISTRY_DB_PATH } from "../database/index.js";
4
+ import { AGENT_MODES, CodexPrintError } from "./DurableAgent.js";
5
+ import { LocalProcessInspector } from "./process.js";
6
+ import { isUuid } from "./utils.js";
7
+ import { DurableAgentBusyError, DurableAgentNameConflictError, DurableAgentNotFoundError, DurableAgentRepositoryError } from "./DurableAgent.js";
8
+ export { LocalProcessInspector } from "./process.js";
9
9
  export class DurableAgentRepository {
10
10
  dbPath;
11
11
  now;
@@ -32,8 +32,8 @@ export class DurableAgentRepository {
32
32
  const cwd = this.canonicalDirectory(input.cwd);
33
33
  const timestamp = this.now().toISOString();
34
34
  const id = randomUUID();
35
- const provider = input.provider ?? 'claude';
36
- let providerSessionId = provider === 'codex' ? null : randomUUID();
35
+ const provider = input.provider ?? "claude";
36
+ let providerSessionId = provider === "codex" ? null : randomUUID();
37
37
  while(providerSessionId === id)providerSessionId = randomUUID();
38
38
  try {
39
39
  this.db.execute(`INSERT INTO durable_agents (
@@ -52,7 +52,7 @@ export class DurableAgentRepository {
52
52
  if (/UNIQUE constraint failed: durable_agents\.name/i.test(error.message)) {
53
53
  throw new DurableAgentNameConflictError(input.name);
54
54
  }
55
- throw this.storageError('Failed to create durable agent', error);
55
+ throw this.storageError("Failed to create durable agent", error);
56
56
  }
57
57
  return this.requireById(id);
58
58
  }
@@ -80,7 +80,7 @@ export class DurableAgentRepository {
80
80
  const observedLive = observed ? this.isActive(observed) : false;
81
81
  if (observedLive) throw new DurableAgentBusyError(id, snapshot.name);
82
82
  const owner = this.processInspector.getIdentity(process.pid);
83
- if (!owner) throw new DurableAgentRepositoryError('Cannot determine the current process identity.');
83
+ if (!owner) throw new DurableAgentRepositoryError("Cannot determine the current process identity.");
84
84
  const token = randomUUID();
85
85
  const startedAt = this.now().toISOString();
86
86
  let recovered = false;
@@ -88,7 +88,7 @@ export class DurableAgentRepository {
88
88
  this.immediate(()=>{
89
89
  const current = this.findById(id);
90
90
  if (!current) throw new DurableAgentNotFoundError(id);
91
- if (current.state === 'running') {
91
+ if (current.state === "running") {
92
92
  if (!observed || current.activeRun?.token !== observed.token || observedLive) {
93
93
  throw new DurableAgentBusyError(id, current.name);
94
94
  }
@@ -122,11 +122,11 @@ export class DurableAgentRepository {
122
122
  } catch (error) {
123
123
  if (error instanceof DurableAgentBusyError || error instanceof DurableAgentNotFoundError) throw error;
124
124
  if (/busy|locked/i.test(error.message)) throw new DurableAgentBusyError(id, snapshot.name);
125
- throw this.storageError('Failed to acquire durable-agent run', error);
125
+ throw this.storageError("Failed to acquire durable-agent run", error);
126
126
  }
127
127
  const agent = this.requireById(id);
128
- if (recovered && agent.lastResult?.status !== 'interrupted') {
129
- throw new DurableAgentRepositoryError('Failed to record interrupted print run.');
128
+ if (recovered && agent.lastResult?.status !== "interrupted") {
129
+ throw new DurableAgentRepositoryError("Failed to record interrupted print run.");
130
130
  }
131
131
  return {
132
132
  agent,
@@ -144,25 +144,25 @@ export class DurableAgentRepository {
144
144
  id,
145
145
  token
146
146
  ]);
147
- if (changed.changes !== 1) throw new DurableAgentRepositoryError('Print run ownership changed.');
147
+ if (changed.changes !== 1) throw new DurableAgentRepositoryError("Print run ownership changed.");
148
148
  }
149
149
  async bindProviderSession(id, token, providerSessionId) {
150
150
  this.assertWritable();
151
151
  if (!isUuid(providerSessionId)) {
152
- throw new DurableAgentRepositoryError('Invalid provider session id.');
152
+ throw new DurableAgentRepositoryError("Invalid provider session id.");
153
153
  }
154
154
  try {
155
155
  this.immediate(()=>{
156
156
  const agent = this.findById(id);
157
157
  if (!agent) throw new DurableAgentNotFoundError(id);
158
- if (agent.provider !== 'codex') {
159
- throw new DurableAgentRepositoryError('Only Codex durable sessions can be bound after creation.');
158
+ if (agent.provider !== "codex") {
159
+ throw new DurableAgentRepositoryError("Only Codex durable sessions can be bound after creation.");
160
160
  }
161
161
  if (agent.activeRun?.token !== token) {
162
- throw new DurableAgentRepositoryError('Print run ownership changed.');
162
+ throw new DurableAgentRepositoryError("Print run ownership changed.");
163
163
  }
164
164
  if (agent.providerSessionId !== null && agent.providerSessionId !== providerSessionId) {
165
- throw new CodexPrintError('Durable agent provider session identity does not match.', 'CODEX_SESSION_MISMATCH');
165
+ throw new CodexPrintError("Durable agent provider session identity does not match.", "CODEX_SESSION_MISMATCH");
166
166
  }
167
167
  if (agent.providerSessionId === providerSessionId) return;
168
168
  const changed = this.db.execute(`UPDATE durable_agents SET provider_session_id = ?, updated_at = ?
@@ -173,14 +173,14 @@ export class DurableAgentRepository {
173
173
  id,
174
174
  token
175
175
  ]);
176
- if (changed.changes !== 1) throw new DurableAgentRepositoryError('Print run ownership changed.');
176
+ if (changed.changes !== 1) throw new DurableAgentRepositoryError("Print run ownership changed.");
177
177
  });
178
178
  } catch (error) {
179
179
  if (error instanceof DurableAgentRepositoryError || error instanceof DurableAgentNotFoundError || error instanceof CodexPrintError) throw error;
180
180
  if (/UNIQUE constraint failed: durable_agents\.provider_session_id/i.test(error.message)) {
181
- throw new CodexPrintError('Provider session is already bound to another durable agent.', 'CODEX_SESSION_MISMATCH');
181
+ throw new CodexPrintError("Provider session is already bound to another durable agent.", "CODEX_SESSION_MISMATCH");
182
182
  }
183
- throw this.storageError('Failed to bind durable-agent provider session', error);
183
+ throw this.storageError("Failed to bind durable-agent provider session", error);
184
184
  }
185
185
  return this.requireById(id);
186
186
  }
@@ -193,7 +193,7 @@ export class DurableAgentRepository {
193
193
  active_run_started_at = NULL, last_active_at = ?, updated_at = ?, last_result_status = ?,
194
194
  last_result_completed_at = ?, last_result_exit_code = ?, last_result_summary = ?
195
195
  WHERE id = ? AND state = 'running' AND active_run_token = ?`, [
196
- result.status === 'succeeded' ? 'ready' : 'degraded',
196
+ result.status === "succeeded" ? "ready" : "degraded",
197
197
  result.sessionHealth,
198
198
  completedAt,
199
199
  completedAt,
@@ -204,12 +204,12 @@ export class DurableAgentRepository {
204
204
  id,
205
205
  token
206
206
  ]);
207
- if (changed.changes !== 1) throw new DurableAgentRepositoryError('Print run ownership changed.');
207
+ if (changed.changes !== 1) throw new DurableAgentRepositoryError("Print run ownership changed.");
208
208
  return this.requireById(id);
209
209
  }
210
210
  async reconcile() {
211
211
  this.assertWritable();
212
- const running = this.listRaw().filter((agent)=>agent.state === 'running' && agent.activeRun);
212
+ const running = this.listRaw().filter((agent)=>agent.state === "running" && agent.activeRun);
213
213
  for (const snapshot of running){
214
214
  if (this.isActive(snapshot.activeRun)) continue;
215
215
  const completedAt = this.now().toISOString();
@@ -232,27 +232,28 @@ export class DurableAgentRepository {
232
232
  }
233
233
  }
234
234
  immediate(operation) {
235
- this.db.instance.exec('BEGIN IMMEDIATE');
235
+ this.db.instance.exec("BEGIN IMMEDIATE");
236
236
  try {
237
237
  const result = operation();
238
- this.db.instance.exec('COMMIT');
238
+ this.db.instance.exec("COMMIT");
239
239
  return result;
240
240
  } catch (error) {
241
241
  try {
242
- this.db.instance.exec('ROLLBACK');
243
- } catch {}
242
+ this.db.instance.exec("ROLLBACK");
243
+ } catch {
244
+ /* retain original failure */ }
244
245
  throw error;
245
246
  }
246
247
  }
247
248
  listRaw() {
248
249
  try {
249
- return this.db.query('SELECT * FROM durable_agents ORDER BY updated_at DESC, name COLLATE NOCASE').map((row)=>this.fromRow(row));
250
+ return this.db.query("SELECT * FROM durable_agents ORDER BY updated_at DESC, name COLLATE NOCASE").map((row)=>this.fromRow(row));
250
251
  } catch (error) {
251
- throw this.storageError('Failed to read durable-agent database', error);
252
+ throw this.storageError("Failed to read durable-agent database", error);
252
253
  }
253
254
  }
254
255
  findById(id) {
255
- const row = this.db.queryOne('SELECT * FROM durable_agents WHERE id = ?', [
256
+ const row = this.db.queryOne("SELECT * FROM durable_agents WHERE id = ?", [
256
257
  id
257
258
  ]);
258
259
  return row ? this.fromRow(row) : null;
@@ -264,10 +265,10 @@ export class DurableAgentRepository {
264
265
  }
265
266
  fromRow(row) {
266
267
  if (![
267
- 'claude',
268
- 'codex',
269
- 'pi'
270
- ].includes(row.provider) || row.provider !== 'codex' && row.provider_session_id === null) {
268
+ "claude",
269
+ "codex",
270
+ "pi"
271
+ ].includes(row.provider) || row.provider !== "codex" && row.provider_session_id === null) {
271
272
  throw new DurableAgentRepositoryError(`Invalid durable-agent provider record: ${row.id}`);
272
273
  }
273
274
  const activeRun = row.active_run_token === null ? null : {
@@ -297,34 +298,34 @@ export class DurableAgentRepository {
297
298
  status: row.last_result_status,
298
299
  completedAt: row.last_result_completed_at,
299
300
  exitCode: row.last_result_exit_code,
300
- summary: row.last_result_summary ?? ''
301
+ summary: row.last_result_summary ?? ""
301
302
  },
302
303
  activeRun
303
304
  };
304
- if (row.provider === 'claude') {
305
+ if (row.provider === "claude") {
305
306
  return {
306
307
  ...base,
307
- provider: 'claude',
308
+ provider: "claude",
308
309
  providerSessionId: row.provider_session_id
309
310
  };
310
311
  }
311
- if (row.provider === 'pi') {
312
+ if (row.provider === "pi") {
312
313
  return {
313
314
  ...base,
314
- provider: 'pi',
315
+ provider: "pi",
315
316
  providerSessionId: row.provider_session_id
316
317
  };
317
318
  }
318
319
  return {
319
320
  ...base,
320
- provider: 'codex',
321
+ provider: "codex",
321
322
  providerSessionId: row.provider_session_id
322
323
  };
323
324
  }
324
325
  canonicalDirectory(input) {
325
326
  try {
326
327
  const resolved = fs.realpathSync(input);
327
- if (!fs.statSync(resolved).isDirectory()) throw new Error('not a directory');
328
+ if (!fs.statSync(resolved).isDirectory()) throw new Error("not a directory");
328
329
  return resolved;
329
330
  } catch {
330
331
  throw new DurableAgentRepositoryError(`Durable agent cwd is not an existing directory: ${input}`);
@@ -333,7 +334,7 @@ export class DurableAgentRepository {
333
334
  validateBoundCwd(bound) {
334
335
  try {
335
336
  const stat = fs.lstatSync(bound);
336
- if (!stat.isDirectory() || stat.isSymbolicLink() || fs.realpathSync(bound) !== bound) throw new Error('binding changed');
337
+ if (!stat.isDirectory() || stat.isSymbolicLink() || fs.realpathSync(bound) !== bound) throw new Error("binding changed");
337
338
  } catch {
338
339
  throw new DurableAgentRepositoryError(`Durable agent cwd binding is no longer safe: ${bound}`);
339
340
  }
@@ -346,7 +347,7 @@ export class DurableAgentRepository {
346
347
  return actual !== null && actual.startedAt === expected.startedAt;
347
348
  }
348
349
  assertWritable() {
349
- if (this.readonly) throw new DurableAgentRepositoryError('Durable-agent repository is readonly.');
350
+ if (this.readonly) throw new DurableAgentRepositoryError("Durable-agent repository is readonly.");
350
351
  }
351
352
  storageError(prefix, error) {
352
353
  return error instanceof DurableAgentRepositoryError ? error : new DurableAgentRepositoryError(`${prefix}: ${error.message}`);