@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,509 @@
1
+ /**
2
+ * Consolidated schema DDL for all persistence tables.
3
+ *
4
+ * Replaces the 11 separate SQLite migration files with a single
5
+ * async function that creates all tables via DatabaseAdapter.
6
+ *
7
+ * All tables use CREATE TABLE IF NOT EXISTS for idempotency.
8
+ * Indexes and views use IF NOT EXISTS.
9
+ *
10
+ * Schema covers:
11
+ * - Core: sessions, tasks, task_dependencies, execution_log
12
+ * - Cost: cost_entries
13
+ * - Pipeline: pipeline_runs, decisions, requirements, constraints, artifacts, token_usage
14
+ * - Plans: plans, plan_versions
15
+ * - Signals: session_signals
16
+ * - Metrics: run_metrics, story_metrics
17
+ * - Monitor: task_metrics, performance_aggregates, routing_recommendations
18
+ * - Telemetry: turn_analysis, efficiency_scores, recommendations, category_stats, consumer_stats
19
+ */
20
+ /**
21
+ * Initialize all persistence tables on the given adapter.
22
+ * Idempotent — safe to call multiple times.
23
+ */
24
+ export async function initSchema(adapter) {
25
+ // -- Core tables (migration 001 + 003) ------------------------------------
26
+ await adapter.exec(`
27
+ CREATE TABLE IF NOT EXISTS sessions (
28
+ id VARCHAR(255) PRIMARY KEY,
29
+ name TEXT,
30
+ graph_file TEXT NOT NULL,
31
+ status VARCHAR(32) NOT NULL DEFAULT 'active',
32
+ budget_usd DOUBLE,
33
+ total_cost_usd DOUBLE NOT NULL DEFAULT 0.0,
34
+ planning_cost_usd DOUBLE NOT NULL DEFAULT 0.0,
35
+ config_snapshot TEXT,
36
+ base_branch TEXT NOT NULL DEFAULT 'main',
37
+ plan_source TEXT,
38
+ planning_agent TEXT,
39
+ planning_costs_count_against_budget INTEGER NOT NULL DEFAULT 0,
40
+ created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
41
+ updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
42
+ )
43
+ `);
44
+ await adapter.exec(`
45
+ CREATE TABLE IF NOT EXISTS tasks (
46
+ id VARCHAR(255) PRIMARY KEY,
47
+ session_id VARCHAR(255) NOT NULL,
48
+ name TEXT NOT NULL,
49
+ description TEXT,
50
+ prompt TEXT NOT NULL,
51
+ status VARCHAR(32) NOT NULL DEFAULT 'pending',
52
+ agent VARCHAR(128),
53
+ model TEXT,
54
+ billing_mode VARCHAR(32),
55
+ worktree_path TEXT,
56
+ worktree_branch TEXT,
57
+ worktree_cleaned_at TEXT,
58
+ worker_id TEXT,
59
+ budget_usd DOUBLE,
60
+ cost_usd DOUBLE NOT NULL DEFAULT 0.0,
61
+ input_tokens INTEGER NOT NULL DEFAULT 0,
62
+ output_tokens INTEGER NOT NULL DEFAULT 0,
63
+ result TEXT,
64
+ error TEXT,
65
+ exit_code INTEGER,
66
+ retry_count INTEGER NOT NULL DEFAULT 0,
67
+ max_retries INTEGER NOT NULL DEFAULT 2,
68
+ timeout_ms INTEGER,
69
+ task_type TEXT,
70
+ metadata TEXT,
71
+ merge_status TEXT,
72
+ merged_files TEXT,
73
+ conflict_files TEXT,
74
+ budget_exceeded INTEGER NOT NULL DEFAULT 0,
75
+ started_at TEXT,
76
+ completed_at TEXT,
77
+ created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
78
+ updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
79
+ )
80
+ `);
81
+ await adapter.exec('CREATE INDEX IF NOT EXISTS idx_tasks_session ON tasks(session_id)');
82
+ await adapter.exec('CREATE INDEX IF NOT EXISTS idx_tasks_status ON tasks(status)');
83
+ await adapter.exec('CREATE INDEX IF NOT EXISTS idx_tasks_agent ON tasks(agent)');
84
+ await adapter.exec('CREATE INDEX IF NOT EXISTS idx_tasks_session_status ON tasks(session_id, status)');
85
+ await adapter.exec(`
86
+ CREATE TABLE IF NOT EXISTS task_dependencies (
87
+ task_id VARCHAR(255) NOT NULL,
88
+ depends_on VARCHAR(255) NOT NULL,
89
+ PRIMARY KEY (task_id, depends_on),
90
+ CHECK (task_id != depends_on)
91
+ )
92
+ `);
93
+ await adapter.exec('CREATE INDEX IF NOT EXISTS idx_deps_depends_on ON task_dependencies(depends_on)');
94
+ await adapter.exec(`
95
+ CREATE TABLE IF NOT EXISTS execution_log (
96
+ id INTEGER PRIMARY KEY AUTO_INCREMENT,
97
+ session_id VARCHAR(255) NOT NULL,
98
+ task_id VARCHAR(255),
99
+ event VARCHAR(128) NOT NULL,
100
+ old_status VARCHAR(32),
101
+ new_status VARCHAR(32),
102
+ agent VARCHAR(128),
103
+ cost_usd DOUBLE,
104
+ data TEXT,
105
+ timestamp DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
106
+ )
107
+ `);
108
+ await adapter.exec('CREATE INDEX IF NOT EXISTS idx_log_session ON execution_log(session_id)');
109
+ await adapter.exec('CREATE INDEX IF NOT EXISTS idx_log_task ON execution_log(task_id)');
110
+ await adapter.exec('CREATE INDEX IF NOT EXISTS idx_log_event ON execution_log(event)');
111
+ await adapter.exec('CREATE INDEX IF NOT EXISTS idx_log_timestamp ON execution_log(timestamp)');
112
+ // -- Cost entries (migration 001 + 002) -----------------------------------
113
+ await adapter.exec(`
114
+ CREATE TABLE IF NOT EXISTS cost_entries (
115
+ id INTEGER PRIMARY KEY AUTO_INCREMENT,
116
+ session_id VARCHAR(255) NOT NULL,
117
+ task_id VARCHAR(255),
118
+ agent VARCHAR(128) NOT NULL,
119
+ billing_mode VARCHAR(32) NOT NULL,
120
+ category VARCHAR(64) NOT NULL DEFAULT 'execution',
121
+ provider VARCHAR(64) NOT NULL DEFAULT 'unknown',
122
+ input_tokens INTEGER NOT NULL DEFAULT 0,
123
+ output_tokens INTEGER NOT NULL DEFAULT 0,
124
+ estimated_cost DOUBLE NOT NULL DEFAULT 0.0,
125
+ actual_cost DOUBLE,
126
+ savings_usd DOUBLE NOT NULL DEFAULT 0.0,
127
+ model TEXT,
128
+ timestamp DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
129
+ )
130
+ `);
131
+ await adapter.exec('CREATE INDEX IF NOT EXISTS idx_cost_session ON cost_entries(session_id)');
132
+ await adapter.exec('CREATE INDEX IF NOT EXISTS idx_cost_task ON cost_entries(task_id)');
133
+ await adapter.exec('CREATE INDEX IF NOT EXISTS idx_cost_category ON cost_entries(category)');
134
+ await adapter.exec('CREATE INDEX IF NOT EXISTS idx_cost_entries_session_task ON cost_entries(session_id, task_id)');
135
+ await adapter.exec('CREATE INDEX IF NOT EXISTS idx_cost_entries_provider ON cost_entries(provider)');
136
+ await adapter.exec('CREATE INDEX IF NOT EXISTS idx_cost_session_agent ON cost_entries(session_id, agent)');
137
+ await adapter.exec('CREATE INDEX IF NOT EXISTS idx_cost_agent ON cost_entries(agent)');
138
+ // -- Session signals (migration 004) --------------------------------------
139
+ await adapter.exec(`
140
+ CREATE TABLE IF NOT EXISTS session_signals (
141
+ id INTEGER PRIMARY KEY AUTO_INCREMENT,
142
+ session_id VARCHAR(255) NOT NULL,
143
+ \`signal\` VARCHAR(16) NOT NULL CHECK(\`signal\` IN ('pause', 'resume', 'cancel')),
144
+ created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
145
+ processed_at TEXT
146
+ )
147
+ `);
148
+ // -- Plans (migration 005 + 006) ------------------------------------------
149
+ await adapter.exec(`
150
+ CREATE TABLE IF NOT EXISTS plans (
151
+ id VARCHAR(255) PRIMARY KEY,
152
+ description TEXT NOT NULL,
153
+ task_count INTEGER NOT NULL DEFAULT 0,
154
+ estimated_cost_usd DOUBLE NOT NULL DEFAULT 0.0,
155
+ planning_agent VARCHAR(128) NOT NULL,
156
+ plan_yaml TEXT NOT NULL,
157
+ status VARCHAR(32) NOT NULL DEFAULT 'draft',
158
+ current_version INTEGER NOT NULL DEFAULT 1,
159
+ created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
160
+ updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
161
+ )
162
+ `);
163
+ await adapter.exec('CREATE INDEX IF NOT EXISTS idx_plans_status ON plans(status)');
164
+ await adapter.exec('CREATE INDEX IF NOT EXISTS idx_plans_created ON plans(created_at)');
165
+ await adapter.exec(`
166
+ CREATE TABLE IF NOT EXISTS plan_versions (
167
+ plan_id VARCHAR(255) NOT NULL,
168
+ version INTEGER NOT NULL,
169
+ task_graph_yaml TEXT NOT NULL,
170
+ feedback_used TEXT,
171
+ planning_cost_usd DOUBLE NOT NULL DEFAULT 0.0,
172
+ created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
173
+ PRIMARY KEY (plan_id, version)
174
+ )
175
+ `);
176
+ await adapter.exec('CREATE INDEX IF NOT EXISTS idx_plan_versions_plan_id ON plan_versions(plan_id)');
177
+ // -- Pipeline runs + decisions (migration 007 + 008 final shapes) ---------
178
+ await adapter.exec(`
179
+ CREATE TABLE IF NOT EXISTS pipeline_runs (
180
+ id VARCHAR(255) PRIMARY KEY,
181
+ methodology VARCHAR(128) NOT NULL,
182
+ current_phase VARCHAR(64),
183
+ status VARCHAR(32) NOT NULL DEFAULT 'running'
184
+ CHECK(status IN ('running','paused','completed','failed','stopped')),
185
+ config_json TEXT,
186
+ token_usage_json TEXT,
187
+ parent_run_id VARCHAR(255),
188
+ created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
189
+ updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
190
+ )
191
+ `);
192
+ await adapter.exec('CREATE INDEX IF NOT EXISTS idx_pipeline_runs_status ON pipeline_runs(status)');
193
+ await adapter.exec('CREATE INDEX IF NOT EXISTS idx_pipeline_runs_parent_run_id ON pipeline_runs(parent_run_id)');
194
+ await adapter.exec(`
195
+ CREATE TABLE IF NOT EXISTS decisions (
196
+ id VARCHAR(255) PRIMARY KEY,
197
+ pipeline_run_id VARCHAR(255),
198
+ phase VARCHAR(64) NOT NULL,
199
+ category VARCHAR(64) NOT NULL,
200
+ \`key\` VARCHAR(255) NOT NULL,
201
+ value TEXT NOT NULL,
202
+ rationale TEXT,
203
+ superseded_by VARCHAR(255),
204
+ created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
205
+ updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
206
+ )
207
+ `);
208
+ await adapter.exec('CREATE INDEX IF NOT EXISTS idx_decisions_phase ON decisions(phase)');
209
+ await adapter.exec('CREATE INDEX IF NOT EXISTS idx_decisions_key ON decisions(phase, `key`)');
210
+ await adapter.exec('CREATE INDEX IF NOT EXISTS idx_decisions_superseded_by ON decisions(superseded_by)');
211
+ await adapter.exec(`
212
+ CREATE TABLE IF NOT EXISTS requirements (
213
+ id VARCHAR(255) PRIMARY KEY,
214
+ pipeline_run_id VARCHAR(255),
215
+ source VARCHAR(128) NOT NULL,
216
+ type VARCHAR(32) NOT NULL CHECK(type IN ('functional','non_functional','constraint')),
217
+ description TEXT NOT NULL,
218
+ priority VARCHAR(16) NOT NULL CHECK(priority IN ('must','should','could','wont')),
219
+ status VARCHAR(32) NOT NULL DEFAULT 'active',
220
+ created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
221
+ )
222
+ `);
223
+ await adapter.exec('CREATE INDEX IF NOT EXISTS idx_requirements_type ON requirements(type)');
224
+ await adapter.exec('CREATE INDEX IF NOT EXISTS idx_requirements_status ON requirements(status)');
225
+ await adapter.exec(`
226
+ CREATE TABLE IF NOT EXISTS constraints (
227
+ id VARCHAR(255) PRIMARY KEY,
228
+ pipeline_run_id VARCHAR(255),
229
+ category VARCHAR(64) NOT NULL,
230
+ description TEXT NOT NULL,
231
+ source VARCHAR(128) NOT NULL,
232
+ created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
233
+ )
234
+ `);
235
+ await adapter.exec(`
236
+ CREATE TABLE IF NOT EXISTS artifacts (
237
+ id VARCHAR(255) PRIMARY KEY,
238
+ pipeline_run_id VARCHAR(255),
239
+ phase VARCHAR(64) NOT NULL,
240
+ type VARCHAR(128) NOT NULL,
241
+ path TEXT NOT NULL,
242
+ content_hash TEXT,
243
+ summary TEXT,
244
+ created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
245
+ )
246
+ `);
247
+ await adapter.exec('CREATE INDEX IF NOT EXISTS idx_artifacts_phase ON artifacts(phase)');
248
+ await adapter.exec(`
249
+ CREATE TABLE IF NOT EXISTS token_usage (
250
+ id INTEGER PRIMARY KEY AUTO_INCREMENT,
251
+ pipeline_run_id VARCHAR(255),
252
+ phase VARCHAR(64) NOT NULL,
253
+ agent VARCHAR(128) NOT NULL,
254
+ input_tokens INTEGER NOT NULL DEFAULT 0,
255
+ output_tokens INTEGER NOT NULL DEFAULT 0,
256
+ cost_usd DOUBLE NOT NULL DEFAULT 0.0,
257
+ metadata TEXT,
258
+ created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
259
+ )
260
+ `);
261
+ await adapter.exec('CREATE INDEX IF NOT EXISTS idx_token_usage_run ON token_usage(pipeline_run_id)');
262
+ // -- Run metrics (migration 010) ------------------------------------------
263
+ await adapter.exec(`
264
+ CREATE TABLE IF NOT EXISTS run_metrics (
265
+ run_id VARCHAR(255) PRIMARY KEY,
266
+ methodology VARCHAR(128) NOT NULL,
267
+ status VARCHAR(32) NOT NULL DEFAULT 'running',
268
+ started_at TEXT NOT NULL,
269
+ completed_at TEXT,
270
+ wall_clock_seconds DOUBLE DEFAULT 0,
271
+ total_input_tokens INTEGER DEFAULT 0,
272
+ total_output_tokens INTEGER DEFAULT 0,
273
+ total_cost_usd DOUBLE DEFAULT 0,
274
+ stories_attempted INTEGER DEFAULT 0,
275
+ stories_succeeded INTEGER DEFAULT 0,
276
+ stories_failed INTEGER DEFAULT 0,
277
+ stories_escalated INTEGER DEFAULT 0,
278
+ total_review_cycles INTEGER DEFAULT 0,
279
+ total_dispatches INTEGER DEFAULT 0,
280
+ concurrency_setting INTEGER DEFAULT 1,
281
+ max_concurrent_actual INTEGER DEFAULT 1,
282
+ restarts INTEGER DEFAULT 0,
283
+ is_baseline INTEGER DEFAULT 0,
284
+ created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
285
+ )
286
+ `);
287
+ await adapter.exec(`
288
+ CREATE TABLE IF NOT EXISTS story_metrics (
289
+ id INTEGER PRIMARY KEY AUTO_INCREMENT,
290
+ run_id VARCHAR(255) NOT NULL,
291
+ story_key VARCHAR(255) NOT NULL,
292
+ result VARCHAR(32) NOT NULL DEFAULT 'pending',
293
+ phase_durations_json TEXT,
294
+ started_at TEXT,
295
+ completed_at TEXT,
296
+ wall_clock_seconds DOUBLE DEFAULT 0,
297
+ input_tokens INTEGER DEFAULT 0,
298
+ output_tokens INTEGER DEFAULT 0,
299
+ cost_usd DOUBLE DEFAULT 0,
300
+ review_cycles INTEGER DEFAULT 0,
301
+ dispatches INTEGER DEFAULT 0,
302
+ created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
303
+ UNIQUE(run_id, story_key)
304
+ )
305
+ `);
306
+ // -- story_metrics agent/model columns (mesh telemetry enrichment) ---------
307
+ for (const col of ['primary_agent_id VARCHAR(64)', 'primary_model VARCHAR(128)', 'dispatch_agents_json TEXT']) {
308
+ try {
309
+ await adapter.exec(`ALTER TABLE story_metrics ADD COLUMN ${col}`);
310
+ }
311
+ catch { /* column already exists */ }
312
+ }
313
+ // -- Monitor tables (from 001-monitor-schema) -----------------------------
314
+ await adapter.exec(`
315
+ CREATE TABLE IF NOT EXISTS task_metrics (
316
+ task_id VARCHAR(255) NOT NULL,
317
+ agent VARCHAR(128) NOT NULL,
318
+ task_type VARCHAR(128) NOT NULL,
319
+ outcome VARCHAR(16) NOT NULL CHECK(outcome IN ('success', 'failure')),
320
+ failure_reason TEXT,
321
+ input_tokens INTEGER NOT NULL DEFAULT 0,
322
+ output_tokens INTEGER NOT NULL DEFAULT 0,
323
+ duration_ms INTEGER NOT NULL DEFAULT 0,
324
+ cost DOUBLE NOT NULL DEFAULT 0.0,
325
+ estimated_cost DOUBLE NOT NULL DEFAULT 0.0,
326
+ billing_mode VARCHAR(32) NOT NULL DEFAULT 'api',
327
+ retries INTEGER NOT NULL DEFAULT 0,
328
+ recorded_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
329
+ PRIMARY KEY (task_id, recorded_at)
330
+ )
331
+ `);
332
+ await adapter.exec('CREATE INDEX IF NOT EXISTS idx_tm_agent ON task_metrics(agent)');
333
+ await adapter.exec('CREATE INDEX IF NOT EXISTS idx_tm_task_type ON task_metrics(task_type)');
334
+ await adapter.exec('CREATE INDEX IF NOT EXISTS idx_tm_recorded_at ON task_metrics(recorded_at)');
335
+ await adapter.exec('CREATE INDEX IF NOT EXISTS idx_tm_agent_type ON task_metrics(agent, task_type)');
336
+ await adapter.exec(`
337
+ CREATE TABLE IF NOT EXISTS performance_aggregates (
338
+ agent VARCHAR(255) NOT NULL,
339
+ task_type VARCHAR(255) NOT NULL,
340
+ total_tasks INTEGER NOT NULL DEFAULT 0,
341
+ successful_tasks INTEGER NOT NULL DEFAULT 0,
342
+ failed_tasks INTEGER NOT NULL DEFAULT 0,
343
+ total_input_tokens INTEGER NOT NULL DEFAULT 0,
344
+ total_output_tokens INTEGER NOT NULL DEFAULT 0,
345
+ total_duration_ms INTEGER NOT NULL DEFAULT 0,
346
+ total_cost DOUBLE NOT NULL DEFAULT 0.0,
347
+ total_retries INTEGER NOT NULL DEFAULT 0,
348
+ last_updated DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
349
+ PRIMARY KEY (agent, task_type)
350
+ )
351
+ `);
352
+ await adapter.exec(`
353
+ CREATE TABLE IF NOT EXISTS routing_recommendations (
354
+ id INTEGER PRIMARY KEY AUTO_INCREMENT,
355
+ task_type VARCHAR(128) NOT NULL,
356
+ current_agent VARCHAR(128) NOT NULL,
357
+ recommended_agent VARCHAR(128) NOT NULL,
358
+ reason TEXT,
359
+ confidence DOUBLE NOT NULL DEFAULT 0.0,
360
+ supporting_data TEXT,
361
+ generated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
362
+ expires_at TEXT
363
+ )
364
+ `);
365
+ // -- Telemetry tables (migration 011) -------------------------------------
366
+ await adapter.exec(`
367
+ CREATE TABLE IF NOT EXISTS turn_analysis (
368
+ story_key VARCHAR(64) NOT NULL,
369
+ span_id VARCHAR(128) NOT NULL,
370
+ turn_number INTEGER NOT NULL,
371
+ name VARCHAR(255) NOT NULL DEFAULT '',
372
+ timestamp BIGINT NOT NULL DEFAULT 0,
373
+ source VARCHAR(32) NOT NULL DEFAULT '',
374
+ model VARCHAR(64),
375
+ input_tokens INTEGER NOT NULL DEFAULT 0,
376
+ output_tokens INTEGER NOT NULL DEFAULT 0,
377
+ cache_read_tokens INTEGER NOT NULL DEFAULT 0,
378
+ fresh_tokens INTEGER NOT NULL DEFAULT 0,
379
+ cache_hit_rate DOUBLE NOT NULL DEFAULT 0,
380
+ cost_usd DOUBLE NOT NULL DEFAULT 0,
381
+ duration_ms INTEGER NOT NULL DEFAULT 0,
382
+ context_size INTEGER NOT NULL DEFAULT 0,
383
+ context_delta INTEGER NOT NULL DEFAULT 0,
384
+ tool_name VARCHAR(128),
385
+ is_context_spike BOOLEAN NOT NULL DEFAULT 0,
386
+ child_spans_json TEXT NOT NULL DEFAULT '[]',
387
+ task_type VARCHAR(64),
388
+ phase VARCHAR(64),
389
+ dispatch_id VARCHAR(64),
390
+ PRIMARY KEY (story_key, span_id)
391
+ )
392
+ `);
393
+ await adapter.exec('CREATE INDEX IF NOT EXISTS idx_turn_analysis_story ON turn_analysis (story_key, turn_number)');
394
+ // Migration: add dispatch context columns for existing repos (Story 30-1)
395
+ for (const col of ['task_type', 'phase', 'dispatch_id']) {
396
+ try {
397
+ await adapter.exec(`ALTER TABLE turn_analysis ADD COLUMN ${col} VARCHAR(64)`);
398
+ }
399
+ catch { /* column already exists */ }
400
+ }
401
+ await adapter.exec(`
402
+ CREATE TABLE IF NOT EXISTS efficiency_scores (
403
+ story_key VARCHAR(64) NOT NULL,
404
+ timestamp BIGINT NOT NULL,
405
+ composite_score INTEGER NOT NULL DEFAULT 0,
406
+ cache_hit_sub_score DOUBLE NOT NULL DEFAULT 0,
407
+ io_ratio_sub_score DOUBLE NOT NULL DEFAULT 0,
408
+ context_management_sub_score DOUBLE NOT NULL DEFAULT 0,
409
+ avg_cache_hit_rate DOUBLE NOT NULL DEFAULT 0,
410
+ avg_io_ratio DOUBLE NOT NULL DEFAULT 0,
411
+ context_spike_count INTEGER NOT NULL DEFAULT 0,
412
+ total_turns INTEGER NOT NULL DEFAULT 0,
413
+ per_model_json TEXT NOT NULL DEFAULT '[]',
414
+ per_source_json TEXT NOT NULL DEFAULT '[]',
415
+ dispatch_id TEXT,
416
+ task_type TEXT,
417
+ phase TEXT,
418
+ PRIMARY KEY (story_key, timestamp)
419
+ )
420
+ `);
421
+ // Migration: add dispatch context columns for existing repos (Story 30-3)
422
+ for (const col of ['dispatch_id', 'task_type', 'phase']) {
423
+ try {
424
+ await adapter.exec(`ALTER TABLE efficiency_scores ADD COLUMN ${col} TEXT`);
425
+ }
426
+ catch { /* column already exists */ }
427
+ }
428
+ await adapter.exec(`
429
+ CREATE TABLE IF NOT EXISTS recommendations (
430
+ id VARCHAR(16) NOT NULL,
431
+ story_key VARCHAR(64) NOT NULL,
432
+ sprint_id VARCHAR(64),
433
+ rule_id VARCHAR(64) NOT NULL,
434
+ severity VARCHAR(16) NOT NULL,
435
+ title TEXT NOT NULL,
436
+ description TEXT NOT NULL,
437
+ potential_savings_tokens INTEGER,
438
+ potential_savings_usd DOUBLE,
439
+ action_target TEXT,
440
+ generated_at VARCHAR(32) NOT NULL,
441
+ PRIMARY KEY (id)
442
+ )
443
+ `);
444
+ await adapter.exec(`
445
+ CREATE TABLE IF NOT EXISTS category_stats (
446
+ story_key VARCHAR(100) NOT NULL,
447
+ category VARCHAR(30) NOT NULL,
448
+ total_tokens BIGINT NOT NULL DEFAULT 0,
449
+ percentage DECIMAL(6,3) NOT NULL DEFAULT 0,
450
+ event_count INTEGER NOT NULL DEFAULT 0,
451
+ avg_tokens_per_event DECIMAL(12,2) NOT NULL DEFAULT 0,
452
+ trend VARCHAR(10) NOT NULL DEFAULT 'stable',
453
+ PRIMARY KEY (story_key, category)
454
+ )
455
+ `);
456
+ await adapter.exec(`
457
+ CREATE TABLE IF NOT EXISTS consumer_stats (
458
+ story_key VARCHAR(100) NOT NULL,
459
+ consumer_key VARCHAR(300) NOT NULL,
460
+ category VARCHAR(30) NOT NULL,
461
+ total_tokens BIGINT NOT NULL DEFAULT 0,
462
+ percentage DECIMAL(6,3) NOT NULL DEFAULT 0,
463
+ event_count INTEGER NOT NULL DEFAULT 0,
464
+ top_invocations_json TEXT,
465
+ PRIMARY KEY (story_key, consumer_key)
466
+ )
467
+ `);
468
+ // -- Views ----------------------------------------------------------------
469
+ // NOTE: Views use JOINs and aggregation. They work with Dolt
470
+ // but NOT with InMemoryDatabaseAdapter. For InMemory backend, views are
471
+ // skipped silently (CREATE VIEW is an unknown statement to InMemory).
472
+ await adapter.exec(`
473
+ CREATE VIEW IF NOT EXISTS ready_tasks AS
474
+ SELECT t.* FROM tasks t
475
+ WHERE t.status = 'pending'
476
+ AND NOT EXISTS (
477
+ SELECT 1 FROM task_dependencies td
478
+ JOIN tasks dep ON dep.id = td.depends_on
479
+ WHERE td.task_id = t.id
480
+ AND dep.status NOT IN ('completed', 'cancelled')
481
+ )
482
+ `);
483
+ await adapter.exec(`
484
+ CREATE VIEW IF NOT EXISTS session_cost_summary AS
485
+ SELECT
486
+ s.id AS session_id,
487
+ s.name AS session_name,
488
+ COUNT(DISTINCT t.id) AS total_tasks,
489
+ SUM(CASE WHEN t.status = 'completed' THEN 1 ELSE 0 END) AS completed_tasks,
490
+ SUM(CASE WHEN t.status = 'failed' THEN 1 ELSE 0 END) AS failed_tasks,
491
+ SUM(CASE WHEN t.status = 'running' THEN 1 ELSE 0 END) AS running_tasks,
492
+ COALESCE(SUM(t.cost_usd), 0) AS total_cost_usd,
493
+ SUM(CASE WHEN t.billing_mode = 'subscription' THEN t.cost_usd ELSE 0 END) AS subscription_cost_usd,
494
+ SUM(CASE WHEN t.billing_mode = 'api' THEN t.cost_usd ELSE 0 END) AS api_cost_usd,
495
+ s.planning_cost_usd
496
+ FROM sessions s
497
+ LEFT JOIN tasks t ON t.session_id = s.id
498
+ GROUP BY s.id
499
+ `);
500
+ // -- Schema migration tracking table (for future use) --------------------
501
+ await adapter.exec(`
502
+ CREATE TABLE IF NOT EXISTS schema_migrations (
503
+ version INTEGER PRIMARY KEY,
504
+ name TEXT NOT NULL,
505
+ applied_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
506
+ )
507
+ `);
508
+ }
509
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/persistence/schema.ts"],"names":[],"mappings":"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"}