@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,397 @@
1
+ /**
2
+ * Anthropic-backed `BaseLlm` for Google ADK (`@google/adk` ≥ 1.1.0).
3
+ *
4
+ * ADK's TypeScript SDK ships only Gemini / Apigee adapters out of the
5
+ * box; Python/Java ADK have native multi-provider support. This file
6
+ * plugs Anthropic into ADK's `LLMRegistry` so
7
+ * `new LlmAgent({ model: 'claude-sonnet-4-6', ... })`
8
+ * works inside an ADK `Runner`.
9
+ *
10
+ * Translation map (ADK / @google/genai shape ↔ Anthropic Messages API):
11
+ *
12
+ * Content[] (role='user'|'model') ↔ messages[] (role='user'|'assistant')
13
+ * Part.text ↔ text content block
14
+ * Part.functionCall {id,name,args} ↔ tool_use {id,name,input}
15
+ * Part.functionResponse {id,name,response} ↔ tool_result {tool_use_id,content}
16
+ * FunctionDeclaration ↔ tools[].input_schema
17
+ *
18
+ * Streaming uses Anthropic's SSE event format (`message_start` →
19
+ * `content_block_start/_delta/_stop` → `message_delta` → `message_stop`).
20
+ * We yield one `LlmResponse` per turn-completed assistant message —
21
+ * ADK's `Runner` then dispatches any tool_use parts to the registered
22
+ * `FunctionTool` instances and re-invokes us with the function
23
+ * responses appended.
24
+ *
25
+ * Registration is idempotent — `registerAnthropicLlm()` no-ops on
26
+ * subsequent calls. Call it once before constructing an `LlmAgent`
27
+ * with a `claude-*` model id.
28
+ */
29
+ import { randomUUID } from 'node:crypto';
30
+ import { BaseLlm, LLMRegistry } from '@google/adk';
31
+ import { UpstreamError } from './upstream-error.js';
32
+ // ───────────────────────────────────────────────────────────────────────
33
+ // AnthropicLlm
34
+ // ───────────────────────────────────────────────────────────────────────
35
+ const ANTHROPIC_API_VERSION = '2023-06-01';
36
+ const DEFAULT_MAX_TOKENS = 4096;
37
+ export class AnthropicLlm extends BaseLlm {
38
+ /**
39
+ * Patterns that route to this Llm via `LLMRegistry.resolve(model)`.
40
+ * Matches `claude-sonnet-4-6`, `claude-opus-4-7`, `claude-haiku-4-5`,
41
+ * `claude-3-5-haiku-latest`, etc. Does NOT match OpenRouter slugs
42
+ * (`anthropic/claude-...`) — those go through `OpenRouterAdapter`.
43
+ *
44
+ * Typed as the (mutable) array shape ADK's `LLMRegistry.register`
45
+ * expects — the registry uses `Array<string | RegExp>` for its key,
46
+ * so a `ReadonlyArray` here is rejected at the static side.
47
+ *
48
+ * NOTE: ADK's registry wraps each pattern with `^...$` at resolve
49
+ * time. Our regex MUST cover the full id (no `^` anchor of our own,
50
+ * and a trailing `.*` so the wrapped regex stays well-formed). The
51
+ * source pattern is `claude-` followed by `.*`.
52
+ */
53
+ static supportedModels = [/claude-.*/];
54
+ constructor(params) {
55
+ super(params);
56
+ }
57
+ async *generateContentAsync(llmRequest, stream, abortSignal) {
58
+ const apiKey = process.env.ANTHROPIC_API_KEY;
59
+ if (!apiKey) {
60
+ throw new Error('ANTHROPIC_API_KEY is not set; cannot reach Anthropic via ADK.');
61
+ }
62
+ const system = extractSystemInstruction(llmRequest);
63
+ const messages = convertContentsToAnthropic(llmRequest.contents);
64
+ const tools = collectTools(llmRequest);
65
+ const body = {
66
+ model: this.model,
67
+ max_tokens: clampInt(llmRequest.config?.maxOutputTokens, DEFAULT_MAX_TOKENS, 1, 64_000),
68
+ messages,
69
+ stream: stream ?? false,
70
+ };
71
+ if (system)
72
+ body.system = system;
73
+ if (tools.length > 0)
74
+ body.tools = tools;
75
+ if (llmRequest.config?.temperature != null)
76
+ body.temperature = llmRequest.config.temperature;
77
+ if (llmRequest.config?.topP != null)
78
+ body.top_p = llmRequest.config.topP;
79
+ const response = await fetch('https://api.anthropic.com/v1/messages', {
80
+ method: 'POST',
81
+ headers: {
82
+ 'Content-Type': 'application/json',
83
+ 'x-api-key': apiKey,
84
+ 'anthropic-version': ANTHROPIC_API_VERSION,
85
+ },
86
+ body: JSON.stringify(body),
87
+ signal: abortSignal,
88
+ });
89
+ if (!response.ok) {
90
+ const errBody = await response.text().catch(() => '');
91
+ throw new UpstreamError(response.status, errBody || '(empty body)', { provider: 'anthropic' });
92
+ }
93
+ if (body.stream && response.body) {
94
+ yield* parseAnthropicSseToLlmResponse(response.body);
95
+ }
96
+ else {
97
+ const json = (await response.json());
98
+ yield convertAnthropicMessageToLlmResponse(json);
99
+ }
100
+ }
101
+ async connect(_llmRequest) {
102
+ throw new Error('AnthropicLlm does not support live (bidi) connections. Use generateContentAsync.');
103
+ }
104
+ }
105
+ // ───────────────────────────────────────────────────────────────────────
106
+ // Idempotent registration
107
+ // ───────────────────────────────────────────────────────────────────────
108
+ let registered = false;
109
+ /**
110
+ * Register `AnthropicLlm` with ADK's `LLMRegistry`. Safe to call
111
+ * multiple times — only the first call registers.
112
+ */
113
+ export function registerAnthropicLlm() {
114
+ if (registered)
115
+ return;
116
+ LLMRegistry.register(AnthropicLlm);
117
+ registered = true;
118
+ }
119
+ // ───────────────────────────────────────────────────────────────────────
120
+ // Translation: ADK Content[] → Anthropic messages[]
121
+ // ───────────────────────────────────────────────────────────────────────
122
+ function extractSystemInstruction(req) {
123
+ const sys = req.config?.systemInstruction;
124
+ if (!sys)
125
+ return '';
126
+ if (typeof sys === 'string')
127
+ return sys;
128
+ if (typeof sys === 'object' && 'parts' in sys && Array.isArray(sys.parts)) {
129
+ return (sys.parts ?? []).map(p => p.text ?? '').join('');
130
+ }
131
+ return '';
132
+ }
133
+ function convertContentsToAnthropic(contents) {
134
+ const out = [];
135
+ for (const c of contents) {
136
+ const role = c.role === 'model' ? 'assistant' : 'user';
137
+ const blocks = (c.parts ?? []).flatMap(convertPart);
138
+ if (blocks.length > 0)
139
+ out.push({ role, content: blocks });
140
+ }
141
+ return out;
142
+ }
143
+ function convertPart(p) {
144
+ if (typeof p.text === 'string' && p.text.length > 0) {
145
+ return [{ type: 'text', text: p.text }];
146
+ }
147
+ if (p.functionCall) {
148
+ return [{
149
+ type: 'tool_use',
150
+ id: p.functionCall.id ?? randomUUID(),
151
+ name: p.functionCall.name ?? '',
152
+ input: (p.functionCall.args ?? {}),
153
+ }];
154
+ }
155
+ if (p.functionResponse) {
156
+ const resp = p.functionResponse.response ?? {};
157
+ const isError = typeof resp === 'object' && resp != null && 'error' in resp;
158
+ return [{
159
+ type: 'tool_result',
160
+ tool_use_id: p.functionResponse.id ?? '',
161
+ content: typeof resp === 'string' ? resp : JSON.stringify(resp),
162
+ ...(isError ? { is_error: true } : {}),
163
+ }];
164
+ }
165
+ // Other Part shapes (inlineData, fileData, executableCode, …) are not
166
+ // supported — Claude's Messages API only handles text + tool blocks.
167
+ return [];
168
+ }
169
+ function collectTools(req) {
170
+ const out = [];
171
+ for (const t of req.config?.tools ?? []) {
172
+ // Skip Gemini-specific tools (googleSearch, codeExecution, …) — they
173
+ // have no Anthropic equivalent and would 400 the upstream.
174
+ if (!('functionDeclarations' in t) || !t.functionDeclarations)
175
+ continue;
176
+ for (const fd of t.functionDeclarations) {
177
+ const schema = fd.parametersJsonSchema
178
+ ?? convertGenaiSchemaToJsonSchema(fd.parameters)
179
+ ?? { type: 'object', properties: {} };
180
+ out.push({
181
+ name: fd.name ?? '',
182
+ description: fd.description ?? '',
183
+ input_schema: schema,
184
+ });
185
+ }
186
+ }
187
+ return out;
188
+ }
189
+ /**
190
+ * Best-effort conversion of `@google/genai` Schema → JSON Schema. ADK
191
+ * normalizes most tool inputs into the OpenAPI Schema dialect; Anthropic
192
+ * accepts standard JSON Schema. The shapes overlap heavily — we strip
193
+ * the Gemini-only enum cases and downcase the type field.
194
+ */
195
+ function convertGenaiSchemaToJsonSchema(schema) {
196
+ if (!schema || typeof schema !== 'object')
197
+ return undefined;
198
+ const s = schema;
199
+ const out = {};
200
+ for (const [k, v] of Object.entries(s)) {
201
+ if (k === 'type' && typeof v === 'string') {
202
+ out.type = v.toLowerCase();
203
+ }
204
+ else if (k === 'properties' && v && typeof v === 'object') {
205
+ const props = {};
206
+ for (const [pk, pv] of Object.entries(v)) {
207
+ props[pk] = convertGenaiSchemaToJsonSchema(pv) ?? pv;
208
+ }
209
+ out.properties = props;
210
+ }
211
+ else if (k === 'items') {
212
+ out.items = convertGenaiSchemaToJsonSchema(v) ?? v;
213
+ }
214
+ else {
215
+ out[k] = v;
216
+ }
217
+ }
218
+ return out;
219
+ }
220
+ // ───────────────────────────────────────────────────────────────────────
221
+ // Translation: Anthropic response → ADK LlmResponse
222
+ // ───────────────────────────────────────────────────────────────────────
223
+ function convertAnthropicMessageToLlmResponse(msg) {
224
+ const parts = msg.content.map(toGenaiPart).filter((p) => p !== null);
225
+ return {
226
+ content: { role: 'model', parts },
227
+ finishReason: mapStopReason(msg.stop_reason),
228
+ usageMetadata: {
229
+ promptTokenCount: msg.usage.input_tokens,
230
+ candidatesTokenCount: msg.usage.output_tokens,
231
+ totalTokenCount: msg.usage.input_tokens + msg.usage.output_tokens,
232
+ cachedContentTokenCount: msg.usage.cache_read_input_tokens,
233
+ },
234
+ turnComplete: true,
235
+ };
236
+ }
237
+ function toGenaiPart(block) {
238
+ if (block.type === 'text') {
239
+ return { text: block.text };
240
+ }
241
+ if (block.type === 'tool_use') {
242
+ return {
243
+ functionCall: {
244
+ id: block.id,
245
+ name: block.name,
246
+ args: block.input,
247
+ },
248
+ };
249
+ }
250
+ // tool_result blocks would only appear in user messages; we never
251
+ // generate them from the assistant side.
252
+ return null;
253
+ }
254
+ function mapStopReason(reason) {
255
+ // ADK uses Gemini's FinishReason enum strings ("STOP", "MAX_TOKENS",
256
+ // …). We approximate so downstream telemetry sees consistent values.
257
+ switch (reason) {
258
+ case 'end_turn':
259
+ case 'stop_sequence':
260
+ return 'STOP';
261
+ case 'max_tokens':
262
+ return 'MAX_TOKENS';
263
+ case 'tool_use':
264
+ // No Gemini equivalent — closest is STOP since Runner stops here
265
+ // to dispatch the tool. Keep the original for clarity.
266
+ return 'STOP';
267
+ }
268
+ }
269
+ async function* parseAnthropicSseToLlmResponse(body) {
270
+ const reader = body.getReader();
271
+ const decoder = new TextDecoder();
272
+ let buffer = '';
273
+ let usage = { input_tokens: 0, output_tokens: 0 };
274
+ let stopReason = 'end_turn';
275
+ const blocks = [];
276
+ // For each `index`, accumulate the raw payload so we can yield a
277
+ // single LlmResponse at end-of-stream. Anthropic streams partial
278
+ // arguments for tool_use as `input_json_delta` chunks; we collect them
279
+ // and parse once on `content_block_stop`.
280
+ const partialJson = new Map();
281
+ for (;;) {
282
+ const { value, done } = await reader.read();
283
+ if (done)
284
+ break;
285
+ buffer += decoder.decode(value, { stream: true });
286
+ let idx;
287
+ while ((idx = buffer.indexOf('\n\n')) !== -1) {
288
+ const frame = buffer.slice(0, idx);
289
+ buffer = buffer.slice(idx + 2);
290
+ const evt = parseSseFrame(frame);
291
+ if (!evt)
292
+ continue;
293
+ switch (evt.event) {
294
+ case 'message_start': {
295
+ const m = (evt.data.message ?? {});
296
+ if (m.usage)
297
+ usage = { ...usage, ...m.usage };
298
+ break;
299
+ }
300
+ case 'content_block_start': {
301
+ const i = evt.data.index;
302
+ const block = evt.data.content_block;
303
+ blocks[i] = block;
304
+ if (block.type === 'tool_use')
305
+ partialJson.set(i, '');
306
+ break;
307
+ }
308
+ case 'content_block_delta': {
309
+ const i = evt.data.index;
310
+ const delta = evt.data.delta;
311
+ if (delta.type === 'text_delta' && delta.text) {
312
+ const b = blocks[i];
313
+ if (b && b.type === 'text')
314
+ b.text += delta.text;
315
+ }
316
+ else if (delta.type === 'input_json_delta' && delta.partial_json) {
317
+ partialJson.set(i, (partialJson.get(i) ?? '') + delta.partial_json);
318
+ }
319
+ break;
320
+ }
321
+ case 'content_block_stop': {
322
+ const i = evt.data.index;
323
+ const b = blocks[i];
324
+ const json = partialJson.get(i);
325
+ if (b && b.type === 'tool_use' && json !== undefined) {
326
+ try {
327
+ b.input = json.length > 0 ? JSON.parse(json) : {};
328
+ }
329
+ catch {
330
+ b.input = { _raw: json };
331
+ }
332
+ }
333
+ break;
334
+ }
335
+ case 'message_delta': {
336
+ const d = evt.data;
337
+ if (d.delta?.stop_reason)
338
+ stopReason = d.delta.stop_reason;
339
+ if (d.usage)
340
+ usage = { ...usage, ...d.usage };
341
+ break;
342
+ }
343
+ case 'message_stop':
344
+ // Final frame — yield once with the aggregated content.
345
+ break;
346
+ case 'error': {
347
+ const err = evt.data.error;
348
+ // Anthropic mid-stream `overloaded_error` / `rate_limit_error`
349
+ // / `api_error` map to retryable UpstreamErrors so the
350
+ // dashboard can chain-fallback to another provider.
351
+ const type = err?.type ?? 'unknown';
352
+ const message = err?.message ?? '';
353
+ const retryable = /overloaded|rate.?limit|api_error|insufficient/i.test(`${type} ${message}`);
354
+ throw new UpstreamError(retryable ? 503 : 500, `${type}: ${message}`, { provider: 'anthropic', retryable });
355
+ }
356
+ }
357
+ }
358
+ }
359
+ yield convertAnthropicMessageToLlmResponse({
360
+ id: '',
361
+ type: 'message',
362
+ role: 'assistant',
363
+ model: '',
364
+ content: blocks.filter((b) => b !== undefined),
365
+ stop_reason: stopReason,
366
+ usage,
367
+ });
368
+ }
369
+ function parseSseFrame(frame) {
370
+ let event = '';
371
+ let dataLine = '';
372
+ for (const line of frame.split('\n')) {
373
+ if (line.startsWith('event:')) {
374
+ event = line.slice(6).trim();
375
+ }
376
+ else if (line.startsWith('data:')) {
377
+ dataLine += line.slice(5).trim();
378
+ }
379
+ }
380
+ if (!event || !dataLine)
381
+ return null;
382
+ try {
383
+ return { event, data: JSON.parse(dataLine) };
384
+ }
385
+ catch {
386
+ return null;
387
+ }
388
+ }
389
+ // ───────────────────────────────────────────────────────────────────────
390
+ // Misc helpers
391
+ // ───────────────────────────────────────────────────────────────────────
392
+ function clampInt(v, fallback, min, max) {
393
+ if (typeof v !== 'number' || !Number.isFinite(v))
394
+ return fallback;
395
+ return Math.max(min, Math.min(max, Math.trunc(v)));
396
+ }
397
+ //# sourceMappingURL=adk-anthropic-llm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adk-anthropic-llm.js","sourceRoot":"","sources":["../src/adk-anthropic-llm.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * `@esankhan3/anvil-agent-core/agent` — barrel exports for the agent-lifecycle layer.
3
+ *
4
+ * The pre-existing single-shot `AgentManager` class and its supporting
5
+ * subprocess machinery (spawn, stream-parser, output-buffer, restart-policy,
6
+ * timeout-guard, stage-validator) lived alongside the new `AgentSession` /
7
+ * `AgentSessionRegistry` surface for one release. Both had zero production
8
+ * consumers — the cli-style runner was a dead extract leftover. The post-
9
+ * Phase 4/5 cleanup (Deferred #1) deletes them.
10
+ *
11
+ * The canonical agent-lifecycle surface lives under `./session/`.
12
+ */
13
+ export * from './session/index.js';
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/agent/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * `@esankhan3/anvil-agent-core/agent` — barrel exports for the agent-lifecycle layer.
3
+ *
4
+ * The pre-existing single-shot `AgentManager` class and its supporting
5
+ * subprocess machinery (spawn, stream-parser, output-buffer, restart-policy,
6
+ * timeout-guard, stage-validator) lived alongside the new `AgentSession` /
7
+ * `AgentSessionRegistry` surface for one release. Both had zero production
8
+ * consumers — the cli-style runner was a dead extract leftover. The post-
9
+ * Phase 4/5 cleanup (Deferred #1) deletes them.
10
+ *
11
+ * The canonical agent-lifecycle surface lives under `./session/`.
12
+ */
13
+ export * from './session/index.js';
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/agent/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Phase 5 — verify LanguageModelBridge constructs a BuiltinToolExecutor
3
+ * for non-Claude providers from request.allowedTools, and threads the
4
+ * model's context_window through ModelAdapterConfig.
5
+ *
6
+ * Stubs a minimal ModelAdapter that captures the config it receives so
7
+ * we can assert what the bridge plumbed.
8
+ */
9
+ export {};
10
+ //# sourceMappingURL=bridge-tool-executor.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridge-tool-executor.test.d.ts","sourceRoot":"","sources":["../../../../src/agent/session/__tests__/bridge-tool-executor.test.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
@@ -0,0 +1,152 @@
1
+ /**
2
+ * Phase 5 — verify LanguageModelBridge constructs a BuiltinToolExecutor
3
+ * for non-Claude providers from request.allowedTools, and threads the
4
+ * model's context_window through ModelAdapterConfig.
5
+ *
6
+ * Stubs a minimal ModelAdapter that captures the config it receives so
7
+ * we can assert what the bridge plumbed.
8
+ */
9
+ import { describe, it } from 'node:test';
10
+ import assert from 'node:assert/strict';
11
+ import { Writable } from 'node:stream';
12
+ import { mkdtempSync, rmSync, writeFileSync, mkdirSync } from 'node:fs';
13
+ import { tmpdir } from 'node:os';
14
+ import { join } from 'node:path';
15
+ import { LanguageModelBridge, _resetBridgeRegistryCache } from '../language-model-bridge.js';
16
+ class CapturingAdapter {
17
+ provider = 'ollama';
18
+ capabilities = {
19
+ tier: 'agentic',
20
+ streaming: true,
21
+ toolUse: true,
22
+ fileSystem: true,
23
+ shellExecution: true,
24
+ sessionResume: false,
25
+ cache: 'none',
26
+ structuredOutput: 'best-effort',
27
+ maxOutputTokens: false,
28
+ };
29
+ lastConfig = null;
30
+ supportsModel() { return true; }
31
+ getModelPricing() { return [0, 0]; }
32
+ async checkAvailability() { return { available: true }; }
33
+ async run(config) {
34
+ this.lastConfig = config;
35
+ return {
36
+ output: '', inputTokens: 0, outputTokens: 0, costUsd: 0,
37
+ durationMs: 0, provider: 'ollama', model: config.model,
38
+ };
39
+ }
40
+ }
41
+ class ClaudeLikeAdapter {
42
+ provider = 'claude';
43
+ capabilities = {
44
+ tier: 'agentic',
45
+ streaming: true,
46
+ toolUse: true,
47
+ fileSystem: true,
48
+ shellExecution: true,
49
+ sessionResume: true,
50
+ cache: 'explicit',
51
+ structuredOutput: 'tool-shim',
52
+ maxOutputTokens: true,
53
+ };
54
+ lastConfig = null;
55
+ supportsModel() { return true; }
56
+ getModelPricing() { return [3, 15]; }
57
+ async checkAvailability() { return { available: true }; }
58
+ async run(config) {
59
+ this.lastConfig = config;
60
+ return {
61
+ output: '', inputTokens: 0, outputTokens: 0, costUsd: 0,
62
+ durationMs: 0, provider: 'claude', model: config.model,
63
+ };
64
+ }
65
+ }
66
+ function devNull() {
67
+ return new Writable({ write: (_c, _e, cb) => cb() });
68
+ }
69
+ function makeRequest(overrides) {
70
+ return {
71
+ prompt: 'do thing',
72
+ model: 'qwen3:14b',
73
+ sessionId: 'sess-1',
74
+ cwd: '/tmp',
75
+ stage: 'build',
76
+ ...overrides,
77
+ };
78
+ }
79
+ describe('LanguageModelBridge — tool executor wiring', () => {
80
+ it('attaches a BuiltinToolExecutor for non-Claude providers', async () => {
81
+ const adapter = new CapturingAdapter();
82
+ const req = makeRequest({ allowedTools: ['read_file', 'bash'] });
83
+ const bridge = new LanguageModelBridge(req, adapter, 'ollama');
84
+ bridge.start();
85
+ await new Promise((r) => setTimeout(r, 30));
86
+ assert.ok(adapter.lastConfig?.toolExecutor, 'tool executor must be present');
87
+ const schemas = adapter.lastConfig.toolExecutor.listSchemas();
88
+ const names = schemas.map((s) => s.name).sort();
89
+ assert.deepEqual(names, ['bash', 'read_file']);
90
+ });
91
+ it('does NOT attach a tool executor for Claude (it ships its own)', async () => {
92
+ const adapter = new ClaudeLikeAdapter();
93
+ const req = makeRequest({ allowedTools: ['bash'] });
94
+ const bridge = new LanguageModelBridge(req, adapter, 'claude');
95
+ bridge.start();
96
+ await new Promise((r) => setTimeout(r, 30));
97
+ assert.equal(adapter.lastConfig?.toolExecutor, undefined);
98
+ });
99
+ it('falls back to read-only tools when allowedTools is missing', async () => {
100
+ const adapter = new CapturingAdapter();
101
+ const req = makeRequest({});
102
+ const bridge = new LanguageModelBridge(req, adapter, 'ollama');
103
+ bridge.start();
104
+ await new Promise((r) => setTimeout(r, 30));
105
+ const names = adapter.lastConfig?.toolExecutor?.listSchemas().map((s) => s.name).sort();
106
+ assert.deepEqual(names, ['glob', 'grep', 'list', 'read_file']);
107
+ });
108
+ it('threads exclusiveSlot from request to ModelAdapterConfig', async () => {
109
+ const adapter = new CapturingAdapter();
110
+ const req = makeRequest({ exclusiveSlot: true });
111
+ const bridge = new LanguageModelBridge(req, adapter, 'ollama');
112
+ bridge.start();
113
+ await new Promise((r) => setTimeout(r, 30));
114
+ assert.equal(adapter.lastConfig?.exclusiveSlot, true);
115
+ });
116
+ it('threads context_window from the model registry', async () => {
117
+ // Stand up a tmp ANVIL_HOME with a known model registry.
118
+ const home = mkdtempSync(join(tmpdir(), 'anvil-bridge-test-'));
119
+ mkdirSync(home, { recursive: true });
120
+ writeFileSync(join(home, 'models.yaml'), [
121
+ 'models:',
122
+ ' - id: qwen3:14b',
123
+ ' provider: ollama',
124
+ ' tier: local',
125
+ ' capabilities: [code, reasoning]',
126
+ ' complexity_max: M',
127
+ ' vram_gb: 9',
128
+ ' exclusive_slot: true',
129
+ ' context_window: 12345',
130
+ ].join('\n'));
131
+ const prevHome = process.env.ANVIL_HOME;
132
+ process.env.ANVIL_HOME = home;
133
+ _resetBridgeRegistryCache();
134
+ try {
135
+ const adapter = new CapturingAdapter();
136
+ const req = makeRequest({});
137
+ const bridge = new LanguageModelBridge(req, adapter, 'ollama');
138
+ bridge.start();
139
+ await new Promise((r) => setTimeout(r, 30));
140
+ assert.equal(adapter.lastConfig?.contextWindow, 12345);
141
+ }
142
+ finally {
143
+ if (prevHome === undefined)
144
+ delete process.env.ANVIL_HOME;
145
+ else
146
+ process.env.ANVIL_HOME = prevHome;
147
+ rmSync(home, { recursive: true, force: true });
148
+ _resetBridgeRegistryCache();
149
+ }
150
+ });
151
+ });
152
+ //# sourceMappingURL=bridge-tool-executor.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridge-tool-executor.test.js","sourceRoot":"","sources":["../../../../src/agent/session/__tests__/bridge-tool-executor.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Phase 2 of AGENT-PROCESS-CONSOLIDATION — verify `collectTrajectory`
3
+ * aggregates an Inspect-AI-shaped trajectory from `AgentProcess` events.
4
+ *
5
+ * Six cases per the plan:
6
+ * 1. Happy path — content + result → trajectory with finalAnswer +
7
+ * finishReason 'end'.
8
+ * 2. Tool-use loop — activity tool_use → toolCalls entry + tool message.
9
+ * 3. Usage aggregation — result event with cost → trajectory.usage maps.
10
+ * 4. finishReason mapping — non-zero exit → 'error'; abort signal →
11
+ * 'error' with error 'aborted'.
12
+ * 5. Timeout — adapter never emits → finishReason 'error' with
13
+ * error 'timeout'.
14
+ * 6. Listener-ordering — content emitted on first tick survives (regression
15
+ * against the AgentManager next-tick race).
16
+ */
17
+ export {};
18
+ //# sourceMappingURL=collect-trajectory.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collect-trajectory.test.d.ts","sourceRoot":"","sources":["../../../../src/agent/session/__tests__/collect-trajectory.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG"}