@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,193 @@
1
+ /**
2
+ * `collectTrajectory` — eval-facing entry point. Spawns an `AgentProcess`,
3
+ * listens to its 5-event surface, and aggregates an Inspect-AI-shaped
4
+ * `AgentTrajectory`.
5
+ *
6
+ * Replaces the headless `runAgent` entry. Same trajectory contract, but
7
+ * routed through the production execution path (`AgentProcess` +
8
+ * `defaultAdapterFactory`) so eval runs exercise the same code the
9
+ * dashboard and cli do — including skills + MCP discovery via
10
+ * `workspace.rootDir`.
11
+ *
12
+ * Per AGENT-PROCESS-CONSOLIDATION-ADR §C1.
13
+ */
14
+ import { randomBytes } from 'node:crypto';
15
+ import { AgentProcess } from './session.js';
16
+ import { defaultAdapterFactory } from './default-adapter-factory.js';
17
+ const DEFAULT_TIMEOUT_MS = 600_000;
18
+ const ANSWER_PLACEHOLDER = '';
19
+ /**
20
+ * Run a task to completion and return its Inspect-AI-shaped trajectory.
21
+ *
22
+ * Listener-first ordering: every event handler is attached BEFORE
23
+ * `proc.start()` so the first `content` chunk doesn't slip through.
24
+ */
25
+ export async function collectTrajectory(task, workspace, opts = {}) {
26
+ const startedAt = Date.now();
27
+ const spec = taskToSpawnConfig(task, workspace);
28
+ const processOpts = {
29
+ adapterFactory: defaultAdapterFactory,
30
+ ...opts.processOpts,
31
+ };
32
+ const proc = new AgentProcess(spec, processOpts);
33
+ const messages = [];
34
+ if (task.systemPrompt) {
35
+ messages.push({ role: 'system', content: task.systemPrompt });
36
+ }
37
+ messages.push({ role: 'user', content: task.prompt });
38
+ const toolCalls = [];
39
+ const toolCallByName = new Map();
40
+ let assistantBuffer = '';
41
+ let finalAnswer = ANSWER_PLACEHOLDER;
42
+ let cost = null;
43
+ let resolvedSessionId = spec.runId ?? proc.id;
44
+ let errorText = '';
45
+ const flushAssistantBuffer = () => {
46
+ if (!assistantBuffer)
47
+ return;
48
+ messages.push({ role: 'assistant', content: assistantBuffer });
49
+ assistantBuffer = '';
50
+ };
51
+ return new Promise((resolve) => {
52
+ let settled = false;
53
+ let timeoutHandle = null;
54
+ const finish = (finishReason, errorOverride) => {
55
+ if (settled)
56
+ return;
57
+ settled = true;
58
+ if (timeoutHandle)
59
+ clearTimeout(timeoutHandle);
60
+ flushAssistantBuffer();
61
+ const durationMs = Date.now() - startedAt;
62
+ const usage = cost
63
+ ? {
64
+ inputTokens: cost.inputTokens,
65
+ outputTokens: cost.outputTokens,
66
+ ...(cost.cacheReadTokens
67
+ ? { cacheReadTokens: cost.cacheReadTokens }
68
+ : {}),
69
+ ...(cost.cacheWriteTokens
70
+ ? { cacheWriteTokens: cost.cacheWriteTokens }
71
+ : {}),
72
+ }
73
+ : { inputTokens: 0, outputTokens: 0 };
74
+ const finalErrorText = errorOverride ?? errorText.trim();
75
+ const trajectory = {
76
+ messages,
77
+ toolCalls,
78
+ model: spec.model,
79
+ usage,
80
+ costUsd: cost?.totalUsd ?? 0,
81
+ finalAnswer: finalAnswer || assistantBuffer,
82
+ finishReason,
83
+ durationMs,
84
+ ...(finishReason === 'error' && finalErrorText
85
+ ? { error: finalErrorText }
86
+ : {}),
87
+ };
88
+ resolve(trajectory);
89
+ };
90
+ // ── Listener wiring (before start) ─────────────────────────────────
91
+ proc.on('content', (chunk) => {
92
+ assistantBuffer += chunk;
93
+ });
94
+ proc.on('activity', (activity) => {
95
+ if (activity.kind !== 'tool_use' || !activity.tool)
96
+ return;
97
+ // Flush any accumulated assistant text BEFORE the tool message so
98
+ // ordering reflects the run.
99
+ flushAssistantBuffer();
100
+ let parsedArgs = {};
101
+ if (typeof activity.content === 'string' && activity.content.trim()) {
102
+ try {
103
+ parsedArgs = JSON.parse(activity.content);
104
+ }
105
+ catch {
106
+ parsedArgs = { _raw: activity.content };
107
+ }
108
+ }
109
+ const call = {
110
+ callId: activity.id,
111
+ name: activity.tool,
112
+ arguments: parsedArgs,
113
+ durationMs: 0,
114
+ };
115
+ toolCalls.push(call);
116
+ toolCallByName.set(activity.id, call);
117
+ messages.push({
118
+ role: 'tool',
119
+ content: '',
120
+ name: activity.tool,
121
+ toolCallId: activity.id,
122
+ });
123
+ });
124
+ proc.on('result', (data) => {
125
+ cost = data.cost;
126
+ finalAnswer = data.result || assistantBuffer;
127
+ resolvedSessionId = data.sessionId;
128
+ // Don't finish here — wait for `exit` so adapters that emit result
129
+ // before exit (the common case) and after exit (sub-second races)
130
+ // both settle deterministically on the exit event.
131
+ });
132
+ proc.on('error-output', (text) => {
133
+ errorText += text;
134
+ });
135
+ proc.on('exit', (code) => {
136
+ // Surface the resolvedSessionId on the last assistant message via a
137
+ // suffix is unnecessary; the trajectory shape doesn't carry session
138
+ // id today. Reserved here so future schema bumps can grab it.
139
+ void resolvedSessionId;
140
+ if (code === null) {
141
+ finish('error', 'killed');
142
+ }
143
+ else if (code !== 0) {
144
+ finish('error');
145
+ }
146
+ else {
147
+ finish(cost ? 'end' : 'error', cost ? undefined : errorText.trim() || 'no result');
148
+ }
149
+ });
150
+ // ── Abort + timeout ────────────────────────────────────────────────
151
+ if (opts.signal) {
152
+ if (opts.signal.aborted) {
153
+ proc.kill();
154
+ finish('error', 'aborted');
155
+ return;
156
+ }
157
+ opts.signal.addEventListener('abort', () => {
158
+ proc.kill();
159
+ finish('error', 'aborted');
160
+ }, { once: true });
161
+ }
162
+ const timeoutMs = opts.timeoutMs ?? DEFAULT_TIMEOUT_MS;
163
+ timeoutHandle = setTimeout(() => {
164
+ proc.kill();
165
+ finish('error', 'timeout');
166
+ }, timeoutMs);
167
+ // ── Start ──────────────────────────────────────────────────────────
168
+ proc.start();
169
+ });
170
+ }
171
+ /**
172
+ * Map an `AgentTask` + `WorkspaceConfig` to a `SpawnConfig`. Internal
173
+ * helper — eval consumers stay on the `(task, workspace)` shape.
174
+ */
175
+ function taskToSpawnConfig(task, workspace) {
176
+ const runId = task.taskId ?? `eval-${randomBytes(4).toString('hex')}`;
177
+ return {
178
+ name: task.taskId ?? 'eval-task',
179
+ persona: 'eval',
180
+ project: 'eval',
181
+ stage: 'eval',
182
+ prompt: task.prompt,
183
+ model: task.model,
184
+ cwd: workspace.rootDir,
185
+ workspaceDir: workspace.rootDir,
186
+ projectPrompt: task.systemPrompt,
187
+ allowedTools: task.allowedTools,
188
+ maxOutputTokens: task.maxTokens,
189
+ runId,
190
+ runFamily: runId,
191
+ };
192
+ }
193
+ //# sourceMappingURL=collect-trajectory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collect-trajectory.js","sourceRoot":"","sources":["../../../src/agent/session/collect-trajectory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Default `AgentAdapterFactory` for `AgentManager`.
3
+ *
4
+ * Resolves a `SpawnConfig`'s model field to an `@esankhan3/anvil-agent-core`
5
+ * `ModelAdapter` via `ProviderRegistry`, then wraps it in a
6
+ * `LanguageModelBridge` so `AgentProcess` can drive it through the 5-event
7
+ * `AgentAdapter` surface.
8
+ *
9
+ * Provider resolution heuristic:
10
+ * - `gemini-*` prefers the Gemini CLI when the binary is on PATH; if not,
11
+ * falls back to the HTTP API adapter (`gemini`).
12
+ * - Model ids containing `/` route to OpenRouter.
13
+ * - Otherwise we delegate to `ProviderRegistry.resolveFromModelId` which
14
+ * covers Claude / OpenAI / Gemini-API.
15
+ */
16
+ import type { ProviderName } from '../../types.js';
17
+ import type { AdapterRequest, AgentAdapter, AgentAdapterFactory } from './adapter.js';
18
+ export declare function resolveProvider(modelId: string): ProviderName;
19
+ /**
20
+ * Default factory used by `AgentManager` when no `adapterFactory` is
21
+ * passed to its constructor. Resolves a `LanguageModelBridge` for the
22
+ * given request via `ProviderRegistry`.
23
+ *
24
+ * Returned adapter is always a `LanguageModelBridge` — `AgentProcess`
25
+ * sees the 5-event `AgentAdapter` surface; agent-core handles the actual
26
+ * call via the registered `ModelAdapter`.
27
+ */
28
+ export declare function defaultAdapterFactory(request: AdapterRequest): AgentAdapter;
29
+ /**
30
+ * When `request.workspaceDir` is set, enrich the request with workspace-
31
+ * rooted artefacts:
32
+ * - Non-Claude paths: compose skill context (system prompt + allowed-
33
+ * tools narrowing) into the request's `projectPrompt` / `allowedTools`.
34
+ * - Claude path: resolve the canonical `mcp.json` path so the adapter
35
+ * can pass `--mcp-config <path>` to claude-cli.
36
+ *
37
+ * Skills are NOT injected into the system prompt for the Claude path
38
+ * because claude-cli auto-loads `.claude/skills/` itself; double-loading
39
+ * would duplicate the bullet list. Per AGENT-PROCESS-CONSOLIDATION-ADR
40
+ * §C5.
41
+ *
42
+ * Pure: returns a new `AdapterRequest` (or the original when no enrichment
43
+ * applies).
44
+ */
45
+ export declare function enrichRequestWithWorkspace(request: AdapterRequest, provider: ProviderName): AdapterRequest;
46
+ /** Type alias matching `AgentAdapterFactory` — exported for explicit typing. */
47
+ export declare const defaultAdapterFactoryFn: AgentAdapterFactory;
48
+ //# sourceMappingURL=default-adapter-factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-adapter-factory.d.ts","sourceRoot":"","sources":["../../../src/agent/session/default-adapter-factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAMH,OAAO,KAAK,EAAgB,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACZ,mBAAmB,EACpB,MAAM,cAAc,CAAC;AAOtB,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,CA0D7D;AAmCD;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,cAAc,GAAG,YAAY,CAc3E;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,YAAY,GACrB,cAAc,CAgChB;AAoCD,gFAAgF;AAChF,eAAO,MAAM,uBAAuB,EAAE,mBAA2C,CAAC"}
@@ -0,0 +1,227 @@
1
+ /**
2
+ * Default `AgentAdapterFactory` for `AgentManager`.
3
+ *
4
+ * Resolves a `SpawnConfig`'s model field to an `@esankhan3/anvil-agent-core`
5
+ * `ModelAdapter` via `ProviderRegistry`, then wraps it in a
6
+ * `LanguageModelBridge` so `AgentProcess` can drive it through the 5-event
7
+ * `AgentAdapter` surface.
8
+ *
9
+ * Provider resolution heuristic:
10
+ * - `gemini-*` prefers the Gemini CLI when the binary is on PATH; if not,
11
+ * falls back to the HTTP API adapter (`gemini`).
12
+ * - Model ids containing `/` route to OpenRouter.
13
+ * - Otherwise we delegate to `ProviderRegistry.resolveFromModelId` which
14
+ * covers Claude / OpenAI / Gemini-API.
15
+ */
16
+ import { execSync } from 'node:child_process';
17
+ import { trace } from '@opentelemetry/api';
18
+ import { ProviderRegistry } from '../../registry.js';
19
+ import { loadModelRegistry } from '../../router/model-registry.js';
20
+ import { LanguageModelBridge } from './language-model-bridge.js';
21
+ import { composeSkillContext } from '../../skills/index.js';
22
+ import { findMcpConfigPath, loadMcpServers } from '../../mcp/index.js';
23
+ // ── Provider resolution ──────────────────────────────────────────────────
24
+ export function resolveProvider(modelId) {
25
+ // User registry wins over heuristics. If models.yaml declares
26
+ // `provider: gemini` for `gemini-2.5-flash`, honor that — don't
27
+ // silently route to gemini-cli just because the binary is on PATH.
28
+ const declared = lookupDeclaredProvider(modelId);
29
+ if (declared)
30
+ return declared;
31
+ const id = modelId.toLowerCase();
32
+ // Ollama: explicit `ollama:` prefix or `:tag` suffix common to local models
33
+ // (e.g. `qwen2.5-coder:7b`, `llama3.1:8b`).
34
+ if (id.startsWith('ollama:'))
35
+ return 'ollama';
36
+ // Gemini: route to the CLI when the binary is on PATH (matches user
37
+ // intent of running `gemini` interactively). Otherwise fall through to
38
+ // the registry's claude default — the bare HTTP `gemini` adapter is
39
+ // `tier: function-calling` (no agentic loop) so callers must opt in
40
+ // explicitly via `adk:gemini-…` for agentic Gemini, or use
41
+ // `single-shot.runGemini` for the CLI single-shot path.
42
+ if (id.startsWith('gemini-')) {
43
+ if (geminiCliAvailable())
44
+ return 'gemini-cli';
45
+ // No silent fallback to non-agentic gemini HTTP — fall through.
46
+ }
47
+ // OpenAI patterns
48
+ if (id.startsWith('gpt-') ||
49
+ id.startsWith('o1') ||
50
+ id.startsWith('o3') ||
51
+ id.startsWith('o4') ||
52
+ id.startsWith('chatgpt-')) {
53
+ return 'openai';
54
+ }
55
+ // OpenCode Go: registry uses `opencode/<model>` to disambiguate from
56
+ // OpenRouter's slug format. Must come BEFORE the generic slash-check.
57
+ if (id.startsWith('opencode/'))
58
+ return 'opencode';
59
+ // Google ADK: explicit `adk:<model>` prefix (e.g. `adk:claude-sonnet-4-6`,
60
+ // `adk:gemini-2.5-flash`). The adapter strips the prefix before
61
+ // handing the bare model id to ADK's LLMRegistry.
62
+ if (id.startsWith('adk:'))
63
+ return 'adk';
64
+ // OpenRouter uses `org/model` format
65
+ if (id.includes('/')) {
66
+ return 'openrouter';
67
+ }
68
+ // Local Ollama models often look like `<family>:<size>` (no slash, with tag).
69
+ // Route through Ollama only when the daemon is reachable; otherwise fall
70
+ // back to Claude so misconfigured runs don't break.
71
+ if (/^[a-z0-9_.-]+:[a-z0-9_.-]+$/.test(id) && id !== 'claude' && !id.startsWith('claude-')) {
72
+ return 'ollama';
73
+ }
74
+ // Claude (default)
75
+ return 'claude';
76
+ }
77
+ // Cache the parsed user registry so repeated factory calls don't re-read +
78
+ // re-parse models.yaml from disk. Set ANVIL_MODELS_RELOAD=1 in the env to
79
+ // bypass the cache (useful when iterating on the yaml during a long-lived
80
+ // dashboard session).
81
+ let modelRegistryCache = null;
82
+ function lookupDeclaredProvider(modelId) {
83
+ if (process.env.ANVIL_MODELS_RELOAD === '1')
84
+ modelRegistryCache = null;
85
+ if (modelRegistryCache === null) {
86
+ try {
87
+ modelRegistryCache = loadModelRegistry();
88
+ }
89
+ catch {
90
+ modelRegistryCache = { models: [], walker: { liveness_ttl_ms: 30000, max_attempts: 5 } };
91
+ }
92
+ }
93
+ const match = modelRegistryCache.models.find((m) => m.id === modelId);
94
+ return match?.provider ?? null;
95
+ }
96
+ // Cache the CLI probe so repeated factory calls don't fork a shell each time.
97
+ let geminiCliCached = null;
98
+ function geminiCliAvailable() {
99
+ if (geminiCliCached !== null)
100
+ return geminiCliCached;
101
+ try {
102
+ execSync('which gemini', { stdio: 'pipe', timeout: 2000 });
103
+ geminiCliCached = true;
104
+ }
105
+ catch {
106
+ geminiCliCached = false;
107
+ }
108
+ return geminiCliCached;
109
+ }
110
+ // ── Factory ──────────────────────────────────────────────────────────────
111
+ /**
112
+ * Default factory used by `AgentManager` when no `adapterFactory` is
113
+ * passed to its constructor. Resolves a `LanguageModelBridge` for the
114
+ * given request via `ProviderRegistry`.
115
+ *
116
+ * Returned adapter is always a `LanguageModelBridge` — `AgentProcess`
117
+ * sees the 5-event `AgentAdapter` surface; agent-core handles the actual
118
+ * call via the registered `ModelAdapter`.
119
+ */
120
+ export function defaultAdapterFactory(request) {
121
+ const registry = ProviderRegistry.getInstance();
122
+ const provider = resolveProvider(request.model);
123
+ const resolved = resolveAdapterOrFallback(registry, provider);
124
+ // Default workspaceDir to cwd when the spawn caller didn't set one. This
125
+ // makes skills + MCP first-class for every spawn site — dashboard, cli,
126
+ // eval — without each caller having to opt in. Per AGENT-PROCESS-
127
+ // CONSOLIDATION-ADR §C4 + Phase 4. Callers can explicitly pass
128
+ // `workspaceDir: ''` (empty string is falsy) to opt out, e.g. from tests.
129
+ const requestWithDefaults = request.workspaceDir === undefined
130
+ ? { ...request, workspaceDir: request.cwd }
131
+ : request;
132
+ const enriched = enrichRequestWithWorkspace(requestWithDefaults, resolved.provider);
133
+ return new LanguageModelBridge(enriched, resolved.adapter, resolved.provider);
134
+ }
135
+ /**
136
+ * When `request.workspaceDir` is set, enrich the request with workspace-
137
+ * rooted artefacts:
138
+ * - Non-Claude paths: compose skill context (system prompt + allowed-
139
+ * tools narrowing) into the request's `projectPrompt` / `allowedTools`.
140
+ * - Claude path: resolve the canonical `mcp.json` path so the adapter
141
+ * can pass `--mcp-config <path>` to claude-cli.
142
+ *
143
+ * Skills are NOT injected into the system prompt for the Claude path
144
+ * because claude-cli auto-loads `.claude/skills/` itself; double-loading
145
+ * would duplicate the bullet list. Per AGENT-PROCESS-CONSOLIDATION-ADR
146
+ * §C5.
147
+ *
148
+ * Pure: returns a new `AdapterRequest` (or the original when no enrichment
149
+ * applies).
150
+ */
151
+ export function enrichRequestWithWorkspace(request, provider) {
152
+ if (!request.workspaceDir)
153
+ return request;
154
+ if (provider === 'claude') {
155
+ const mcpPath = findMcpConfigPath({ workspaceRoot: request.workspaceDir });
156
+ if (!mcpPath)
157
+ return request;
158
+ // Phase 6: surface MCP discovery on the active session span. claude-cli
159
+ // owns the actual server connections, so we only know servers exist —
160
+ // not how many tools they advertise.
161
+ annotateSpanWithMcp(request.workspaceDir, { tools: undefined });
162
+ return { ...request, claudeMcpConfigPath: mcpPath };
163
+ }
164
+ // Non-Claude path: inject skill block into projectPrompt + reconcile
165
+ // allowed-tools. composeSkillContext is a no-op when no skills exist.
166
+ const ctx = composeSkillContext(request.projectPrompt ?? '', {
167
+ workspaceRoot: request.workspaceDir,
168
+ allowedTools: request.allowedTools,
169
+ });
170
+ // Phase 6: surface skill + MCP discovery on the active session span.
171
+ annotateSpanWithSkills(ctx.activated.skills.map((s) => s.frontmatter.name));
172
+ annotateSpanWithMcp(request.workspaceDir, { tools: undefined });
173
+ if (ctx.activated.skills.length === 0 && !ctx.toolsConstrained) {
174
+ return request;
175
+ }
176
+ return {
177
+ ...request,
178
+ projectPrompt: ctx.systemPrompt || undefined,
179
+ allowedTools: ctx.allowedTools,
180
+ };
181
+ }
182
+ /**
183
+ * Set `anvil.skills.activated.count` + `anvil.skills.activated.names` on
184
+ * the active OTel span (the `anvil.agent.session` span when called from
185
+ * inside `AgentProcess.start()`'s session context). Absence-stays-absent
186
+ * per observability ADR §O7: when no skills load, no attribute is emitted.
187
+ */
188
+ function annotateSpanWithSkills(activatedNames) {
189
+ if (activatedNames.length === 0)
190
+ return;
191
+ const span = trace.getActiveSpan();
192
+ if (!span)
193
+ return;
194
+ span.setAttribute('anvil.skills.activated.count', activatedNames.length);
195
+ span.setAttribute('anvil.skills.activated.names', activatedNames.join(','));
196
+ }
197
+ /**
198
+ * Set `anvil.mcp.servers.count` (and `anvil.mcp.tools.count` when known)
199
+ * on the active OTel span. We resolve mcp.json once here — the file read
200
+ * is cheap, and this is the only place that knows whether MCP discovery
201
+ * found anything for the workspace.
202
+ */
203
+ function annotateSpanWithMcp(workspaceDir, meta) {
204
+ const servers = loadMcpServers({ workspaceRoot: workspaceDir });
205
+ if (servers.length === 0)
206
+ return;
207
+ const span = trace.getActiveSpan();
208
+ if (!span)
209
+ return;
210
+ span.setAttribute('anvil.mcp.servers.count', servers.length);
211
+ if (typeof meta.tools === 'number') {
212
+ span.setAttribute('anvil.mcp.tools.count', meta.tools);
213
+ }
214
+ }
215
+ /** Type alias matching `AgentAdapterFactory` — exported for explicit typing. */
216
+ export const defaultAdapterFactoryFn = defaultAdapterFactory;
217
+ function resolveAdapterOrFallback(registry, provider) {
218
+ const direct = registry.get(provider);
219
+ if (direct)
220
+ return { adapter: direct, provider };
221
+ // Claude is always registered by registerDefaults; treat as the safe fallback.
222
+ const claude = registry.get('claude');
223
+ if (claude)
224
+ return { adapter: claude, provider: 'claude' };
225
+ throw new Error(`No agent-core adapter available for provider "${provider}" and no "claude" fallback registered.`);
226
+ }
227
+ //# sourceMappingURL=default-adapter-factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-adapter-factory.js","sourceRoot":"","sources":["../../../src/agent/session/default-adapter-factory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Inspect-AI-compatible types for `collectTrajectory` (and previously
3
+ * `runAgent`).
4
+ *
5
+ * Schema is locked. External eval harnesses (Inspect AI, SWE-bench
6
+ * runners, custom benchmark scripts) consume `AgentTrajectory` directly
7
+ * without conversion. If their contract drifts, write an adapter — don't
8
+ * refactor this shape.
9
+ *
10
+ * Per AGENT-PROCESS-CONSOLIDATION-ADR §C2 these moved from `src/headless/
11
+ * types.ts` to live alongside `AgentProcess`. The `src/headless/types.ts`
12
+ * module still re-exports them as a thin shim until Phase 5 deletes the
13
+ * `headless/` directory.
14
+ */
15
+ export interface WorkspaceConfig {
16
+ /** Absolute path to the project workspace (where `mcp.json` + `.claude/skills/` live). */
17
+ rootDir: string;
18
+ /** Optional override for `factory.yaml` path (forwarded to subprocess adapters). */
19
+ factoryYamlPath?: string;
20
+ /** Extra env vars passed to subprocess adapters (CLI providers). */
21
+ env?: Record<string, string>;
22
+ }
23
+ export interface AgentTask {
24
+ /** Human-readable task statement. Becomes the first user message. */
25
+ prompt: string;
26
+ /** Optional system-prompt prefix (rendered before the skills block). */
27
+ systemPrompt?: string;
28
+ /**
29
+ * Allowed built-in tools. Intersected with skill `allowed-tools`
30
+ * constraints. MCP-discovered tools are added unconditionally.
31
+ */
32
+ allowedTools?: string[];
33
+ /** Model identifier (e.g. 'claude-sonnet-4-6', 'gpt-4o', 'gemini-2.5-pro'). */
34
+ model: string;
35
+ /** Provider hint: 'anthropic-cli' | 'anthropic-api' | 'openai-api' | ... */
36
+ provider?: string;
37
+ /** Max tokens per assistant turn. */
38
+ maxTokens?: number;
39
+ /** Sampling temperature. */
40
+ temperature?: number;
41
+ /**
42
+ * Optional task ID for trace correlation — surfaced as `anvil.task_id`
43
+ * on every `gen_ai.invoke` span emitted within this run.
44
+ */
45
+ taskId?: string;
46
+ }
47
+ export interface TrajectoryMessage {
48
+ role: 'system' | 'user' | 'assistant' | 'tool';
49
+ content: string;
50
+ /** Tool name when role === 'tool'. */
51
+ name?: string;
52
+ /** Originating assistant tool_call id when role === 'tool'. */
53
+ toolCallId?: string;
54
+ }
55
+ export interface TrajectoryToolCall {
56
+ callId: string;
57
+ name: string;
58
+ arguments: Record<string, unknown>;
59
+ result?: unknown;
60
+ error?: string;
61
+ durationMs: number;
62
+ }
63
+ export interface TrajectoryUsage {
64
+ inputTokens: number;
65
+ outputTokens: number;
66
+ cacheReadTokens?: number;
67
+ cacheWriteTokens?: number;
68
+ }
69
+ export interface AgentTrajectory {
70
+ messages: TrajectoryMessage[];
71
+ toolCalls: TrajectoryToolCall[];
72
+ /** Concrete model the run resolved to (post-fallback). */
73
+ model: string;
74
+ /** Aggregated across every LLM call in the run. */
75
+ usage: TrajectoryUsage;
76
+ /** Aggregated USD cost across every LLM call. */
77
+ costUsd: number;
78
+ /** Final assistant text (after the last non-tool turn). */
79
+ finalAnswer: string;
80
+ finishReason: 'end' | 'tool-use' | 'length' | 'error';
81
+ /** Populated only when finishReason === 'error'. */
82
+ error?: string;
83
+ durationMs: number;
84
+ }
85
+ //# sourceMappingURL=headless-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"headless-types.d.ts","sourceRoot":"","sources":["../../../src/agent/session/headless-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,MAAM,WAAW,eAAe;IAC9B,0FAA0F;IAC1F,OAAO,EAAE,MAAM,CAAC;IAChB,oFAAoF;IACpF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oEAAoE;IACpE,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,SAAS;IACxB,qEAAqE;IACrE,MAAM,EAAE,MAAM,CAAC;IAEf,wEAAwE;IACxE,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IAExB,+EAA+E;IAC/E,KAAK,EAAE,MAAM,CAAC;IAEd,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,qCAAqC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,4BAA4B;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,sCAAsC;IACtC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+DAA+D;IAC/D,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,SAAS,EAAE,kBAAkB,EAAE,CAAC;IAChC,0DAA0D;IAC1D,KAAK,EAAE,MAAM,CAAC;IACd,mDAAmD;IACnD,KAAK,EAAE,eAAe,CAAC;IACvB,iDAAiD;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB,2DAA2D;IAC3D,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,KAAK,GAAG,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC;IACtD,oDAAoD;IACpD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Inspect-AI-compatible types for `collectTrajectory` (and previously
3
+ * `runAgent`).
4
+ *
5
+ * Schema is locked. External eval harnesses (Inspect AI, SWE-bench
6
+ * runners, custom benchmark scripts) consume `AgentTrajectory` directly
7
+ * without conversion. If their contract drifts, write an adapter — don't
8
+ * refactor this shape.
9
+ *
10
+ * Per AGENT-PROCESS-CONSOLIDATION-ADR §C2 these moved from `src/headless/
11
+ * types.ts` to live alongside `AgentProcess`. The `src/headless/types.ts`
12
+ * module still re-exports them as a thin shim until Phase 5 deletes the
13
+ * `headless/` directory.
14
+ */
15
+ export {};
16
+ //# sourceMappingURL=headless-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"headless-types.js","sourceRoot":"","sources":["../../../src/agent/session/headless-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * `@esankhan3/anvil-agent-core/agent/session` — barrel exports for the agent-lifecycle
3
+ * layer. agent-core is the canonical source of truth for `AgentManager`
4
+ * (registry of many) and `AgentProcess` (one logical agent).
5
+ */
6
+ export { AgentProcess, emptyCost, generateSessionId, appendOutput, pushActivity, accumulateCost, type AgentProcessOpts, } from './session.js';
7
+ export { AgentManager, type AgentManagerOpts, } from './session-registry.js';
8
+ export type { AgentAdapter, AgentAdapterEvents, AgentAdapterFactory, AdapterRequest, } from './adapter.js';
9
+ export { buildAdapterRequest } from './adapter.js';
10
+ export { LanguageModelBridge } from './language-model-bridge.js';
11
+ export { defaultAdapterFactory, defaultAdapterFactoryFn, resolveProvider, } from './default-adapter-factory.js';
12
+ export type { AdapterCapabilities, AdapterCostInfo, PromptAwareAdapter, } from './legacy-adapter-types.js';
13
+ export { runWithAgent, type RunWithAgentOptions, type RunWithAgentResult, } from './run-with-agent.js';
14
+ export { collectTrajectory, type CollectTrajectoryOptions, } from './collect-trajectory.js';
15
+ export type { AgentTask, AgentTrajectory, TrajectoryMessage, TrajectoryToolCall, TrajectoryUsage, WorkspaceConfig, } from './headless-types.js';
16
+ export type { AgentActivity, AgentCheckpointHook, AgentCostHook, AgentManagerEvents, AgentProcessEvents, AgentState, AgentStatus, CostInfo, SpawnConfig, } from './types.js';
17
+ export { AgentNotFoundError, SessionResumeNotSupportedError, } from './types.js';
18
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agent/session/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,YAAY,EACZ,SAAS,EACT,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,KAAK,gBAAgB,GACtB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,YAAY,EACZ,KAAK,gBAAgB,GACtB,MAAM,uBAAuB,CAAC;AAE/B,YAAY,EACV,YAAY,EACZ,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,GACf,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAGnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,eAAe,GAChB,MAAM,8BAA8B,CAAC;AACtC,YAAY,EACV,mBAAmB,EACnB,eAAe,EACf,kBAAkB,GACnB,MAAM,2BAA2B,CAAC;AAInC,OAAO,EACL,YAAY,EACZ,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,GACxB,MAAM,qBAAqB,CAAC;AAK7B,OAAO,EACL,iBAAiB,EACjB,KAAK,wBAAwB,GAC9B,MAAM,yBAAyB,CAAC;AAEjC,YAAY,EACV,SAAS,EACT,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,eAAe,GAChB,MAAM,qBAAqB,CAAC;AAE7B,YAAY,EACV,aAAa,EACb,mBAAmB,EACnB,aAAa,EACb,kBAAkB,EAClB,kBAAkB,EAClB,UAAU,EACV,WAAW,EACX,QAAQ,EACR,WAAW,GACZ,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,kBAAkB,EAClB,8BAA8B,GAC/B,MAAM,YAAY,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * `@esankhan3/anvil-agent-core/agent/session` — barrel exports for the agent-lifecycle
3
+ * layer. agent-core is the canonical source of truth for `AgentManager`
4
+ * (registry of many) and `AgentProcess` (one logical agent).
5
+ */
6
+ export { AgentProcess, emptyCost, generateSessionId, appendOutput, pushActivity, accumulateCost, } from './session.js';
7
+ export { AgentManager, } from './session-registry.js';
8
+ export { buildAdapterRequest } from './adapter.js';
9
+ // Default factory + bridge (the concrete production adapter resolution path).
10
+ export { LanguageModelBridge } from './language-model-bridge.js';
11
+ export { defaultAdapterFactory, defaultAdapterFactoryFn, resolveProvider, } from './default-adapter-factory.js';
12
+ // Single-shot helper for callers that don't need the full AgentManager
13
+ // registry (cli commands like diff, learn, migrate, test-gen).
14
+ export { runWithAgent, } from './run-with-agent.js';
15
+ // Eval-facing trajectory collector. Wraps an `AgentProcess` and aggregates
16
+ // an Inspect-AI-shaped `AgentTrajectory`. Replaces the headless `runAgent`
17
+ // per AGENT-PROCESS-CONSOLIDATION-ADR §C1.
18
+ export { collectTrajectory, } from './collect-trajectory.js';
19
+ export { AgentNotFoundError, SessionResumeNotSupportedError, } from './types.js';
20
+ //# sourceMappingURL=index.js.map