@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,91 @@
1
+ /**
2
+ * CheckpointStore — persistence for CheckpointRecord JSON files.
3
+ *
4
+ * Storage layout:
5
+ * <anvilHome>/checkpoints/<project>/<runFamily>/<stage>/<hash>.json
6
+ * <anvilHome>/checkpoints/_blobs/<sha[0:2]>/<sha> (via BlobStore)
7
+ *
8
+ * All writes go through tmp + renameSync for atomicity. Missing or corrupt
9
+ * JSON files are treated as absent (get returns null and logs to stderr).
10
+ *
11
+ * ── Stats accounting (approximate) ───────────────────────────────────────
12
+ *
13
+ * `stats()` mixes two data sources:
14
+ * - On-disk counts (total/completed/interrupted/failed) are authoritative.
15
+ * - `hits` is an in-memory counter incremented inside `get()` every time a
16
+ * caller observes a `completed` record. `misses` counts `begin()` calls.
17
+ *
18
+ * This means `hits` resets across process restarts — it reflects *this*
19
+ * process's cache-reuse activity, not lifetime reuse. `hitRate` is computed
20
+ * as hits / (hits + misses). The costSavedUsd estimate sums the cost of
21
+ * each observed hit (i.e. the cost Anvil would have paid to re-run it).
22
+ * Misses before a restart are not retroactively credited.
23
+ *
24
+ * This approximation is documented here and referenced by the integration
25
+ * notes. It's intentional: we don't need a durable hit counter for the
26
+ * main goal (skip already-done work); the metric is informational.
27
+ */
28
+ import { BlobStore } from './blob-store.js';
29
+ import type { CheckpointInputs, CheckpointKey, CheckpointRecord, CheckpointStage, CheckpointStats, CheckpointStatus } from './types.js';
30
+ export interface CheckpointStoreOpts {
31
+ anvilHome: string;
32
+ blobStore: BlobStore;
33
+ }
34
+ export declare class CheckpointStore {
35
+ private readonly anvilHome;
36
+ private readonly blobStore;
37
+ /** In-memory hit/miss counters; see file header for semantics. */
38
+ private hitCount;
39
+ private missCount;
40
+ private hitCostUsd;
41
+ constructor(opts: CheckpointStoreOpts);
42
+ /**
43
+ * Look up a checkpoint by key. Returns null when missing or corrupt. If the
44
+ * returned record is `completed` and its blob exists, increments the hit
45
+ * counter (and adds its recorded cost to costSavedUsd).
46
+ */
47
+ get(project: string, runFamily: string, key: CheckpointKey): CheckpointRecord | null;
48
+ /** Persist a record to disk atomically. */
49
+ write(project: string, record: CheckpointRecord): void;
50
+ /**
51
+ * Claim a checkpoint: write `status: 'running'` with startedAt. Used
52
+ * before the agent executes so interrupted runs can be detected on
53
+ * resume. Counts as a cache miss.
54
+ */
55
+ begin(project: string, runFamily: string, inputs: CheckpointInputs, cost?: CheckpointRecord['cost']): CheckpointRecord;
56
+ /**
57
+ * Mark a checkpoint completed with its serialized output. Writes the blob
58
+ * first (so a subsequent `get` that sees the record always finds bytes).
59
+ */
60
+ complete(project: string, runFamily: string, key: CheckpointKey, output: string | Buffer, cost?: CheckpointRecord['cost']): CheckpointRecord;
61
+ /**
62
+ * Mark a checkpoint as interrupted (SIGTERM / cost-reject / user cancel).
63
+ * If a partial output is provided, it is stored as a blob so the next
64
+ * resume can inspect it.
65
+ */
66
+ interrupt(project: string, runFamily: string, key: CheckpointKey, partialOutput?: string | Buffer, reason?: string): CheckpointRecord;
67
+ /** Mark a checkpoint as failed with the error message. */
68
+ fail(project: string, runFamily: string, key: CheckpointKey, err: string): CheckpointRecord;
69
+ /**
70
+ * Enumerate every checkpoint record for a given run family across all
71
+ * stages. Skips corrupt files silently.
72
+ */
73
+ listForRun(project: string, runFamily: string): CheckpointRecord[];
74
+ /**
75
+ * Delete on-disk records for a stage within a run. Does NOT touch blobs
76
+ * (those are content-addressed; use `BlobStore.gc` for that).
77
+ */
78
+ invalidateStage(project: string, runFamily: string, stage: CheckpointStage): number;
79
+ /** Aggregate stats for a run family. See file header for approximation notes. */
80
+ stats(project: string, runFamily: string): CheckpointStats;
81
+ /** Visible for tests: reset in-memory hit/miss accounting. */
82
+ resetCounters(): void;
83
+ /** Visible for tests: current in-memory counters. */
84
+ getCounters(): {
85
+ hits: number;
86
+ misses: number;
87
+ hitCostUsd: number;
88
+ };
89
+ }
90
+ export type { CheckpointStatus };
91
+ //# sourceMappingURL=store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/checkpoint/store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAaH,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,KAAK,EACV,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,gBAAgB,EACjB,MAAM,YAAY,CAAC;AA2CpB,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,SAAS,CAAC;CACtB;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IAEtC,kEAAkE;IAClE,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,UAAU,CAAK;gBAEX,IAAI,EAAE,mBAAmB;IAKrC;;;;OAIG;IACH,GAAG,CACD,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,aAAa,GACjB,gBAAgB,GAAG,IAAI;IAqB1B,2CAA2C;IAC3C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,GAAG,IAAI;IAWtD;;;;OAIG;IACH,KAAK,CACH,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,gBAAgB,EACxB,IAAI,CAAC,EAAE,gBAAgB,CAAC,MAAM,CAAC,GAC9B,gBAAgB;IAcnB;;;OAGG;IACH,QAAQ,CACN,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,aAAa,EAClB,MAAM,EAAE,MAAM,GAAG,MAAM,EACvB,IAAI,CAAC,EAAE,gBAAgB,CAAC,MAAM,CAAC,GAC9B,gBAAgB;IA2BnB;;;;OAIG;IACH,SAAS,CACP,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,aAAa,EAClB,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,EAC/B,MAAM,CAAC,EAAE,MAAM,GACd,gBAAgB;IA+BnB,0DAA0D;IAC1D,IAAI,CACF,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,aAAa,EAClB,GAAG,EAAE,MAAM,GACV,gBAAgB;IA0BnB;;;OAGG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,gBAAgB,EAAE;IA4BlE;;;OAGG;IACH,eAAe,CACb,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,eAAe,GACrB,MAAM;IA2BT,iFAAiF;IACjF,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,eAAe;IAkB1D,8DAA8D;IAC9D,aAAa,IAAI,IAAI;IAMrB,qDAAqD;IACrD,WAAW,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE;CAGpE;AAED,YAAY,EAAE,gBAAgB,EAAE,CAAC"}
@@ -0,0 +1,292 @@
1
+ /**
2
+ * CheckpointStore — persistence for CheckpointRecord JSON files.
3
+ *
4
+ * Storage layout:
5
+ * <anvilHome>/checkpoints/<project>/<runFamily>/<stage>/<hash>.json
6
+ * <anvilHome>/checkpoints/_blobs/<sha[0:2]>/<sha> (via BlobStore)
7
+ *
8
+ * All writes go through tmp + renameSync for atomicity. Missing or corrupt
9
+ * JSON files are treated as absent (get returns null and logs to stderr).
10
+ *
11
+ * ── Stats accounting (approximate) ───────────────────────────────────────
12
+ *
13
+ * `stats()` mixes two data sources:
14
+ * - On-disk counts (total/completed/interrupted/failed) are authoritative.
15
+ * - `hits` is an in-memory counter incremented inside `get()` every time a
16
+ * caller observes a `completed` record. `misses` counts `begin()` calls.
17
+ *
18
+ * This means `hits` resets across process restarts — it reflects *this*
19
+ * process's cache-reuse activity, not lifetime reuse. `hitRate` is computed
20
+ * as hits / (hits + misses). The costSavedUsd estimate sums the cost of
21
+ * each observed hit (i.e. the cost Anvil would have paid to re-run it).
22
+ * Misses before a restart are not retroactively credited.
23
+ *
24
+ * This approximation is documented here and referenced by the integration
25
+ * notes. It's intentional: we don't need a durable hit counter for the
26
+ * main goal (skip already-done work); the metric is informational.
27
+ */
28
+ import { existsSync, mkdirSync, readdirSync, readFileSync, renameSync, unlinkSync, writeFileSync, } from 'node:fs';
29
+ import { dirname, join } from 'node:path';
30
+ import { checkpointPath, checkpointRoot, computeKey } from './key.js';
31
+ const STAGES = [
32
+ 'plan',
33
+ 'implement',
34
+ 'review',
35
+ 'test',
36
+ 'ship',
37
+ 'kb-grounding',
38
+ 'mutation',
39
+ ];
40
+ function ensureDir(dir) {
41
+ if (!existsSync(dir))
42
+ mkdirSync(dir, { recursive: true });
43
+ }
44
+ function atomicWriteFileSync(filePath, data) {
45
+ ensureDir(dirname(filePath));
46
+ const tmp = `${filePath}.${process.pid}.${Math.random().toString(36).slice(2)}.tmp`;
47
+ try {
48
+ writeFileSync(tmp, data, 'utf-8');
49
+ renameSync(tmp, filePath);
50
+ }
51
+ catch (err) {
52
+ try {
53
+ unlinkSync(tmp);
54
+ }
55
+ catch { /* ignore */ }
56
+ throw err;
57
+ }
58
+ }
59
+ function readRecord(filePath) {
60
+ try {
61
+ const raw = readFileSync(filePath, 'utf-8');
62
+ return JSON.parse(raw);
63
+ }
64
+ catch (err) {
65
+ if (err.code === 'ENOENT')
66
+ return null;
67
+ process.stderr.write(`[checkpoint-store] skipping corrupt record ${filePath}: ${err instanceof Error ? err.message : String(err)}\n`);
68
+ return null;
69
+ }
70
+ }
71
+ export class CheckpointStore {
72
+ anvilHome;
73
+ blobStore;
74
+ /** In-memory hit/miss counters; see file header for semantics. */
75
+ hitCount = 0;
76
+ missCount = 0;
77
+ hitCostUsd = 0;
78
+ constructor(opts) {
79
+ this.anvilHome = opts.anvilHome;
80
+ this.blobStore = opts.blobStore;
81
+ }
82
+ /**
83
+ * Look up a checkpoint by key. Returns null when missing or corrupt. If the
84
+ * returned record is `completed` and its blob exists, increments the hit
85
+ * counter (and adds its recorded cost to costSavedUsd).
86
+ */
87
+ get(project, runFamily, key) {
88
+ const path = checkpointPath(this.anvilHome, project, runFamily, key.stage, key.hash);
89
+ const record = readRecord(path);
90
+ if (!record)
91
+ return null;
92
+ if (record.status === 'completed' &&
93
+ record.outputRef &&
94
+ this.blobStore.exists(record.outputRef)) {
95
+ this.hitCount += 1;
96
+ if (record.cost?.usd)
97
+ this.hitCostUsd += record.cost.usd;
98
+ }
99
+ return record;
100
+ }
101
+ /** Persist a record to disk atomically. */
102
+ write(project, record) {
103
+ const path = checkpointPath(this.anvilHome, project, record.key.runFamily, record.key.stage, record.key.hash);
104
+ atomicWriteFileSync(path, JSON.stringify(record, null, 2));
105
+ }
106
+ /**
107
+ * Claim a checkpoint: write `status: 'running'` with startedAt. Used
108
+ * before the agent executes so interrupted runs can be detected on
109
+ * resume. Counts as a cache miss.
110
+ */
111
+ begin(project, runFamily, inputs, cost) {
112
+ const key = computeKey(runFamily, inputs);
113
+ const record = {
114
+ key,
115
+ project,
116
+ status: 'running',
117
+ startedAt: new Date().toISOString(),
118
+ ...(cost ? { cost } : {}),
119
+ };
120
+ this.write(project, record);
121
+ this.missCount += 1;
122
+ return record;
123
+ }
124
+ /**
125
+ * Mark a checkpoint completed with its serialized output. Writes the blob
126
+ * first (so a subsequent `get` that sees the record always finds bytes).
127
+ */
128
+ complete(project, runFamily, key, output, cost) {
129
+ const blob = this.blobStore.write(output);
130
+ const path = checkpointPath(this.anvilHome, project, runFamily, key.stage, key.hash);
131
+ const existing = readRecord(path);
132
+ const startedAt = existing?.startedAt ?? new Date().toISOString();
133
+ const completedAt = new Date().toISOString();
134
+ const durationMs = new Date(completedAt).getTime() - new Date(startedAt).getTime();
135
+ const record = {
136
+ key,
137
+ project,
138
+ status: 'completed',
139
+ outputRef: blob.sha,
140
+ startedAt,
141
+ completedAt,
142
+ durationMs,
143
+ ...(cost ? { cost } : existing?.cost ? { cost: existing.cost } : {}),
144
+ };
145
+ this.write(project, record);
146
+ return record;
147
+ }
148
+ /**
149
+ * Mark a checkpoint as interrupted (SIGTERM / cost-reject / user cancel).
150
+ * If a partial output is provided, it is stored as a blob so the next
151
+ * resume can inspect it.
152
+ */
153
+ interrupt(project, runFamily, key, partialOutput, reason) {
154
+ const path = checkpointPath(this.anvilHome, project, runFamily, key.stage, key.hash);
155
+ const existing = readRecord(path);
156
+ const startedAt = existing?.startedAt ?? new Date().toISOString();
157
+ const completedAt = new Date().toISOString();
158
+ const durationMs = new Date(completedAt).getTime() - new Date(startedAt).getTime();
159
+ let outputRef;
160
+ if (partialOutput !== undefined) {
161
+ outputRef = this.blobStore.write(partialOutput).sha;
162
+ }
163
+ const record = {
164
+ key,
165
+ project,
166
+ status: 'interrupted',
167
+ startedAt,
168
+ completedAt,
169
+ durationMs,
170
+ ...(outputRef ? { outputRef } : {}),
171
+ ...(reason ? { errorMessage: reason } : {}),
172
+ ...(existing?.cost ? { cost: existing.cost } : {}),
173
+ };
174
+ this.write(project, record);
175
+ return record;
176
+ }
177
+ /** Mark a checkpoint as failed with the error message. */
178
+ fail(project, runFamily, key, err) {
179
+ const path = checkpointPath(this.anvilHome, project, runFamily, key.stage, key.hash);
180
+ const existing = readRecord(path);
181
+ const startedAt = existing?.startedAt ?? new Date().toISOString();
182
+ const completedAt = new Date().toISOString();
183
+ const durationMs = new Date(completedAt).getTime() - new Date(startedAt).getTime();
184
+ const record = {
185
+ key,
186
+ project,
187
+ status: 'failed',
188
+ startedAt,
189
+ completedAt,
190
+ durationMs,
191
+ errorMessage: err,
192
+ ...(existing?.cost ? { cost: existing.cost } : {}),
193
+ };
194
+ this.write(project, record);
195
+ return record;
196
+ }
197
+ /**
198
+ * Enumerate every checkpoint record for a given run family across all
199
+ * stages. Skips corrupt files silently.
200
+ */
201
+ listForRun(project, runFamily) {
202
+ const runDir = join(checkpointRoot(this.anvilHome), project, runFamily);
203
+ if (!existsSync(runDir))
204
+ return [];
205
+ const out = [];
206
+ let stageDirs;
207
+ try {
208
+ stageDirs = readdirSync(runDir);
209
+ }
210
+ catch {
211
+ return [];
212
+ }
213
+ for (const stage of stageDirs) {
214
+ if (!STAGES.includes(stage))
215
+ continue;
216
+ const stageDir = join(runDir, stage);
217
+ let files;
218
+ try {
219
+ files = readdirSync(stageDir);
220
+ }
221
+ catch {
222
+ continue;
223
+ }
224
+ for (const file of files) {
225
+ if (!file.endsWith('.json'))
226
+ continue;
227
+ const rec = readRecord(join(stageDir, file));
228
+ if (rec)
229
+ out.push(rec);
230
+ }
231
+ }
232
+ return out;
233
+ }
234
+ /**
235
+ * Delete on-disk records for a stage within a run. Does NOT touch blobs
236
+ * (those are content-addressed; use `BlobStore.gc` for that).
237
+ */
238
+ invalidateStage(project, runFamily, stage) {
239
+ const stageDir = join(checkpointRoot(this.anvilHome), project, runFamily, stage);
240
+ if (!existsSync(stageDir))
241
+ return 0;
242
+ let count = 0;
243
+ let files;
244
+ try {
245
+ files = readdirSync(stageDir);
246
+ }
247
+ catch {
248
+ return 0;
249
+ }
250
+ for (const file of files) {
251
+ if (!file.endsWith('.json'))
252
+ continue;
253
+ try {
254
+ unlinkSync(join(stageDir, file));
255
+ count += 1;
256
+ }
257
+ catch {
258
+ // best effort
259
+ }
260
+ }
261
+ return count;
262
+ }
263
+ /** Aggregate stats for a run family. See file header for approximation notes. */
264
+ stats(project, runFamily) {
265
+ const records = this.listForRun(project, runFamily);
266
+ const total = records.length;
267
+ const interrupted = records.filter((r) => r.status === 'interrupted').length;
268
+ const hits = this.hitCount;
269
+ const misses = this.missCount;
270
+ const denom = hits + misses;
271
+ const hitRate = denom === 0 ? 0 : hits / denom;
272
+ return {
273
+ total,
274
+ hits,
275
+ misses,
276
+ interrupted,
277
+ hitRate,
278
+ costSavedUsd: this.hitCostUsd,
279
+ };
280
+ }
281
+ /** Visible for tests: reset in-memory hit/miss accounting. */
282
+ resetCounters() {
283
+ this.hitCount = 0;
284
+ this.missCount = 0;
285
+ this.hitCostUsd = 0;
286
+ }
287
+ /** Visible for tests: current in-memory counters. */
288
+ getCounters() {
289
+ return { hits: this.hitCount, misses: this.missCount, hitCostUsd: this.hitCostUsd };
290
+ }
291
+ }
292
+ //# sourceMappingURL=store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/checkpoint/store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Phase 9 — Deterministic agent checkpoints.
3
+ *
4
+ * Types shared across the checkpoint subsystem: the key/fingerprint
5
+ * computation (`checkpoint-key.ts`), the content-addressed blob store
6
+ * (`checkpoint-blob-store.ts`), the record store (`checkpoint-store.ts`),
7
+ * and the higher-order agent wrapper (`agent-runner-wrapper.ts`).
8
+ *
9
+ * A checkpoint is a per-(project, runFamily, stage, hash) record of whether
10
+ * a particular agent invocation has already produced output, so that a
11
+ * resumed run can skip it. The hash is a sha256 derived from a stable
12
+ * fingerprint of every input that should invalidate the cache on drift
13
+ * (prompt version, tool versions, model id, and the input payload).
14
+ */
15
+ /** Logical pipeline stages that emit checkpoints. */
16
+ export type CheckpointStage = 'plan' | 'implement' | 'review' | 'test' | 'ship' | 'kb-grounding' | 'mutation';
17
+ /** Lifecycle state of a single checkpoint record. */
18
+ export type CheckpointStatus = 'pending' | 'running' | 'completed' | 'interrupted' | 'failed';
19
+ /**
20
+ * The inputs that go into computing a checkpoint key.
21
+ *
22
+ * Any field here drifts → different hash → cache miss → fresh run. Fields
23
+ * are intentionally denormalized so callers don't forget to include
24
+ * promptVersion / model etc.
25
+ */
26
+ export interface CheckpointInputs {
27
+ stage: CheckpointStage;
28
+ /** Stable task identifier within a stage (e.g. "impl:src/foo.ts"). */
29
+ taskId: string;
30
+ /** Arbitrary JSON-serializable input payload; fingerprinted recursively. */
31
+ inputs: unknown;
32
+ /** Persona / prompt version string — bump to invalidate cached outputs. */
33
+ promptVersion: string;
34
+ /** Tool versions that materially affect output (e.g. { tsc: '5.3.3' }). */
35
+ toolVersions?: Record<string, string>;
36
+ /** Model identifier used for the invocation. */
37
+ model?: string;
38
+ }
39
+ /** Identifier for a checkpoint, computed from CheckpointInputs. */
40
+ export interface CheckpointKey {
41
+ /** sha256 hex string uniquely identifying the input set. */
42
+ hash: string;
43
+ /** Groups re-runs of the same logical run across retries / resumes. */
44
+ runFamily: string;
45
+ stage: CheckpointStage;
46
+ taskId: string;
47
+ }
48
+ /** On-disk record for one checkpoint. */
49
+ export interface CheckpointRecord {
50
+ key: CheckpointKey;
51
+ project: string;
52
+ status: CheckpointStatus;
53
+ /** Content-addressed blob sha (hex) for the serialized output. */
54
+ outputRef?: string;
55
+ cost?: {
56
+ usd: number;
57
+ tokensIn: number;
58
+ tokensOut: number;
59
+ };
60
+ startedAt: string;
61
+ completedAt?: string;
62
+ durationMs?: number;
63
+ errorMessage?: string;
64
+ }
65
+ /** Aggregate metrics for a run family. */
66
+ export interface CheckpointStats {
67
+ total: number;
68
+ hits: number;
69
+ misses: number;
70
+ interrupted: number;
71
+ hitRate: number;
72
+ costSavedUsd: number;
73
+ }
74
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/checkpoint/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,qDAAqD;AACrD,MAAM,MAAM,eAAe,GACvB,MAAM,GACN,WAAW,GACX,QAAQ,GACR,MAAM,GACN,MAAM,GACN,cAAc,GACd,UAAU,CAAC;AAEf,qDAAqD;AACrD,MAAM,MAAM,gBAAgB,GACxB,SAAS,GACT,SAAS,GACT,WAAW,GACX,aAAa,GACb,QAAQ,CAAC;AAEb;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,eAAe,CAAC;IACvB,sEAAsE;IACtE,MAAM,EAAE,MAAM,CAAC;IACf,4EAA4E;IAC5E,MAAM,EAAE,OAAO,CAAC;IAChB,2EAA2E;IAC3E,aAAa,EAAE,MAAM,CAAC;IACtB,2EAA2E;IAC3E,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,gDAAgD;IAChD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,mEAAmE;AACnE,MAAM,WAAW,aAAa;IAC5B,4DAA4D;IAC5D,IAAI,EAAE,MAAM,CAAC;IACb,uEAAuE;IACvE,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,eAAe,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,yCAAyC;AACzC,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,aAAa,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,gBAAgB,CAAC;IACzB,kEAAkE;IAClE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5D,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,0CAA0C;AAC1C,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;CACtB"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Phase 9 — Deterministic agent checkpoints.
3
+ *
4
+ * Types shared across the checkpoint subsystem: the key/fingerprint
5
+ * computation (`checkpoint-key.ts`), the content-addressed blob store
6
+ * (`checkpoint-blob-store.ts`), the record store (`checkpoint-store.ts`),
7
+ * and the higher-order agent wrapper (`agent-runner-wrapper.ts`).
8
+ *
9
+ * A checkpoint is a per-(project, runFamily, stage, hash) record of whether
10
+ * a particular agent invocation has already produced output, so that a
11
+ * resumed run can skip it. The hash is a sha256 derived from a stable
12
+ * fingerprint of every input that should invalidate the cache on drift
13
+ * (prompt version, tool versions, model id, and the input payload).
14
+ */
15
+ export {};
16
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/checkpoint/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Claude CLI ModelAdapter.
3
+ *
4
+ * The simplest adapter — Claude CLI already outputs Anvil Stream Format
5
+ * natively (`--output-format stream-json`), so we just pipe stdout through
6
+ * with zero transformation.
7
+ */
8
+ import type { ModelAdapter, ModelAdapterConfig, ModelAdapterResult, ProviderCapabilities, ProviderName } from './types.js';
9
+ export declare class ClaudeAdapter implements ModelAdapter {
10
+ readonly provider: ProviderName;
11
+ readonly capabilities: ProviderCapabilities;
12
+ private child;
13
+ supportsModel(modelId: string): boolean;
14
+ getModelPricing(modelId: string): [number, number] | null;
15
+ checkAvailability(): Promise<{
16
+ available: boolean;
17
+ version?: string;
18
+ error?: string;
19
+ }>;
20
+ run(config: ModelAdapterConfig, output: NodeJS.WritableStream): Promise<ModelAdapterResult>;
21
+ kill(): void;
22
+ }
23
+ //# sourceMappingURL=claude-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-adapter.d.ts","sourceRoot":"","sources":["../src/claude-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EACV,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,EACpB,YAAY,EACb,MAAM,YAAY,CAAC;AAuCpB,qBAAa,aAAc,YAAW,YAAY;IAChD,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAY;IAE3C,QAAQ,CAAC,YAAY,EAAE,oBAAoB,CAczC;IAEF,OAAO,CAAC,KAAK,CAA6B;IAE1C,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAUvC,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;IAKnD,iBAAiB,IAAI,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAUtF,GAAG,CAAC,MAAM,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,CAAC,cAAc,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA+JjG,IAAI,IAAI,IAAI;CAMb"}