@substrate-ai/core 0.19.54

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 (486) hide show
  1. package/README.md +55 -0
  2. package/dist/__tests__/adapter.test.d.ts +12 -0
  3. package/dist/__tests__/adapter.test.d.ts.map +1 -0
  4. package/dist/__tests__/adapter.test.js +259 -0
  5. package/dist/__tests__/adapter.test.js.map +1 -0
  6. package/dist/__tests__/event-bus.test.d.ts +14 -0
  7. package/dist/__tests__/event-bus.test.d.ts.map +1 -0
  8. package/dist/__tests__/event-bus.test.js +199 -0
  9. package/dist/__tests__/event-bus.test.js.map +1 -0
  10. package/dist/__tests__/output-quality.test.d.ts +8 -0
  11. package/dist/__tests__/output-quality.test.d.ts.map +1 -0
  12. package/dist/__tests__/output-quality.test.js +166 -0
  13. package/dist/__tests__/output-quality.test.js.map +1 -0
  14. package/dist/__tests__/schema-suffix.test.d.ts +9 -0
  15. package/dist/__tests__/schema-suffix.test.d.ts.map +1 -0
  16. package/dist/__tests__/schema-suffix.test.js +126 -0
  17. package/dist/__tests__/schema-suffix.test.js.map +1 -0
  18. package/dist/__tests__/yaml-parser.test.d.ts +18 -0
  19. package/dist/__tests__/yaml-parser.test.d.ts.map +1 -0
  20. package/dist/__tests__/yaml-parser.test.js +475 -0
  21. package/dist/__tests__/yaml-parser.test.js.map +1 -0
  22. package/dist/__type-checks__.d.ts +11 -0
  23. package/dist/__type-checks__.d.ts.map +1 -0
  24. package/dist/__type-checks__.js +19 -0
  25. package/dist/__type-checks__.js.map +1 -0
  26. package/dist/adapters/__tests__/adapter-output-normalizer.test.d.ts +12 -0
  27. package/dist/adapters/__tests__/adapter-output-normalizer.test.d.ts.map +1 -0
  28. package/dist/adapters/__tests__/adapter-output-normalizer.test.js +193 -0
  29. package/dist/adapters/__tests__/adapter-output-normalizer.test.js.map +1 -0
  30. package/dist/adapters/adapter-format-error.d.ts +35 -0
  31. package/dist/adapters/adapter-format-error.d.ts.map +1 -0
  32. package/dist/adapters/adapter-format-error.js +38 -0
  33. package/dist/adapters/adapter-format-error.js.map +1 -0
  34. package/dist/adapters/adapter-output-normalizer.d.ts +50 -0
  35. package/dist/adapters/adapter-output-normalizer.d.ts.map +1 -0
  36. package/dist/adapters/adapter-output-normalizer.js +233 -0
  37. package/dist/adapters/adapter-output-normalizer.js.map +1 -0
  38. package/dist/adapters/adapter-registry.d.ts +50 -0
  39. package/dist/adapters/adapter-registry.d.ts.map +1 -0
  40. package/dist/adapters/adapter-registry.js +101 -0
  41. package/dist/adapters/adapter-registry.js.map +1 -0
  42. package/dist/adapters/claude-adapter.d.ts +59 -0
  43. package/dist/adapters/claude-adapter.d.ts.map +1 -0
  44. package/dist/adapters/claude-adapter.js +367 -0
  45. package/dist/adapters/claude-adapter.js.map +1 -0
  46. package/dist/adapters/codex-adapter.d.ts +64 -0
  47. package/dist/adapters/codex-adapter.d.ts.map +1 -0
  48. package/dist/adapters/codex-adapter.js +263 -0
  49. package/dist/adapters/codex-adapter.js.map +1 -0
  50. package/dist/adapters/gemini-adapter.d.ts +57 -0
  51. package/dist/adapters/gemini-adapter.d.ts.map +1 -0
  52. package/dist/adapters/gemini-adapter.js +311 -0
  53. package/dist/adapters/gemini-adapter.js.map +1 -0
  54. package/dist/adapters/index.d.ts +10 -0
  55. package/dist/adapters/index.d.ts.map +1 -0
  56. package/dist/adapters/index.js +14 -0
  57. package/dist/adapters/index.js.map +1 -0
  58. package/dist/adapters/schemas.d.ts +137 -0
  59. package/dist/adapters/schemas.d.ts.map +1 -0
  60. package/dist/adapters/schemas.js +140 -0
  61. package/dist/adapters/schemas.js.map +1 -0
  62. package/dist/adapters/types.d.ts +245 -0
  63. package/dist/adapters/types.d.ts.map +1 -0
  64. package/dist/adapters/types.js +6 -0
  65. package/dist/adapters/types.js.map +1 -0
  66. package/dist/adapters/worker-adapter.d.ts +188 -0
  67. package/dist/adapters/worker-adapter.d.ts.map +1 -0
  68. package/dist/adapters/worker-adapter.js +19 -0
  69. package/dist/adapters/worker-adapter.js.map +1 -0
  70. package/dist/budget/budget-tracker.d.ts +22 -0
  71. package/dist/budget/budget-tracker.d.ts.map +1 -0
  72. package/dist/budget/budget-tracker.js +39 -0
  73. package/dist/budget/budget-tracker.js.map +1 -0
  74. package/dist/budget/index.d.ts +6 -0
  75. package/dist/budget/index.d.ts.map +1 -0
  76. package/dist/budget/index.js +5 -0
  77. package/dist/budget/index.js.map +1 -0
  78. package/dist/config/config-migrator.d.ts +58 -0
  79. package/dist/config/config-migrator.d.ts.map +1 -0
  80. package/dist/config/config-migrator.js +158 -0
  81. package/dist/config/config-migrator.js.map +1 -0
  82. package/dist/config/config-system-impl.d.ts +63 -0
  83. package/dist/config/config-system-impl.d.ts.map +1 -0
  84. package/dist/config/config-system-impl.js +364 -0
  85. package/dist/config/config-system-impl.js.map +1 -0
  86. package/dist/config/config-watcher.d.ts +59 -0
  87. package/dist/config/config-watcher.d.ts.map +1 -0
  88. package/dist/config/config-watcher.js +137 -0
  89. package/dist/config/config-watcher.js.map +1 -0
  90. package/dist/config/defaults.d.ts +13 -0
  91. package/dist/config/defaults.d.ts.map +1 -0
  92. package/dist/config/defaults.js +62 -0
  93. package/dist/config/defaults.js.map +1 -0
  94. package/dist/config/errors.d.ts +25 -0
  95. package/dist/config/errors.d.ts.map +1 -0
  96. package/dist/config/errors.js +49 -0
  97. package/dist/config/errors.js.map +1 -0
  98. package/dist/config/index.d.ts +19 -0
  99. package/dist/config/index.d.ts.map +1 -0
  100. package/dist/config/index.js +39 -0
  101. package/dist/config/index.js.map +1 -0
  102. package/dist/config/types.d.ts +456 -0
  103. package/dist/config/types.d.ts.map +1 -0
  104. package/dist/config/types.js +174 -0
  105. package/dist/config/types.js.map +1 -0
  106. package/dist/config/version-utils.d.ts +39 -0
  107. package/dist/config/version-utils.d.ts.map +1 -0
  108. package/dist/config/version-utils.js +66 -0
  109. package/dist/config/version-utils.js.map +1 -0
  110. package/dist/context/index.d.ts +2 -0
  111. package/dist/context/index.d.ts.map +1 -0
  112. package/dist/context/index.js +2 -0
  113. package/dist/context/index.js.map +1 -0
  114. package/dist/context/types.d.ts +113 -0
  115. package/dist/context/types.d.ts.map +1 -0
  116. package/dist/context/types.js +59 -0
  117. package/dist/context/types.js.map +1 -0
  118. package/dist/cost-tracker/cost-tracker-impl.d.ts +51 -0
  119. package/dist/cost-tracker/cost-tracker-impl.d.ts.map +1 -0
  120. package/dist/cost-tracker/cost-tracker-impl.js +85 -0
  121. package/dist/cost-tracker/cost-tracker-impl.js.map +1 -0
  122. package/dist/cost-tracker/cost-tracker-subscriber.d.ts +31 -0
  123. package/dist/cost-tracker/cost-tracker-subscriber.d.ts.map +1 -0
  124. package/dist/cost-tracker/cost-tracker-subscriber.js +116 -0
  125. package/dist/cost-tracker/cost-tracker-subscriber.js.map +1 -0
  126. package/dist/cost-tracker/index.d.ts +11 -0
  127. package/dist/cost-tracker/index.d.ts.map +1 -0
  128. package/dist/cost-tracker/index.js +7 -0
  129. package/dist/cost-tracker/index.js.map +1 -0
  130. package/dist/cost-tracker/token-rates.d.ts +25 -0
  131. package/dist/cost-tracker/token-rates.d.ts.map +1 -0
  132. package/dist/cost-tracker/token-rates.js +99 -0
  133. package/dist/cost-tracker/token-rates.js.map +1 -0
  134. package/dist/cost-tracker/types.d.ts +6 -0
  135. package/dist/cost-tracker/types.d.ts.map +1 -0
  136. package/dist/cost-tracker/types.js +2 -0
  137. package/dist/cost-tracker/types.js.map +1 -0
  138. package/dist/dispatch/dispatcher-impl.d.ts +92 -0
  139. package/dist/dispatch/dispatcher-impl.d.ts.map +1 -0
  140. package/dist/dispatch/dispatcher-impl.js +847 -0
  141. package/dist/dispatch/dispatcher-impl.js.map +1 -0
  142. package/dist/dispatch/index.d.ts +15 -0
  143. package/dist/dispatch/index.d.ts.map +1 -0
  144. package/dist/dispatch/index.js +14 -0
  145. package/dist/dispatch/index.js.map +1 -0
  146. package/dist/dispatch/interface-change-detector.d.ts +46 -0
  147. package/dist/dispatch/interface-change-detector.d.ts.map +1 -0
  148. package/dist/dispatch/interface-change-detector.js +135 -0
  149. package/dist/dispatch/interface-change-detector.js.map +1 -0
  150. package/dist/dispatch/output-quality.d.ts +43 -0
  151. package/dist/dispatch/output-quality.d.ts.map +1 -0
  152. package/dist/dispatch/output-quality.js +148 -0
  153. package/dist/dispatch/output-quality.js.map +1 -0
  154. package/dist/dispatch/types.d.ts +271 -0
  155. package/dist/dispatch/types.d.ts.map +1 -0
  156. package/dist/dispatch/types.js +76 -0
  157. package/dist/dispatch/types.js.map +1 -0
  158. package/dist/dispatch/yaml-parser.d.ts +40 -0
  159. package/dist/dispatch/yaml-parser.d.ts.map +1 -0
  160. package/dist/dispatch/yaml-parser.js +323 -0
  161. package/dist/dispatch/yaml-parser.js.map +1 -0
  162. package/dist/events/core-events.d.ts +288 -0
  163. package/dist/events/core-events.d.ts.map +1 -0
  164. package/dist/events/core-events.js +10 -0
  165. package/dist/events/core-events.js.map +1 -0
  166. package/dist/events/event-bus.d.ts +55 -0
  167. package/dist/events/event-bus.d.ts.map +1 -0
  168. package/dist/events/event-bus.js +52 -0
  169. package/dist/events/event-bus.js.map +1 -0
  170. package/dist/events/index.d.ts +9 -0
  171. package/dist/events/index.d.ts.map +1 -0
  172. package/dist/events/index.js +6 -0
  173. package/dist/events/index.js.map +1 -0
  174. package/dist/events/types.d.ts +21 -0
  175. package/dist/events/types.d.ts.map +1 -0
  176. package/dist/events/types.js +8 -0
  177. package/dist/events/types.js.map +1 -0
  178. package/dist/git/git-manager.d.ts +31 -0
  179. package/dist/git/git-manager.d.ts.map +1 -0
  180. package/dist/git/git-manager.js +46 -0
  181. package/dist/git/git-manager.js.map +1 -0
  182. package/dist/git/git-utils.d.ts +166 -0
  183. package/dist/git/git-utils.d.ts.map +1 -0
  184. package/dist/git/git-utils.js +347 -0
  185. package/dist/git/git-utils.js.map +1 -0
  186. package/dist/git/git-worktree-manager-impl.d.ts +58 -0
  187. package/dist/git/git-worktree-manager-impl.d.ts.map +1 -0
  188. package/dist/git/git-worktree-manager-impl.js +336 -0
  189. package/dist/git/git-worktree-manager-impl.js.map +1 -0
  190. package/dist/git/git-worktree-manager.d.ts +122 -0
  191. package/dist/git/git-worktree-manager.d.ts.map +1 -0
  192. package/dist/git/git-worktree-manager.js +14 -0
  193. package/dist/git/git-worktree-manager.js.map +1 -0
  194. package/dist/git/index.d.ts +11 -0
  195. package/dist/git/index.d.ts.map +1 -0
  196. package/dist/git/index.js +8 -0
  197. package/dist/git/index.js.map +1 -0
  198. package/dist/index.d.ts +33 -0
  199. package/dist/index.d.ts.map +1 -0
  200. package/dist/index.js +47 -0
  201. package/dist/index.js.map +1 -0
  202. package/dist/llm/client.d.ts +42 -0
  203. package/dist/llm/client.d.ts.map +1 -0
  204. package/dist/llm/client.js +27 -0
  205. package/dist/llm/client.js.map +1 -0
  206. package/dist/monitor/index.d.ts +15 -0
  207. package/dist/monitor/index.d.ts.map +1 -0
  208. package/dist/monitor/index.js +9 -0
  209. package/dist/monitor/index.js.map +1 -0
  210. package/dist/monitor/monitor-agent-impl.d.ts +56 -0
  211. package/dist/monitor/monitor-agent-impl.d.ts.map +1 -0
  212. package/dist/monitor/monitor-agent-impl.js +178 -0
  213. package/dist/monitor/monitor-agent-impl.js.map +1 -0
  214. package/dist/monitor/monitor-agent.d.ts +36 -0
  215. package/dist/monitor/monitor-agent.d.ts.map +1 -0
  216. package/dist/monitor/monitor-agent.js +6 -0
  217. package/dist/monitor/monitor-agent.js.map +1 -0
  218. package/dist/monitor/performance-aggregates.d.ts +41 -0
  219. package/dist/monitor/performance-aggregates.d.ts.map +1 -0
  220. package/dist/monitor/performance-aggregates.js +6 -0
  221. package/dist/monitor/performance-aggregates.js.map +1 -0
  222. package/dist/monitor/recommendation-engine.d.ts +27 -0
  223. package/dist/monitor/recommendation-engine.d.ts.map +1 -0
  224. package/dist/monitor/recommendation-engine.js +140 -0
  225. package/dist/monitor/recommendation-engine.js.map +1 -0
  226. package/dist/monitor/recommendation-types.d.ts +30 -0
  227. package/dist/monitor/recommendation-types.d.ts.map +1 -0
  228. package/dist/monitor/recommendation-types.js +43 -0
  229. package/dist/monitor/recommendation-types.js.map +1 -0
  230. package/dist/monitor/report-generator.d.ts +48 -0
  231. package/dist/monitor/report-generator.d.ts.map +1 -0
  232. package/dist/monitor/report-generator.js +123 -0
  233. package/dist/monitor/report-generator.js.map +1 -0
  234. package/dist/monitor/task-type-classifier.d.ts +19 -0
  235. package/dist/monitor/task-type-classifier.d.ts.map +1 -0
  236. package/dist/monitor/task-type-classifier.js +68 -0
  237. package/dist/monitor/task-type-classifier.js.map +1 -0
  238. package/dist/persistence/adapter.d.ts +4 -0
  239. package/dist/persistence/adapter.d.ts.map +1 -0
  240. package/dist/persistence/adapter.js +56 -0
  241. package/dist/persistence/adapter.js.map +1 -0
  242. package/dist/persistence/cost-types.d.ts +87 -0
  243. package/dist/persistence/cost-types.d.ts.map +1 -0
  244. package/dist/persistence/cost-types.js +14 -0
  245. package/dist/persistence/cost-types.js.map +1 -0
  246. package/dist/persistence/dolt-adapter-transaction.test.d.ts +10 -0
  247. package/dist/persistence/dolt-adapter-transaction.test.d.ts.map +1 -0
  248. package/dist/persistence/dolt-adapter-transaction.test.js +359 -0
  249. package/dist/persistence/dolt-adapter-transaction.test.js.map +1 -0
  250. package/dist/persistence/dolt-adapter.d.ts +77 -0
  251. package/dist/persistence/dolt-adapter.d.ts.map +1 -0
  252. package/dist/persistence/dolt-adapter.js +98 -0
  253. package/dist/persistence/dolt-adapter.js.map +1 -0
  254. package/dist/persistence/dolt-client.d.ts +69 -0
  255. package/dist/persistence/dolt-client.d.ts.map +1 -0
  256. package/dist/persistence/dolt-client.js +278 -0
  257. package/dist/persistence/dolt-client.js.map +1 -0
  258. package/dist/persistence/dolt-errors.d.ts +10 -0
  259. package/dist/persistence/dolt-errors.d.ts.map +1 -0
  260. package/dist/persistence/dolt-errors.js +15 -0
  261. package/dist/persistence/dolt-errors.js.map +1 -0
  262. package/dist/persistence/dolt-init.d.ts +64 -0
  263. package/dist/persistence/dolt-init.d.ts.map +1 -0
  264. package/dist/persistence/dolt-init.js +233 -0
  265. package/dist/persistence/dolt-init.js.map +1 -0
  266. package/dist/persistence/index.d.ts +23 -0
  267. package/dist/persistence/index.d.ts.map +1 -0
  268. package/dist/persistence/index.js +23 -0
  269. package/dist/persistence/index.js.map +1 -0
  270. package/dist/persistence/memory-adapter.d.ts +156 -0
  271. package/dist/persistence/memory-adapter.d.ts.map +1 -0
  272. package/dist/persistence/memory-adapter.js +1167 -0
  273. package/dist/persistence/memory-adapter.js.map +1 -0
  274. package/dist/persistence/monitor-database.d.ts +113 -0
  275. package/dist/persistence/monitor-database.d.ts.map +1 -0
  276. package/dist/persistence/monitor-database.js +345 -0
  277. package/dist/persistence/monitor-database.js.map +1 -0
  278. package/dist/persistence/queries/amendments.d.ts +91 -0
  279. package/dist/persistence/queries/amendments.d.ts.map +1 -0
  280. package/dist/persistence/queries/amendments.js +185 -0
  281. package/dist/persistence/queries/amendments.js.map +1 -0
  282. package/dist/persistence/queries/cost.d.ts +130 -0
  283. package/dist/persistence/queries/cost.d.ts.map +1 -0
  284. package/dist/persistence/queries/cost.js +384 -0
  285. package/dist/persistence/queries/cost.js.map +1 -0
  286. package/dist/persistence/queries/decisions.d.ts +131 -0
  287. package/dist/persistence/queries/decisions.d.ts.map +1 -0
  288. package/dist/persistence/queries/decisions.js +339 -0
  289. package/dist/persistence/queries/decisions.js.map +1 -0
  290. package/dist/persistence/queries/metrics.d.ts +155 -0
  291. package/dist/persistence/queries/metrics.d.ts.map +1 -0
  292. package/dist/persistence/queries/metrics.js +237 -0
  293. package/dist/persistence/queries/metrics.js.map +1 -0
  294. package/dist/persistence/queries/retry-escalated.d.ts +35 -0
  295. package/dist/persistence/queries/retry-escalated.d.ts.map +1 -0
  296. package/dist/persistence/queries/retry-escalated.js +83 -0
  297. package/dist/persistence/queries/retry-escalated.js.map +1 -0
  298. package/dist/persistence/schema-version.d.ts +89 -0
  299. package/dist/persistence/schema-version.d.ts.map +1 -0
  300. package/dist/persistence/schema-version.js +67 -0
  301. package/dist/persistence/schema-version.js.map +1 -0
  302. package/dist/persistence/schema.d.ts +26 -0
  303. package/dist/persistence/schema.d.ts.map +1 -0
  304. package/dist/persistence/schema.js +509 -0
  305. package/dist/persistence/schema.js.map +1 -0
  306. package/dist/persistence/schemas/decisions.d.ts +176 -0
  307. package/dist/persistence/schemas/decisions.d.ts.map +1 -0
  308. package/dist/persistence/schemas/decisions.js +139 -0
  309. package/dist/persistence/schemas/decisions.js.map +1 -0
  310. package/dist/persistence/schemas/operational.d.ts +194 -0
  311. package/dist/persistence/schemas/operational.d.ts.map +1 -0
  312. package/dist/persistence/schemas/operational.js +197 -0
  313. package/dist/persistence/schemas/operational.js.map +1 -0
  314. package/dist/persistence/types.d.ts +98 -0
  315. package/dist/persistence/types.d.ts.map +1 -0
  316. package/dist/persistence/types.js +22 -0
  317. package/dist/persistence/types.js.map +1 -0
  318. package/dist/quality-gates/index.d.ts +2 -0
  319. package/dist/quality-gates/index.d.ts.map +1 -0
  320. package/dist/quality-gates/index.js +2 -0
  321. package/dist/quality-gates/index.js.map +1 -0
  322. package/dist/quality-gates/types.d.ts +106 -0
  323. package/dist/quality-gates/types.d.ts.map +1 -0
  324. package/dist/quality-gates/types.js +5 -0
  325. package/dist/quality-gates/types.js.map +1 -0
  326. package/dist/routing/index.d.ts +19 -0
  327. package/dist/routing/index.d.ts.map +1 -0
  328. package/dist/routing/index.js +32 -0
  329. package/dist/routing/index.js.map +1 -0
  330. package/dist/routing/model-routing-config.d.ts +75 -0
  331. package/dist/routing/model-routing-config.d.ts.map +1 -0
  332. package/dist/routing/model-routing-config.js +110 -0
  333. package/dist/routing/model-routing-config.js.map +1 -0
  334. package/dist/routing/model-routing-resolver.d.ts +48 -0
  335. package/dist/routing/model-routing-resolver.d.ts.map +1 -0
  336. package/dist/routing/model-routing-resolver.js +105 -0
  337. package/dist/routing/model-routing-resolver.js.map +1 -0
  338. package/dist/routing/model-tier.d.ts +21 -0
  339. package/dist/routing/model-tier.d.ts.map +1 -0
  340. package/dist/routing/model-tier.js +34 -0
  341. package/dist/routing/model-tier.js.map +1 -0
  342. package/dist/routing/provider-status.d.ts +99 -0
  343. package/dist/routing/provider-status.d.ts.map +1 -0
  344. package/dist/routing/provider-status.js +163 -0
  345. package/dist/routing/provider-status.js.map +1 -0
  346. package/dist/routing/routing-decision.d.ts +127 -0
  347. package/dist/routing/routing-decision.d.ts.map +1 -0
  348. package/dist/routing/routing-decision.js +111 -0
  349. package/dist/routing/routing-decision.js.map +1 -0
  350. package/dist/routing/routing-engine-impl.d.ts +132 -0
  351. package/dist/routing/routing-engine-impl.d.ts.map +1 -0
  352. package/dist/routing/routing-engine-impl.js +450 -0
  353. package/dist/routing/routing-engine-impl.js.map +1 -0
  354. package/dist/routing/routing-engine.d.ts +83 -0
  355. package/dist/routing/routing-engine.d.ts.map +1 -0
  356. package/dist/routing/routing-engine.js +24 -0
  357. package/dist/routing/routing-engine.js.map +1 -0
  358. package/dist/routing/routing-policy.d.ts +138 -0
  359. package/dist/routing/routing-policy.d.ts.map +1 -0
  360. package/dist/routing/routing-policy.js +159 -0
  361. package/dist/routing/routing-policy.js.map +1 -0
  362. package/dist/routing/routing-recommender.d.ts +60 -0
  363. package/dist/routing/routing-recommender.d.ts.map +1 -0
  364. package/dist/routing/routing-recommender.js +209 -0
  365. package/dist/routing/routing-recommender.js.map +1 -0
  366. package/dist/routing/routing-telemetry.d.ts +36 -0
  367. package/dist/routing/routing-telemetry.d.ts.map +1 -0
  368. package/dist/routing/routing-telemetry.js +39 -0
  369. package/dist/routing/routing-telemetry.js.map +1 -0
  370. package/dist/routing/routing-token-accumulator.d.ts +68 -0
  371. package/dist/routing/routing-token-accumulator.d.ts.map +1 -0
  372. package/dist/routing/routing-token-accumulator.js +111 -0
  373. package/dist/routing/routing-token-accumulator.js.map +1 -0
  374. package/dist/routing/routing-tuner.d.ts +69 -0
  375. package/dist/routing/routing-tuner.d.ts.map +1 -0
  376. package/dist/routing/routing-tuner.js +217 -0
  377. package/dist/routing/routing-tuner.js.map +1 -0
  378. package/dist/routing/types.d.ts +152 -0
  379. package/dist/routing/types.d.ts.map +1 -0
  380. package/dist/routing/types.js +13 -0
  381. package/dist/routing/types.js.map +1 -0
  382. package/dist/supervisor/analysis.d.ts +178 -0
  383. package/dist/supervisor/analysis.d.ts.map +1 -0
  384. package/dist/supervisor/analysis.js +420 -0
  385. package/dist/supervisor/analysis.js.map +1 -0
  386. package/dist/supervisor/experimenter.d.ts +118 -0
  387. package/dist/supervisor/experimenter.d.ts.map +1 -0
  388. package/dist/supervisor/experimenter.js +493 -0
  389. package/dist/supervisor/experimenter.js.map +1 -0
  390. package/dist/supervisor/index.d.ts +13 -0
  391. package/dist/supervisor/index.d.ts.map +1 -0
  392. package/dist/supervisor/index.js +11 -0
  393. package/dist/supervisor/index.js.map +1 -0
  394. package/dist/telemetry/batch-buffer.d.ts +53 -0
  395. package/dist/telemetry/batch-buffer.d.ts.map +1 -0
  396. package/dist/telemetry/batch-buffer.js +83 -0
  397. package/dist/telemetry/batch-buffer.js.map +1 -0
  398. package/dist/telemetry/categorizer.d.ts +65 -0
  399. package/dist/telemetry/categorizer.d.ts.map +1 -0
  400. package/dist/telemetry/categorizer.js +338 -0
  401. package/dist/telemetry/categorizer.js.map +1 -0
  402. package/dist/telemetry/consumer-analyzer.d.ts +53 -0
  403. package/dist/telemetry/consumer-analyzer.d.ts.map +1 -0
  404. package/dist/telemetry/consumer-analyzer.js +182 -0
  405. package/dist/telemetry/consumer-analyzer.js.map +1 -0
  406. package/dist/telemetry/cost-table.d.ts +36 -0
  407. package/dist/telemetry/cost-table.d.ts.map +1 -0
  408. package/dist/telemetry/cost-table.js +127 -0
  409. package/dist/telemetry/cost-table.js.map +1 -0
  410. package/dist/telemetry/efficiency-scorer.d.ts +103 -0
  411. package/dist/telemetry/efficiency-scorer.d.ts.map +1 -0
  412. package/dist/telemetry/efficiency-scorer.js +311 -0
  413. package/dist/telemetry/efficiency-scorer.js.map +1 -0
  414. package/dist/telemetry/index.d.ts +28 -0
  415. package/dist/telemetry/index.d.ts.map +1 -0
  416. package/dist/telemetry/index.js +37 -0
  417. package/dist/telemetry/index.js.map +1 -0
  418. package/dist/telemetry/ingestion-server.d.ts +99 -0
  419. package/dist/telemetry/ingestion-server.d.ts.map +1 -0
  420. package/dist/telemetry/ingestion-server.js +315 -0
  421. package/dist/telemetry/ingestion-server.js.map +1 -0
  422. package/dist/telemetry/log-turn-analyzer.d.ts +35 -0
  423. package/dist/telemetry/log-turn-analyzer.d.ts.map +1 -0
  424. package/dist/telemetry/log-turn-analyzer.js +132 -0
  425. package/dist/telemetry/log-turn-analyzer.js.map +1 -0
  426. package/dist/telemetry/normalizer.d.ts +43 -0
  427. package/dist/telemetry/normalizer.d.ts.map +1 -0
  428. package/dist/telemetry/normalizer.js +320 -0
  429. package/dist/telemetry/normalizer.js.map +1 -0
  430. package/dist/telemetry/recommender.d.ts +116 -0
  431. package/dist/telemetry/recommender.d.ts.map +1 -0
  432. package/dist/telemetry/recommender.js +532 -0
  433. package/dist/telemetry/recommender.js.map +1 -0
  434. package/dist/telemetry/source-detector.d.ts +19 -0
  435. package/dist/telemetry/source-detector.d.ts.map +1 -0
  436. package/dist/telemetry/source-detector.js +73 -0
  437. package/dist/telemetry/source-detector.js.map +1 -0
  438. package/dist/telemetry/task-baselines.d.ts +30 -0
  439. package/dist/telemetry/task-baselines.d.ts.map +1 -0
  440. package/dist/telemetry/task-baselines.js +44 -0
  441. package/dist/telemetry/task-baselines.js.map +1 -0
  442. package/dist/telemetry/telemetry-pipeline.d.ts +122 -0
  443. package/dist/telemetry/telemetry-pipeline.d.ts.map +1 -0
  444. package/dist/telemetry/telemetry-pipeline.js +349 -0
  445. package/dist/telemetry/telemetry-pipeline.js.map +1 -0
  446. package/dist/telemetry/timestamp-normalizer.d.ts +32 -0
  447. package/dist/telemetry/timestamp-normalizer.d.ts.map +1 -0
  448. package/dist/telemetry/timestamp-normalizer.js +133 -0
  449. package/dist/telemetry/timestamp-normalizer.js.map +1 -0
  450. package/dist/telemetry/token-extractor.d.ts +57 -0
  451. package/dist/telemetry/token-extractor.d.ts.map +1 -0
  452. package/dist/telemetry/token-extractor.js +200 -0
  453. package/dist/telemetry/token-extractor.js.map +1 -0
  454. package/dist/telemetry/turn-analyzer.d.ts +34 -0
  455. package/dist/telemetry/turn-analyzer.d.ts.map +1 -0
  456. package/dist/telemetry/turn-analyzer.js +101 -0
  457. package/dist/telemetry/turn-analyzer.js.map +1 -0
  458. package/dist/telemetry/types.d.ts +456 -0
  459. package/dist/telemetry/types.d.ts.map +1 -0
  460. package/dist/telemetry/types.js +186 -0
  461. package/dist/telemetry/types.js.map +1 -0
  462. package/dist/types.d.ts +80 -0
  463. package/dist/types.d.ts.map +1 -0
  464. package/dist/types.js +6 -0
  465. package/dist/types.js.map +1 -0
  466. package/dist/version-manager/index.d.ts +11 -0
  467. package/dist/version-manager/index.d.ts.map +1 -0
  468. package/dist/version-manager/index.js +8 -0
  469. package/dist/version-manager/index.js.map +1 -0
  470. package/dist/version-manager/update-checker.d.ts +44 -0
  471. package/dist/version-manager/update-checker.d.ts.map +1 -0
  472. package/dist/version-manager/update-checker.js +171 -0
  473. package/dist/version-manager/update-checker.js.map +1 -0
  474. package/dist/version-manager/version-cache.d.ts +42 -0
  475. package/dist/version-manager/version-cache.d.ts.map +1 -0
  476. package/dist/version-manager/version-cache.js +69 -0
  477. package/dist/version-manager/version-cache.js.map +1 -0
  478. package/dist/version-manager/version-manager-impl.d.ts +81 -0
  479. package/dist/version-manager/version-manager-impl.d.ts.map +1 -0
  480. package/dist/version-manager/version-manager-impl.js +223 -0
  481. package/dist/version-manager/version-manager-impl.js.map +1 -0
  482. package/dist/version-manager/version-manager.d.ts +70 -0
  483. package/dist/version-manager/version-manager.d.ts.map +1 -0
  484. package/dist/version-manager/version-manager.js +8 -0
  485. package/dist/version-manager/version-manager.js.map +1 -0
  486. package/package.json +27 -0
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Amendment query functions for the persistence layer.
3
+ *
4
+ * Provides operations specific to the amendment workflow:
5
+ * - Creating amendment runs (validated against parent run status)
6
+ * - Loading parent run decisions (active decisions only)
7
+ * - Superseding decisions (with 3 error conditions)
8
+ * - Querying active decisions with optional filtering
9
+ * - Traversing the amendment run chain
10
+ * - Finding the latest completed run
11
+ *
12
+ * All functions are async and accept a DatabaseAdapter, making them
13
+ * compatible with both the SqliteDatabaseAdapter and DoltDatabaseAdapter.
14
+ */
15
+ import type { DatabaseAdapter } from '../types.js';
16
+ import type { Decision, PipelineRun } from '../schemas/decisions.js';
17
+ export interface CreateAmendmentRunInput {
18
+ id: string;
19
+ parentRunId: string;
20
+ methodology: string;
21
+ configJson?: string;
22
+ }
23
+ export interface ActiveDecisionsFilter {
24
+ pipeline_run_id?: string;
25
+ phase?: string;
26
+ category?: string;
27
+ key?: string;
28
+ }
29
+ export interface SupersessionEvent {
30
+ originalDecisionId: string;
31
+ supersedingDecisionId: string;
32
+ supersededAt: string;
33
+ }
34
+ export interface AmendmentChainEntry {
35
+ runId: string;
36
+ parentRunId: string | null;
37
+ status: string;
38
+ createdAt: string;
39
+ depth: number;
40
+ }
41
+ /**
42
+ * Create a new amendment run that references a completed parent run.
43
+ *
44
+ * Validates that the parent run exists and has status = 'completed'.
45
+ * Throws if the parent run is not found or not completed.
46
+ * Returns the new run's ID on success.
47
+ */
48
+ export declare function createAmendmentRun(adapter: DatabaseAdapter, input: CreateAmendmentRunInput): Promise<string>;
49
+ /**
50
+ * Load active (non-superseded) decisions for a given parent run.
51
+ *
52
+ * Returns decisions WHERE superseded_by IS NULL for the specified run,
53
+ * ordered by created_at ASC.
54
+ */
55
+ export declare function loadParentRunDecisions(adapter: DatabaseAdapter, parentRunId: string): Promise<Decision[]>;
56
+ /**
57
+ * Mark a decision as superseded by another decision.
58
+ *
59
+ * Error conditions:
60
+ * 1. originalDecisionId does not exist → throws "Decision not found: <id>"
61
+ * 2. supersedingDecisionId does not exist → throws "Superseding decision not found: <id>"
62
+ * 3. originalDecisionId.superseded_by IS NOT NULL → throws "Decision <id> is already superseded"
63
+ *
64
+ * On success, updates the original decision's superseded_by field.
65
+ */
66
+ export declare function supersedeDecision(adapter: DatabaseAdapter, originalDecisionId: string, supersedingDecisionId: string): Promise<void>;
67
+ /**
68
+ * Get all active (non-superseded) decisions, with optional filtering.
69
+ *
70
+ * Supports filtering by pipeline_run_id, phase, category, and/or key.
71
+ * If no filter is provided, returns all active decisions across all runs.
72
+ * Results are ordered by created_at ASC.
73
+ */
74
+ export declare function getActiveDecisions(adapter: DatabaseAdapter, filter?: ActiveDecisionsFilter): Promise<Decision[]>;
75
+ /**
76
+ * Traverse the parent_run_id chain starting from runId and return the chain
77
+ * from root (oldest ancestor) to the given run.
78
+ *
79
+ * Throws if the chain depth exceeds maxDepth (default: 10) to guard against
80
+ * circular references.
81
+ *
82
+ * Returns an array of AmendmentChainEntry objects ordered root → current,
83
+ * with depth 0 at the root.
84
+ */
85
+ export declare function getAmendmentRunChain(adapter: DatabaseAdapter, runId: string, maxDepth?: number): Promise<AmendmentChainEntry[]>;
86
+ /**
87
+ * Get the most recently created pipeline run with status = 'completed'.
88
+ * Returns undefined if no completed run exists.
89
+ */
90
+ export declare function getLatestCompletedRun(adapter: DatabaseAdapter): Promise<PipelineRun | undefined>;
91
+ //# sourceMappingURL=amendments.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"amendments.d.ts","sourceRoot":"","sources":["../../../src/persistence/queries/amendments.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAMpE,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,MAAM,CAAA;IACV,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,qBAAqB;IACpC,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,iBAAiB;IAChC,kBAAkB,EAAE,MAAM,CAAA;IAC1B,qBAAqB,EAAE,MAAM,CAAA;IAC7B,YAAY,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;CACd;AAMD;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,MAAM,CAAC,CAiClH;AAMD;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAO/G;AAMD;;;;;;;;;GASG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,eAAe,EACxB,kBAAkB,EAAE,MAAM,EAC1B,qBAAqB,EAAE,MAAM,GAC5B,OAAO,CAAC,IAAI,CAAC,CAiCf;AAMD;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,eAAe,EAAE,MAAM,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CA0BtH;AAMD;;;;;;;;;GASG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,eAAe,EACxB,KAAK,EAAE,MAAM,EACb,QAAQ,GAAE,MAAW,GACpB,OAAO,CAAC,mBAAmB,EAAE,CAAC,CA+ChC;AAMD;;;GAGG;AACH,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAQtG"}
@@ -0,0 +1,185 @@
1
+ /**
2
+ * Amendment query functions for the persistence layer.
3
+ *
4
+ * Provides operations specific to the amendment workflow:
5
+ * - Creating amendment runs (validated against parent run status)
6
+ * - Loading parent run decisions (active decisions only)
7
+ * - Superseding decisions (with 3 error conditions)
8
+ * - Querying active decisions with optional filtering
9
+ * - Traversing the amendment run chain
10
+ * - Finding the latest completed run
11
+ *
12
+ * All functions are async and accept a DatabaseAdapter, making them
13
+ * compatible with both the SqliteDatabaseAdapter and DoltDatabaseAdapter.
14
+ */
15
+ // ---------------------------------------------------------------------------
16
+ // createAmendmentRun
17
+ // ---------------------------------------------------------------------------
18
+ /**
19
+ * Create a new amendment run that references a completed parent run.
20
+ *
21
+ * Validates that the parent run exists and has status = 'completed'.
22
+ * Throws if the parent run is not found or not completed.
23
+ * Returns the new run's ID on success.
24
+ */
25
+ export async function createAmendmentRun(adapter, input) {
26
+ // Validate parent run exists and is completed
27
+ const rows = await adapter.query('SELECT id, status FROM pipeline_runs WHERE id = ?', [input.parentRunId]);
28
+ const parentRun = rows[0];
29
+ if (!parentRun) {
30
+ throw new Error(`Parent run not found: ${input.parentRunId}`);
31
+ }
32
+ if (parentRun.status !== 'completed') {
33
+ throw new Error(`Parent run is not completed (status: ${parentRun.status}). Only completed runs can be amended.`);
34
+ }
35
+ // Insert new amendment run with parent_run_id set
36
+ await adapter.query(`INSERT INTO pipeline_runs (id, methodology, current_phase, status, config_json, parent_run_id, created_at, updated_at)
37
+ VALUES (?, ?, NULL, 'running', ?, ?, ?, ?)`, [
38
+ input.id,
39
+ input.methodology,
40
+ input.configJson ?? null,
41
+ input.parentRunId,
42
+ new Date().toISOString(),
43
+ new Date().toISOString(),
44
+ ]);
45
+ return input.id;
46
+ }
47
+ // ---------------------------------------------------------------------------
48
+ // loadParentRunDecisions
49
+ // ---------------------------------------------------------------------------
50
+ /**
51
+ * Load active (non-superseded) decisions for a given parent run.
52
+ *
53
+ * Returns decisions WHERE superseded_by IS NULL for the specified run,
54
+ * ordered by created_at ASC.
55
+ */
56
+ export async function loadParentRunDecisions(adapter, parentRunId) {
57
+ return adapter.query(`SELECT * FROM decisions
58
+ WHERE pipeline_run_id = ? AND superseded_by IS NULL
59
+ ORDER BY created_at ASC`, [parentRunId]);
60
+ }
61
+ // ---------------------------------------------------------------------------
62
+ // supersedeDecision
63
+ // ---------------------------------------------------------------------------
64
+ /**
65
+ * Mark a decision as superseded by another decision.
66
+ *
67
+ * Error conditions:
68
+ * 1. originalDecisionId does not exist → throws "Decision not found: <id>"
69
+ * 2. supersedingDecisionId does not exist → throws "Superseding decision not found: <id>"
70
+ * 3. originalDecisionId.superseded_by IS NOT NULL → throws "Decision <id> is already superseded"
71
+ *
72
+ * On success, updates the original decision's superseded_by field.
73
+ */
74
+ export async function supersedeDecision(adapter, originalDecisionId, supersedingDecisionId) {
75
+ // Check original decision exists
76
+ const origRows = await adapter.query('SELECT id, superseded_by FROM decisions WHERE id = ?', [originalDecisionId]);
77
+ const original = origRows[0];
78
+ if (!original) {
79
+ throw new Error(`Decision not found: ${originalDecisionId}`);
80
+ }
81
+ // Check superseding decision exists
82
+ const superRows = await adapter.query('SELECT id FROM decisions WHERE id = ?', [supersedingDecisionId]);
83
+ const superseding = superRows[0];
84
+ if (!superseding) {
85
+ throw new Error(`Superseding decision not found: ${supersedingDecisionId}`);
86
+ }
87
+ // Check original is not already superseded
88
+ if (original.superseded_by !== null) {
89
+ throw new Error(`Decision ${originalDecisionId} is already superseded`);
90
+ }
91
+ // Perform the update
92
+ await adapter.query('UPDATE decisions SET superseded_by = ?, updated_at = ? WHERE id = ?', [supersedingDecisionId, new Date().toISOString(), originalDecisionId]);
93
+ }
94
+ // ---------------------------------------------------------------------------
95
+ // getActiveDecisions
96
+ // ---------------------------------------------------------------------------
97
+ /**
98
+ * Get all active (non-superseded) decisions, with optional filtering.
99
+ *
100
+ * Supports filtering by pipeline_run_id, phase, category, and/or key.
101
+ * If no filter is provided, returns all active decisions across all runs.
102
+ * Results are ordered by created_at ASC.
103
+ */
104
+ export async function getActiveDecisions(adapter, filter) {
105
+ const conditions = ['superseded_by IS NULL'];
106
+ const values = [];
107
+ if (filter?.pipeline_run_id !== undefined) {
108
+ conditions.push('pipeline_run_id = ?');
109
+ values.push(filter.pipeline_run_id);
110
+ }
111
+ if (filter?.phase !== undefined) {
112
+ conditions.push('phase = ?');
113
+ values.push(filter.phase);
114
+ }
115
+ if (filter?.category !== undefined) {
116
+ conditions.push('category = ?');
117
+ values.push(filter.category);
118
+ }
119
+ if (filter?.key !== undefined) {
120
+ conditions.push('`key` = ?');
121
+ values.push(filter.key);
122
+ }
123
+ const where = `WHERE ${conditions.join(' AND ')}`;
124
+ return adapter.query(`SELECT * FROM decisions ${where} ORDER BY created_at ASC`, values);
125
+ }
126
+ // ---------------------------------------------------------------------------
127
+ // getAmendmentRunChain
128
+ // ---------------------------------------------------------------------------
129
+ /**
130
+ * Traverse the parent_run_id chain starting from runId and return the chain
131
+ * from root (oldest ancestor) to the given run.
132
+ *
133
+ * Throws if the chain depth exceeds maxDepth (default: 10) to guard against
134
+ * circular references.
135
+ *
136
+ * Returns an array of AmendmentChainEntry objects ordered root → current,
137
+ * with depth 0 at the root.
138
+ */
139
+ export async function getAmendmentRunChain(adapter, runId, maxDepth = 10) {
140
+ const chain = [];
141
+ let currentId = runId;
142
+ let depth = 0;
143
+ while (currentId !== null) {
144
+ if (depth > maxDepth) {
145
+ throw new Error(`Amendment chain depth exceeded maxDepth (${maxDepth}). Possible circular reference.`);
146
+ }
147
+ const rows = await adapter.query('SELECT id, parent_run_id, status, created_at FROM pipeline_runs WHERE id = ?', [currentId]);
148
+ const row = rows[0];
149
+ if (!row)
150
+ break;
151
+ chain.unshift({
152
+ runId: row.id,
153
+ parentRunId: row.parent_run_id,
154
+ status: row.status,
155
+ createdAt: row.created_at,
156
+ depth,
157
+ });
158
+ currentId = row.parent_run_id;
159
+ depth++;
160
+ }
161
+ // Re-assign depth values so root = 0, working down to the original runId
162
+ // The chain is already in root-first order (unshift builds it that way).
163
+ // But depth was assigned as the traversal depth from the given run,
164
+ // so the last element has depth 0 (the start runId) and the first has
165
+ // the highest depth. We need to reassign so root (index 0) = depth 0.
166
+ for (const [i, item] of chain.entries()) {
167
+ item.depth = i;
168
+ }
169
+ return chain;
170
+ }
171
+ // ---------------------------------------------------------------------------
172
+ // getLatestCompletedRun
173
+ // ---------------------------------------------------------------------------
174
+ /**
175
+ * Get the most recently created pipeline run with status = 'completed'.
176
+ * Returns undefined if no completed run exists.
177
+ */
178
+ export async function getLatestCompletedRun(adapter) {
179
+ const rows = await adapter.query(`SELECT * FROM pipeline_runs
180
+ WHERE status = 'completed'
181
+ ORDER BY created_at DESC, id DESC
182
+ LIMIT 1`);
183
+ return rows[0];
184
+ }
185
+ //# sourceMappingURL=amendments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"amendments.js","sourceRoot":"","sources":["../../../src/persistence/queries/amendments.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,130 @@
1
+ /**
2
+ * Cost query functions for the persistence layer.
3
+ *
4
+ * Provides read and write access to the cost_entries table.
5
+ * All queries use indexed columns to meet NFR2 (<100ms response time).
6
+ *
7
+ * Indexes available (from migrations 001 + 002):
8
+ * - idx_cost_session : (session_id)
9
+ * - idx_cost_task : (task_id)
10
+ * - idx_cost_category : (category)
11
+ * - idx_cost_entries_session_task : (session_id, task_id)
12
+ * - idx_cost_entries_provider : (provider)
13
+ * - idx_cost_session_agent : (session_id, agent) — getAgentCostBreakdown
14
+ * - idx_cost_agent : (agent)
15
+ *
16
+ * All functions are async and accept a DatabaseAdapter, making them
17
+ * compatible with both the SqliteDatabaseAdapter and DoltDatabaseAdapter.
18
+ * Prepared statement caching has been removed — adapter handles statement
19
+ * lifecycle internally.
20
+ */
21
+ import type { DatabaseAdapter } from '../types.js';
22
+ import type { CostEntry, SessionCostSummary, TaskCostSummary, AgentCostBreakdown } from '../cost-types.js';
23
+ export type CreateCostEntryInput = Omit<CostEntry, 'id' | 'created_at'>;
24
+ /**
25
+ * Insert a new cost entry record.
26
+ *
27
+ * Maps from the CostEntry interface to the cost_entries table schema.
28
+ * Returns the DB-assigned autoincrement id.
29
+ *
30
+ * Uses SELECT MAX(id) instead of last_insert_rowid() / LAST_INSERT_ID()
31
+ * for portability across both SQLite and MySQL/Dolt backends.
32
+ */
33
+ export declare function recordCostEntry(adapter: DatabaseAdapter, entry: CreateCostEntryInput): Promise<number>;
34
+ /**
35
+ * Retrieve a single cost entry by its DB-assigned id.
36
+ *
37
+ * Returns null if no row is found for the given id.
38
+ */
39
+ export declare function getCostEntryById(adapter: DatabaseAdapter, id: number): Promise<CostEntry | null>;
40
+ /**
41
+ * Atomically increment a task's cumulative cost_usd field.
42
+ *
43
+ * Uses a single UPDATE with arithmetic to avoid race conditions.
44
+ */
45
+ export declare function incrementTaskCost(adapter: DatabaseAdapter, taskId: string, costDelta: number): Promise<void>;
46
+ /**
47
+ * Return aggregated cost totals for a session (AC2).
48
+ *
49
+ * Returns a SessionCostSummary with subscription/API breakdown and savings.
50
+ * Uses idx_cost_entries_session_task index.
51
+ */
52
+ export declare function getSessionCostSummary(adapter: DatabaseAdapter, sessionId: string): Promise<SessionCostSummary>;
53
+ /**
54
+ * Return aggregated cost totals for a session, optionally excluding planning entries.
55
+ *
56
+ * When includePlanning=false (the default for `substrate cost`), entries with
57
+ * category='planning' are excluded from the summary.
58
+ *
59
+ * This is the variant used by the Cost Report CLI command (story 4.4) to support
60
+ * the --include-planning flag.
61
+ *
62
+ * Uses idx_cost_entries_session_task index.
63
+ */
64
+ export declare function getSessionCostSummaryFiltered(adapter: DatabaseAdapter, sessionId: string, includePlanning: boolean): Promise<SessionCostSummary>;
65
+ /**
66
+ * Return aggregated cost data for a single task (AC1).
67
+ *
68
+ * Uses idx_cost_task index.
69
+ */
70
+ export declare function getTaskCostSummary(adapter: DatabaseAdapter, taskId: string): Promise<TaskCostSummary>;
71
+ /**
72
+ * Return cost breakdown for a specific agent within a session.
73
+ *
74
+ * Uses idx_cost_session index (session_id filter) + agent filter.
75
+ */
76
+ export declare function getAgentCostBreakdown(adapter: DatabaseAdapter, sessionId: string, agent: string): Promise<AgentCostBreakdown>;
77
+ /**
78
+ * Return all cost entries for a session, ordered by timestamp descending.
79
+ *
80
+ * Supports optional pagination via limit.
81
+ * Uses idx_cost_entries_session_task index.
82
+ */
83
+ export declare function getAllCostEntries(adapter: DatabaseAdapter, sessionId: string, limit?: number): Promise<CostEntry[]>;
84
+ /**
85
+ * Return all cost entries for a session, optionally excluding planning entries.
86
+ *
87
+ * When `includePlanning` is false, entries with `category = 'planning'` are
88
+ * excluded from the result set. This supports the `--include-planning` flag
89
+ * in the Cost Report CLI command (story 4.4).
90
+ *
91
+ * Uses idx_cost_entries_session_task index.
92
+ */
93
+ export declare function getAllCostEntriesFiltered(adapter: DatabaseAdapter, sessionId: string, includePlanning: boolean): Promise<CostEntry[]>;
94
+ /**
95
+ * Return the total cost of planning entries for a session.
96
+ *
97
+ * Used by the Cost Report CLI command to show excluded planning costs
98
+ * without requiring a second full summary query.
99
+ *
100
+ * Uses idx_cost_category index.
101
+ */
102
+ export declare function getPlanningCostTotal(adapter: DatabaseAdapter, sessionId: string): Promise<number>;
103
+ /** @deprecated Use recordCostEntry instead */
104
+ export type LegacyCostEntryInput = {
105
+ session_id: string;
106
+ task_id?: string | null;
107
+ agent: string;
108
+ billing_mode: string;
109
+ category?: string;
110
+ input_tokens?: number;
111
+ output_tokens?: number;
112
+ estimated_cost?: number;
113
+ actual_cost?: number | null;
114
+ model?: string | null;
115
+ };
116
+ /** @deprecated Use getSessionCostSummary instead */
117
+ export declare function getSessionCost(adapter: DatabaseAdapter, sessionId: string): Promise<{
118
+ total_cost: number;
119
+ total_input_tokens: number;
120
+ total_output_tokens: number;
121
+ entry_count: number;
122
+ }>;
123
+ /** @deprecated Use getTaskCostSummary instead */
124
+ export declare function getTaskCost(adapter: DatabaseAdapter, taskId: string): Promise<{
125
+ total_cost: number;
126
+ total_input_tokens: number;
127
+ total_output_tokens: number;
128
+ entry_count: number;
129
+ }>;
130
+ //# sourceMappingURL=cost.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cost.d.ts","sourceRoot":"","sources":["../../../src/persistence/queries/cost.ts"],"names":[],"mappings":"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"}