@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,384 @@
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
+ // ---------------------------------------------------------------------------
22
+ // Write functions
23
+ // ---------------------------------------------------------------------------
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 async function recordCostEntry(adapter, entry) {
34
+ await adapter.query(`INSERT INTO cost_entries (
35
+ session_id, task_id, agent, billing_mode, category,
36
+ input_tokens, output_tokens, estimated_cost, actual_cost, model,
37
+ provider, savings_usd
38
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, [
39
+ entry.session_id,
40
+ entry.task_id,
41
+ entry.agent,
42
+ entry.billing_mode,
43
+ 'execution',
44
+ entry.tokens_input,
45
+ entry.tokens_output,
46
+ entry.cost_usd,
47
+ null,
48
+ entry.model,
49
+ entry.provider,
50
+ entry.savings_usd,
51
+ ]);
52
+ const idRows = await adapter.query('SELECT MAX(id) AS id FROM cost_entries');
53
+ return idRows[0]?.id ?? 0;
54
+ }
55
+ /**
56
+ * Retrieve a single cost entry by its DB-assigned id.
57
+ *
58
+ * Returns null if no row is found for the given id.
59
+ */
60
+ export async function getCostEntryById(adapter, id) {
61
+ const rows = await adapter.query('SELECT * FROM cost_entries WHERE id = ?', [id]);
62
+ const row = rows[0];
63
+ if (row == null) {
64
+ return null;
65
+ }
66
+ return {
67
+ id: row.id,
68
+ session_id: row.session_id,
69
+ task_id: row.task_id,
70
+ agent: row.agent,
71
+ provider: row.provider ?? 'unknown',
72
+ model: row.model ?? 'unknown',
73
+ billing_mode: row.billing_mode ?? 'api',
74
+ tokens_input: row.input_tokens,
75
+ tokens_output: row.output_tokens,
76
+ cost_usd: row.actual_cost ?? row.estimated_cost,
77
+ savings_usd: row.savings_usd ?? 0,
78
+ created_at: row.timestamp,
79
+ };
80
+ }
81
+ /**
82
+ * Atomically increment a task's cumulative cost_usd field.
83
+ *
84
+ * Uses a single UPDATE with arithmetic to avoid race conditions.
85
+ */
86
+ export async function incrementTaskCost(adapter, taskId, costDelta) {
87
+ await adapter.query('UPDATE tasks SET cost_usd = cost_usd + ?, updated_at = ? WHERE id = ?', [costDelta, new Date().toISOString(), taskId]);
88
+ }
89
+ // ---------------------------------------------------------------------------
90
+ // Read functions (AC6 — all use indexed columns)
91
+ // ---------------------------------------------------------------------------
92
+ /**
93
+ * Return aggregated cost totals for a session (AC2).
94
+ *
95
+ * Returns a SessionCostSummary with subscription/API breakdown and savings.
96
+ * Uses idx_cost_entries_session_task index.
97
+ */
98
+ export async function getSessionCostSummary(adapter, sessionId) {
99
+ // Aggregate totals including the earliest recorded_at timestamp
100
+ const totalsRows = await adapter.query(`SELECT
101
+ COALESCE(SUM(estimated_cost), 0) AS total_cost_usd,
102
+ COALESCE(SUM(CASE WHEN billing_mode = 'subscription' THEN COALESCE(estimated_cost, 0) ELSE 0 END), 0) AS subscription_cost_usd,
103
+ COALESCE(SUM(CASE WHEN billing_mode = 'api' THEN COALESCE(estimated_cost, 0) ELSE 0 END), 0) AS api_cost_usd,
104
+ COALESCE(SUM(savings_usd), 0) AS savings_usd,
105
+ COUNT(*) AS task_count,
106
+ SUM(CASE WHEN billing_mode = 'subscription' THEN 1 ELSE 0 END) AS subscription_task_count,
107
+ SUM(CASE WHEN billing_mode = 'api' THEN 1 ELSE 0 END) AS api_task_count,
108
+ MIN(timestamp) AS earliest_recorded_at
109
+ FROM cost_entries
110
+ WHERE session_id = ?`, [sessionId]);
111
+ const totalsRow = totalsRows[0];
112
+ if (totalsRow === undefined)
113
+ throw new Error('getSessionCostSummary: aggregate query returned no rows');
114
+ // Per-agent breakdown
115
+ const agentRows = await adapter.query(`SELECT
116
+ agent,
117
+ COUNT(*) AS task_count,
118
+ COALESCE(SUM(estimated_cost), 0) AS cost_usd,
119
+ COALESCE(SUM(savings_usd), 0) AS savings_usd,
120
+ SUM(CASE WHEN billing_mode = 'subscription' THEN 1 ELSE 0 END) AS subscription_tasks,
121
+ SUM(CASE WHEN billing_mode = 'api' THEN 1 ELSE 0 END) AS api_tasks
122
+ FROM cost_entries
123
+ WHERE session_id = ?
124
+ GROUP BY agent
125
+ ORDER BY cost_usd DESC`, [sessionId]);
126
+ const perAgentBreakdown = agentRows.map((row) => ({
127
+ agent: row.agent,
128
+ task_count: row.task_count,
129
+ cost_usd: row.cost_usd,
130
+ savings_usd: row.savings_usd,
131
+ subscription_tasks: row.subscription_tasks,
132
+ api_tasks: row.api_tasks,
133
+ }));
134
+ const savingsUsd = totalsRow.savings_usd;
135
+ const subscriptionTaskCount = totalsRow.subscription_task_count;
136
+ const savingsSummary = savingsUsd > 0
137
+ ? `Saved ~$${savingsUsd.toFixed(2)} by routing ${subscriptionTaskCount} task${subscriptionTaskCount === 1 ? '' : 's'} through subscriptions vs. equivalent API pricing`
138
+ : 'No subscription savings recorded this session';
139
+ return {
140
+ session_id: sessionId,
141
+ total_cost_usd: totalsRow.total_cost_usd,
142
+ subscription_cost_usd: totalsRow.subscription_cost_usd,
143
+ api_cost_usd: totalsRow.api_cost_usd,
144
+ savings_usd: savingsUsd,
145
+ savingsSummary,
146
+ per_agent_breakdown: perAgentBreakdown,
147
+ task_count: totalsRow.task_count,
148
+ subscription_task_count: subscriptionTaskCount,
149
+ api_task_count: totalsRow.api_task_count,
150
+ created_at: totalsRow.earliest_recorded_at ?? new Date().toISOString(),
151
+ };
152
+ }
153
+ /**
154
+ * Return aggregated cost totals for a session, optionally excluding planning entries.
155
+ *
156
+ * When includePlanning=false (the default for `substrate cost`), entries with
157
+ * category='planning' are excluded from the summary.
158
+ *
159
+ * This is the variant used by the Cost Report CLI command (story 4.4) to support
160
+ * the --include-planning flag.
161
+ *
162
+ * Uses idx_cost_entries_session_task index.
163
+ */
164
+ export async function getSessionCostSummaryFiltered(adapter, sessionId, includePlanning) {
165
+ const categoryFilter = includePlanning ? '' : "AND category != 'planning'";
166
+ const totalsRows = await adapter.query(`SELECT
167
+ COALESCE(SUM(estimated_cost), 0) AS total_cost_usd,
168
+ COALESCE(SUM(CASE WHEN billing_mode = 'subscription' THEN COALESCE(estimated_cost, 0) ELSE 0 END), 0) AS subscription_cost_usd,
169
+ COALESCE(SUM(CASE WHEN billing_mode = 'api' THEN COALESCE(estimated_cost, 0) ELSE 0 END), 0) AS api_cost_usd,
170
+ COALESCE(SUM(savings_usd), 0) AS savings_usd,
171
+ COUNT(*) AS task_count,
172
+ SUM(CASE WHEN billing_mode = 'subscription' THEN 1 ELSE 0 END) AS subscription_task_count,
173
+ SUM(CASE WHEN billing_mode = 'api' THEN 1 ELSE 0 END) AS api_task_count,
174
+ MIN(timestamp) AS earliest_recorded_at
175
+ FROM cost_entries
176
+ WHERE session_id = ? ${categoryFilter}`, [sessionId]);
177
+ const totalsRow = totalsRows[0];
178
+ if (totalsRow === undefined)
179
+ throw new Error('getSessionCostSummaryFiltered: aggregate query returned no rows');
180
+ const agentRows = await adapter.query(`SELECT
181
+ agent,
182
+ COUNT(*) AS task_count,
183
+ COALESCE(SUM(estimated_cost), 0) AS cost_usd,
184
+ COALESCE(SUM(savings_usd), 0) AS savings_usd,
185
+ SUM(CASE WHEN billing_mode = 'subscription' THEN 1 ELSE 0 END) AS subscription_tasks,
186
+ SUM(CASE WHEN billing_mode = 'api' THEN 1 ELSE 0 END) AS api_tasks
187
+ FROM cost_entries
188
+ WHERE session_id = ? ${categoryFilter}
189
+ GROUP BY agent
190
+ ORDER BY cost_usd DESC`, [sessionId]);
191
+ const perAgentBreakdown = agentRows.map((row) => ({
192
+ agent: row.agent,
193
+ task_count: row.task_count,
194
+ cost_usd: row.cost_usd,
195
+ savings_usd: row.savings_usd,
196
+ subscription_tasks: row.subscription_tasks,
197
+ api_tasks: row.api_tasks,
198
+ }));
199
+ const savingsUsd = totalsRow.savings_usd;
200
+ const subscriptionTaskCount = totalsRow.subscription_task_count;
201
+ const savingsSummary = savingsUsd > 0
202
+ ? `Saved ~$${savingsUsd.toFixed(2)} by routing ${subscriptionTaskCount} task${subscriptionTaskCount === 1 ? '' : 's'} through subscriptions vs. equivalent API pricing`
203
+ : 'No subscription savings recorded this session';
204
+ return {
205
+ session_id: sessionId,
206
+ total_cost_usd: totalsRow.total_cost_usd,
207
+ subscription_cost_usd: totalsRow.subscription_cost_usd,
208
+ api_cost_usd: totalsRow.api_cost_usd,
209
+ savings_usd: savingsUsd,
210
+ savingsSummary,
211
+ per_agent_breakdown: perAgentBreakdown,
212
+ task_count: totalsRow.task_count,
213
+ subscription_task_count: subscriptionTaskCount,
214
+ api_task_count: totalsRow.api_task_count,
215
+ created_at: totalsRow.earliest_recorded_at ?? new Date().toISOString(),
216
+ };
217
+ }
218
+ /**
219
+ * Return aggregated cost data for a single task (AC1).
220
+ *
221
+ * Uses idx_cost_task index.
222
+ */
223
+ export async function getTaskCostSummary(adapter, taskId) {
224
+ const rows = await adapter.query(`SELECT
225
+ COALESCE(SUM(estimated_cost), 0) AS cost_usd,
226
+ COALESCE(SUM(input_tokens), 0) AS tokens_input,
227
+ COALESCE(SUM(output_tokens), 0) AS tokens_output,
228
+ COALESCE(SUM(savings_usd), 0) AS savings_usd,
229
+ COUNT(DISTINCT billing_mode) AS billing_mode_count,
230
+ MAX(billing_mode) AS last_billing_mode
231
+ FROM cost_entries
232
+ WHERE task_id = ?`, [taskId]);
233
+ const row = rows[0];
234
+ if (row === undefined)
235
+ throw new Error('getTaskCostSummary: aggregate query returned no rows');
236
+ let billingMode = null;
237
+ if (row.billing_mode_count > 1) {
238
+ billingMode = 'mixed';
239
+ }
240
+ else if (row.last_billing_mode === 'subscription') {
241
+ billingMode = 'subscription';
242
+ }
243
+ else if (row.last_billing_mode === 'api') {
244
+ billingMode = 'api';
245
+ }
246
+ return {
247
+ task_id: taskId,
248
+ cost_usd: row.cost_usd,
249
+ tokens: {
250
+ input: row.tokens_input,
251
+ output: row.tokens_output,
252
+ total: row.tokens_input + row.tokens_output,
253
+ },
254
+ billing_mode: billingMode ?? 'api',
255
+ savings_usd: row.savings_usd,
256
+ };
257
+ }
258
+ /**
259
+ * Return cost breakdown for a specific agent within a session.
260
+ *
261
+ * Uses idx_cost_session index (session_id filter) + agent filter.
262
+ */
263
+ export async function getAgentCostBreakdown(adapter, sessionId, agent) {
264
+ const rows = await adapter.query(`SELECT
265
+ COUNT(*) AS task_count,
266
+ COALESCE(SUM(estimated_cost), 0) AS cost_usd,
267
+ COALESCE(SUM(savings_usd), 0) AS savings_usd,
268
+ SUM(CASE WHEN billing_mode = 'subscription' THEN 1 ELSE 0 END) AS subscription_tasks,
269
+ SUM(CASE WHEN billing_mode = 'api' THEN 1 ELSE 0 END) AS api_tasks
270
+ FROM cost_entries
271
+ WHERE session_id = ? AND agent = ?`, [sessionId, agent]);
272
+ const row = rows[0];
273
+ if (row === undefined)
274
+ throw new Error('getAgentCostBreakdown: aggregate query returned no rows');
275
+ return {
276
+ agent,
277
+ task_count: row.task_count,
278
+ cost_usd: row.cost_usd,
279
+ savings_usd: row.savings_usd,
280
+ subscription_tasks: row.subscription_tasks,
281
+ api_tasks: row.api_tasks,
282
+ };
283
+ }
284
+ /**
285
+ * Return all cost entries for a session, ordered by timestamp descending.
286
+ *
287
+ * Supports optional pagination via limit.
288
+ * Uses idx_cost_entries_session_task index.
289
+ */
290
+ export async function getAllCostEntries(adapter, sessionId, limit) {
291
+ let rows;
292
+ if (limit !== undefined) {
293
+ rows = await adapter.query('SELECT * FROM cost_entries WHERE session_id = ? ORDER BY timestamp DESC LIMIT ?', [sessionId, limit]);
294
+ }
295
+ else {
296
+ rows = await adapter.query('SELECT * FROM cost_entries WHERE session_id = ? ORDER BY timestamp DESC', [sessionId]);
297
+ }
298
+ return rows.map((row) => ({
299
+ id: row.id,
300
+ session_id: row.session_id,
301
+ task_id: row.task_id,
302
+ agent: row.agent,
303
+ provider: row.provider ?? 'unknown',
304
+ model: row.model ?? 'unknown',
305
+ billing_mode: row.billing_mode ?? 'api',
306
+ tokens_input: row.input_tokens,
307
+ tokens_output: row.output_tokens,
308
+ cost_usd: row.actual_cost ?? row.estimated_cost,
309
+ savings_usd: row.savings_usd ?? 0,
310
+ created_at: row.timestamp,
311
+ }));
312
+ }
313
+ /**
314
+ * Return all cost entries for a session, optionally excluding planning entries.
315
+ *
316
+ * When `includePlanning` is false, entries with `category = 'planning'` are
317
+ * excluded from the result set. This supports the `--include-planning` flag
318
+ * in the Cost Report CLI command (story 4.4).
319
+ *
320
+ * Uses idx_cost_entries_session_task index.
321
+ */
322
+ export async function getAllCostEntriesFiltered(adapter, sessionId, includePlanning) {
323
+ const categoryFilter = includePlanning ? '' : "AND category != 'planning'";
324
+ const rows = await adapter.query(`SELECT * FROM cost_entries
325
+ WHERE session_id = ? ${categoryFilter}
326
+ ORDER BY timestamp DESC`, [sessionId]);
327
+ return rows.map((row) => ({
328
+ id: row.id,
329
+ session_id: row.session_id,
330
+ task_id: row.task_id,
331
+ agent: row.agent,
332
+ provider: row.provider ?? 'unknown',
333
+ model: row.model ?? 'unknown',
334
+ billing_mode: row.billing_mode ?? 'api',
335
+ tokens_input: row.input_tokens,
336
+ tokens_output: row.output_tokens,
337
+ cost_usd: row.actual_cost ?? row.estimated_cost,
338
+ savings_usd: row.savings_usd ?? 0,
339
+ created_at: row.timestamp,
340
+ }));
341
+ }
342
+ /**
343
+ * Return the total cost of planning entries for a session.
344
+ *
345
+ * Used by the Cost Report CLI command to show excluded planning costs
346
+ * without requiring a second full summary query.
347
+ *
348
+ * Uses idx_cost_category index.
349
+ */
350
+ export async function getPlanningCostTotal(adapter, sessionId) {
351
+ const rows = await adapter.query(`SELECT COALESCE(SUM(estimated_cost), 0) AS planning_cost
352
+ FROM cost_entries
353
+ WHERE session_id = ? AND category = 'planning'`, [sessionId]);
354
+ return rows[0]?.planning_cost ?? 0;
355
+ }
356
+ /** @deprecated Use getSessionCostSummary instead */
357
+ export async function getSessionCost(adapter, sessionId) {
358
+ const rows = await adapter.query(`SELECT
359
+ COALESCE(SUM(COALESCE(actual_cost, estimated_cost)), 0) AS total_cost,
360
+ COALESCE(SUM(input_tokens), 0) AS total_input_tokens,
361
+ COALESCE(SUM(output_tokens), 0) AS total_output_tokens,
362
+ COUNT(*) AS entry_count
363
+ FROM cost_entries
364
+ WHERE session_id = ?`, [sessionId]);
365
+ const sessionRow = rows[0];
366
+ if (sessionRow === undefined)
367
+ throw new Error('getSessionCost: aggregate query returned no rows');
368
+ return sessionRow;
369
+ }
370
+ /** @deprecated Use getTaskCostSummary instead */
371
+ export async function getTaskCost(adapter, taskId) {
372
+ const rows = await adapter.query(`SELECT
373
+ COALESCE(SUM(COALESCE(actual_cost, estimated_cost)), 0) AS total_cost,
374
+ COALESCE(SUM(input_tokens), 0) AS total_input_tokens,
375
+ COALESCE(SUM(output_tokens), 0) AS total_output_tokens,
376
+ COUNT(*) AS entry_count
377
+ FROM cost_entries
378
+ WHERE task_id = ?`, [taskId]);
379
+ const taskRow = rows[0];
380
+ if (taskRow === undefined)
381
+ throw new Error('getTaskCost: aggregate query returned no rows');
382
+ return taskRow;
383
+ }
384
+ //# sourceMappingURL=cost.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cost.js","sourceRoot":"","sources":["../../../src/persistence/queries/cost.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,131 @@
1
+ /**
2
+ * Decision store query functions for the persistence layer.
3
+ *
4
+ * Provides CRUD operations for the decision store tables:
5
+ * decisions, requirements, constraints, artifacts, pipeline_runs, token_usage.
6
+ *
7
+ * All functions are async and accept a DatabaseAdapter, making them
8
+ * compatible with both the SqliteDatabaseAdapter and DoltDatabaseAdapter.
9
+ */
10
+ import type { DatabaseAdapter } from '../types.js';
11
+ import type { Decision, Requirement, Constraint, Artifact, PipelineRun, CreateDecisionInput, CreateRequirementInput, CreateConstraintInput, RegisterArtifactInput, CreatePipelineRunInput, AddTokenUsageInput } from '../schemas/decisions.js';
12
+ /**
13
+ * Insert a new decision record with a generated UUID.
14
+ */
15
+ export declare function createDecision(adapter: DatabaseAdapter, input: CreateDecisionInput): Promise<Decision>;
16
+ /**
17
+ * Insert or update a decision record.
18
+ * If a decision with the same pipeline_run_id, category, and key already exists,
19
+ * update its value and rationale. Otherwise, insert a new record.
20
+ */
21
+ export declare function upsertDecision(adapter: DatabaseAdapter, input: CreateDecisionInput): Promise<Decision>;
22
+ /**
23
+ * Get all decisions for a given phase, ordered by created_at ascending.
24
+ */
25
+ export declare function getDecisionsByPhase(adapter: DatabaseAdapter, phase: string): Promise<Decision[]>;
26
+ /**
27
+ * Get all decisions for a given phase scoped to a specific pipeline run,
28
+ * ordered by created_at ascending.
29
+ */
30
+ export declare function getDecisionsByPhaseForRun(adapter: DatabaseAdapter, runId: string, phase: string): Promise<Decision[]>;
31
+ /**
32
+ * Get all decisions for a given category, ordered by created_at ascending.
33
+ */
34
+ export declare function getDecisionsByCategory(adapter: DatabaseAdapter, category: string): Promise<Decision[]>;
35
+ /**
36
+ * Get a single decision by phase and key. Returns undefined if not found.
37
+ */
38
+ export declare function getDecisionByKey(adapter: DatabaseAdapter, phase: string, key: string): Promise<Decision | undefined>;
39
+ /**
40
+ * Update a decision's value and/or rationale and set updated_at.
41
+ */
42
+ export declare function updateDecision(adapter: DatabaseAdapter, id: string, updates: Partial<Pick<Decision, 'value' | 'rationale'>>): Promise<void>;
43
+ /**
44
+ * Insert a new requirement with status = 'active'.
45
+ */
46
+ export declare function createRequirement(adapter: DatabaseAdapter, input: CreateRequirementInput): Promise<Requirement>;
47
+ /**
48
+ * List requirements with optional filtering by type, priority, and status.
49
+ */
50
+ export declare function listRequirements(adapter: DatabaseAdapter, filters?: {
51
+ type?: string;
52
+ priority?: string;
53
+ status?: string;
54
+ }): Promise<Requirement[]>;
55
+ /**
56
+ * Transition a requirement's status.
57
+ */
58
+ export declare function updateRequirementStatus(adapter: DatabaseAdapter, id: string, status: string): Promise<void>;
59
+ /**
60
+ * Insert a new constraint record.
61
+ */
62
+ export declare function createConstraint(adapter: DatabaseAdapter, input: CreateConstraintInput): Promise<Constraint>;
63
+ /**
64
+ * List constraints with optional category filtering.
65
+ */
66
+ export declare function listConstraints(adapter: DatabaseAdapter, filters?: {
67
+ category?: string;
68
+ }): Promise<Constraint[]>;
69
+ /**
70
+ * Register a new artifact record.
71
+ */
72
+ export declare function registerArtifact(adapter: DatabaseAdapter, input: RegisterArtifactInput): Promise<Artifact>;
73
+ /**
74
+ * Get all artifacts for a given phase, ordered by created_at ascending.
75
+ */
76
+ export declare function getArtifactsByPhase(adapter: DatabaseAdapter, phase: string): Promise<Artifact[]>;
77
+ /**
78
+ * Get the latest artifact of a given type for a given phase.
79
+ * Returns undefined if none found.
80
+ */
81
+ export declare function getArtifactByType(adapter: DatabaseAdapter, phase: string, type: string): Promise<Artifact | undefined>;
82
+ /**
83
+ * Get the latest artifact of a given type for a specific pipeline run.
84
+ * Filters by pipeline_run_id, phase, and type.
85
+ * Returns undefined if none found.
86
+ */
87
+ export declare function getArtifactByTypeForRun(adapter: DatabaseAdapter, runId: string, phase: string, type: string): Promise<Artifact | undefined>;
88
+ /**
89
+ * Get all artifacts registered for a specific pipeline run, ordered by created_at ascending.
90
+ */
91
+ export declare function getArtifactsByRun(adapter: DatabaseAdapter, runId: string): Promise<Artifact[]>;
92
+ /**
93
+ * Get a pipeline run by its ID. Returns undefined if not found.
94
+ */
95
+ export declare function getPipelineRunById(adapter: DatabaseAdapter, id: string): Promise<PipelineRun | undefined>;
96
+ /**
97
+ * Update a pipeline run's config_json field.
98
+ */
99
+ export declare function updatePipelineRunConfig(adapter: DatabaseAdapter, id: string, configJson: string): Promise<void>;
100
+ /**
101
+ * Create a new pipeline run with status = 'running'.
102
+ */
103
+ export declare function createPipelineRun(adapter: DatabaseAdapter, input: CreatePipelineRunInput): Promise<PipelineRun>;
104
+ /**
105
+ * Update a pipeline run's current_phase, status, and/or token_usage_json.
106
+ */
107
+ export declare function updatePipelineRun(adapter: DatabaseAdapter, id: string, updates: Partial<Pick<PipelineRun, 'current_phase' | 'status' | 'token_usage_json'>>): Promise<void>;
108
+ /**
109
+ * Get all pipeline runs with status = 'running'.
110
+ */
111
+ export declare function getRunningPipelineRuns(adapter: DatabaseAdapter): Promise<PipelineRun[]>;
112
+ /**
113
+ * Get the most recently created pipeline run. Returns undefined if none found.
114
+ */
115
+ export declare function getLatestRun(adapter: DatabaseAdapter): Promise<PipelineRun | undefined>;
116
+ /**
117
+ * Append a token usage record for a pipeline run.
118
+ */
119
+ export declare function addTokenUsage(adapter: DatabaseAdapter, runId: string, usage: AddTokenUsageInput): Promise<void>;
120
+ export interface TokenUsageSummary {
121
+ phase: string;
122
+ agent: string;
123
+ total_input_tokens: number;
124
+ total_output_tokens: number;
125
+ total_cost_usd: number;
126
+ }
127
+ /**
128
+ * Aggregate token usage by phase and agent for a given pipeline run.
129
+ */
130
+ export declare function getTokenUsageSummary(adapter: DatabaseAdapter, runId: string): Promise<TokenUsageSummary[]>;
131
+ //# sourceMappingURL=decisions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decisions.d.ts","sourceRoot":"","sources":["../../../src/persistence/queries/decisions.ts"],"names":[],"mappings":"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"}