@urateam/core 0.1.16 → 0.1.19

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 (293) hide show
  1. package/dist/__tests__/agentic-deep-review-provider.test.d.ts +2 -0
  2. package/dist/__tests__/agentic-deep-review-provider.test.d.ts.map +1 -0
  3. package/dist/__tests__/agentic-deep-review-provider.test.js +70 -0
  4. package/dist/__tests__/agentic-deep-review-provider.test.js.map +1 -0
  5. package/dist/__tests__/audit-immutability.test.js +16 -1
  6. package/dist/__tests__/audit-immutability.test.js.map +1 -1
  7. package/dist/__tests__/cost/per-run-multi-model.test.d.ts +2 -0
  8. package/dist/__tests__/cost/per-run-multi-model.test.d.ts.map +1 -0
  9. package/dist/__tests__/cost/per-run-multi-model.test.js +102 -0
  10. package/dist/__tests__/cost/per-run-multi-model.test.js.map +1 -0
  11. package/dist/__tests__/db-qa-gap-issues.test.d.ts +2 -0
  12. package/dist/__tests__/db-qa-gap-issues.test.d.ts.map +1 -0
  13. package/dist/__tests__/db-qa-gap-issues.test.js +113 -0
  14. package/dist/__tests__/db-qa-gap-issues.test.js.map +1 -0
  15. package/dist/__tests__/db-release-decisions.test.d.ts +2 -0
  16. package/dist/__tests__/db-release-decisions.test.d.ts.map +1 -0
  17. package/dist/__tests__/db-release-decisions.test.js +98 -0
  18. package/dist/__tests__/db-release-decisions.test.js.map +1 -0
  19. package/dist/__tests__/db-review-model-runs.test.d.ts +2 -0
  20. package/dist/__tests__/db-review-model-runs.test.d.ts.map +1 -0
  21. package/dist/__tests__/db-review-model-runs.test.js +90 -0
  22. package/dist/__tests__/db-review-model-runs.test.js.map +1 -0
  23. package/dist/__tests__/e2e-fanout.test.d.ts +17 -0
  24. package/dist/__tests__/e2e-fanout.test.d.ts.map +1 -0
  25. package/dist/__tests__/e2e-fanout.test.js +184 -0
  26. package/dist/__tests__/e2e-fanout.test.js.map +1 -0
  27. package/dist/__tests__/e2e-pipeline.test.js +1 -0
  28. package/dist/__tests__/e2e-pipeline.test.js.map +1 -1
  29. package/dist/__tests__/notifier-discord.test.js +3 -3
  30. package/dist/__tests__/notifier-discord.test.js.map +1 -1
  31. package/dist/__tests__/notifier-slack.test.js +2 -2
  32. package/dist/__tests__/notifier-slack.test.js.map +1 -1
  33. package/dist/__tests__/notifier.test.js +1 -0
  34. package/dist/__tests__/notifier.test.js.map +1 -1
  35. package/dist/__tests__/openrouter-client.test.d.ts +2 -0
  36. package/dist/__tests__/openrouter-client.test.d.ts.map +1 -0
  37. package/dist/__tests__/openrouter-client.test.js +56 -0
  38. package/dist/__tests__/openrouter-client.test.js.map +1 -0
  39. package/dist/__tests__/openrouter-fanout.test.d.ts +2 -0
  40. package/dist/__tests__/openrouter-fanout.test.d.ts.map +1 -0
  41. package/dist/__tests__/openrouter-fanout.test.js +93 -0
  42. package/dist/__tests__/openrouter-fanout.test.js.map +1 -0
  43. package/dist/__tests__/pm-budget.test.js +1 -0
  44. package/dist/__tests__/pm-budget.test.js.map +1 -1
  45. package/dist/__tests__/pm-promote.test.js +189 -0
  46. package/dist/__tests__/pm-promote.test.js.map +1 -1
  47. package/dist/__tests__/pm-scheduler.test.js +1 -0
  48. package/dist/__tests__/pm-scheduler.test.js.map +1 -1
  49. package/dist/__tests__/pm-types.test.js +2 -0
  50. package/dist/__tests__/pm-types.test.js.map +1 -1
  51. package/dist/__tests__/post-fanout-comments.test.d.ts +2 -0
  52. package/dist/__tests__/post-fanout-comments.test.d.ts.map +1 -0
  53. package/dist/__tests__/post-fanout-comments.test.js +84 -0
  54. package/dist/__tests__/post-fanout-comments.test.js.map +1 -0
  55. package/dist/__tests__/qa-audit-events.test.d.ts +2 -0
  56. package/dist/__tests__/qa-audit-events.test.d.ts.map +1 -0
  57. package/dist/__tests__/qa-audit-events.test.js +57 -0
  58. package/dist/__tests__/qa-audit-events.test.js.map +1 -0
  59. package/dist/__tests__/qa-config.test.d.ts +2 -0
  60. package/dist/__tests__/qa-config.test.d.ts.map +1 -0
  61. package/dist/__tests__/qa-config.test.js +80 -0
  62. package/dist/__tests__/qa-config.test.js.map +1 -0
  63. package/dist/__tests__/qa-eval.test.d.ts +2 -0
  64. package/dist/__tests__/qa-eval.test.d.ts.map +1 -0
  65. package/dist/__tests__/qa-eval.test.js +146 -0
  66. package/dist/__tests__/qa-eval.test.js.map +1 -0
  67. package/dist/__tests__/qa-gap.test.d.ts +2 -0
  68. package/dist/__tests__/qa-gap.test.d.ts.map +1 -0
  69. package/dist/__tests__/qa-gap.test.js +100 -0
  70. package/dist/__tests__/qa-gap.test.js.map +1 -0
  71. package/dist/__tests__/qa-github.test.d.ts +2 -0
  72. package/dist/__tests__/qa-github.test.d.ts.map +1 -0
  73. package/dist/__tests__/qa-github.test.js +162 -0
  74. package/dist/__tests__/qa-github.test.js.map +1 -0
  75. package/dist/__tests__/ralph-review-fix-regression.test.js +1 -0
  76. package/dist/__tests__/ralph-review-fix-regression.test.js.map +1 -1
  77. package/dist/__tests__/release-manager-audit-events.test.d.ts +2 -0
  78. package/dist/__tests__/release-manager-audit-events.test.d.ts.map +1 -0
  79. package/dist/__tests__/release-manager-audit-events.test.js +64 -0
  80. package/dist/__tests__/release-manager-audit-events.test.js.map +1 -0
  81. package/dist/__tests__/release-manager-config.test.d.ts +2 -0
  82. package/dist/__tests__/release-manager-config.test.d.ts.map +1 -0
  83. package/dist/__tests__/release-manager-config.test.js +56 -0
  84. package/dist/__tests__/release-manager-config.test.js.map +1 -0
  85. package/dist/__tests__/release-manager-decide.test.d.ts +2 -0
  86. package/dist/__tests__/release-manager-decide.test.d.ts.map +1 -0
  87. package/dist/__tests__/release-manager-decide.test.js +102 -0
  88. package/dist/__tests__/release-manager-decide.test.js.map +1 -0
  89. package/dist/__tests__/release-manager-github.test.d.ts +2 -0
  90. package/dist/__tests__/release-manager-github.test.d.ts.map +1 -0
  91. package/dist/__tests__/release-manager-github.test.js +83 -0
  92. package/dist/__tests__/release-manager-github.test.js.map +1 -0
  93. package/dist/__tests__/release-manager-license-gate.test.d.ts +2 -0
  94. package/dist/__tests__/release-manager-license-gate.test.d.ts.map +1 -0
  95. package/dist/__tests__/release-manager-license-gate.test.js +25 -0
  96. package/dist/__tests__/release-manager-license-gate.test.js.map +1 -0
  97. package/dist/__tests__/release-manager-scheduler.test.d.ts +2 -0
  98. package/dist/__tests__/release-manager-scheduler.test.d.ts.map +1 -0
  99. package/dist/__tests__/release-manager-scheduler.test.js +395 -0
  100. package/dist/__tests__/release-manager-scheduler.test.js.map +1 -0
  101. package/dist/__tests__/release-manager-slack-handler.test.d.ts +2 -0
  102. package/dist/__tests__/release-manager-slack-handler.test.d.ts.map +1 -0
  103. package/dist/__tests__/release-manager-slack-handler.test.js +175 -0
  104. package/dist/__tests__/release-manager-slack-handler.test.js.map +1 -0
  105. package/dist/__tests__/release-manager-triggers.test.d.ts +2 -0
  106. package/dist/__tests__/release-manager-triggers.test.d.ts.map +1 -0
  107. package/dist/__tests__/release-manager-triggers.test.js +67 -0
  108. package/dist/__tests__/release-manager-triggers.test.js.map +1 -0
  109. package/dist/__tests__/release-manager-versioning.test.d.ts +2 -0
  110. package/dist/__tests__/release-manager-versioning.test.d.ts.map +1 -0
  111. package/dist/__tests__/release-manager-versioning.test.js +51 -0
  112. package/dist/__tests__/release-manager-versioning.test.js.map +1 -0
  113. package/dist/__tests__/reproduce-bec113-pagination-warning.test.js +1 -0
  114. package/dist/__tests__/reproduce-bec113-pagination-warning.test.js.map +1 -1
  115. package/dist/__tests__/reproduce-bec62.test.js +1 -0
  116. package/dist/__tests__/reproduce-bec62.test.js.map +1 -1
  117. package/dist/__tests__/reproduce-bec91-stuck-in-progress.test.js +2 -0
  118. package/dist/__tests__/reproduce-bec91-stuck-in-progress.test.js.map +1 -1
  119. package/dist/__tests__/review-prompt.test.d.ts +2 -0
  120. package/dist/__tests__/review-prompt.test.d.ts.map +1 -0
  121. package/dist/__tests__/review-prompt.test.js +88 -0
  122. package/dist/__tests__/review-prompt.test.js.map +1 -0
  123. package/dist/__tests__/review-provider-registry.test.d.ts +2 -0
  124. package/dist/__tests__/review-provider-registry.test.d.ts.map +1 -0
  125. package/dist/__tests__/review-provider-registry.test.js +61 -0
  126. package/dist/__tests__/review-provider-registry.test.js.map +1 -0
  127. package/dist/__tests__/runner-fanout-integration.test.d.ts +2 -0
  128. package/dist/__tests__/runner-fanout-integration.test.d.ts.map +1 -0
  129. package/dist/__tests__/runner-fanout-integration.test.js +107 -0
  130. package/dist/__tests__/runner-fanout-integration.test.js.map +1 -0
  131. package/dist/__tests__/webhook-handler.test.js +1 -0
  132. package/dist/__tests__/webhook-handler.test.js.map +1 -1
  133. package/dist/audit/events.d.ts +54 -0
  134. package/dist/audit/events.d.ts.map +1 -1
  135. package/dist/audit/events.js +100 -0
  136. package/dist/audit/events.js.map +1 -1
  137. package/dist/audit/writer.d.ts +22 -8
  138. package/dist/audit/writer.d.ts.map +1 -1
  139. package/dist/audit/writer.js +22 -8
  140. package/dist/audit/writer.js.map +1 -1
  141. package/dist/cost/aggregate.d.ts.map +1 -1
  142. package/dist/cost/aggregate.js +14 -2
  143. package/dist/cost/aggregate.js.map +1 -1
  144. package/dist/cost/csv.d.ts.map +1 -1
  145. package/dist/cost/csv.js +14 -2
  146. package/dist/cost/csv.js.map +1 -1
  147. package/dist/cost/per-run.d.ts +11 -0
  148. package/dist/cost/per-run.d.ts.map +1 -1
  149. package/dist/cost/per-run.js +21 -8
  150. package/dist/cost/per-run.js.map +1 -1
  151. package/dist/cost/rollup.d.ts.map +1 -1
  152. package/dist/cost/rollup.js +14 -2
  153. package/dist/cost/rollup.js.map +1 -1
  154. package/dist/db/client.d.ts.map +1 -1
  155. package/dist/db/client.js +20 -1
  156. package/dist/db/client.js.map +1 -1
  157. package/dist/db/migrations/postgres/009_review_model_runs.sql +18 -0
  158. package/dist/db/migrations/postgres/010_release_manager.sql +38 -0
  159. package/dist/db/migrations/postgres/011_qa_run_columns.sql +8 -0
  160. package/dist/db/migrations/postgres/012_qa_gap_issues.sql +18 -0
  161. package/dist/db/migrations/sqlite/008_review_model_runs.sql +18 -0
  162. package/dist/db/migrations/sqlite/009_release_manager.sql +43 -0
  163. package/dist/db/migrations/sqlite/010_qa_run_columns.sql +9 -0
  164. package/dist/db/migrations/sqlite/011_qa_gap_issues.sql +22 -0
  165. package/dist/db/review-model-runs.d.ts +4 -0
  166. package/dist/db/review-model-runs.d.ts.map +1 -0
  167. package/dist/db/review-model-runs.js +25 -0
  168. package/dist/db/review-model-runs.js.map +1 -0
  169. package/dist/db/schema.d.ts +761 -0
  170. package/dist/db/schema.d.ts.map +1 -1
  171. package/dist/db/schema.js +67 -0
  172. package/dist/db/schema.js.map +1 -1
  173. package/dist/executor/executor.d.ts.map +1 -1
  174. package/dist/executor/executor.js +2 -0
  175. package/dist/executor/executor.js.map +1 -1
  176. package/dist/executor/review/agentic-deep-review.d.ts +6 -0
  177. package/dist/executor/review/agentic-deep-review.d.ts.map +1 -0
  178. package/dist/executor/review/agentic-deep-review.js +37 -0
  179. package/dist/executor/review/agentic-deep-review.js.map +1 -0
  180. package/dist/executor/review/openrouter-client.d.ts +23 -0
  181. package/dist/executor/review/openrouter-client.d.ts.map +1 -0
  182. package/dist/executor/review/openrouter-client.js +34 -0
  183. package/dist/executor/review/openrouter-client.js.map +1 -0
  184. package/dist/executor/review/openrouter-fanout.d.ts +17 -0
  185. package/dist/executor/review/openrouter-fanout.d.ts.map +1 -0
  186. package/dist/executor/review/openrouter-fanout.js +84 -0
  187. package/dist/executor/review/openrouter-fanout.js.map +1 -0
  188. package/dist/executor/review/post-fanout-comments.d.ts +4 -0
  189. package/dist/executor/review/post-fanout-comments.d.ts.map +1 -0
  190. package/dist/executor/review/post-fanout-comments.js +45 -0
  191. package/dist/executor/review/post-fanout-comments.js.map +1 -0
  192. package/dist/executor/review/review-prompt.d.ts +21 -0
  193. package/dist/executor/review/review-prompt.d.ts.map +1 -0
  194. package/dist/executor/review/review-prompt.js +130 -0
  195. package/dist/executor/review/review-prompt.js.map +1 -0
  196. package/dist/executor/review/review-provider.d.ts +27 -0
  197. package/dist/executor/review/review-provider.d.ts.map +1 -0
  198. package/dist/executor/review/review-provider.js +36 -0
  199. package/dist/executor/review/review-provider.js.map +1 -0
  200. package/dist/executor/review/workdir-snapshot.d.ts +13 -0
  201. package/dist/executor/review/workdir-snapshot.d.ts.map +1 -0
  202. package/dist/executor/review/workdir-snapshot.js +24 -0
  203. package/dist/executor/review/workdir-snapshot.js.map +1 -0
  204. package/dist/index.d.ts +4 -0
  205. package/dist/index.d.ts.map +1 -1
  206. package/dist/index.js +4 -0
  207. package/dist/index.js.map +1 -1
  208. package/dist/license.d.ts.map +1 -1
  209. package/dist/license.js +1 -0
  210. package/dist/license.js.map +1 -1
  211. package/dist/pipeline/review-providers-runner.d.ts +31 -0
  212. package/dist/pipeline/review-providers-runner.d.ts.map +1 -0
  213. package/dist/pipeline/review-providers-runner.js +64 -0
  214. package/dist/pipeline/review-providers-runner.js.map +1 -0
  215. package/dist/pipeline/runner.d.ts.map +1 -1
  216. package/dist/pipeline/runner.js +99 -7
  217. package/dist/pipeline/runner.js.map +1 -1
  218. package/dist/pm/actions/promote.d.ts +12 -0
  219. package/dist/pm/actions/promote.d.ts.map +1 -1
  220. package/dist/pm/actions/promote.js +27 -2
  221. package/dist/pm/actions/promote.js.map +1 -1
  222. package/dist/pm/actions/resolve-approvals.js +3 -3
  223. package/dist/pm/actions/resolve-approvals.js.map +1 -1
  224. package/dist/pm/actions/triage.js +2 -2
  225. package/dist/pm/actions/triage.js.map +1 -1
  226. package/dist/pm/scheduler.d.ts.map +1 -1
  227. package/dist/pm/scheduler.js +5 -3
  228. package/dist/pm/scheduler.js.map +1 -1
  229. package/dist/pm/slack-interface.d.ts +8 -0
  230. package/dist/pm/slack-interface.d.ts.map +1 -1
  231. package/dist/pm/slack-interface.js +20 -3
  232. package/dist/pm/slack-interface.js.map +1 -1
  233. package/dist/pm/types.d.ts +1 -0
  234. package/dist/pm/types.d.ts.map +1 -1
  235. package/dist/pm/types.js +6 -0
  236. package/dist/pm/types.js.map +1 -1
  237. package/dist/qa/gap.d.ts +29 -0
  238. package/dist/qa/gap.d.ts.map +1 -0
  239. package/dist/qa/gap.js +91 -0
  240. package/dist/qa/gap.js.map +1 -0
  241. package/dist/qa/github.d.ts +77 -0
  242. package/dist/qa/github.d.ts.map +1 -0
  243. package/dist/qa/github.js +106 -0
  244. package/dist/qa/github.js.map +1 -0
  245. package/dist/qa/index.d.ts +4 -0
  246. package/dist/qa/index.d.ts.map +1 -0
  247. package/dist/qa/index.js +4 -0
  248. package/dist/qa/index.js.map +1 -0
  249. package/dist/qa/types.d.ts +44 -0
  250. package/dist/qa/types.d.ts.map +1 -0
  251. package/dist/qa/types.js +12 -0
  252. package/dist/qa/types.js.map +1 -0
  253. package/dist/release-manager/decide.d.ts +26 -0
  254. package/dist/release-manager/decide.d.ts.map +1 -0
  255. package/dist/release-manager/decide.js +58 -0
  256. package/dist/release-manager/decide.js.map +1 -0
  257. package/dist/release-manager/github.d.ts +47 -0
  258. package/dist/release-manager/github.d.ts.map +1 -0
  259. package/dist/release-manager/github.js +66 -0
  260. package/dist/release-manager/github.js.map +1 -0
  261. package/dist/release-manager/index.d.ts +9 -0
  262. package/dist/release-manager/index.d.ts.map +1 -0
  263. package/dist/release-manager/index.js +9 -0
  264. package/dist/release-manager/index.js.map +1 -0
  265. package/dist/release-manager/scheduler.d.ts +30 -0
  266. package/dist/release-manager/scheduler.d.ts.map +1 -0
  267. package/dist/release-manager/scheduler.js +427 -0
  268. package/dist/release-manager/scheduler.js.map +1 -0
  269. package/dist/release-manager/slack-handler.d.ts +39 -0
  270. package/dist/release-manager/slack-handler.d.ts.map +1 -0
  271. package/dist/release-manager/slack-handler.js +124 -0
  272. package/dist/release-manager/slack-handler.js.map +1 -0
  273. package/dist/release-manager/state.d.ts +18 -0
  274. package/dist/release-manager/state.d.ts.map +1 -0
  275. package/dist/release-manager/state.js +154 -0
  276. package/dist/release-manager/state.js.map +1 -0
  277. package/dist/release-manager/triggers.d.ts +32 -0
  278. package/dist/release-manager/triggers.d.ts.map +1 -0
  279. package/dist/release-manager/triggers.js +82 -0
  280. package/dist/release-manager/triggers.js.map +1 -0
  281. package/dist/release-manager/types.d.ts +79 -0
  282. package/dist/release-manager/types.d.ts.map +1 -0
  283. package/dist/release-manager/types.js +48 -0
  284. package/dist/release-manager/types.js.map +1 -0
  285. package/dist/release-manager/versioning.d.ts +20 -0
  286. package/dist/release-manager/versioning.d.ts.map +1 -0
  287. package/dist/release-manager/versioning.js +60 -0
  288. package/dist/release-manager/versioning.js.map +1 -0
  289. package/dist/types.d.ts +48 -0
  290. package/dist/types.d.ts.map +1 -1
  291. package/dist/types.js +8 -0
  292. package/dist/types.js.map +1 -1
  293. package/package.json +3 -1
@@ -18,14 +18,27 @@ export function computeRunCost(run, stages, config) {
18
18
  let inputTokens = 0;
19
19
  let outputTokens = 0;
20
20
  for (const s of stages) {
21
- const modelName = pc?.stageModels?.[s.stage] ??
22
- pc?.profile?.model ??
23
- "claude-sonnet-4-6";
24
- const rate = resolveModelRate(modelName, config);
25
- dollars += (s.inputTokens * rate.inputPerMillion) / 1_000_000;
26
- dollars += (s.outputTokens * rate.outputPerMillion) / 1_000_000;
27
- inputTokens += s.inputTokens;
28
- outputTokens += s.outputTokens;
21
+ if (s.modelRuns && s.modelRuns.length > 0) {
22
+ // BEC-134: per-model pricing using review_model_runs rows.
23
+ for (const mr of s.modelRuns) {
24
+ const rate = resolveModelRate(mr.modelId, config);
25
+ dollars += (mr.inputTokens * rate.inputPerMillion) / 1_000_000;
26
+ dollars += (mr.outputTokens * rate.outputPerMillion) / 1_000_000;
27
+ inputTokens += mr.inputTokens;
28
+ outputTokens += mr.outputTokens;
29
+ }
30
+ }
31
+ else {
32
+ // Fallback: stage-level tokens against the configured model for this stage.
33
+ const modelName = pc?.stageModels?.[s.stage] ??
34
+ pc?.profile?.model ??
35
+ "claude-sonnet-4-6";
36
+ const rate = resolveModelRate(modelName, config);
37
+ dollars += (s.inputTokens * rate.inputPerMillion) / 1_000_000;
38
+ dollars += (s.outputTokens * rate.outputPerMillion) / 1_000_000;
39
+ inputTokens += s.inputTokens;
40
+ outputTokens += s.outputTokens;
41
+ }
29
42
  }
30
43
  const timeSavedHours = run.status === "completed" && run.runType !== "review-feedback"
31
44
  ? resolveTimeSavedPerPr(run.pipelineKey, config)
@@ -1 +1 @@
1
- {"version":3,"file":"per-run.js","sourceRoot":"","sources":["../../src/cost/per-run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAErE,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,MAAM,GAAG,GAAG,YAAY,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC,CAAC;AAExD,MAAM,SAAS,GAAY;IACzB,WAAW,EAAE,CAAC;IACd,YAAY,EAAE,CAAC;IACf,OAAO,EAAE,CAAC;IACV,cAAc,EAAE,CAAC;CAClB,CAAC;AA2BF,MAAM,UAAU,cAAc,CAC5B,GAAmB,EACnB,MAAqB,EACrB,MAAkB;IAElB,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,EAAE,CAAC;QACnC,GAAG,CAAC,IAAI,CACN,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,EACrD,2EAA2E,CAC5E,CAAC;QACF,OAAO,EAAE,GAAG,SAAS,EAAE,CAAC;IAC1B,CAAC;IACD,MAAM,EAAE,GAAG,MAAM,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACrD,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,MAAM,SAAS,GACb,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;YAC1B,EAAE,EAAE,OAAO,EAAE,KAAK;YAClB,mBAAmB,CAAC;QACtB,MAAM,IAAI,GAAG,gBAAgB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,SAAS,CAAC;QAC9D,OAAO,IAAI,CAAC,CAAC,CAAC,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,SAAS,CAAC;QAChE,WAAW,IAAI,CAAC,CAAC,WAAW,CAAC;QAC7B,YAAY,IAAI,CAAC,CAAC,YAAY,CAAC;IACjC,CAAC;IACD,MAAM,cAAc,GAClB,GAAG,CAAC,MAAM,KAAK,WAAW,IAAI,GAAG,CAAC,OAAO,KAAK,iBAAiB;QAC7D,CAAC,CAAC,qBAAqB,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC;QAChD,CAAC,CAAC,CAAC,CAAC;IACR,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;AAChE,CAAC"}
1
+ {"version":3,"file":"per-run.js","sourceRoot":"","sources":["../../src/cost/per-run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAErE,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,MAAM,GAAG,GAAG,YAAY,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC,CAAC;AAExD,MAAM,SAAS,GAAY;IACzB,WAAW,EAAE,CAAC;IACd,YAAY,EAAE,CAAC;IACf,OAAO,EAAE,CAAC;IACV,cAAc,EAAE,CAAC;CAClB,CAAC;AAuCF,MAAM,UAAU,cAAc,CAC5B,GAAmB,EACnB,MAAqB,EACrB,MAAkB;IAElB,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,EAAE,CAAC;QACnC,GAAG,CAAC,IAAI,CACN,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,EACrD,2EAA2E,CAC5E,CAAC;QACF,OAAO,EAAE,GAAG,SAAS,EAAE,CAAC;IAC1B,CAAC;IACD,MAAM,EAAE,GAAG,MAAM,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACrD,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1C,2DAA2D;YAC3D,KAAK,MAAM,EAAE,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;gBAC7B,MAAM,IAAI,GAAG,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBAClD,OAAO,IAAI,CAAC,EAAE,CAAC,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,SAAS,CAAC;gBAC/D,OAAO,IAAI,CAAC,EAAE,CAAC,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,SAAS,CAAC;gBACjE,WAAW,IAAI,EAAE,CAAC,WAAW,CAAC;gBAC9B,YAAY,IAAI,EAAE,CAAC,YAAY,CAAC;YAClC,CAAC;QACH,CAAC;aAAM,CAAC;YACN,4EAA4E;YAC5E,MAAM,SAAS,GACb,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;gBAC1B,EAAE,EAAE,OAAO,EAAE,KAAK;gBAClB,mBAAmB,CAAC;YACtB,MAAM,IAAI,GAAG,gBAAgB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YACjD,OAAO,IAAI,CAAC,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,SAAS,CAAC;YAC9D,OAAO,IAAI,CAAC,CAAC,CAAC,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,SAAS,CAAC;YAChE,WAAW,IAAI,CAAC,CAAC,WAAW,CAAC;YAC7B,YAAY,IAAI,CAAC,CAAC,YAAY,CAAC;QACjC,CAAC;IACH,CAAC;IACD,MAAM,cAAc,GAClB,GAAG,CAAC,MAAM,KAAK,WAAW,IAAI,GAAG,CAAC,OAAO,KAAK,iBAAiB;QAC7D,CAAC,CAAC,qBAAqB,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC;QAChD,CAAC,CAAC,CAAC,CAAC;IACR,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;AAChE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"rollup.d.ts","sourceRoot":"","sources":["../../src/cost/rollup.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAU7C,UAAU,UAAU;IAClB,KAAK,CAAC,EAAE;QACN,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;YAAE,eAAe,EAAE,MAAM,CAAC;YAAC,gBAAgB,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACrF,qBAAqB,CAAC,EAAE,MAAM,CAAC;QAC/B,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACvC;AAiID,wBAAsB,oBAAoB,CACxC,EAAE,EAAE,KAAK,EACT,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC,CA4DlC"}
1
+ {"version":3,"file":"rollup.d.ts","sourceRoot":"","sources":["../../src/cost/rollup.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAU7C,UAAU,UAAU;IAClB,KAAK,CAAC,EAAE;QACN,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;YAAE,eAAe,EAAE,MAAM,CAAC;YAAC,gBAAgB,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACrF,qBAAqB,CAAC,EAAE,MAAM,CAAC;QAC/B,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACvC;AAgJD,wBAAsB,oBAAoB,CACxC,EAAE,EAAE,KAAK,EACT,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC,CA4DlC"}
@@ -1,6 +1,6 @@
1
1
  import { randomUUID } from "node:crypto";
2
2
  import { and, gte, lt, inArray, max } from "drizzle-orm";
3
- import { pipelineRuns, stageRuns, costRollupsDaily } from "../db/schema.js";
3
+ import { pipelineRuns, stageRuns, costRollupsDaily, reviewModelRuns } from "../db/schema.js";
4
4
  import { computeRunCost } from "./per-run.js";
5
5
  import { createLogger } from "../logger.js";
6
6
  import { isFeatureLicensed } from "../license.js";
@@ -34,10 +34,22 @@ async function rollOneDay(db, dateStr, config) {
34
34
  }
35
35
  const runIds = runs.map((r) => r.id);
36
36
  const stages = await db.select().from(stageRuns).where(inArray(stageRuns.pipelineRunId, runIds));
37
+ // BEC-134: fetch per-model rows and attach them to their parent stage_run.
38
+ const stageIds = stages.map((s) => s.id);
39
+ const modelRunRows = stageIds.length > 0
40
+ ? await db.select().from(reviewModelRuns).where(inArray(reviewModelRuns.stageRunId, stageIds))
41
+ : [];
42
+ const modelRunsByStage = new Map();
43
+ for (const mr of modelRunRows) {
44
+ const arr = modelRunsByStage.get(mr.stageRunId) ?? [];
45
+ arr.push(mr);
46
+ modelRunsByStage.set(mr.stageRunId, arr);
47
+ }
37
48
  const stagesByRun = new Map();
38
49
  for (const s of stages) {
50
+ const enriched = { ...s, modelRuns: modelRunsByStage.get(s.id) ?? [] };
39
51
  const arr = stagesByRun.get(s.pipelineRunId) ?? [];
40
- arr.push(s);
52
+ arr.push(enriched);
41
53
  stagesByRun.set(s.pipelineRunId, arr);
42
54
  }
43
55
  const buckets = new Map();
@@ -1 +1 @@
1
- {"version":3,"file":"rollup.js","sourceRoot":"","sources":["../../src/cost/rollup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rollup.js","sourceRoot":"","sources":["../../src/cost/rollup.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/db/client.ts"],"names":[],"mappings":"AACA,OAAO,EAA4B,KAAK,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAClG,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAO,KAAK,GAAG,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AAItC,QAAA,MAAM,UAAU,eAAS,CAAC;AAE1B,MAAM,MAAM,QAAQ,GAAG,qBAAqB,CAAC,OAAO,UAAU,CAAC,CAAC;AAChE,uGAAuG;AACvG,MAAM,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,SAAS,CAAC,GAAG;IAAE,QAAQ,EAAE,UAAU,CAAA;CAAE,CAAC;AAC3E,MAAM,MAAM,EAAE,GAAG,QAAQ,GAAG,IAAI,CAAC;AAEjC;;;;;GAKG;AACH,MAAM,MAAM,KAAK,GAAG,GAAG,CAAC;AA6CxB;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,QAAQ,GAAG,UAAU,GAAG,MAAM,CA8JxE;AAED,8EAA8E;AAC9E,wBAAgB,gBAAgB,IAAI,MAAM,EAAE,CAK3C;AAED,wFAAwF;AACxF,wBAAgB,kBAAkB,IAAI,MAAM,CAS3C;AAED,MAAM,WAAW,eAAe;IAC9B,2DAA2D;IAC3D,MAAM,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;IAC/B,yEAAyE;IACzE,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAeD,wBAAsB,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,EAAE,CAAC,CA4BpE;AAED,oDAAoD;AACpD,wBAAgB,UAAU,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAE1C;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAI1D;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,GAAG,CAIpE"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/db/client.ts"],"names":[],"mappings":"AACA,OAAO,EAA4B,KAAK,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAClG,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAO,KAAK,GAAG,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AAItC,QAAA,MAAM,UAAU,eAAS,CAAC;AAE1B,MAAM,MAAM,QAAQ,GAAG,qBAAqB,CAAC,OAAO,UAAU,CAAC,CAAC;AAChE,uGAAuG;AACvG,MAAM,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,SAAS,CAAC,GAAG;IAAE,QAAQ,EAAE,UAAU,CAAA;CAAE,CAAC;AAC3E,MAAM,MAAM,EAAE,GAAG,QAAQ,GAAG,IAAI,CAAC;AAEjC;;;;;GAKG;AACH,MAAM,MAAM,KAAK,GAAG,GAAG,CAAC;AA6CxB;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,QAAQ,GAAG,UAAU,GAAG,MAAM,CAgLxE;AAED,8EAA8E;AAC9E,wBAAgB,gBAAgB,IAAI,MAAM,EAAE,CAK3C;AAED,wFAAwF;AACxF,wBAAgB,kBAAkB,IAAI,MAAM,CAS3C;AAED,MAAM,WAAW,eAAe;IAC9B,2DAA2D;IAC3D,MAAM,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;IAC/B,yEAAyE;IACzE,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAeD,wBAAsB,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,EAAE,CAAC,CA6BpE;AAED,oDAAoD;AACpD,wBAAgB,UAAU,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAE1C;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAI1D;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,GAAG,CAIpE"}
package/dist/db/client.js CHANGED
@@ -5,7 +5,7 @@ import { sql } from "drizzle-orm";
5
5
  import postgres from "postgres";
6
6
  import * as schema from "./schema.js";
7
7
  import { _setSchemaDriver } from "./schema.js";
8
- import { runMigrationsPostgres } from "./migrator.js";
8
+ import { runMigrationsSqlite, runMigrationsPostgres } from "./migrator.js";
9
9
  const fullSchema = schema;
10
10
  /**
11
11
  * Single unified migration list.
@@ -196,6 +196,24 @@ export function getCreateTablesDDL(driver) {
196
196
  );
197
197
  CREATE INDEX IF NOT EXISTS idx_cost_rollups_date ON cost_rollups_daily(date);
198
198
  CREATE INDEX IF NOT EXISTS idx_cost_rollups_date_pipeline ON cost_rollups_daily(date, pipeline_key);
199
+
200
+ CREATE TABLE IF NOT EXISTS review_model_runs (
201
+ id TEXT PRIMARY KEY,
202
+ stage_run_id TEXT NOT NULL REFERENCES stage_runs(id),
203
+ provider_id TEXT NOT NULL,
204
+ model_id TEXT NOT NULL,
205
+ status TEXT NOT NULL,
206
+ input_tokens INTEGER NOT NULL DEFAULT 0,
207
+ output_tokens INTEGER NOT NULL DEFAULT 0,
208
+ duration_ms INTEGER NOT NULL DEFAULT 0,
209
+ error_message TEXT,
210
+ truncated_files INTEGER NOT NULL DEFAULT 0,
211
+ started_at ${ts},
212
+ completed_at ${ts}
213
+ );
214
+
215
+ CREATE INDEX IF NOT EXISTS idx_review_model_runs_stage_run_id
216
+ ON review_model_runs(stage_run_id);
199
217
  `;
200
218
  }
201
219
  /** Generate SQLite ALTER TABLE statements from the unified migration list. */
@@ -245,6 +263,7 @@ export async function createDb(options) {
245
263
  }
246
264
  catch { /* column already exists */ }
247
265
  }
266
+ runMigrationsSqlite(sqlite);
248
267
  const db = drizzleSqlite(sqlite, { schema: fullSchema });
249
268
  db[DB_DRIVER_TAG] = "sqlite";
250
269
  return db;
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/db/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/db/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ -- BEC-134: per-model results from review-stage fanout.
2
+ CREATE TABLE IF NOT EXISTS review_model_runs (
3
+ id TEXT PRIMARY KEY,
4
+ stage_run_id TEXT NOT NULL REFERENCES stage_runs(id),
5
+ provider_id TEXT NOT NULL,
6
+ model_id TEXT NOT NULL,
7
+ status TEXT NOT NULL,
8
+ input_tokens INTEGER NOT NULL DEFAULT 0,
9
+ output_tokens INTEGER NOT NULL DEFAULT 0,
10
+ duration_ms INTEGER NOT NULL DEFAULT 0,
11
+ error_message TEXT,
12
+ truncated_files INTEGER NOT NULL DEFAULT 0,
13
+ started_at TIMESTAMPTZ,
14
+ completed_at TIMESTAMPTZ
15
+ );
16
+
17
+ CREATE INDEX IF NOT EXISTS idx_review_model_runs_stage_run_id
18
+ ON review_model_runs(stage_run_id);
@@ -0,0 +1,38 @@
1
+ -- BEC-135: Release Manager agent — decision log + one-shot approvals.
2
+
3
+ CREATE TABLE IF NOT EXISTS release_decisions (
4
+ id TEXT PRIMARY KEY,
5
+ repo_url TEXT NOT NULL,
6
+ branch TEXT NOT NULL,
7
+ decided_at TIMESTAMPTZ NOT NULL DEFAULT now(),
8
+ decision TEXT NOT NULL,
9
+ reason TEXT NOT NULL,
10
+ trigger_state_json TEXT NOT NULL,
11
+ proposed_version TEXT,
12
+ fired_tag TEXT,
13
+ fired_sha TEXT,
14
+ attempt_count INTEGER NOT NULL DEFAULT 0
15
+ );
16
+
17
+ CREATE INDEX IF NOT EXISTS idx_release_decisions_repo_branch_decided
18
+ ON release_decisions(repo_url, branch, decided_at DESC);
19
+
20
+ CREATE INDEX IF NOT EXISTS idx_release_decisions_decision_decided
21
+ ON release_decisions(decision, decided_at);
22
+
23
+ CREATE TABLE IF NOT EXISTS release_approvals (
24
+ id TEXT PRIMARY KEY,
25
+ repo_url TEXT NOT NULL,
26
+ branch TEXT NOT NULL,
27
+ approved_at TIMESTAMPTZ NOT NULL DEFAULT now(),
28
+ approved_by TEXT NOT NULL,
29
+ consumed_at TIMESTAMPTZ,
30
+ consumed_by_decision_id TEXT
31
+ );
32
+
33
+ CREATE UNIQUE INDEX IF NOT EXISTS idx_release_approvals_unique_fresh
34
+ ON release_approvals(repo_url, branch, approved_by)
35
+ WHERE consumed_at IS NULL;
36
+
37
+ CREATE INDEX IF NOT EXISTS idx_release_approvals_repo_branch_consumed
38
+ ON release_approvals(repo_url, branch, consumed_at);
@@ -0,0 +1,8 @@
1
+ -- BEC-136: QA agent — track in-flight workflow runs on the release_decisions table.
2
+
3
+ ALTER TABLE release_decisions ADD COLUMN IF NOT EXISTS qa_run_id INTEGER;
4
+ ALTER TABLE release_decisions ADD COLUMN IF NOT EXISTS qa_run_sha TEXT;
5
+
6
+ CREATE INDEX IF NOT EXISTS idx_release_decisions_qa_run_id
7
+ ON release_decisions(repo_url, branch, qa_run_id, decided_at DESC)
8
+ WHERE qa_run_id IS NOT NULL;
@@ -0,0 +1,18 @@
1
+ -- BEC-136: QA agent — Linear issue idempotency for missing QA workflows.
2
+
3
+ CREATE TABLE IF NOT EXISTS qa_gap_issues (
4
+ id TEXT PRIMARY KEY,
5
+ repo_url TEXT NOT NULL,
6
+ branch TEXT NOT NULL,
7
+ workflow_path TEXT NOT NULL,
8
+ linear_issue_id TEXT NOT NULL,
9
+ filed_at TIMESTAMPTZ NOT NULL DEFAULT now(),
10
+ resolved_at TIMESTAMPTZ
11
+ );
12
+
13
+ CREATE UNIQUE INDEX IF NOT EXISTS idx_qa_gap_issues_unique_open
14
+ ON qa_gap_issues(repo_url, branch, workflow_path)
15
+ WHERE resolved_at IS NULL;
16
+
17
+ CREATE INDEX IF NOT EXISTS idx_qa_gap_issues_lookup
18
+ ON qa_gap_issues(repo_url, branch, workflow_path, resolved_at);
@@ -0,0 +1,18 @@
1
+ -- BEC-134: per-model results from review-stage fanout.
2
+ CREATE TABLE IF NOT EXISTS review_model_runs (
3
+ id TEXT PRIMARY KEY,
4
+ stage_run_id TEXT NOT NULL REFERENCES stage_runs(id),
5
+ provider_id TEXT NOT NULL,
6
+ model_id TEXT NOT NULL,
7
+ status TEXT NOT NULL,
8
+ input_tokens INTEGER NOT NULL DEFAULT 0,
9
+ output_tokens INTEGER NOT NULL DEFAULT 0,
10
+ duration_ms INTEGER NOT NULL DEFAULT 0,
11
+ error_message TEXT,
12
+ truncated_files INTEGER NOT NULL DEFAULT 0,
13
+ started_at INTEGER,
14
+ completed_at INTEGER
15
+ );
16
+
17
+ CREATE INDEX IF NOT EXISTS idx_review_model_runs_stage_run_id
18
+ ON review_model_runs(stage_run_id);
@@ -0,0 +1,43 @@
1
+ -- BEC-135: Release Manager agent — decision log + one-shot approvals.
2
+
3
+ CREATE TABLE IF NOT EXISTS release_decisions (
4
+ id TEXT PRIMARY KEY,
5
+ repo_url TEXT NOT NULL,
6
+ branch TEXT NOT NULL,
7
+ decided_at INTEGER NOT NULL,
8
+ decision TEXT NOT NULL,
9
+ reason TEXT NOT NULL,
10
+ trigger_state_json TEXT NOT NULL,
11
+ proposed_version TEXT,
12
+ fired_tag TEXT,
13
+ fired_sha TEXT,
14
+ attempt_count INTEGER NOT NULL DEFAULT 0
15
+ );
16
+
17
+ -- Index for /release status: fast lookup of the most recent N decisions per (repo, branch).
18
+ CREATE INDEX IF NOT EXISTS idx_release_decisions_repo_branch_decided
19
+ ON release_decisions(repo_url, branch, decided_at DESC);
20
+
21
+ -- Index for retry sweep: find fire-pending rows.
22
+ CREATE INDEX IF NOT EXISTS idx_release_decisions_decision_decided
23
+ ON release_decisions(decision, decided_at);
24
+
25
+ CREATE TABLE IF NOT EXISTS release_approvals (
26
+ id TEXT PRIMARY KEY,
27
+ repo_url TEXT NOT NULL,
28
+ branch TEXT NOT NULL,
29
+ approved_at INTEGER NOT NULL,
30
+ approved_by TEXT NOT NULL,
31
+ consumed_at INTEGER,
32
+ consumed_by_decision_id TEXT
33
+ );
34
+
35
+ -- Partial UNIQUE: one fresh (un-consumed) approval per (repo, branch, user).
36
+ -- Once consumed, the row stays for audit but no longer blocks new approves.
37
+ CREATE UNIQUE INDEX IF NOT EXISTS idx_release_approvals_unique_fresh
38
+ ON release_approvals(repo_url, branch, approved_by)
39
+ WHERE consumed_at IS NULL;
40
+
41
+ -- Lookup index for fresh-approval check at decision time.
42
+ CREATE INDEX IF NOT EXISTS idx_release_approvals_repo_branch_consumed
43
+ ON release_approvals(repo_url, branch, consumed_at);
@@ -0,0 +1,9 @@
1
+ -- BEC-136: QA agent — track in-flight workflow runs on the release_decisions table.
2
+
3
+ ALTER TABLE release_decisions ADD COLUMN qa_run_id INTEGER;
4
+ ALTER TABLE release_decisions ADD COLUMN qa_run_sha TEXT;
5
+
6
+ -- Index for collectState's qaRun lookup: fastest path for "most recent decision with non-null qa_run_id"
7
+ CREATE INDEX IF NOT EXISTS idx_release_decisions_qa_run_id
8
+ ON release_decisions(repo_url, branch, qa_run_id, decided_at DESC)
9
+ WHERE qa_run_id IS NOT NULL;
@@ -0,0 +1,22 @@
1
+ -- BEC-136: QA agent — Linear issue idempotency for missing QA workflows.
2
+
3
+ CREATE TABLE IF NOT EXISTS qa_gap_issues (
4
+ id TEXT PRIMARY KEY,
5
+ repo_url TEXT NOT NULL,
6
+ branch TEXT NOT NULL,
7
+ workflow_path TEXT NOT NULL,
8
+ linear_issue_id TEXT NOT NULL,
9
+ filed_at INTEGER NOT NULL,
10
+ resolved_at INTEGER
11
+ );
12
+
13
+ -- Partial UNIQUE: at most one open gap issue per (repo, branch, workflow) at a time.
14
+ -- Once resolved (resolved_at IS NOT NULL), the row is preserved for audit but a new
15
+ -- issue can be filed for the same gap in the future.
16
+ CREATE UNIQUE INDEX IF NOT EXISTS idx_qa_gap_issues_unique_open
17
+ ON qa_gap_issues(repo_url, branch, workflow_path)
18
+ WHERE resolved_at IS NULL;
19
+
20
+ -- Lookup index for "is there an open gap for this (repo, branch, workflow)?" — partial too.
21
+ CREATE INDEX IF NOT EXISTS idx_qa_gap_issues_lookup
22
+ ON qa_gap_issues(repo_url, branch, workflow_path, resolved_at);
@@ -0,0 +1,4 @@
1
+ import type { ReviewModelRun } from "../executor/review/review-provider.js";
2
+ import type { AnyDb } from "./client.js";
3
+ export declare function insertReviewModelRuns(db: AnyDb, stageRunId: string, runs: ReviewModelRun[]): Promise<void>;
4
+ //# sourceMappingURL=review-model-runs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-model-runs.d.ts","sourceRoot":"","sources":["../../src/db/review-model-runs.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAE5E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEzC,wBAAsB,qBAAqB,CACzC,EAAE,EAAE,KAAK,EACT,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,cAAc,EAAE,GACrB,OAAO,CAAC,IAAI,CAAC,CAoBf"}
@@ -0,0 +1,25 @@
1
+ import { reviewModelRuns } from "./schema.js";
2
+ import { randomUUID } from "node:crypto";
3
+ export async function insertReviewModelRuns(db, stageRunId, runs) {
4
+ if (runs.length === 0)
5
+ return;
6
+ const now = new Date();
7
+ const rows = runs.map((r) => ({
8
+ id: randomUUID(),
9
+ stageRunId,
10
+ providerId: r.providerId,
11
+ modelId: r.modelId,
12
+ status: r.status,
13
+ inputTokens: r.inputTokens,
14
+ outputTokens: r.outputTokens,
15
+ durationMs: r.durationMs,
16
+ errorMessage: r.errorMessage,
17
+ truncatedFiles: r.truncatedFiles ?? 0,
18
+ startedAt: now,
19
+ completedAt: now,
20
+ }));
21
+ // AnyDb escape-hatch: Drizzle's insert returns a Promise on postgres-js and
22
+ // a sync builder on better-sqlite3. Awaiting works correctly for both drivers.
23
+ await db.insert(reviewModelRuns).values(rows);
24
+ }
25
+ //# sourceMappingURL=review-model-runs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-model-runs.js","sourceRoot":"","sources":["../../src/db/review-model-runs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,EAAS,EACT,UAAkB,EAClB,IAAsB;IAEtB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAC9B,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5B,EAAE,EAAE,UAAU,EAAE;QAChB,UAAU;QACV,UAAU,EAAE,CAAC,CAAC,UAAU;QACxB,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,YAAY,EAAE,CAAC,CAAC,YAAY;QAC5B,UAAU,EAAE,CAAC,CAAC,UAAU;QACxB,YAAY,EAAE,CAAC,CAAC,YAAY;QAC5B,cAAc,EAAE,CAAC,CAAC,cAAc,IAAI,CAAC;QACrC,SAAS,EAAE,GAAG;QACd,WAAW,EAAE,GAAG;KACjB,CAAC,CAAC,CAAC;IACJ,4EAA4E;IAC5E,+EAA+E;IAC/E,MAAO,EAAU,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACzD,CAAC"}