@esankhan3/anvil-agent-core 0.1.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 (459) hide show
  1. package/README.md +142 -0
  2. package/dist/__tests__/adapter-enrichment.test.d.ts +12 -0
  3. package/dist/__tests__/adapter-enrichment.test.d.ts.map +1 -0
  4. package/dist/__tests__/adapter-enrichment.test.js +199 -0
  5. package/dist/__tests__/adapter-enrichment.test.js.map +1 -0
  6. package/dist/__tests__/adk-anthropic-llm.test.d.ts +18 -0
  7. package/dist/__tests__/adk-anthropic-llm.test.d.ts.map +1 -0
  8. package/dist/__tests__/adk-anthropic-llm.test.js +124 -0
  9. package/dist/__tests__/adk-anthropic-llm.test.js.map +1 -0
  10. package/dist/__tests__/cost-breakdown.test.d.ts +11 -0
  11. package/dist/__tests__/cost-breakdown.test.d.ts.map +1 -0
  12. package/dist/__tests__/cost-breakdown.test.js +163 -0
  13. package/dist/__tests__/cost-breakdown.test.js.map +1 -0
  14. package/dist/__tests__/mcp.test.d.ts +13 -0
  15. package/dist/__tests__/mcp.test.d.ts.map +1 -0
  16. package/dist/__tests__/mcp.test.js +413 -0
  17. package/dist/__tests__/mcp.test.js.map +1 -0
  18. package/dist/__tests__/ollama-adapter-agentic.test.d.ts +15 -0
  19. package/dist/__tests__/ollama-adapter-agentic.test.d.ts.map +1 -0
  20. package/dist/__tests__/ollama-adapter-agentic.test.js +268 -0
  21. package/dist/__tests__/ollama-adapter-agentic.test.js.map +1 -0
  22. package/dist/__tests__/ollama-adapter-executor.test.d.ts +10 -0
  23. package/dist/__tests__/ollama-adapter-executor.test.d.ts.map +1 -0
  24. package/dist/__tests__/ollama-adapter-executor.test.js +95 -0
  25. package/dist/__tests__/ollama-adapter-executor.test.js.map +1 -0
  26. package/dist/__tests__/openai-adapter-output.test.d.ts +17 -0
  27. package/dist/__tests__/openai-adapter-output.test.d.ts.map +1 -0
  28. package/dist/__tests__/openai-adapter-output.test.js +127 -0
  29. package/dist/__tests__/openai-adapter-output.test.js.map +1 -0
  30. package/dist/__tests__/opencode-adapter.test.d.ts +7 -0
  31. package/dist/__tests__/opencode-adapter.test.d.ts.map +1 -0
  32. package/dist/__tests__/opencode-adapter.test.js +141 -0
  33. package/dist/__tests__/opencode-adapter.test.js.map +1 -0
  34. package/dist/__tests__/openrouter-adapter-agentic.test.d.ts +11 -0
  35. package/dist/__tests__/openrouter-adapter-agentic.test.d.ts.map +1 -0
  36. package/dist/__tests__/openrouter-adapter-agentic.test.js +297 -0
  37. package/dist/__tests__/openrouter-adapter-agentic.test.js.map +1 -0
  38. package/dist/__tests__/router-circuit-breaker.test.d.ts +6 -0
  39. package/dist/__tests__/router-circuit-breaker.test.d.ts.map +1 -0
  40. package/dist/__tests__/router-circuit-breaker.test.js +253 -0
  41. package/dist/__tests__/router-circuit-breaker.test.js.map +1 -0
  42. package/dist/__tests__/router-config-loader.test.d.ts +8 -0
  43. package/dist/__tests__/router-config-loader.test.d.ts.map +1 -0
  44. package/dist/__tests__/router-config-loader.test.js +172 -0
  45. package/dist/__tests__/router-config-loader.test.js.map +1 -0
  46. package/dist/__tests__/router-discovery.test.d.ts +5 -0
  47. package/dist/__tests__/router-discovery.test.d.ts.map +1 -0
  48. package/dist/__tests__/router-discovery.test.js +129 -0
  49. package/dist/__tests__/router-discovery.test.js.map +1 -0
  50. package/dist/__tests__/router-fallback.test.d.ts +9 -0
  51. package/dist/__tests__/router-fallback.test.d.ts.map +1 -0
  52. package/dist/__tests__/router-fallback.test.js +283 -0
  53. package/dist/__tests__/router-fallback.test.js.map +1 -0
  54. package/dist/__tests__/router-local-executor.test.d.ts +6 -0
  55. package/dist/__tests__/router-local-executor.test.d.ts.map +1 -0
  56. package/dist/__tests__/router-local-executor.test.js +193 -0
  57. package/dist/__tests__/router-local-executor.test.js.map +1 -0
  58. package/dist/__tests__/router-model-registry.test.d.ts +8 -0
  59. package/dist/__tests__/router-model-registry.test.d.ts.map +1 -0
  60. package/dist/__tests__/router-model-registry.test.js +389 -0
  61. package/dist/__tests__/router-model-registry.test.js.map +1 -0
  62. package/dist/__tests__/router-rate-limiter.test.d.ts +8 -0
  63. package/dist/__tests__/router-rate-limiter.test.d.ts.map +1 -0
  64. package/dist/__tests__/router-rate-limiter.test.js +128 -0
  65. package/dist/__tests__/router-rate-limiter.test.js.map +1 -0
  66. package/dist/__tests__/router-resolver.test.d.ts +7 -0
  67. package/dist/__tests__/router-resolver.test.d.ts.map +1 -0
  68. package/dist/__tests__/router-resolver.test.js +110 -0
  69. package/dist/__tests__/router-resolver.test.js.map +1 -0
  70. package/dist/__tests__/router-retry.test.d.ts +7 -0
  71. package/dist/__tests__/router-retry.test.d.ts.map +1 -0
  72. package/dist/__tests__/router-retry.test.js +302 -0
  73. package/dist/__tests__/router-retry.test.js.map +1 -0
  74. package/dist/__tests__/router-scaffold.test.d.ts +11 -0
  75. package/dist/__tests__/router-scaffold.test.d.ts.map +1 -0
  76. package/dist/__tests__/router-scaffold.test.js +103 -0
  77. package/dist/__tests__/router-scaffold.test.js.map +1 -0
  78. package/dist/__tests__/router-spend-ledger.test.d.ts +8 -0
  79. package/dist/__tests__/router-spend-ledger.test.d.ts.map +1 -0
  80. package/dist/__tests__/router-spend-ledger.test.js +227 -0
  81. package/dist/__tests__/router-spend-ledger.test.js.map +1 -0
  82. package/dist/__tests__/router-telemetry.test.d.ts +11 -0
  83. package/dist/__tests__/router-telemetry.test.d.ts.map +1 -0
  84. package/dist/__tests__/router-telemetry.test.js +173 -0
  85. package/dist/__tests__/router-telemetry.test.js.map +1 -0
  86. package/dist/__tests__/single-shot.test.d.ts +12 -0
  87. package/dist/__tests__/single-shot.test.d.ts.map +1 -0
  88. package/dist/__tests__/single-shot.test.js +204 -0
  89. package/dist/__tests__/single-shot.test.js.map +1 -0
  90. package/dist/__tests__/skills-prompt.test.d.ts +11 -0
  91. package/dist/__tests__/skills-prompt.test.d.ts.map +1 -0
  92. package/dist/__tests__/skills-prompt.test.js +208 -0
  93. package/dist/__tests__/skills-prompt.test.js.map +1 -0
  94. package/dist/__tests__/skills.test.d.ts +11 -0
  95. package/dist/__tests__/skills.test.d.ts.map +1 -0
  96. package/dist/__tests__/skills.test.js +161 -0
  97. package/dist/__tests__/skills.test.js.map +1 -0
  98. package/dist/__tests__/telemetry-integration.test.d.ts +12 -0
  99. package/dist/__tests__/telemetry-integration.test.d.ts.map +1 -0
  100. package/dist/__tests__/telemetry-integration.test.js +153 -0
  101. package/dist/__tests__/telemetry-integration.test.js.map +1 -0
  102. package/dist/__tests__/telemetry.test.d.ts +13 -0
  103. package/dist/__tests__/telemetry.test.d.ts.map +1 -0
  104. package/dist/__tests__/telemetry.test.js +161 -0
  105. package/dist/__tests__/telemetry.test.js.map +1 -0
  106. package/dist/__tests__/upstream-error.test.d.ts +8 -0
  107. package/dist/__tests__/upstream-error.test.d.ts.map +1 -0
  108. package/dist/__tests__/upstream-error.test.js +186 -0
  109. package/dist/__tests__/upstream-error.test.js.map +1 -0
  110. package/dist/adk-adapter.d.ts +45 -0
  111. package/dist/adk-adapter.d.ts.map +1 -0
  112. package/dist/adk-adapter.js +403 -0
  113. package/dist/adk-adapter.js.map +1 -0
  114. package/dist/adk-anthropic-llm.d.ts +59 -0
  115. package/dist/adk-anthropic-llm.d.ts.map +1 -0
  116. package/dist/adk-anthropic-llm.js +397 -0
  117. package/dist/adk-anthropic-llm.js.map +1 -0
  118. package/dist/agent/index.d.ts +14 -0
  119. package/dist/agent/index.d.ts.map +1 -0
  120. package/dist/agent/index.js +14 -0
  121. package/dist/agent/index.js.map +1 -0
  122. package/dist/agent/session/__tests__/bridge-tool-executor.test.d.ts +10 -0
  123. package/dist/agent/session/__tests__/bridge-tool-executor.test.d.ts.map +1 -0
  124. package/dist/agent/session/__tests__/bridge-tool-executor.test.js +152 -0
  125. package/dist/agent/session/__tests__/bridge-tool-executor.test.js.map +1 -0
  126. package/dist/agent/session/__tests__/collect-trajectory.test.d.ts +18 -0
  127. package/dist/agent/session/__tests__/collect-trajectory.test.d.ts.map +1 -0
  128. package/dist/agent/session/__tests__/collect-trajectory.test.js +208 -0
  129. package/dist/agent/session/__tests__/collect-trajectory.test.js.map +1 -0
  130. package/dist/agent/session/__tests__/run-with-agent.test.d.ts +8 -0
  131. package/dist/agent/session/__tests__/run-with-agent.test.d.ts.map +1 -0
  132. package/dist/agent/session/__tests__/run-with-agent.test.js +98 -0
  133. package/dist/agent/session/__tests__/run-with-agent.test.js.map +1 -0
  134. package/dist/agent/session/__tests__/runtime.test.d.ts +7 -0
  135. package/dist/agent/session/__tests__/runtime.test.d.ts.map +1 -0
  136. package/dist/agent/session/__tests__/runtime.test.js +361 -0
  137. package/dist/agent/session/__tests__/runtime.test.js.map +1 -0
  138. package/dist/agent/session/__tests__/skills-mcp-spawn.test.d.ts +15 -0
  139. package/dist/agent/session/__tests__/skills-mcp-spawn.test.d.ts.map +1 -0
  140. package/dist/agent/session/__tests__/skills-mcp-spawn.test.js +160 -0
  141. package/dist/agent/session/__tests__/skills-mcp-spawn.test.js.map +1 -0
  142. package/dist/agent/session/__tests__/spawn-telemetry.test.d.ts +13 -0
  143. package/dist/agent/session/__tests__/spawn-telemetry.test.d.ts.map +1 -0
  144. package/dist/agent/session/__tests__/spawn-telemetry.test.js +135 -0
  145. package/dist/agent/session/__tests__/spawn-telemetry.test.js.map +1 -0
  146. package/dist/agent/session/__tests__/types.test.d.ts +9 -0
  147. package/dist/agent/session/__tests__/types.test.d.ts.map +1 -0
  148. package/dist/agent/session/__tests__/types.test.js +220 -0
  149. package/dist/agent/session/__tests__/types.test.js.map +1 -0
  150. package/dist/agent/session/adapter.d.ts +108 -0
  151. package/dist/agent/session/adapter.d.ts.map +1 -0
  152. package/dist/agent/session/adapter.js +39 -0
  153. package/dist/agent/session/adapter.js.map +1 -0
  154. package/dist/agent/session/collect-trajectory.d.ts +36 -0
  155. package/dist/agent/session/collect-trajectory.d.ts.map +1 -0
  156. package/dist/agent/session/collect-trajectory.js +193 -0
  157. package/dist/agent/session/collect-trajectory.js.map +1 -0
  158. package/dist/agent/session/default-adapter-factory.d.ts +48 -0
  159. package/dist/agent/session/default-adapter-factory.d.ts.map +1 -0
  160. package/dist/agent/session/default-adapter-factory.js +227 -0
  161. package/dist/agent/session/default-adapter-factory.js.map +1 -0
  162. package/dist/agent/session/headless-types.d.ts +85 -0
  163. package/dist/agent/session/headless-types.d.ts.map +1 -0
  164. package/dist/agent/session/headless-types.js +16 -0
  165. package/dist/agent/session/headless-types.js.map +1 -0
  166. package/dist/agent/session/index.d.ts +18 -0
  167. package/dist/agent/session/index.d.ts.map +1 -0
  168. package/dist/agent/session/index.js +20 -0
  169. package/dist/agent/session/index.js.map +1 -0
  170. package/dist/agent/session/language-model-bridge.d.ts +84 -0
  171. package/dist/agent/session/language-model-bridge.d.ts.map +1 -0
  172. package/dist/agent/session/language-model-bridge.js +454 -0
  173. package/dist/agent/session/language-model-bridge.js.map +1 -0
  174. package/dist/agent/session/legacy-adapter-types.d.ts +63 -0
  175. package/dist/agent/session/legacy-adapter-types.d.ts.map +1 -0
  176. package/dist/agent/session/legacy-adapter-types.js +11 -0
  177. package/dist/agent/session/legacy-adapter-types.js.map +1 -0
  178. package/dist/agent/session/run-with-agent.d.ts +36 -0
  179. package/dist/agent/session/run-with-agent.d.ts.map +1 -0
  180. package/dist/agent/session/run-with-agent.js +81 -0
  181. package/dist/agent/session/run-with-agent.js.map +1 -0
  182. package/dist/agent/session/session-registry.d.ts +71 -0
  183. package/dist/agent/session/session-registry.d.ts.map +1 -0
  184. package/dist/agent/session/session-registry.js +209 -0
  185. package/dist/agent/session/session-registry.js.map +1 -0
  186. package/dist/agent/session/session.d.ts +76 -0
  187. package/dist/agent/session/session.d.ts.map +1 -0
  188. package/dist/agent/session/session.js +327 -0
  189. package/dist/agent/session/session.js.map +1 -0
  190. package/dist/agent/session/types.d.ts +230 -0
  191. package/dist/agent/session/types.d.ts.map +1 -0
  192. package/dist/agent/session/types.js +44 -0
  193. package/dist/agent/session/types.js.map +1 -0
  194. package/dist/checkpoint/__tests__/blob-store.test.d.ts +5 -0
  195. package/dist/checkpoint/__tests__/blob-store.test.d.ts.map +1 -0
  196. package/dist/checkpoint/__tests__/blob-store.test.js +82 -0
  197. package/dist/checkpoint/__tests__/blob-store.test.js.map +1 -0
  198. package/dist/checkpoint/__tests__/key.test.d.ts +7 -0
  199. package/dist/checkpoint/__tests__/key.test.d.ts.map +1 -0
  200. package/dist/checkpoint/__tests__/key.test.js +130 -0
  201. package/dist/checkpoint/__tests__/key.test.js.map +1 -0
  202. package/dist/checkpoint/__tests__/runner.test.d.ts +12 -0
  203. package/dist/checkpoint/__tests__/runner.test.d.ts.map +1 -0
  204. package/dist/checkpoint/__tests__/runner.test.js +201 -0
  205. package/dist/checkpoint/__tests__/runner.test.js.map +1 -0
  206. package/dist/checkpoint/__tests__/store.test.d.ts +6 -0
  207. package/dist/checkpoint/__tests__/store.test.d.ts.map +1 -0
  208. package/dist/checkpoint/__tests__/store.test.js +150 -0
  209. package/dist/checkpoint/__tests__/store.test.js.map +1 -0
  210. package/dist/checkpoint/blob-store.d.ts +41 -0
  211. package/dist/checkpoint/blob-store.d.ts.map +1 -0
  212. package/dist/checkpoint/blob-store.js +119 -0
  213. package/dist/checkpoint/blob-store.js.map +1 -0
  214. package/dist/checkpoint/index.d.ts +15 -0
  215. package/dist/checkpoint/index.d.ts.map +1 -0
  216. package/dist/checkpoint/index.js +14 -0
  217. package/dist/checkpoint/index.js.map +1 -0
  218. package/dist/checkpoint/key.d.ts +39 -0
  219. package/dist/checkpoint/key.d.ts.map +1 -0
  220. package/dist/checkpoint/key.js +112 -0
  221. package/dist/checkpoint/key.js.map +1 -0
  222. package/dist/checkpoint/runner.d.ts +83 -0
  223. package/dist/checkpoint/runner.d.ts.map +1 -0
  224. package/dist/checkpoint/runner.js +146 -0
  225. package/dist/checkpoint/runner.js.map +1 -0
  226. package/dist/checkpoint/store.d.ts +91 -0
  227. package/dist/checkpoint/store.d.ts.map +1 -0
  228. package/dist/checkpoint/store.js +292 -0
  229. package/dist/checkpoint/store.js.map +1 -0
  230. package/dist/checkpoint/types.d.ts +74 -0
  231. package/dist/checkpoint/types.d.ts.map +1 -0
  232. package/dist/checkpoint/types.js +16 -0
  233. package/dist/checkpoint/types.js.map +1 -0
  234. package/dist/claude-adapter.d.ts +23 -0
  235. package/dist/claude-adapter.d.ts.map +1 -0
  236. package/dist/claude-adapter.js +233 -0
  237. package/dist/claude-adapter.js.map +1 -0
  238. package/dist/cost.d.ts +67 -0
  239. package/dist/cost.d.ts.map +1 -0
  240. package/dist/cost.js +148 -0
  241. package/dist/cost.js.map +1 -0
  242. package/dist/data/model-prices.json +39681 -0
  243. package/dist/fallback-adapter.d.ts +51 -0
  244. package/dist/fallback-adapter.d.ts.map +1 -0
  245. package/dist/fallback-adapter.js +116 -0
  246. package/dist/fallback-adapter.js.map +1 -0
  247. package/dist/gemini-adapter.d.ts +22 -0
  248. package/dist/gemini-adapter.d.ts.map +1 -0
  249. package/dist/gemini-adapter.js +185 -0
  250. package/dist/gemini-adapter.js.map +1 -0
  251. package/dist/gemini-cli-adapter.d.ts +24 -0
  252. package/dist/gemini-cli-adapter.d.ts.map +1 -0
  253. package/dist/gemini-cli-adapter.js +169 -0
  254. package/dist/gemini-cli-adapter.js.map +1 -0
  255. package/dist/index.d.ts +39 -0
  256. package/dist/index.d.ts.map +1 -0
  257. package/dist/index.js +39 -0
  258. package/dist/index.js.map +1 -0
  259. package/dist/mcp/client.d.ts +32 -0
  260. package/dist/mcp/client.d.ts.map +1 -0
  261. package/dist/mcp/client.js +92 -0
  262. package/dist/mcp/client.js.map +1 -0
  263. package/dist/mcp/config-loader.d.ts +36 -0
  264. package/dist/mcp/config-loader.d.ts.map +1 -0
  265. package/dist/mcp/config-loader.js +129 -0
  266. package/dist/mcp/config-loader.js.map +1 -0
  267. package/dist/mcp/index.d.ts +12 -0
  268. package/dist/mcp/index.d.ts.map +1 -0
  269. package/dist/mcp/index.js +11 -0
  270. package/dist/mcp/index.js.map +1 -0
  271. package/dist/mcp/tool-merger.d.ts +18 -0
  272. package/dist/mcp/tool-merger.d.ts.map +1 -0
  273. package/dist/mcp/tool-merger.js +34 -0
  274. package/dist/mcp/tool-merger.js.map +1 -0
  275. package/dist/mcp/types.d.ts +35 -0
  276. package/dist/mcp/types.d.ts.map +1 -0
  277. package/dist/mcp/types.js +10 -0
  278. package/dist/mcp/types.js.map +1 -0
  279. package/dist/ollama-adapter.d.ts +95 -0
  280. package/dist/ollama-adapter.d.ts.map +1 -0
  281. package/dist/ollama-adapter.js +404 -0
  282. package/dist/ollama-adapter.js.map +1 -0
  283. package/dist/openai-adapter.d.ts +40 -0
  284. package/dist/openai-adapter.d.ts.map +1 -0
  285. package/dist/openai-adapter.js +81 -0
  286. package/dist/openai-adapter.js.map +1 -0
  287. package/dist/opencode-adapter.d.ts +39 -0
  288. package/dist/opencode-adapter.d.ts.map +1 -0
  289. package/dist/opencode-adapter.js +105 -0
  290. package/dist/opencode-adapter.js.map +1 -0
  291. package/dist/openrouter-adapter.d.ts +69 -0
  292. package/dist/openrouter-adapter.d.ts.map +1 -0
  293. package/dist/openrouter-adapter.js +481 -0
  294. package/dist/openrouter-adapter.js.map +1 -0
  295. package/dist/registry.d.ts +55 -0
  296. package/dist/registry.d.ts.map +1 -0
  297. package/dist/registry.js +191 -0
  298. package/dist/registry.js.map +1 -0
  299. package/dist/router/circuit-breaker.d.ts +57 -0
  300. package/dist/router/circuit-breaker.d.ts.map +1 -0
  301. package/dist/router/circuit-breaker.js +110 -0
  302. package/dist/router/circuit-breaker.js.map +1 -0
  303. package/dist/router/config-loader.d.ts +43 -0
  304. package/dist/router/config-loader.d.ts.map +1 -0
  305. package/dist/router/config-loader.js +155 -0
  306. package/dist/router/config-loader.js.map +1 -0
  307. package/dist/router/discovery.d.ts +37 -0
  308. package/dist/router/discovery.d.ts.map +1 -0
  309. package/dist/router/discovery.js +54 -0
  310. package/dist/router/discovery.js.map +1 -0
  311. package/dist/router/errors.d.ts +39 -0
  312. package/dist/router/errors.d.ts.map +1 -0
  313. package/dist/router/errors.js +103 -0
  314. package/dist/router/errors.js.map +1 -0
  315. package/dist/router/index.d.ts +31 -0
  316. package/dist/router/index.d.ts.map +1 -0
  317. package/dist/router/index.js +20 -0
  318. package/dist/router/index.js.map +1 -0
  319. package/dist/router/local-executor.d.ts +62 -0
  320. package/dist/router/local-executor.d.ts.map +1 -0
  321. package/dist/router/local-executor.js +161 -0
  322. package/dist/router/local-executor.js.map +1 -0
  323. package/dist/router/model-registry.d.ts +90 -0
  324. package/dist/router/model-registry.d.ts.map +1 -0
  325. package/dist/router/model-registry.js +242 -0
  326. package/dist/router/model-registry.js.map +1 -0
  327. package/dist/router/rate-limiter.d.ts +63 -0
  328. package/dist/router/rate-limiter.d.ts.map +1 -0
  329. package/dist/router/rate-limiter.js +136 -0
  330. package/dist/router/rate-limiter.js.map +1 -0
  331. package/dist/router/resolver.d.ts +45 -0
  332. package/dist/router/resolver.d.ts.map +1 -0
  333. package/dist/router/resolver.js +71 -0
  334. package/dist/router/resolver.js.map +1 -0
  335. package/dist/router/retry.d.ts +58 -0
  336. package/dist/router/retry.d.ts.map +1 -0
  337. package/dist/router/retry.js +119 -0
  338. package/dist/router/retry.js.map +1 -0
  339. package/dist/router/router.d.ts +100 -0
  340. package/dist/router/router.d.ts.map +1 -0
  341. package/dist/router/router.js +306 -0
  342. package/dist/router/router.js.map +1 -0
  343. package/dist/router/spend-ledger.d.ts +69 -0
  344. package/dist/router/spend-ledger.d.ts.map +1 -0
  345. package/dist/router/spend-ledger.js +191 -0
  346. package/dist/router/spend-ledger.js.map +1 -0
  347. package/dist/router/telemetry.d.ts +48 -0
  348. package/dist/router/telemetry.d.ts.map +1 -0
  349. package/dist/router/telemetry.js +112 -0
  350. package/dist/router/telemetry.js.map +1 -0
  351. package/dist/router/types.d.ts +95 -0
  352. package/dist/router/types.d.ts.map +1 -0
  353. package/dist/router/types.js +16 -0
  354. package/dist/router/types.js.map +1 -0
  355. package/dist/single-shot.d.ts +60 -0
  356. package/dist/single-shot.d.ts.map +1 -0
  357. package/dist/single-shot.js +385 -0
  358. package/dist/single-shot.js.map +1 -0
  359. package/dist/skills/activator.d.ts +17 -0
  360. package/dist/skills/activator.d.ts.map +1 -0
  361. package/dist/skills/activator.js +24 -0
  362. package/dist/skills/activator.js.map +1 -0
  363. package/dist/skills/compose.d.ts +43 -0
  364. package/dist/skills/compose.d.ts.map +1 -0
  365. package/dist/skills/compose.js +53 -0
  366. package/dist/skills/compose.js.map +1 -0
  367. package/dist/skills/index.d.ts +17 -0
  368. package/dist/skills/index.d.ts.map +1 -0
  369. package/dist/skills/index.js +16 -0
  370. package/dist/skills/index.js.map +1 -0
  371. package/dist/skills/loader.d.ts +9 -0
  372. package/dist/skills/loader.d.ts.map +1 -0
  373. package/dist/skills/loader.js +49 -0
  374. package/dist/skills/loader.js.map +1 -0
  375. package/dist/skills/parser.d.ts +13 -0
  376. package/dist/skills/parser.d.ts.map +1 -0
  377. package/dist/skills/parser.js +60 -0
  378. package/dist/skills/parser.js.map +1 -0
  379. package/dist/skills/render.d.ts +11 -0
  380. package/dist/skills/render.d.ts.map +1 -0
  381. package/dist/skills/render.js +21 -0
  382. package/dist/skills/render.js.map +1 -0
  383. package/dist/skills/resolve-dir.d.ts +20 -0
  384. package/dist/skills/resolve-dir.d.ts.map +1 -0
  385. package/dist/skills/resolve-dir.js +30 -0
  386. package/dist/skills/resolve-dir.js.map +1 -0
  387. package/dist/skills/tool-policy.d.ts +26 -0
  388. package/dist/skills/tool-policy.d.ts.map +1 -0
  389. package/dist/skills/tool-policy.js +33 -0
  390. package/dist/skills/tool-policy.js.map +1 -0
  391. package/dist/skills/types.d.ts +42 -0
  392. package/dist/skills/types.d.ts.map +1 -0
  393. package/dist/skills/types.js +8 -0
  394. package/dist/skills/types.js.map +1 -0
  395. package/dist/stream-format.d.ts +100 -0
  396. package/dist/stream-format.d.ts.map +1 -0
  397. package/dist/stream-format.js +90 -0
  398. package/dist/stream-format.js.map +1 -0
  399. package/dist/telemetry/attributes.d.ts +38 -0
  400. package/dist/telemetry/attributes.d.ts.map +1 -0
  401. package/dist/telemetry/attributes.js +39 -0
  402. package/dist/telemetry/attributes.js.map +1 -0
  403. package/dist/telemetry/config.d.ts +30 -0
  404. package/dist/telemetry/config.d.ts.map +1 -0
  405. package/dist/telemetry/config.js +54 -0
  406. package/dist/telemetry/config.js.map +1 -0
  407. package/dist/telemetry/exporters.d.ts +10 -0
  408. package/dist/telemetry/exporters.d.ts.map +1 -0
  409. package/dist/telemetry/exporters.js +46 -0
  410. package/dist/telemetry/exporters.js.map +1 -0
  411. package/dist/telemetry/index.d.ts +15 -0
  412. package/dist/telemetry/index.d.ts.map +1 -0
  413. package/dist/telemetry/index.js +12 -0
  414. package/dist/telemetry/index.js.map +1 -0
  415. package/dist/telemetry/instrument.d.ts +36 -0
  416. package/dist/telemetry/instrument.d.ts.map +1 -0
  417. package/dist/telemetry/instrument.js +215 -0
  418. package/dist/telemetry/instrument.js.map +1 -0
  419. package/dist/telemetry/metrics.d.ts +45 -0
  420. package/dist/telemetry/metrics.d.ts.map +1 -0
  421. package/dist/telemetry/metrics.js +186 -0
  422. package/dist/telemetry/metrics.js.map +1 -0
  423. package/dist/telemetry/tracer.d.ts +33 -0
  424. package/dist/telemetry/tracer.d.ts.map +1 -0
  425. package/dist/telemetry/tracer.js +162 -0
  426. package/dist/telemetry/tracer.js.map +1 -0
  427. package/dist/tools/__tests__/builtin.test.d.ts +7 -0
  428. package/dist/tools/__tests__/builtin.test.d.ts.map +1 -0
  429. package/dist/tools/__tests__/builtin.test.js +242 -0
  430. package/dist/tools/__tests__/builtin.test.js.map +1 -0
  431. package/dist/tools/builtin.d.ts +29 -0
  432. package/dist/tools/builtin.d.ts.map +1 -0
  433. package/dist/tools/builtin.js +367 -0
  434. package/dist/tools/builtin.js.map +1 -0
  435. package/dist/tools/index.d.ts +4 -0
  436. package/dist/tools/index.d.ts.map +1 -0
  437. package/dist/tools/index.js +3 -0
  438. package/dist/tools/index.js.map +1 -0
  439. package/dist/tools/path-guard.d.ts +23 -0
  440. package/dist/tools/path-guard.d.ts.map +1 -0
  441. package/dist/tools/path-guard.js +66 -0
  442. package/dist/tools/path-guard.js.map +1 -0
  443. package/dist/tools/types.d.ts +45 -0
  444. package/dist/tools/types.d.ts.map +1 -0
  445. package/dist/tools/types.js +11 -0
  446. package/dist/tools/types.js.map +1 -0
  447. package/dist/types.d.ts +249 -0
  448. package/dist/types.d.ts.map +1 -0
  449. package/dist/types.js +22 -0
  450. package/dist/types.js.map +1 -0
  451. package/dist/upstream-error.d.ts +64 -0
  452. package/dist/upstream-error.d.ts.map +1 -0
  453. package/dist/upstream-error.js +105 -0
  454. package/dist/upstream-error.js.map +1 -0
  455. package/dist/version.d.ts +2 -0
  456. package/dist/version.d.ts.map +1 -0
  457. package/dist/version.js +2 -0
  458. package/dist/version.js.map +1 -0
  459. package/package.json +49 -0
@@ -0,0 +1,36 @@
1
+ /**
2
+ * `runWithAgent` — single-shot helper for callers that don't need the
3
+ * full `AgentManager` registry (cli `commands/diff`, `commands/learn`,
4
+ * `commands/migrate`, `commands/test-gen`).
5
+ *
6
+ * Internally constructs an `AgentManager`, spawns one agent against the
7
+ * given `SpawnConfig`, awaits completion, and returns the assembled
8
+ * result + cost. Saves callers from re-implementing the
9
+ * spawn-and-stream-parse pattern with bare `child_process.spawn`.
10
+ *
11
+ * No checkpoint cache — for cache-aware single-shot execution wrap the
12
+ * call site with `runWithCheckpoint` (see `@esankhan3/anvil-agent-core/checkpoint`).
13
+ */
14
+ import type { AgentAdapterFactory } from './adapter.js';
15
+ import type { AgentState, CostInfo, SpawnConfig } from './types.js';
16
+ export interface RunWithAgentOptions {
17
+ /** Override the default adapter factory (test seam). */
18
+ adapterFactory?: AgentAdapterFactory;
19
+ /** AbortSignal — triggers `kill()` on the spawned agent. */
20
+ signal?: AbortSignal;
21
+ }
22
+ export interface RunWithAgentResult {
23
+ /** Final assembled output text. */
24
+ output: string;
25
+ /** Cost + token usage. */
26
+ cost: CostInfo;
27
+ /** Final agent state snapshot (status will be 'done', 'error', or 'killed'). */
28
+ state: AgentState;
29
+ }
30
+ /**
31
+ * Run a single agent to completion. Resolves with the final output + cost,
32
+ * or rejects when the agent fails or is killed. Cancellation via
33
+ * `opts.signal.abort()` triggers `kill()` and rejects with `AbortError`.
34
+ */
35
+ export declare function runWithAgent(spec: SpawnConfig, opts?: RunWithAgentOptions): Promise<RunWithAgentResult>;
36
+ //# sourceMappingURL=run-with-agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-with-agent.d.ts","sourceRoot":"","sources":["../../../src/agent/session/run-with-agent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEpE,MAAM,WAAW,mBAAmB;IAClC,wDAAwD;IACxD,cAAc,CAAC,EAAE,mBAAmB,CAAC;IACrC,4DAA4D;IAC5D,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,mCAAmC;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,0BAA0B;IAC1B,IAAI,EAAE,QAAQ,CAAC;IACf,gFAAgF;IAChF,KAAK,EAAE,UAAU,CAAC;CACnB;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,WAAW,EACjB,IAAI,GAAE,mBAAwB,GAC7B,OAAO,CAAC,kBAAkB,CAAC,CA6D7B"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * `runWithAgent` — single-shot helper for callers that don't need the
3
+ * full `AgentManager` registry (cli `commands/diff`, `commands/learn`,
4
+ * `commands/migrate`, `commands/test-gen`).
5
+ *
6
+ * Internally constructs an `AgentManager`, spawns one agent against the
7
+ * given `SpawnConfig`, awaits completion, and returns the assembled
8
+ * result + cost. Saves callers from re-implementing the
9
+ * spawn-and-stream-parse pattern with bare `child_process.spawn`.
10
+ *
11
+ * No checkpoint cache — for cache-aware single-shot execution wrap the
12
+ * call site with `runWithCheckpoint` (see `@esankhan3/anvil-agent-core/checkpoint`).
13
+ */
14
+ import { AgentManager } from './session-registry.js';
15
+ /**
16
+ * Run a single agent to completion. Resolves with the final output + cost,
17
+ * or rejects when the agent fails or is killed. Cancellation via
18
+ * `opts.signal.abort()` triggers `kill()` and rejects with `AbortError`.
19
+ */
20
+ export async function runWithAgent(spec, opts = {}) {
21
+ const manager = new AgentManager(opts.adapterFactory ? { adapterFactory: opts.adapterFactory } : {});
22
+ return new Promise((resolve, reject) => {
23
+ let agentId;
24
+ let finished = false;
25
+ const finish = (cb) => {
26
+ if (finished)
27
+ return;
28
+ finished = true;
29
+ cb();
30
+ };
31
+ manager.on('agent-done', ({ agent }) => {
32
+ if (agent.id !== agentId)
33
+ return;
34
+ finish(() => {
35
+ resolve({ output: agent.output, cost: agent.cost, state: agent });
36
+ });
37
+ });
38
+ manager.on('agent-error', ({ agentId: errId, error }) => {
39
+ if (errId !== agentId)
40
+ return;
41
+ finish(() => {
42
+ reject(new Error(error || 'Agent failed'));
43
+ });
44
+ });
45
+ if (opts.signal) {
46
+ const onAbort = () => {
47
+ if (agentId) {
48
+ try {
49
+ manager.kill(agentId);
50
+ }
51
+ catch { /* ignore */ }
52
+ }
53
+ finish(() => {
54
+ const err = new Error('Aborted');
55
+ err.name = 'AbortError';
56
+ reject(err);
57
+ });
58
+ };
59
+ if (opts.signal.aborted) {
60
+ onAbort();
61
+ return;
62
+ }
63
+ opts.signal.addEventListener('abort', onAbort, { once: true });
64
+ }
65
+ try {
66
+ const state = manager.spawn(spec);
67
+ agentId = state.id;
68
+ // If the spawn synthesized 'done' (checkpoint cache hit), resolve
69
+ // synchronously with the pre-populated state.
70
+ if (state.status === 'done') {
71
+ finish(() => {
72
+ resolve({ output: state.output, cost: state.cost, state });
73
+ });
74
+ }
75
+ }
76
+ catch (err) {
77
+ finish(() => reject(err instanceof Error ? err : new Error(String(err))));
78
+ }
79
+ });
80
+ }
81
+ //# sourceMappingURL=run-with-agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-with-agent.js","sourceRoot":"","sources":["../../../src/agent/session/run-with-agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * `AgentManager` — tracks many concurrent `AgentProcess`es.
3
+ *
4
+ * Behavior:
5
+ * - `spawn(config)` consults the checkpoint hook; on hit, synthesizes a
6
+ * done-event without launching an adapter.
7
+ * - On miss, constructs an `AgentProcess` (which spawns the adapter via
8
+ * the manager's `adapterFactory`) and re-emits the process's events
9
+ * onto the manager's own EventEmitter surface.
10
+ * - `sendInput(id, text)` delegates to the process.
11
+ * - `kill(id)` / `killAll()` propagate to processes and update state.
12
+ * - The cost hook is invoked once per `result` event, and the checkpoint
13
+ * `record` (when present) is called with the same data.
14
+ */
15
+ import { EventEmitter } from 'node:events';
16
+ import { AgentProcess } from './session.js';
17
+ import type { AgentAdapterFactory } from './adapter.js';
18
+ import type { AgentCheckpointHook, AgentCostHook, AgentManagerEvents, AgentState, CostInfo, SpawnConfig } from './types.js';
19
+ export interface AgentManagerOpts {
20
+ /**
21
+ * Adapter factory — optional. Defaults to `defaultAdapterFactory`, which
22
+ * resolves a `LanguageModelBridge` for the spec's model via
23
+ * `ProviderRegistry`. Pass a custom factory for tests or to inject a
24
+ * pre-built adapter. Same factory is reused for every spawn.
25
+ */
26
+ adapterFactory?: AgentAdapterFactory;
27
+ /** Test seam — clock. Defaults to `Date.now`. */
28
+ now?: () => number;
29
+ /** Test seam — `setTimeout` substitute used by processes. */
30
+ setTimeoutImpl?: (fn: () => void, ms: number) => void;
31
+ /**
32
+ * Test seam — defer the cache-hit `agent-done` emission. Production uses
33
+ * `process.nextTick` so listeners attached AFTER `spawn()` returns still
34
+ * see the event.
35
+ */
36
+ nextTickImpl?: (fn: () => void) => void;
37
+ }
38
+ export declare class AgentManager extends EventEmitter {
39
+ protected readonly processes: Map<string, {
40
+ process: AgentProcess;
41
+ spec: SpawnConfig;
42
+ }>;
43
+ protected costHook: AgentCostHook | null;
44
+ protected checkpointHook: AgentCheckpointHook | null;
45
+ protected readonly adapterFactory: AgentAdapterFactory;
46
+ protected readonly now: () => number;
47
+ protected readonly setTimeoutImpl: (fn: () => void, ms: number) => void;
48
+ protected readonly nextTickImpl: (fn: () => void) => void;
49
+ constructor(opts?: AgentManagerOpts);
50
+ on<K extends keyof AgentManagerEvents>(event: K, listener: AgentManagerEvents[K]): this;
51
+ emit<K extends keyof AgentManagerEvents>(event: K, ...args: Parameters<AgentManagerEvents[K]>): boolean;
52
+ setCostHook(hook: AgentCostHook | null): void;
53
+ setCheckpointHook(hook: AgentCheckpointHook | null): void;
54
+ /**
55
+ * Spawn a new agent. Returns a synchronous snapshot of its state. On a
56
+ * checkpoint cache hit the snapshot has `status === 'done'` and the
57
+ * `agent-done` event fires asynchronously (next tick) so listeners
58
+ * attached after `spawn()` returns still observe it.
59
+ */
60
+ spawn(spec: SpawnConfig): AgentState;
61
+ /** Send input to a running agent. Throws if the agent is not registered. */
62
+ sendInput(agentId: string, text: string): void;
63
+ kill(agentId: string): boolean;
64
+ killAll(): number;
65
+ getAgent(agentId: string): AgentState | undefined;
66
+ getAllAgents(): AgentState[];
67
+ protected wireProcess(agentId: string, proc: AgentProcess, spec: SpawnConfig): void;
68
+ protected fireCostHook(agentId: string, spec: SpawnConfig, cost: CostInfo): void;
69
+ protected fireCheckpointRecord(spec: SpawnConfig, output: string, cost: CostInfo): void;
70
+ }
71
+ //# sourceMappingURL=session-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-registry.d.ts","sourceRoot":"","sources":["../../../src/agent/session/session-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EACL,YAAY,EAGb,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAExD,OAAO,KAAK,EACV,mBAAmB,EACnB,aAAa,EACb,kBAAkB,EAClB,UAAU,EACV,QAAQ,EACR,WAAW,EACZ,MAAM,YAAY,CAAC;AAGpB,MAAM,WAAW,gBAAgB;IAC/B;;;;;OAKG;IACH,cAAc,CAAC,EAAE,mBAAmB,CAAC;IACrC,iDAAiD;IACjD,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,6DAA6D;IAC7D,cAAc,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,IAAI,EAAE,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACtD;;;;OAIG;IACH,YAAY,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;CACzC;AAED,qBAAa,YAAa,SAAQ,YAAY;IAC5C,SAAS,CAAC,QAAQ,CAAC,SAAS;iBAA8B,YAAY;cAAQ,WAAW;OAAM;IAC/F,SAAS,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAQ;IAChD,SAAS,CAAC,cAAc,EAAE,mBAAmB,GAAG,IAAI,CAAQ;IAC5D,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,mBAAmB,CAAC;IACvD,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,MAAM,CAAC;IACrC,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,IAAI,EAAE,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACxE,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;gBAE9C,IAAI,GAAE,gBAAqB;IAU9B,EAAE,CAAC,CAAC,SAAS,MAAM,kBAAkB,EAC5C,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAC9B,IAAI;IAIE,IAAI,CAAC,CAAC,SAAS,MAAM,kBAAkB,EAC9C,KAAK,EAAE,CAAC,EACR,GAAG,IAAI,EAAE,UAAU,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,GACzC,OAAO;IAMV,WAAW,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,GAAG,IAAI;IAC7C,iBAAiB,CAAC,IAAI,EAAE,mBAAmB,GAAG,IAAI,GAAG,IAAI;IAIzD;;;;;OAKG;IACH,KAAK,CAAC,IAAI,EAAE,WAAW,GAAG,UAAU;IAmDpC,4EAA4E;IAC5E,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAY9C,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAO9B,OAAO,IAAI,MAAM;IAgBjB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAIjD,YAAY,IAAI,UAAU,EAAE;IAM5B,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW,GAAG,IAAI;IA6BnF,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,GAAG,IAAI;IAuBhF,SAAS,CAAC,oBAAoB,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,IAAI;CAmBxF"}
@@ -0,0 +1,209 @@
1
+ /**
2
+ * `AgentManager` — tracks many concurrent `AgentProcess`es.
3
+ *
4
+ * Behavior:
5
+ * - `spawn(config)` consults the checkpoint hook; on hit, synthesizes a
6
+ * done-event without launching an adapter.
7
+ * - On miss, constructs an `AgentProcess` (which spawns the adapter via
8
+ * the manager's `adapterFactory`) and re-emits the process's events
9
+ * onto the manager's own EventEmitter surface.
10
+ * - `sendInput(id, text)` delegates to the process.
11
+ * - `kill(id)` / `killAll()` propagate to processes and update state.
12
+ * - The cost hook is invoked once per `result` event, and the checkpoint
13
+ * `record` (when present) is called with the same data.
14
+ */
15
+ import { EventEmitter } from 'node:events';
16
+ import { AgentProcess, appendOutput, } from './session.js';
17
+ import { defaultAdapterFactory } from './default-adapter-factory.js';
18
+ import { AgentNotFoundError } from './types.js';
19
+ export class AgentManager extends EventEmitter {
20
+ processes = new Map();
21
+ costHook = null;
22
+ checkpointHook = null;
23
+ adapterFactory;
24
+ now;
25
+ setTimeoutImpl;
26
+ nextTickImpl;
27
+ constructor(opts = {}) {
28
+ super();
29
+ this.adapterFactory = opts.adapterFactory ?? defaultAdapterFactory;
30
+ this.now = opts.now ?? Date.now;
31
+ this.setTimeoutImpl = opts.setTimeoutImpl ?? ((fn, ms) => { setTimeout(fn, ms); });
32
+ this.nextTickImpl = opts.nextTickImpl ?? ((fn) => { process.nextTick(fn); });
33
+ }
34
+ // ── Typed event helpers ──────────────────────────────────────────────
35
+ on(event, listener) {
36
+ return super.on(event, listener);
37
+ }
38
+ emit(event, ...args) {
39
+ return super.emit(event, ...args);
40
+ }
41
+ // ── Hooks ────────────────────────────────────────────────────────────
42
+ setCostHook(hook) { this.costHook = hook; }
43
+ setCheckpointHook(hook) { this.checkpointHook = hook; }
44
+ // ── Spawn ────────────────────────────────────────────────────────────
45
+ /**
46
+ * Spawn a new agent. Returns a synchronous snapshot of its state. On a
47
+ * checkpoint cache hit the snapshot has `status === 'done'` and the
48
+ * `agent-done` event fires asynchronously (next tick) so listeners
49
+ * attached after `spawn()` returns still observe it.
50
+ */
51
+ spawn(spec) {
52
+ const processOpts = {
53
+ adapterFactory: this.adapterFactory,
54
+ now: this.now,
55
+ setTimeoutImpl: this.setTimeoutImpl,
56
+ };
57
+ const proc = new AgentProcess(spec, processOpts);
58
+ const agentId = proc.id;
59
+ // ── Checkpoint cache lookup ───────────────────────────────────────
60
+ if (this.checkpointHook) {
61
+ try {
62
+ const hit = this.checkpointHook.lookup({
63
+ project: spec.project,
64
+ stage: spec.stage,
65
+ persona: spec.persona,
66
+ model: spec.model,
67
+ prompt: spec.prompt,
68
+ runFamily: spec.runFamily ?? spec.runId,
69
+ });
70
+ if (hit.hit) {
71
+ // Manually populate state — no adapter ever spawns.
72
+ const state = proc.getState();
73
+ state.status = 'done';
74
+ state.startedAt = this.now();
75
+ state.finishedAt = this.now();
76
+ appendOutput(state, hit.output);
77
+ if (hit.cost)
78
+ state.cost = hit.cost;
79
+ this.processes.set(agentId, { process: proc, spec });
80
+ this.nextTickImpl(() => {
81
+ this.emit('agent-done', { agent: state });
82
+ });
83
+ return state;
84
+ }
85
+ }
86
+ catch (err) {
87
+ process.stderr.write(`[agent-manager] checkpoint lookup failed: ${err instanceof Error ? err.message : String(err)}\n`);
88
+ }
89
+ }
90
+ // ── Wire process events through to the manager surface ──────────
91
+ this.wireProcess(agentId, proc, spec);
92
+ proc.start();
93
+ this.processes.set(agentId, { process: proc, spec });
94
+ return proc.getState();
95
+ }
96
+ // ── Send input ───────────────────────────────────────────────────────
97
+ /** Send input to a running agent. Throws if the agent is not registered. */
98
+ sendInput(agentId, text) {
99
+ const entry = this.processes.get(agentId);
100
+ if (!entry)
101
+ throw new AgentNotFoundError(agentId);
102
+ // Show user message in manager output stream BEFORE the process emits
103
+ // its own copy — preserves the dashboard emit order
104
+ // (`agent-output` first, then process's own `content`).
105
+ this.emit('agent-output', { agentId, chunk: `\n\n> User: ${text}\n\n` });
106
+ entry.process.sendInput(text);
107
+ }
108
+ // ── Kill ─────────────────────────────────────────────────────────────
109
+ kill(agentId) {
110
+ const entry = this.processes.get(agentId);
111
+ if (!entry)
112
+ return false;
113
+ entry.process.kill();
114
+ return true;
115
+ }
116
+ killAll() {
117
+ let killed = 0;
118
+ for (const { process: proc } of this.processes.values()) {
119
+ const status = proc.getState().status;
120
+ if (status === 'running' || status === 'pending') {
121
+ try {
122
+ proc.kill('SIGTERM');
123
+ killed++;
124
+ }
125
+ catch { /* already dead */ }
126
+ }
127
+ }
128
+ return killed;
129
+ }
130
+ // ── Queries ──────────────────────────────────────────────────────────
131
+ getAgent(agentId) {
132
+ return this.processes.get(agentId)?.process.getState();
133
+ }
134
+ getAllAgents() {
135
+ return Array.from(this.processes.values()).map((e) => e.process.getState());
136
+ }
137
+ // ── Internals ────────────────────────────────────────────────────────
138
+ wireProcess(agentId, proc, spec) {
139
+ proc.on('content', (chunk) => {
140
+ this.emit('agent-output', { agentId, chunk });
141
+ });
142
+ proc.on('activity', (activity) => {
143
+ this.emit('agent-activity', { agentId, activity });
144
+ });
145
+ proc.on('result', (data) => {
146
+ const state = proc.getState();
147
+ this.fireCostHook(agentId, spec, data.cost);
148
+ this.fireCheckpointRecord(spec, data.result || state.output, state.cost);
149
+ this.emit('agent-done', { agent: state });
150
+ });
151
+ proc.on('error-output', (text) => {
152
+ this.emit('agent-error', { agentId, error: text });
153
+ });
154
+ proc.on('exit', () => {
155
+ const state = proc.getState();
156
+ if (state.status === 'error' && state.error) {
157
+ this.emit('agent-error', { agentId, error: state.error });
158
+ }
159
+ else if (state.status === 'done' && state.finishedAt !== state.startedAt) {
160
+ // The 0-exit grace-window path resolves through here. Adapters that
161
+ // emitted a `result` already triggered `agent-done`; this branch
162
+ // covers the case where exit fired without a result event.
163
+ this.emit('agent-done', { agent: state });
164
+ }
165
+ });
166
+ }
167
+ fireCostHook(agentId, spec, cost) {
168
+ if (!this.costHook)
169
+ return;
170
+ try {
171
+ void this.costHook({
172
+ runId: spec.runId,
173
+ project: spec.project,
174
+ stage: spec.stage,
175
+ agent: agentId,
176
+ persona: spec.persona,
177
+ model: spec.model,
178
+ tokensIn: cost.inputTokens,
179
+ tokensOut: cost.outputTokens,
180
+ cacheReadTokens: cost.cacheReadTokens,
181
+ cacheWriteTokens: cost.cacheWriteTokens,
182
+ usd: cost.totalUsd,
183
+ });
184
+ }
185
+ catch (err) {
186
+ process.stderr.write(`[agent-manager] cost hook threw: ${err instanceof Error ? err.message : String(err)}\n`);
187
+ }
188
+ }
189
+ fireCheckpointRecord(spec, output, cost) {
190
+ if (!this.checkpointHook?.record)
191
+ return;
192
+ try {
193
+ this.checkpointHook.record({
194
+ project: spec.project,
195
+ stage: spec.stage,
196
+ persona: spec.persona,
197
+ model: spec.model,
198
+ prompt: spec.prompt,
199
+ runFamily: spec.runFamily ?? spec.runId,
200
+ output,
201
+ cost,
202
+ });
203
+ }
204
+ catch (err) {
205
+ process.stderr.write(`[agent-manager] checkpoint record threw: ${err instanceof Error ? err.message : String(err)}\n`);
206
+ }
207
+ }
208
+ }
209
+ //# sourceMappingURL=session-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-registry.js","sourceRoot":"","sources":["../../../src/agent/session/session-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EACL,YAAY,EACZ,YAAY,GAEb,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AASrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAsBhD,MAAM,OAAO,YAAa,SAAQ,YAAY;IACzB,SAAS,GAAG,IAAI,GAAG,EAAwD,CAAC;IACrF,QAAQ,GAAyB,IAAI,CAAC;IACtC,cAAc,GAA+B,IAAI,CAAC;IACzC,cAAc,CAAsB;IACpC,GAAG,CAAe;IAClB,cAAc,CAAuC;IACrD,YAAY,CAA2B;IAE1D,YAAY,OAAyB,EAAE;QACrC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,IAAI,qBAAqB,CAAC;QACnE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;QAChC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/E,CAAC;IAED,wEAAwE;IAE/D,EAAE,CACT,KAAQ,EACR,QAA+B;QAE/B,OAAO,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACnC,CAAC;IAEQ,IAAI,CACX,KAAQ,EACR,GAAG,IAAuC;QAE1C,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,wEAAwE;IAExE,WAAW,CAAC,IAA0B,IAAU,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC;IACvE,iBAAiB,CAAC,IAAgC,IAAU,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC,CAAC;IAEzF,wEAAwE;IAExE;;;;;OAKG;IACH,KAAK,CAAC,IAAiB;QACrB,MAAM,WAAW,GAAqB;YACpC,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,cAAc,EAAE,IAAI,CAAC,cAAc;SACpC,CAAC;QACF,MAAM,IAAI,GAAG,IAAI,YAAY,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QACjD,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC;QAExB,qEAAqE;QACrE,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;oBACrC,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK;iBACxC,CAAC,CAAC;gBACH,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;oBACZ,oDAAoD;oBACpD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAC9B,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;oBACtB,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;oBAC7B,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;oBAC9B,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;oBAChC,IAAI,GAAG,CAAC,IAAI;wBAAE,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;oBACpC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;oBACrD,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE;wBACrB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;oBAC5C,CAAC,CAAC,CAAC;oBACH,OAAO,KAAK,CAAC;gBACf,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,6CAA6C,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAClG,CAAC;YACJ,CAAC;QACH,CAAC;QAED,mEAAmE;QACnE,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAEtC,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;IAED,wEAAwE;IAExE,4EAA4E;IAC5E,SAAS,CAAC,OAAe,EAAE,IAAY;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC1C,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAClD,sEAAsE;QACtE,oDAAoD;QACpD,wDAAwD;QACxD,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,eAAe,IAAI,MAAM,EAAE,CAAC,CAAC;QACzE,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,wEAAwE;IAExE,IAAI,CAAC,OAAe;QAClB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC1C,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC;QACzB,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,KAAK,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;YACxD,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC;YACtC,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACjD,IAAI,CAAC;oBACH,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBACrB,MAAM,EAAE,CAAC;gBACX,CAAC;gBAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,wEAAwE;IAExE,QAAQ,CAAC,OAAe;QACtB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC;IACzD,CAAC;IAED,YAAY;QACV,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,wEAAwE;IAE9D,WAAW,CAAC,OAAe,EAAE,IAAkB,EAAE,IAAiB;QAC1E,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,KAAa,EAAE,EAAE;YACnC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,EAAE;YAC/B,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,IAA2D,EAAE,EAAE;YAChF,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC9B,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5C,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YACzE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC,IAAY,EAAE,EAAE;YACvC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;YACnB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC9B,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;gBAC5C,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;YAC5D,CAAC;iBAAM,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,IAAI,KAAK,CAAC,UAAU,KAAK,KAAK,CAAC,SAAS,EAAE,CAAC;gBAC3E,oEAAoE;gBACpE,iEAAiE;gBACjE,2DAA2D;gBAC3D,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAES,YAAY,CAAC,OAAe,EAAE,IAAiB,EAAE,IAAc;QACvE,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO;QAC3B,IAAI,CAAC;YACH,KAAK,IAAI,CAAC,QAAQ,CAAC;gBACjB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,KAAK,EAAE,OAAO;gBACd,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,QAAQ,EAAE,IAAI,CAAC,WAAW;gBAC1B,SAAS,EAAE,IAAI,CAAC,YAAY;gBAC5B,eAAe,EAAE,IAAI,CAAC,eAAe;gBACrC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;gBACvC,GAAG,EAAE,IAAI,CAAC,QAAQ;aACnB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,oCAAoC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CACzF,CAAC;QACJ,CAAC;IACH,CAAC;IAES,oBAAoB,CAAC,IAAiB,EAAE,MAAc,EAAE,IAAc;QAC9E,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM;YAAE,OAAO;QACzC,IAAI,CAAC;YACH,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;gBACzB,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK;gBACvC,MAAM;gBACN,IAAI;aACL,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,4CAA4C,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CACjG,CAAC;QACJ,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * `AgentProcess` — one logical agent.
3
+ *
4
+ * Owns the spawn → resume → resume → done lifecycle for a single agent. Pipes
5
+ * adapter events through to its own EventEmitter surface so consumers (the
6
+ * dashboard's WebSocket layer; cli's await-result loop) wire once and
7
+ * survive multiple resume calls.
8
+ */
9
+ import { EventEmitter } from 'node:events';
10
+ import type { AgentAdapter, AgentAdapterFactory } from './adapter.js';
11
+ import type { AgentActivity, AgentProcessEvents, AgentState, AgentStatus, CostInfo, SpawnConfig } from './types.js';
12
+ export interface AgentProcessOpts {
13
+ /** Override the generated id. Defaults to a UUID v4. */
14
+ id?: string;
15
+ /** Adapter factory — required. */
16
+ adapterFactory: AgentAdapterFactory;
17
+ /** Test seam — clock. Defaults to `Date.now`. */
18
+ now?: () => number;
19
+ /** Test seam — `setTimeout` substitute. */
20
+ setTimeoutImpl?: (fn: () => void, ms: number) => void;
21
+ }
22
+ export declare class AgentProcess extends EventEmitter {
23
+ readonly id: string;
24
+ readonly spec: SpawnConfig;
25
+ readonly sessionId: string;
26
+ protected adapter: AgentAdapter | null;
27
+ protected state: AgentState;
28
+ protected readonly factory: AgentAdapterFactory;
29
+ protected readonly now: () => number;
30
+ protected readonly setTimeoutImpl: (fn: () => void, ms: number) => void;
31
+ /** Parent span covering the agent's whole lifetime — initial run +
32
+ * every resume. Each adapter.run() span becomes a child via
33
+ * AsyncLocalStorage propagation when start()/sendInput run inside
34
+ * `sessionContext`. */
35
+ private sessionSpan;
36
+ private sessionContext;
37
+ private sessionEnded;
38
+ constructor(spec: SpawnConfig, opts: AgentProcessOpts);
39
+ on<K extends keyof AgentProcessEvents>(event: K, listener: AgentProcessEvents[K]): this;
40
+ emit<K extends keyof AgentProcessEvents>(event: K, ...args: Parameters<AgentProcessEvents[K]>): boolean;
41
+ /** Start the process. Spawns the underlying adapter and begins streaming. */
42
+ start(): void;
43
+ /**
44
+ * Send input to a running process — spawns a NEW adapter with `resume:
45
+ * true` and the same `sessionId`, re-wires events through this process.
46
+ */
47
+ sendInput(text: string): void;
48
+ /** Kill the underlying adapter and mark the process as `killed`. */
49
+ kill(signal?: NodeJS.Signals): void;
50
+ /** Read-only snapshot of the process's runtime state. */
51
+ getState(): AgentState;
52
+ get status(): AgentStatus;
53
+ get cost(): CostInfo;
54
+ get activities(): AgentActivity[];
55
+ get output(): string;
56
+ /** Open a `anvil.agent.session` span scoped to this AgentProcess. Idempotent
57
+ * — once opened, lives until kill() / done / error. */
58
+ private openSessionSpan;
59
+ /** End the session span exactly once. Idempotent. */
60
+ private closeSessionSpan;
61
+ /** Run a callback inside the session span's context. Adapter calls made
62
+ * inside this run with active context propagated via AsyncLocalStorage,
63
+ * so every gen_ai.invoke + tool span lands as a child of the session. */
64
+ private runWithSessionContext;
65
+ protected wireAdapter(adapter: AgentAdapter): void;
66
+ }
67
+ export declare function createPendingState(spec: SpawnConfig, id: string): AgentState;
68
+ export declare function emptyCost(): CostInfo;
69
+ export declare function appendOutput(state: AgentState, chunk: string): void;
70
+ export declare function pushActivity(state: AgentState, activity: AgentActivity): void;
71
+ export declare function accumulateCost(prev: CostInfo, next: CostInfo): CostInfo;
72
+ /**
73
+ * Generate a UUID v4. Claude CLI requires a valid v4 for `--session-id`.
74
+ */
75
+ export declare function generateSessionId(): string;
76
+ //# sourceMappingURL=session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/agent/session/session.ts"],"names":[],"mappings":"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"}