@urateam/core 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (620) hide show
  1. package/dist/__tests__/assembler.test.d.ts +2 -0
  2. package/dist/__tests__/assembler.test.d.ts.map +1 -0
  3. package/dist/__tests__/assembler.test.js +63 -0
  4. package/dist/__tests__/assembler.test.js.map +1 -0
  5. package/dist/__tests__/auth-check.test.d.ts +2 -0
  6. package/dist/__tests__/auth-check.test.d.ts.map +1 -0
  7. package/dist/__tests__/auth-check.test.js +88 -0
  8. package/dist/__tests__/auth-check.test.js.map +1 -0
  9. package/dist/__tests__/auto-merge.test.d.ts +15 -0
  10. package/dist/__tests__/auto-merge.test.d.ts.map +1 -0
  11. package/dist/__tests__/auto-merge.test.js +428 -0
  12. package/dist/__tests__/auto-merge.test.js.map +1 -0
  13. package/dist/__tests__/bec89-unified-schema.test.d.ts +2 -0
  14. package/dist/__tests__/bec89-unified-schema.test.d.ts.map +1 -0
  15. package/dist/__tests__/bec89-unified-schema.test.js +235 -0
  16. package/dist/__tests__/bec89-unified-schema.test.js.map +1 -0
  17. package/dist/__tests__/conflict-detector.test.d.ts +2 -0
  18. package/dist/__tests__/conflict-detector.test.d.ts.map +1 -0
  19. package/dist/__tests__/conflict-detector.test.js +206 -0
  20. package/dist/__tests__/conflict-detector.test.js.map +1 -0
  21. package/dist/__tests__/coordination.test.d.ts +2 -0
  22. package/dist/__tests__/coordination.test.d.ts.map +1 -0
  23. package/dist/__tests__/coordination.test.js +257 -0
  24. package/dist/__tests__/coordination.test.js.map +1 -0
  25. package/dist/__tests__/db-postgres.test.d.ts +14 -0
  26. package/dist/__tests__/db-postgres.test.d.ts.map +1 -0
  27. package/dist/__tests__/db-postgres.test.js +289 -0
  28. package/dist/__tests__/db-postgres.test.js.map +1 -0
  29. package/dist/__tests__/db.test.d.ts +2 -0
  30. package/dist/__tests__/db.test.d.ts.map +1 -0
  31. package/dist/__tests__/db.test.js +182 -0
  32. package/dist/__tests__/db.test.js.map +1 -0
  33. package/dist/__tests__/deep-review.test.d.ts +2 -0
  34. package/dist/__tests__/deep-review.test.d.ts.map +1 -0
  35. package/dist/__tests__/deep-review.test.js +322 -0
  36. package/dist/__tests__/deep-review.test.js.map +1 -0
  37. package/dist/__tests__/devcontainer.test.d.ts +2 -0
  38. package/dist/__tests__/devcontainer.test.d.ts.map +1 -0
  39. package/dist/__tests__/devcontainer.test.js +89 -0
  40. package/dist/__tests__/devcontainer.test.js.map +1 -0
  41. package/dist/__tests__/distributed-lock.test.d.ts +18 -0
  42. package/dist/__tests__/distributed-lock.test.d.ts.map +1 -0
  43. package/dist/__tests__/distributed-lock.test.js +237 -0
  44. package/dist/__tests__/distributed-lock.test.js.map +1 -0
  45. package/dist/__tests__/e2e-pipeline.test.d.ts +25 -0
  46. package/dist/__tests__/e2e-pipeline.test.d.ts.map +1 -0
  47. package/dist/__tests__/e2e-pipeline.test.js +517 -0
  48. package/dist/__tests__/e2e-pipeline.test.js.map +1 -0
  49. package/dist/__tests__/error-classifier.test.d.ts +2 -0
  50. package/dist/__tests__/error-classifier.test.d.ts.map +1 -0
  51. package/dist/__tests__/error-classifier.test.js +33 -0
  52. package/dist/__tests__/error-classifier.test.js.map +1 -0
  53. package/dist/__tests__/executor-integration.test.d.ts +11 -0
  54. package/dist/__tests__/executor-integration.test.d.ts.map +1 -0
  55. package/dist/__tests__/executor-integration.test.js +246 -0
  56. package/dist/__tests__/executor-integration.test.js.map +1 -0
  57. package/dist/__tests__/executor-issue-id.test.d.ts +13 -0
  58. package/dist/__tests__/executor-issue-id.test.d.ts.map +1 -0
  59. package/dist/__tests__/executor-issue-id.test.js +211 -0
  60. package/dist/__tests__/executor-issue-id.test.js.map +1 -0
  61. package/dist/__tests__/executor.test.d.ts +2 -0
  62. package/dist/__tests__/executor.test.d.ts.map +1 -0
  63. package/dist/__tests__/executor.test.js +164 -0
  64. package/dist/__tests__/executor.test.js.map +1 -0
  65. package/dist/__tests__/extract-handoff.test.d.ts +2 -0
  66. package/dist/__tests__/extract-handoff.test.d.ts.map +1 -0
  67. package/dist/__tests__/extract-handoff.test.js +131 -0
  68. package/dist/__tests__/extract-handoff.test.js.map +1 -0
  69. package/dist/__tests__/fail-on-auto-commit.test.d.ts +2 -0
  70. package/dist/__tests__/fail-on-auto-commit.test.d.ts.map +1 -0
  71. package/dist/__tests__/fail-on-auto-commit.test.js +156 -0
  72. package/dist/__tests__/fail-on-auto-commit.test.js.map +1 -0
  73. package/dist/__tests__/fixtures/webhook-comment.json +5 -0
  74. package/dist/__tests__/fixtures/webhook-state-change.json +15 -0
  75. package/dist/__tests__/force-push-agent-branches.test.d.ts +12 -0
  76. package/dist/__tests__/force-push-agent-branches.test.d.ts.map +1 -0
  77. package/dist/__tests__/force-push-agent-branches.test.js +348 -0
  78. package/dist/__tests__/force-push-agent-branches.test.js.map +1 -0
  79. package/dist/__tests__/github-webhook.test.d.ts +2 -0
  80. package/dist/__tests__/github-webhook.test.d.ts.map +1 -0
  81. package/dist/__tests__/github-webhook.test.js +370 -0
  82. package/dist/__tests__/github-webhook.test.js.map +1 -0
  83. package/dist/__tests__/gitlab.test.d.ts +28 -0
  84. package/dist/__tests__/gitlab.test.d.ts.map +1 -0
  85. package/dist/__tests__/gitlab.test.js +241 -0
  86. package/dist/__tests__/gitlab.test.js.map +1 -0
  87. package/dist/__tests__/integration/auto-commit.test.d.ts +2 -0
  88. package/dist/__tests__/integration/auto-commit.test.d.ts.map +1 -0
  89. package/dist/__tests__/integration/auto-commit.test.js +207 -0
  90. package/dist/__tests__/integration/auto-commit.test.js.map +1 -0
  91. package/dist/__tests__/integration/bec99-cross-worktree-guard.test.d.ts +10 -0
  92. package/dist/__tests__/integration/bec99-cross-worktree-guard.test.d.ts.map +1 -0
  93. package/dist/__tests__/integration/bec99-cross-worktree-guard.test.js +183 -0
  94. package/dist/__tests__/integration/bec99-cross-worktree-guard.test.js.map +1 -0
  95. package/dist/__tests__/integration/reproduce-bec99.test.d.ts +32 -0
  96. package/dist/__tests__/integration/reproduce-bec99.test.d.ts.map +1 -0
  97. package/dist/__tests__/integration/reproduce-bec99.test.js +243 -0
  98. package/dist/__tests__/integration/reproduce-bec99.test.js.map +1 -0
  99. package/dist/__tests__/integration/vitest-changed.test.d.ts +10 -0
  100. package/dist/__tests__/integration/vitest-changed.test.d.ts.map +1 -0
  101. package/dist/__tests__/integration/vitest-changed.test.js +128 -0
  102. package/dist/__tests__/integration/vitest-changed.test.js.map +1 -0
  103. package/dist/__tests__/license.test.d.ts +2 -0
  104. package/dist/__tests__/license.test.d.ts.map +1 -0
  105. package/dist/__tests__/license.test.js +53 -0
  106. package/dist/__tests__/license.test.js.map +1 -0
  107. package/dist/__tests__/mcp-resolver.test.d.ts +2 -0
  108. package/dist/__tests__/mcp-resolver.test.d.ts.map +1 -0
  109. package/dist/__tests__/mcp-resolver.test.js +65 -0
  110. package/dist/__tests__/mcp-resolver.test.js.map +1 -0
  111. package/dist/__tests__/migrator.test.d.ts +2 -0
  112. package/dist/__tests__/migrator.test.d.ts.map +1 -0
  113. package/dist/__tests__/migrator.test.js +300 -0
  114. package/dist/__tests__/migrator.test.js.map +1 -0
  115. package/dist/__tests__/notifier-discord.test.d.ts +2 -0
  116. package/dist/__tests__/notifier-discord.test.d.ts.map +1 -0
  117. package/dist/__tests__/notifier-discord.test.js +166 -0
  118. package/dist/__tests__/notifier-discord.test.js.map +1 -0
  119. package/dist/__tests__/notifier-slack.test.d.ts +2 -0
  120. package/dist/__tests__/notifier-slack.test.d.ts.map +1 -0
  121. package/dist/__tests__/notifier-slack.test.js +157 -0
  122. package/dist/__tests__/notifier-slack.test.js.map +1 -0
  123. package/dist/__tests__/notifier.test.d.ts +2 -0
  124. package/dist/__tests__/notifier.test.d.ts.map +1 -0
  125. package/dist/__tests__/notifier.test.js +207 -0
  126. package/dist/__tests__/notifier.test.js.map +1 -0
  127. package/dist/__tests__/pipeline-config.test.d.ts +2 -0
  128. package/dist/__tests__/pipeline-config.test.d.ts.map +1 -0
  129. package/dist/__tests__/pipeline-config.test.js +143 -0
  130. package/dist/__tests__/pipeline-config.test.js.map +1 -0
  131. package/dist/__tests__/pipeline-runner.test.d.ts +2 -0
  132. package/dist/__tests__/pipeline-runner.test.d.ts.map +1 -0
  133. package/dist/__tests__/pipeline-runner.test.js +359 -0
  134. package/dist/__tests__/pipeline-runner.test.js.map +1 -0
  135. package/dist/__tests__/pm-approvals-n1.repro.test.d.ts +9 -0
  136. package/dist/__tests__/pm-approvals-n1.repro.test.d.ts.map +1 -0
  137. package/dist/__tests__/pm-approvals-n1.repro.test.js +175 -0
  138. package/dist/__tests__/pm-approvals-n1.repro.test.js.map +1 -0
  139. package/dist/__tests__/pm-approvals.test.d.ts +2 -0
  140. package/dist/__tests__/pm-approvals.test.d.ts.map +1 -0
  141. package/dist/__tests__/pm-approvals.test.js +162 -0
  142. package/dist/__tests__/pm-approvals.test.js.map +1 -0
  143. package/dist/__tests__/pm-budget.test.d.ts +2 -0
  144. package/dist/__tests__/pm-budget.test.d.ts.map +1 -0
  145. package/dist/__tests__/pm-budget.test.js +65 -0
  146. package/dist/__tests__/pm-budget.test.js.map +1 -0
  147. package/dist/__tests__/pm-conflict.test.d.ts +2 -0
  148. package/dist/__tests__/pm-conflict.test.d.ts.map +1 -0
  149. package/dist/__tests__/pm-conflict.test.js +87 -0
  150. package/dist/__tests__/pm-conflict.test.js.map +1 -0
  151. package/dist/__tests__/pm-promote.test.d.ts +2 -0
  152. package/dist/__tests__/pm-promote.test.d.ts.map +1 -0
  153. package/dist/__tests__/pm-promote.test.js +82 -0
  154. package/dist/__tests__/pm-promote.test.js.map +1 -0
  155. package/dist/__tests__/pm-recover.test.d.ts +2 -0
  156. package/dist/__tests__/pm-recover.test.d.ts.map +1 -0
  157. package/dist/__tests__/pm-recover.test.js +100 -0
  158. package/dist/__tests__/pm-recover.test.js.map +1 -0
  159. package/dist/__tests__/pm-scheduler.test.d.ts +2 -0
  160. package/dist/__tests__/pm-scheduler.test.d.ts.map +1 -0
  161. package/dist/__tests__/pm-scheduler.test.js +112 -0
  162. package/dist/__tests__/pm-scheduler.test.js.map +1 -0
  163. package/dist/__tests__/pm-slack-interface.test.d.ts +2 -0
  164. package/dist/__tests__/pm-slack-interface.test.d.ts.map +1 -0
  165. package/dist/__tests__/pm-slack-interface.test.js +372 -0
  166. package/dist/__tests__/pm-slack-interface.test.js.map +1 -0
  167. package/dist/__tests__/pm-slack.test.d.ts +2 -0
  168. package/dist/__tests__/pm-slack.test.d.ts.map +1 -0
  169. package/dist/__tests__/pm-slack.test.js +83 -0
  170. package/dist/__tests__/pm-slack.test.js.map +1 -0
  171. package/dist/__tests__/pm-triage.test.d.ts +2 -0
  172. package/dist/__tests__/pm-triage.test.d.ts.map +1 -0
  173. package/dist/__tests__/pm-triage.test.js +198 -0
  174. package/dist/__tests__/pm-triage.test.js.map +1 -0
  175. package/dist/__tests__/pm-types.test.d.ts +2 -0
  176. package/dist/__tests__/pm-types.test.d.ts.map +1 -0
  177. package/dist/__tests__/pm-types.test.js +76 -0
  178. package/dist/__tests__/pm-types.test.js.map +1 -0
  179. package/dist/__tests__/pr-automerge.test.d.ts +18 -0
  180. package/dist/__tests__/pr-automerge.test.d.ts.map +1 -0
  181. package/dist/__tests__/pr-automerge.test.js +645 -0
  182. package/dist/__tests__/pr-automerge.test.js.map +1 -0
  183. package/dist/__tests__/pr-description.test.d.ts +2 -0
  184. package/dist/__tests__/pr-description.test.d.ts.map +1 -0
  185. package/dist/__tests__/pr-description.test.js +728 -0
  186. package/dist/__tests__/pr-description.test.js.map +1 -0
  187. package/dist/__tests__/prompt-injection.test.d.ts +2 -0
  188. package/dist/__tests__/prompt-injection.test.d.ts.map +1 -0
  189. package/dist/__tests__/prompt-injection.test.js +446 -0
  190. package/dist/__tests__/prompt-injection.test.js.map +1 -0
  191. package/dist/__tests__/ralph-gate.test.d.ts +19 -0
  192. package/dist/__tests__/ralph-gate.test.d.ts.map +1 -0
  193. package/dist/__tests__/ralph-gate.test.js +593 -0
  194. package/dist/__tests__/ralph-gate.test.js.map +1 -0
  195. package/dist/__tests__/ralph-review-fix-regression.test.d.ts +18 -0
  196. package/dist/__tests__/ralph-review-fix-regression.test.d.ts.map +1 -0
  197. package/dist/__tests__/ralph-review-fix-regression.test.js +306 -0
  198. package/dist/__tests__/ralph-review-fix-regression.test.js.map +1 -0
  199. package/dist/__tests__/ralph.test.d.ts +2 -0
  200. package/dist/__tests__/ralph.test.d.ts.map +1 -0
  201. package/dist/__tests__/ralph.test.js +96 -0
  202. package/dist/__tests__/ralph.test.js.map +1 -0
  203. package/dist/__tests__/recover-stuck.test.d.ts +8 -0
  204. package/dist/__tests__/recover-stuck.test.d.ts.map +1 -0
  205. package/dist/__tests__/recover-stuck.test.js +399 -0
  206. package/dist/__tests__/recover-stuck.test.js.map +1 -0
  207. package/dist/__tests__/repo.test.d.ts +2 -0
  208. package/dist/__tests__/repo.test.d.ts.map +1 -0
  209. package/dist/__tests__/repo.test.js +295 -0
  210. package/dist/__tests__/repo.test.js.map +1 -0
  211. package/dist/__tests__/repro-bec58-n-plus-one.test.d.ts +2 -0
  212. package/dist/__tests__/repro-bec58-n-plus-one.test.d.ts.map +1 -0
  213. package/dist/__tests__/repro-bec58-n-plus-one.test.js +187 -0
  214. package/dist/__tests__/repro-bec58-n-plus-one.test.js.map +1 -0
  215. package/dist/__tests__/reproduce-bec113-pagination-warning.test.d.ts +16 -0
  216. package/dist/__tests__/reproduce-bec113-pagination-warning.test.d.ts.map +1 -0
  217. package/dist/__tests__/reproduce-bec113-pagination-warning.test.js +226 -0
  218. package/dist/__tests__/reproduce-bec113-pagination-warning.test.js.map +1 -0
  219. package/dist/__tests__/reproduce-bec43-updatedat.test.d.ts +2 -0
  220. package/dist/__tests__/reproduce-bec43-updatedat.test.d.ts.map +1 -0
  221. package/dist/__tests__/reproduce-bec43-updatedat.test.js +76 -0
  222. package/dist/__tests__/reproduce-bec43-updatedat.test.js.map +1 -0
  223. package/dist/__tests__/reproduce-bec48-distributed-race.test.d.ts +18 -0
  224. package/dist/__tests__/reproduce-bec48-distributed-race.test.d.ts.map +1 -0
  225. package/dist/__tests__/reproduce-bec48-distributed-race.test.js +178 -0
  226. package/dist/__tests__/reproduce-bec48-distributed-race.test.js.map +1 -0
  227. package/dist/__tests__/reproduce-bec62.test.d.ts +2 -0
  228. package/dist/__tests__/reproduce-bec62.test.d.ts.map +1 -0
  229. package/dist/__tests__/reproduce-bec62.test.js +86 -0
  230. package/dist/__tests__/reproduce-bec62.test.js.map +1 -0
  231. package/dist/__tests__/reproduce-bec91-stuck-in-progress.test.d.ts +13 -0
  232. package/dist/__tests__/reproduce-bec91-stuck-in-progress.test.d.ts.map +1 -0
  233. package/dist/__tests__/reproduce-bec91-stuck-in-progress.test.js +220 -0
  234. package/dist/__tests__/reproduce-bec91-stuck-in-progress.test.js.map +1 -0
  235. package/dist/__tests__/review-feedback.test.d.ts +2 -0
  236. package/dist/__tests__/review-feedback.test.d.ts.map +1 -0
  237. package/dist/__tests__/review-feedback.test.js +383 -0
  238. package/dist/__tests__/review-feedback.test.js.map +1 -0
  239. package/dist/__tests__/sanitizer.test.d.ts +2 -0
  240. package/dist/__tests__/sanitizer.test.d.ts.map +1 -0
  241. package/dist/__tests__/sanitizer.test.js +162 -0
  242. package/dist/__tests__/sanitizer.test.js.map +1 -0
  243. package/dist/__tests__/security.test.d.ts +2 -0
  244. package/dist/__tests__/security.test.d.ts.map +1 -0
  245. package/dist/__tests__/security.test.js +52 -0
  246. package/dist/__tests__/security.test.js.map +1 -0
  247. package/dist/__tests__/server.test.d.ts +2 -0
  248. package/dist/__tests__/server.test.d.ts.map +1 -0
  249. package/dist/__tests__/server.test.js +61 -0
  250. package/dist/__tests__/server.test.js.map +1 -0
  251. package/dist/__tests__/slack-alerts.test.d.ts +2 -0
  252. package/dist/__tests__/slack-alerts.test.d.ts.map +1 -0
  253. package/dist/__tests__/slack-alerts.test.js +214 -0
  254. package/dist/__tests__/slack-alerts.test.js.map +1 -0
  255. package/dist/__tests__/stage-models.test.d.ts +14 -0
  256. package/dist/__tests__/stage-models.test.d.ts.map +1 -0
  257. package/dist/__tests__/stage-models.test.js +244 -0
  258. package/dist/__tests__/stage-models.test.js.map +1 -0
  259. package/dist/__tests__/start-todo.test.d.ts +2 -0
  260. package/dist/__tests__/start-todo.test.d.ts.map +1 -0
  261. package/dist/__tests__/start-todo.test.js +175 -0
  262. package/dist/__tests__/start-todo.test.js.map +1 -0
  263. package/dist/__tests__/tech-stack.test.d.ts +2 -0
  264. package/dist/__tests__/tech-stack.test.d.ts.map +1 -0
  265. package/dist/__tests__/tech-stack.test.js +75 -0
  266. package/dist/__tests__/tech-stack.test.js.map +1 -0
  267. package/dist/__tests__/templates.test.d.ts +2 -0
  268. package/dist/__tests__/templates.test.d.ts.map +1 -0
  269. package/dist/__tests__/templates.test.js +161 -0
  270. package/dist/__tests__/templates.test.js.map +1 -0
  271. package/dist/__tests__/test-quality.test.d.ts +2 -0
  272. package/dist/__tests__/test-quality.test.d.ts.map +1 -0
  273. package/dist/__tests__/test-quality.test.js +329 -0
  274. package/dist/__tests__/test-quality.test.js.map +1 -0
  275. package/dist/__tests__/token-budget.test.d.ts +2 -0
  276. package/dist/__tests__/token-budget.test.d.ts.map +1 -0
  277. package/dist/__tests__/token-budget.test.js +198 -0
  278. package/dist/__tests__/token-budget.test.js.map +1 -0
  279. package/dist/__tests__/types.test.d.ts +2 -0
  280. package/dist/__tests__/types.test.d.ts.map +1 -0
  281. package/dist/__tests__/types.test.js +156 -0
  282. package/dist/__tests__/types.test.js.map +1 -0
  283. package/dist/__tests__/validate.test.d.ts +2 -0
  284. package/dist/__tests__/validate.test.d.ts.map +1 -0
  285. package/dist/__tests__/validate.test.js +128 -0
  286. package/dist/__tests__/validate.test.js.map +1 -0
  287. package/dist/__tests__/webhook-handler.test.d.ts +2 -0
  288. package/dist/__tests__/webhook-handler.test.d.ts.map +1 -0
  289. package/dist/__tests__/webhook-handler.test.js +286 -0
  290. package/dist/__tests__/webhook-handler.test.js.map +1 -0
  291. package/dist/__tests__/webhook.test.d.ts +2 -0
  292. package/dist/__tests__/webhook.test.d.ts.map +1 -0
  293. package/dist/__tests__/webhook.test.js +58 -0
  294. package/dist/__tests__/webhook.test.js.map +1 -0
  295. package/dist/db/client.d.ts +56 -0
  296. package/dist/db/client.d.ts.map +1 -0
  297. package/dist/db/client.js +201 -0
  298. package/dist/db/client.js.map +1 -0
  299. package/dist/db/index.d.ts +4 -0
  300. package/dist/db/index.d.ts.map +1 -0
  301. package/dist/db/index.js +4 -0
  302. package/dist/db/index.js.map +1 -0
  303. package/dist/db/migrations/postgres/001_initial_schema.sql +78 -0
  304. package/dist/db/migrations/postgres/002_pg_timestamps.sql +78 -0
  305. package/dist/db/migrations/postgres/003_retry_count.sql +10 -0
  306. package/dist/db/migrations/postgres/004_review_feedback.sql +20 -0
  307. package/dist/db/migrations/postgres/005_auto_merge.sql +15 -0
  308. package/dist/db/migrations/sqlite/001_initial_schema.sql +78 -0
  309. package/dist/db/migrations/sqlite/002_retry_count.sql +5 -0
  310. package/dist/db/migrations/sqlite/003_review_feedback.sql +7 -0
  311. package/dist/db/migrations/sqlite/004_auto_merge.sql +6 -0
  312. package/dist/db/migrator.d.ts +51 -0
  313. package/dist/db/migrator.d.ts.map +1 -0
  314. package/dist/db/migrator.js +188 -0
  315. package/dist/db/migrator.js.map +1 -0
  316. package/dist/db/schema.d.ts +1114 -0
  317. package/dist/db/schema.d.ts.map +1 -0
  318. package/dist/db/schema.js +129 -0
  319. package/dist/db/schema.js.map +1 -0
  320. package/dist/entrypoint.d.ts +2 -0
  321. package/dist/entrypoint.d.ts.map +1 -0
  322. package/dist/entrypoint.js +113 -0
  323. package/dist/entrypoint.js.map +1 -0
  324. package/dist/executor/agent-config.d.ts +10 -0
  325. package/dist/executor/agent-config.d.ts.map +1 -0
  326. package/dist/executor/agent-config.js +81 -0
  327. package/dist/executor/agent-config.js.map +1 -0
  328. package/dist/executor/agent-stream.d.ts +65 -0
  329. package/dist/executor/agent-stream.d.ts.map +1 -0
  330. package/dist/executor/agent-stream.js +101 -0
  331. package/dist/executor/agent-stream.js.map +1 -0
  332. package/dist/executor/auth-check.d.ts +10 -0
  333. package/dist/executor/auth-check.d.ts.map +1 -0
  334. package/dist/executor/auth-check.js +52 -0
  335. package/dist/executor/auth-check.js.map +1 -0
  336. package/dist/executor/deep-review.d.ts +61 -0
  337. package/dist/executor/deep-review.d.ts.map +1 -0
  338. package/dist/executor/deep-review.js +308 -0
  339. package/dist/executor/deep-review.js.map +1 -0
  340. package/dist/executor/executor.d.ts +27 -0
  341. package/dist/executor/executor.d.ts.map +1 -0
  342. package/dist/executor/executor.js +168 -0
  343. package/dist/executor/executor.js.map +1 -0
  344. package/dist/executor/extract-handoff.d.ts +14 -0
  345. package/dist/executor/extract-handoff.d.ts.map +1 -0
  346. package/dist/executor/extract-handoff.js +80 -0
  347. package/dist/executor/extract-handoff.js.map +1 -0
  348. package/dist/executor/handoff.d.ts +24 -0
  349. package/dist/executor/handoff.d.ts.map +1 -0
  350. package/dist/executor/handoff.js +63 -0
  351. package/dist/executor/handoff.js.map +1 -0
  352. package/dist/executor/index.d.ts +8 -0
  353. package/dist/executor/index.d.ts.map +1 -0
  354. package/dist/executor/index.js +8 -0
  355. package/dist/executor/index.js.map +1 -0
  356. package/dist/executor/mcp-resolver.d.ts +29 -0
  357. package/dist/executor/mcp-resolver.d.ts.map +1 -0
  358. package/dist/executor/mcp-resolver.js +80 -0
  359. package/dist/executor/mcp-resolver.js.map +1 -0
  360. package/dist/executor/permissions.d.ts +11 -0
  361. package/dist/executor/permissions.d.ts.map +1 -0
  362. package/dist/executor/permissions.js +32 -0
  363. package/dist/executor/permissions.js.map +1 -0
  364. package/dist/executor/profiles.d.ts +5 -0
  365. package/dist/executor/profiles.d.ts.map +1 -0
  366. package/dist/executor/profiles.js +35 -0
  367. package/dist/executor/profiles.js.map +1 -0
  368. package/dist/executor/prompt/assembler.d.ts +10 -0
  369. package/dist/executor/prompt/assembler.d.ts.map +1 -0
  370. package/dist/executor/prompt/assembler.js +28 -0
  371. package/dist/executor/prompt/assembler.js.map +1 -0
  372. package/dist/executor/prompt/index.d.ts +5 -0
  373. package/dist/executor/prompt/index.d.ts.map +1 -0
  374. package/dist/executor/prompt/index.js +5 -0
  375. package/dist/executor/prompt/index.js.map +1 -0
  376. package/dist/executor/prompt/sanitizer.d.ts +25 -0
  377. package/dist/executor/prompt/sanitizer.d.ts.map +1 -0
  378. package/dist/executor/prompt/sanitizer.js +81 -0
  379. package/dist/executor/prompt/sanitizer.js.map +1 -0
  380. package/dist/executor/prompt/schema-mapper.d.ts +7 -0
  381. package/dist/executor/prompt/schema-mapper.d.ts.map +1 -0
  382. package/dist/executor/prompt/schema-mapper.js +59 -0
  383. package/dist/executor/prompt/schema-mapper.js.map +1 -0
  384. package/dist/executor/prompt/templates.d.ts +31 -0
  385. package/dist/executor/prompt/templates.d.ts.map +1 -0
  386. package/dist/executor/prompt/templates.js +283 -0
  387. package/dist/executor/prompt/templates.js.map +1 -0
  388. package/dist/executor/ralph.d.ts +19 -0
  389. package/dist/executor/ralph.d.ts.map +1 -0
  390. package/dist/executor/ralph.js +112 -0
  391. package/dist/executor/ralph.js.map +1 -0
  392. package/dist/executor/test-quality.d.ts +117 -0
  393. package/dist/executor/test-quality.d.ts.map +1 -0
  394. package/dist/executor/test-quality.js +261 -0
  395. package/dist/executor/test-quality.js.map +1 -0
  396. package/dist/executor/validate.d.ts +15 -0
  397. package/dist/executor/validate.d.ts.map +1 -0
  398. package/dist/executor/validate.js +124 -0
  399. package/dist/executor/validate.js.map +1 -0
  400. package/dist/index.d.ts +29 -0
  401. package/dist/index.d.ts.map +1 -0
  402. package/dist/index.js +26 -0
  403. package/dist/index.js.map +1 -0
  404. package/dist/license.d.ts +18 -0
  405. package/dist/license.d.ts.map +1 -0
  406. package/dist/license.js +44 -0
  407. package/dist/license.js.map +1 -0
  408. package/dist/logger.d.ts +43 -0
  409. package/dist/logger.d.ts.map +1 -0
  410. package/dist/logger.js +91 -0
  411. package/dist/logger.js.map +1 -0
  412. package/dist/notifier/composite.d.ts +13 -0
  413. package/dist/notifier/composite.d.ts.map +1 -0
  414. package/dist/notifier/composite.js +28 -0
  415. package/dist/notifier/composite.js.map +1 -0
  416. package/dist/notifier/discord.d.ts +14 -0
  417. package/dist/notifier/discord.d.ts.map +1 -0
  418. package/dist/notifier/discord.js +105 -0
  419. package/dist/notifier/discord.js.map +1 -0
  420. package/dist/notifier/index.d.ts +6 -0
  421. package/dist/notifier/index.d.ts.map +1 -0
  422. package/dist/notifier/index.js +6 -0
  423. package/dist/notifier/index.js.map +1 -0
  424. package/dist/notifier/linear.d.ts +28 -0
  425. package/dist/notifier/linear.d.ts.map +1 -0
  426. package/dist/notifier/linear.js +138 -0
  427. package/dist/notifier/linear.js.map +1 -0
  428. package/dist/notifier/slack-alerts.d.ts +62 -0
  429. package/dist/notifier/slack-alerts.d.ts.map +1 -0
  430. package/dist/notifier/slack-alerts.js +184 -0
  431. package/dist/notifier/slack-alerts.js.map +1 -0
  432. package/dist/notifier/slack.d.ts +14 -0
  433. package/dist/notifier/slack.d.ts.map +1 -0
  434. package/dist/notifier/slack.js +146 -0
  435. package/dist/notifier/slack.js.map +1 -0
  436. package/dist/pipeline/automerge.d.ts +44 -0
  437. package/dist/pipeline/automerge.d.ts.map +1 -0
  438. package/dist/pipeline/automerge.js +135 -0
  439. package/dist/pipeline/automerge.js.map +1 -0
  440. package/dist/pipeline/config.d.ts +5 -0
  441. package/dist/pipeline/config.d.ts.map +1 -0
  442. package/dist/pipeline/config.js +68 -0
  443. package/dist/pipeline/config.js.map +1 -0
  444. package/dist/pipeline/distributed-lock.d.ts +50 -0
  445. package/dist/pipeline/distributed-lock.d.ts.map +1 -0
  446. package/dist/pipeline/distributed-lock.js +114 -0
  447. package/dist/pipeline/distributed-lock.js.map +1 -0
  448. package/dist/pipeline/error-classifier.d.ts +9 -0
  449. package/dist/pipeline/error-classifier.d.ts.map +1 -0
  450. package/dist/pipeline/error-classifier.js +25 -0
  451. package/dist/pipeline/error-classifier.js.map +1 -0
  452. package/dist/pipeline/index.d.ts +9 -0
  453. package/dist/pipeline/index.d.ts.map +1 -0
  454. package/dist/pipeline/index.js +9 -0
  455. package/dist/pipeline/index.js.map +1 -0
  456. package/dist/pipeline/pr-description.d.ts +35 -0
  457. package/dist/pipeline/pr-description.d.ts.map +1 -0
  458. package/dist/pipeline/pr-description.js +52 -0
  459. package/dist/pipeline/pr-description.js.map +1 -0
  460. package/dist/pipeline/queue.d.ts +7 -0
  461. package/dist/pipeline/queue.d.ts.map +1 -0
  462. package/dist/pipeline/queue.js +39 -0
  463. package/dist/pipeline/queue.js.map +1 -0
  464. package/dist/pipeline/router.d.ts +6 -0
  465. package/dist/pipeline/router.d.ts.map +1 -0
  466. package/dist/pipeline/router.js +19 -0
  467. package/dist/pipeline/router.js.map +1 -0
  468. package/dist/pipeline/runner.d.ts +142 -0
  469. package/dist/pipeline/runner.d.ts.map +1 -0
  470. package/dist/pipeline/runner.js +1848 -0
  471. package/dist/pipeline/runner.js.map +1 -0
  472. package/dist/pm/actions/approval-helpers.d.ts +11 -0
  473. package/dist/pm/actions/approval-helpers.d.ts.map +1 -0
  474. package/dist/pm/actions/approval-helpers.js +34 -0
  475. package/dist/pm/actions/approval-helpers.js.map +1 -0
  476. package/dist/pm/actions/cancel.d.ts +11 -0
  477. package/dist/pm/actions/cancel.d.ts.map +1 -0
  478. package/dist/pm/actions/cancel.js +68 -0
  479. package/dist/pm/actions/cancel.js.map +1 -0
  480. package/dist/pm/actions/deprioritize.d.ts +12 -0
  481. package/dist/pm/actions/deprioritize.d.ts.map +1 -0
  482. package/dist/pm/actions/deprioritize.js +55 -0
  483. package/dist/pm/actions/deprioritize.js.map +1 -0
  484. package/dist/pm/actions/promote.d.ts +11 -0
  485. package/dist/pm/actions/promote.d.ts.map +1 -0
  486. package/dist/pm/actions/promote.js +78 -0
  487. package/dist/pm/actions/promote.js.map +1 -0
  488. package/dist/pm/actions/recover-stuck.d.ts +42 -0
  489. package/dist/pm/actions/recover-stuck.d.ts.map +1 -0
  490. package/dist/pm/actions/recover-stuck.js +143 -0
  491. package/dist/pm/actions/recover-stuck.js.map +1 -0
  492. package/dist/pm/actions/recover.d.ts +18 -0
  493. package/dist/pm/actions/recover.d.ts.map +1 -0
  494. package/dist/pm/actions/recover.js +56 -0
  495. package/dist/pm/actions/recover.js.map +1 -0
  496. package/dist/pm/actions/resolve-approvals.d.ts +17 -0
  497. package/dist/pm/actions/resolve-approvals.d.ts.map +1 -0
  498. package/dist/pm/actions/resolve-approvals.js +92 -0
  499. package/dist/pm/actions/resolve-approvals.js.map +1 -0
  500. package/dist/pm/actions/start-todo.d.ts +28 -0
  501. package/dist/pm/actions/start-todo.d.ts.map +1 -0
  502. package/dist/pm/actions/start-todo.js +117 -0
  503. package/dist/pm/actions/start-todo.js.map +1 -0
  504. package/dist/pm/actions/triage.d.ts +13 -0
  505. package/dist/pm/actions/triage.d.ts.map +1 -0
  506. package/dist/pm/actions/triage.js +109 -0
  507. package/dist/pm/actions/triage.js.map +1 -0
  508. package/dist/pm/budget.d.ts +9 -0
  509. package/dist/pm/budget.d.ts.map +1 -0
  510. package/dist/pm/budget.js +62 -0
  511. package/dist/pm/budget.js.map +1 -0
  512. package/dist/pm/call-claude.d.ts +3 -0
  513. package/dist/pm/call-claude.d.ts.map +1 -0
  514. package/dist/pm/call-claude.js +37 -0
  515. package/dist/pm/call-claude.js.map +1 -0
  516. package/dist/pm/conflict-detector.d.ts +42 -0
  517. package/dist/pm/conflict-detector.d.ts.map +1 -0
  518. package/dist/pm/conflict-detector.js +116 -0
  519. package/dist/pm/conflict-detector.js.map +1 -0
  520. package/dist/pm/conflict.d.ts +20 -0
  521. package/dist/pm/conflict.d.ts.map +1 -0
  522. package/dist/pm/conflict.js +63 -0
  523. package/dist/pm/conflict.js.map +1 -0
  524. package/dist/pm/coordination.d.ts +50 -0
  525. package/dist/pm/coordination.d.ts.map +1 -0
  526. package/dist/pm/coordination.js +163 -0
  527. package/dist/pm/coordination.js.map +1 -0
  528. package/dist/pm/linear-helpers.d.ts +2 -0
  529. package/dist/pm/linear-helpers.d.ts.map +1 -0
  530. package/dist/pm/linear-helpers.js +16 -0
  531. package/dist/pm/linear-helpers.js.map +1 -0
  532. package/dist/pm/scheduler.d.ts +47 -0
  533. package/dist/pm/scheduler.d.ts.map +1 -0
  534. package/dist/pm/scheduler.js +346 -0
  535. package/dist/pm/scheduler.js.map +1 -0
  536. package/dist/pm/slack-helpers.d.ts +2 -0
  537. package/dist/pm/slack-helpers.d.ts.map +1 -0
  538. package/dist/pm/slack-helpers.js +24 -0
  539. package/dist/pm/slack-helpers.js.map +1 -0
  540. package/dist/pm/slack-interface.d.ts +133 -0
  541. package/dist/pm/slack-interface.d.ts.map +1 -0
  542. package/dist/pm/slack-interface.js +641 -0
  543. package/dist/pm/slack-interface.js.map +1 -0
  544. package/dist/pm/slack.d.ts +18 -0
  545. package/dist/pm/slack.d.ts.map +1 -0
  546. package/dist/pm/slack.js +144 -0
  547. package/dist/pm/slack.js.map +1 -0
  548. package/dist/pm/types.d.ts +99 -0
  549. package/dist/pm/types.d.ts.map +1 -0
  550. package/dist/pm/types.js +17 -0
  551. package/dist/pm/types.js.map +1 -0
  552. package/dist/repo/config.d.ts +35 -0
  553. package/dist/repo/config.d.ts.map +1 -0
  554. package/dist/repo/config.js +72 -0
  555. package/dist/repo/config.js.map +1 -0
  556. package/dist/repo/devcontainer.d.ts +33 -0
  557. package/dist/repo/devcontainer.d.ts.map +1 -0
  558. package/dist/repo/devcontainer.js +90 -0
  559. package/dist/repo/devcontainer.js.map +1 -0
  560. package/dist/repo/git.d.ts +185 -0
  561. package/dist/repo/git.d.ts.map +1 -0
  562. package/dist/repo/git.js +586 -0
  563. package/dist/repo/git.js.map +1 -0
  564. package/dist/repo/github.d.ts +56 -0
  565. package/dist/repo/github.d.ts.map +1 -0
  566. package/dist/repo/github.js +164 -0
  567. package/dist/repo/github.js.map +1 -0
  568. package/dist/repo/gitlab.d.ts +47 -0
  569. package/dist/repo/gitlab.d.ts.map +1 -0
  570. package/dist/repo/gitlab.js +91 -0
  571. package/dist/repo/gitlab.js.map +1 -0
  572. package/dist/repo/index.d.ts +7 -0
  573. package/dist/repo/index.d.ts.map +1 -0
  574. package/dist/repo/index.js +5 -0
  575. package/dist/repo/index.js.map +1 -0
  576. package/dist/repo/tech-stack.d.ts +13 -0
  577. package/dist/repo/tech-stack.d.ts.map +1 -0
  578. package/dist/repo/tech-stack.js +112 -0
  579. package/dist/repo/tech-stack.js.map +1 -0
  580. package/dist/security/index.d.ts +3 -0
  581. package/dist/security/index.d.ts.map +1 -0
  582. package/dist/security/index.js +3 -0
  583. package/dist/security/index.js.map +1 -0
  584. package/dist/security/review-checklist.d.ts +9 -0
  585. package/dist/security/review-checklist.d.ts.map +1 -0
  586. package/dist/security/review-checklist.js +46 -0
  587. package/dist/security/review-checklist.js.map +1 -0
  588. package/dist/security/sandbox.d.ts +7 -0
  589. package/dist/security/sandbox.d.ts.map +1 -0
  590. package/dist/security/sandbox.js +31 -0
  591. package/dist/security/sandbox.js.map +1 -0
  592. package/dist/server.d.ts +48 -0
  593. package/dist/server.d.ts.map +1 -0
  594. package/dist/server.js +90 -0
  595. package/dist/server.js.map +1 -0
  596. package/dist/types.d.ts +1230 -0
  597. package/dist/types.d.ts.map +1 -0
  598. package/dist/types.js +225 -0
  599. package/dist/types.js.map +1 -0
  600. package/dist/webhook/github-handler.d.ts +39 -0
  601. package/dist/webhook/github-handler.d.ts.map +1 -0
  602. package/dist/webhook/github-handler.js +439 -0
  603. package/dist/webhook/github-handler.js.map +1 -0
  604. package/dist/webhook/handler.d.ts +16 -0
  605. package/dist/webhook/handler.d.ts.map +1 -0
  606. package/dist/webhook/handler.js +171 -0
  607. package/dist/webhook/handler.js.map +1 -0
  608. package/dist/webhook/index.d.ts +5 -0
  609. package/dist/webhook/index.d.ts.map +1 -0
  610. package/dist/webhook/index.js +5 -0
  611. package/dist/webhook/index.js.map +1 -0
  612. package/dist/webhook/parser.d.ts +18 -0
  613. package/dist/webhook/parser.d.ts.map +1 -0
  614. package/dist/webhook/parser.js +30 -0
  615. package/dist/webhook/parser.js.map +1 -0
  616. package/dist/webhook/signature.d.ts +2 -0
  617. package/dist/webhook/signature.d.ts.map +1 -0
  618. package/dist/webhook/signature.js +14 -0
  619. package/dist/webhook/signature.js.map +1 -0
  620. package/package.json +40 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/db/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export { createDb, isPostgres, sqlDateGroup, sqlDaysAgoFilter, getCreateTablesDDL, getMigratePostgres, getMigrateSqlite, type Db, type AnyDb, type CreateDbOptions } from "./client.js";
2
+ export { pipelineRuns, stageRuns, agentLogs, activeWork, webhookDedup, pmApprovals } from "./schema.js";
3
+ export { loadMigrationFiles, runMigrationsSqlite, runMigrationsPostgres, getMigrationStatusSqlite, getMigrationStatusPostgres, type Migration, type MigrationStatus, } from "./migrator.js";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,KAAK,EAAE,EAAE,KAAK,KAAK,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AACxL,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACxG,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,wBAAwB,EACxB,0BAA0B,EAC1B,KAAK,SAAS,EACd,KAAK,eAAe,GACrB,MAAM,eAAe,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { createDb, isPostgres, sqlDateGroup, sqlDaysAgoFilter, getCreateTablesDDL, getMigratePostgres, getMigrateSqlite } from "./client.js";
2
+ export { pipelineRuns, stageRuns, agentLogs, activeWork, webhookDedup, pmApprovals } from "./schema.js";
3
+ export { loadMigrationFiles, runMigrationsSqlite, runMigrationsPostgres, getMigrationStatusSqlite, getMigrationStatusPostgres, } from "./migrator.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,gBAAgB,EAA6C,MAAM,aAAa,CAAC;AACxL,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACxG,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,wBAAwB,EACxB,0BAA0B,GAG3B,MAAM,eAAe,CAAC"}
@@ -0,0 +1,78 @@
1
+ -- Migration: Initial schema
2
+ -- Creates all base tables and indices for PostgreSQL.
3
+ -- Idempotent: all statements use IF NOT EXISTS.
4
+
5
+ CREATE TABLE IF NOT EXISTS pipeline_runs (
6
+ id TEXT PRIMARY KEY,
7
+ issue_id TEXT NOT NULL,
8
+ issue_title TEXT NOT NULL,
9
+ pipeline_key TEXT NOT NULL,
10
+ repo_url TEXT NOT NULL,
11
+ branch TEXT,
12
+ status TEXT NOT NULL,
13
+ started_at TIMESTAMPTZ NOT NULL DEFAULT now(),
14
+ completed_at TIMESTAMPTZ,
15
+ pr_url TEXT,
16
+ total_input_tokens INTEGER NOT NULL DEFAULT 0,
17
+ total_output_tokens INTEGER NOT NULL DEFAULT 0,
18
+ error_message TEXT,
19
+ current_stage_index INTEGER,
20
+ resume_payload TEXT
21
+ );
22
+
23
+ CREATE TABLE IF NOT EXISTS stage_runs (
24
+ id TEXT PRIMARY KEY,
25
+ pipeline_run_id TEXT NOT NULL REFERENCES pipeline_runs(id),
26
+ stage TEXT NOT NULL,
27
+ status TEXT NOT NULL,
28
+ started_at TIMESTAMPTZ NOT NULL DEFAULT now(),
29
+ completed_at TIMESTAMPTZ,
30
+ input_tokens INTEGER NOT NULL DEFAULT 0,
31
+ output_tokens INTEGER NOT NULL DEFAULT 0,
32
+ turns INTEGER NOT NULL DEFAULT 0,
33
+ handoff_artifact TEXT,
34
+ error_message TEXT
35
+ );
36
+
37
+ CREATE TABLE IF NOT EXISTS agent_logs (
38
+ id TEXT PRIMARY KEY,
39
+ stage_run_id TEXT NOT NULL REFERENCES stage_runs(id),
40
+ timestamp TIMESTAMPTZ NOT NULL DEFAULT now(),
41
+ type TEXT NOT NULL,
42
+ content TEXT NOT NULL
43
+ );
44
+
45
+ CREATE INDEX IF NOT EXISTS idx_stage_runs_pipeline_run_id ON stage_runs(pipeline_run_id);
46
+ CREATE INDEX IF NOT EXISTS idx_agent_logs_stage_run_id ON agent_logs(stage_run_id);
47
+ CREATE INDEX IF NOT EXISTS idx_pipeline_runs_issue_id ON pipeline_runs(issue_id);
48
+ CREATE INDEX IF NOT EXISTS idx_pipeline_runs_status ON pipeline_runs(status);
49
+
50
+ CREATE TABLE IF NOT EXISTS pm_approvals (
51
+ id TEXT PRIMARY KEY,
52
+ issue_id TEXT NOT NULL,
53
+ action TEXT NOT NULL,
54
+ reason TEXT NOT NULL,
55
+ slack_message_ts TEXT NOT NULL,
56
+ status TEXT NOT NULL,
57
+ created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
58
+ resolved_at TIMESTAMPTZ
59
+ );
60
+
61
+ CREATE INDEX IF NOT EXISTS idx_pm_approvals_status ON pm_approvals(status);
62
+
63
+ CREATE TABLE IF NOT EXISTS active_work (
64
+ id TEXT PRIMARY KEY,
65
+ run_id TEXT NOT NULL UNIQUE,
66
+ issue_id TEXT NOT NULL,
67
+ stage TEXT NOT NULL,
68
+ files_modified TEXT,
69
+ started_at TIMESTAMPTZ NOT NULL DEFAULT now(),
70
+ updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
71
+ );
72
+
73
+ CREATE INDEX IF NOT EXISTS idx_active_work_issue_id ON active_work(issue_id);
74
+
75
+ CREATE TABLE IF NOT EXISTS webhook_dedup (
76
+ id TEXT PRIMARY KEY,
77
+ expires_at TIMESTAMPTZ NOT NULL
78
+ );
@@ -0,0 +1,78 @@
1
+ -- Migration: Convert INTEGER epoch-second timestamp columns to TIMESTAMPTZ
2
+ --
3
+ -- Only needed for PostgreSQL deployments that were initially created with the
4
+ -- legacy INTEGER timestamp schema. Safe to run on fresh installations (no-op).
5
+ --
6
+ -- Idempotent: each ALTER is guarded by a data_type check.
7
+ --
8
+ -- NOTE: Must DROP DEFAULT before ALTER TYPE because Postgres cannot auto-cast
9
+ -- an integer default expression to timestamptz.
10
+
11
+ DO $$
12
+ BEGIN
13
+ -- pipeline_runs.started_at
14
+ IF (SELECT data_type FROM information_schema.columns
15
+ WHERE table_name = 'pipeline_runs' AND column_name = 'started_at') = 'integer' THEN
16
+ ALTER TABLE pipeline_runs ALTER COLUMN started_at DROP DEFAULT;
17
+ ALTER TABLE pipeline_runs ALTER COLUMN started_at TYPE TIMESTAMPTZ USING to_timestamp(started_at);
18
+ ALTER TABLE pipeline_runs ALTER COLUMN started_at SET DEFAULT now();
19
+ END IF;
20
+
21
+ -- pipeline_runs.completed_at
22
+ IF (SELECT data_type FROM information_schema.columns
23
+ WHERE table_name = 'pipeline_runs' AND column_name = 'completed_at') = 'integer' THEN
24
+ ALTER TABLE pipeline_runs ALTER COLUMN completed_at TYPE TIMESTAMPTZ USING to_timestamp(completed_at);
25
+ END IF;
26
+
27
+ -- stage_runs.started_at
28
+ IF (SELECT data_type FROM information_schema.columns
29
+ WHERE table_name = 'stage_runs' AND column_name = 'started_at') = 'integer' THEN
30
+ ALTER TABLE stage_runs ALTER COLUMN started_at DROP DEFAULT;
31
+ ALTER TABLE stage_runs ALTER COLUMN started_at TYPE TIMESTAMPTZ USING to_timestamp(started_at);
32
+ ALTER TABLE stage_runs ALTER COLUMN started_at SET DEFAULT now();
33
+ END IF;
34
+
35
+ -- stage_runs.completed_at
36
+ IF (SELECT data_type FROM information_schema.columns
37
+ WHERE table_name = 'stage_runs' AND column_name = 'completed_at') = 'integer' THEN
38
+ ALTER TABLE stage_runs ALTER COLUMN completed_at TYPE TIMESTAMPTZ USING to_timestamp(completed_at);
39
+ END IF;
40
+
41
+ -- agent_logs.timestamp
42
+ IF (SELECT data_type FROM information_schema.columns
43
+ WHERE table_name = 'agent_logs' AND column_name = 'timestamp') = 'integer' THEN
44
+ ALTER TABLE agent_logs ALTER COLUMN timestamp DROP DEFAULT;
45
+ ALTER TABLE agent_logs ALTER COLUMN timestamp TYPE TIMESTAMPTZ USING to_timestamp(timestamp);
46
+ ALTER TABLE agent_logs ALTER COLUMN timestamp SET DEFAULT now();
47
+ END IF;
48
+
49
+ -- pm_approvals.created_at
50
+ IF (SELECT data_type FROM information_schema.columns
51
+ WHERE table_name = 'pm_approvals' AND column_name = 'created_at') = 'integer' THEN
52
+ ALTER TABLE pm_approvals ALTER COLUMN created_at DROP DEFAULT;
53
+ ALTER TABLE pm_approvals ALTER COLUMN created_at TYPE TIMESTAMPTZ USING to_timestamp(created_at);
54
+ ALTER TABLE pm_approvals ALTER COLUMN created_at SET DEFAULT now();
55
+ END IF;
56
+
57
+ -- pm_approvals.resolved_at (nullable, no default)
58
+ IF (SELECT data_type FROM information_schema.columns
59
+ WHERE table_name = 'pm_approvals' AND column_name = 'resolved_at') = 'integer' THEN
60
+ ALTER TABLE pm_approvals ALTER COLUMN resolved_at TYPE TIMESTAMPTZ USING to_timestamp(resolved_at);
61
+ END IF;
62
+
63
+ -- active_work.started_at
64
+ IF (SELECT data_type FROM information_schema.columns
65
+ WHERE table_name = 'active_work' AND column_name = 'started_at') = 'integer' THEN
66
+ ALTER TABLE active_work ALTER COLUMN started_at DROP DEFAULT;
67
+ ALTER TABLE active_work ALTER COLUMN started_at TYPE TIMESTAMPTZ USING to_timestamp(started_at);
68
+ ALTER TABLE active_work ALTER COLUMN started_at SET DEFAULT now();
69
+ END IF;
70
+
71
+ -- active_work.updated_at
72
+ IF (SELECT data_type FROM information_schema.columns
73
+ WHERE table_name = 'active_work' AND column_name = 'updated_at') = 'integer' THEN
74
+ ALTER TABLE active_work ALTER COLUMN updated_at DROP DEFAULT;
75
+ ALTER TABLE active_work ALTER COLUMN updated_at TYPE TIMESTAMPTZ USING to_timestamp(updated_at);
76
+ ALTER TABLE active_work ALTER COLUMN updated_at SET DEFAULT now();
77
+ END IF;
78
+ END $$;
@@ -0,0 +1,10 @@
1
+ -- Migration: BEC-87 - Add retry_count column for transient failure recovery
2
+ -- Idempotent: guarded by information_schema check.
3
+
4
+ DO $$
5
+ BEGIN
6
+ IF NOT EXISTS (SELECT 1 FROM information_schema.columns
7
+ WHERE table_name = 'pipeline_runs' AND column_name = 'retry_count') THEN
8
+ ALTER TABLE pipeline_runs ADD COLUMN retry_count INTEGER NOT NULL DEFAULT 0;
9
+ END IF;
10
+ END $$;
@@ -0,0 +1,20 @@
1
+ -- Migration: BEC-84 - Add columns for review-feedback pipeline support
2
+ -- Idempotent: each column addition is guarded by information_schema check.
3
+
4
+ DO $$
5
+ BEGIN
6
+ IF NOT EXISTS (SELECT 1 FROM information_schema.columns
7
+ WHERE table_name = 'pipeline_runs' AND column_name = 'run_type') THEN
8
+ ALTER TABLE pipeline_runs ADD COLUMN run_type TEXT NOT NULL DEFAULT 'standard';
9
+ END IF;
10
+
11
+ IF NOT EXISTS (SELECT 1 FROM information_schema.columns
12
+ WHERE table_name = 'pipeline_runs' AND column_name = 'parent_run_id') THEN
13
+ ALTER TABLE pipeline_runs ADD COLUMN parent_run_id TEXT;
14
+ END IF;
15
+
16
+ IF NOT EXISTS (SELECT 1 FROM information_schema.columns
17
+ WHERE table_name = 'pipeline_runs' AND column_name = 'feedback_context') THEN
18
+ ALTER TABLE pipeline_runs ADD COLUMN feedback_context TEXT;
19
+ END IF;
20
+ END $$;
@@ -0,0 +1,15 @@
1
+ -- Migration: BEC-95 - Add auto-merge audit log columns
2
+ -- Idempotent: each column addition is guarded by information_schema check.
3
+
4
+ DO $$
5
+ BEGIN
6
+ IF NOT EXISTS (SELECT 1 FROM information_schema.columns
7
+ WHERE table_name = 'pipeline_runs' AND column_name = 'auto_merged') THEN
8
+ ALTER TABLE pipeline_runs ADD COLUMN auto_merged BOOLEAN;
9
+ END IF;
10
+
11
+ IF NOT EXISTS (SELECT 1 FROM information_schema.columns
12
+ WHERE table_name = 'pipeline_runs' AND column_name = 'auto_merge_reason') THEN
13
+ ALTER TABLE pipeline_runs ADD COLUMN auto_merge_reason TEXT;
14
+ END IF;
15
+ END $$;
@@ -0,0 +1,78 @@
1
+ -- Migration: Initial schema
2
+ -- Creates all base tables and indices for SQLite.
3
+ -- Idempotent: all statements use IF NOT EXISTS.
4
+
5
+ CREATE TABLE IF NOT EXISTS pipeline_runs (
6
+ id TEXT PRIMARY KEY,
7
+ issue_id TEXT NOT NULL,
8
+ issue_title TEXT NOT NULL,
9
+ pipeline_key TEXT NOT NULL,
10
+ repo_url TEXT NOT NULL,
11
+ branch TEXT,
12
+ status TEXT NOT NULL,
13
+ started_at INTEGER NOT NULL DEFAULT (unixepoch()),
14
+ completed_at INTEGER,
15
+ pr_url TEXT,
16
+ total_input_tokens INTEGER NOT NULL DEFAULT 0,
17
+ total_output_tokens INTEGER NOT NULL DEFAULT 0,
18
+ error_message TEXT,
19
+ current_stage_index INTEGER,
20
+ resume_payload TEXT
21
+ );
22
+
23
+ CREATE TABLE IF NOT EXISTS stage_runs (
24
+ id TEXT PRIMARY KEY,
25
+ pipeline_run_id TEXT NOT NULL REFERENCES pipeline_runs(id),
26
+ stage TEXT NOT NULL,
27
+ status TEXT NOT NULL,
28
+ started_at INTEGER NOT NULL DEFAULT (unixepoch()),
29
+ completed_at INTEGER,
30
+ input_tokens INTEGER NOT NULL DEFAULT 0,
31
+ output_tokens INTEGER NOT NULL DEFAULT 0,
32
+ turns INTEGER NOT NULL DEFAULT 0,
33
+ handoff_artifact TEXT,
34
+ error_message TEXT
35
+ );
36
+
37
+ CREATE TABLE IF NOT EXISTS agent_logs (
38
+ id TEXT PRIMARY KEY,
39
+ stage_run_id TEXT NOT NULL REFERENCES stage_runs(id),
40
+ timestamp INTEGER NOT NULL DEFAULT (unixepoch()),
41
+ type TEXT NOT NULL,
42
+ content TEXT NOT NULL
43
+ );
44
+
45
+ CREATE INDEX IF NOT EXISTS idx_stage_runs_pipeline_run_id ON stage_runs(pipeline_run_id);
46
+ CREATE INDEX IF NOT EXISTS idx_agent_logs_stage_run_id ON agent_logs(stage_run_id);
47
+ CREATE INDEX IF NOT EXISTS idx_pipeline_runs_issue_id ON pipeline_runs(issue_id);
48
+ CREATE INDEX IF NOT EXISTS idx_pipeline_runs_status ON pipeline_runs(status);
49
+
50
+ CREATE TABLE IF NOT EXISTS pm_approvals (
51
+ id TEXT PRIMARY KEY,
52
+ issue_id TEXT NOT NULL,
53
+ action TEXT NOT NULL,
54
+ reason TEXT NOT NULL,
55
+ slack_message_ts TEXT NOT NULL,
56
+ status TEXT NOT NULL,
57
+ created_at INTEGER NOT NULL DEFAULT (unixepoch()),
58
+ resolved_at INTEGER
59
+ );
60
+
61
+ CREATE INDEX IF NOT EXISTS idx_pm_approvals_status ON pm_approvals(status);
62
+
63
+ CREATE TABLE IF NOT EXISTS active_work (
64
+ id TEXT PRIMARY KEY,
65
+ run_id TEXT NOT NULL UNIQUE,
66
+ issue_id TEXT NOT NULL,
67
+ stage TEXT NOT NULL,
68
+ files_modified TEXT,
69
+ started_at INTEGER NOT NULL DEFAULT (unixepoch()),
70
+ updated_at INTEGER NOT NULL DEFAULT (unixepoch())
71
+ );
72
+
73
+ CREATE INDEX IF NOT EXISTS idx_active_work_issue_id ON active_work(issue_id);
74
+
75
+ CREATE TABLE IF NOT EXISTS webhook_dedup (
76
+ id TEXT PRIMARY KEY,
77
+ expires_at INTEGER NOT NULL
78
+ );
@@ -0,0 +1,5 @@
1
+ -- Migration: BEC-87 - Add retry_count column for transient failure recovery
2
+ -- SQLite does not support IF NOT EXISTS on ALTER TABLE.
3
+ -- The migration runner catches duplicate-column errors to ensure idempotency.
4
+
5
+ ALTER TABLE pipeline_runs ADD COLUMN retry_count INTEGER NOT NULL DEFAULT 0;
@@ -0,0 +1,7 @@
1
+ -- Migration: BEC-84 - Add columns for review-feedback pipeline support
2
+ -- SQLite does not support IF NOT EXISTS on ALTER TABLE.
3
+ -- The migration runner catches duplicate-column errors to ensure idempotency.
4
+
5
+ ALTER TABLE pipeline_runs ADD COLUMN run_type TEXT NOT NULL DEFAULT 'standard';
6
+ ALTER TABLE pipeline_runs ADD COLUMN parent_run_id TEXT;
7
+ ALTER TABLE pipeline_runs ADD COLUMN feedback_context TEXT;
@@ -0,0 +1,6 @@
1
+ -- Migration: BEC-95 - Add auto-merge audit log columns
2
+ -- SQLite does not support IF NOT EXISTS on ALTER TABLE.
3
+ -- The migration runner catches duplicate-column errors to ensure idempotency.
4
+
5
+ ALTER TABLE pipeline_runs ADD COLUMN auto_merged INTEGER;
6
+ ALTER TABLE pipeline_runs ADD COLUMN auto_merge_reason TEXT;
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Migration framework for Linear Agent Framework.
3
+ *
4
+ * Reads numbered SQL migration files from packages/core/src/db/migrations/{driver}/
5
+ * and applies any that have not yet been recorded in the schema_migrations table.
6
+ *
7
+ * Design:
8
+ * - schema_migrations table is created before any migrations run.
9
+ * - Migration files are sorted by name (NNN_description.sql) so they apply in order.
10
+ * - Each applied migration is recorded atomically; a failed migration is not recorded.
11
+ * - SQLite ALTER TABLE does not support IF NOT EXISTS, so duplicate-column errors are
12
+ * caught and treated as a no-op (idempotent re-run safety).
13
+ * - Postgres migrations use DO $$ IF NOT EXISTS $$ guards for native idempotency.
14
+ */
15
+ import type Database from "better-sqlite3";
16
+ import type { Sql } from "postgres";
17
+ /** A single migration file with its name and SQL content. */
18
+ export interface Migration {
19
+ name: string;
20
+ sql: string;
21
+ }
22
+ /** Status of a migration (applied or pending). */
23
+ export interface MigrationStatus {
24
+ name: string;
25
+ applied: boolean;
26
+ appliedAt?: Date;
27
+ }
28
+ /**
29
+ * Read all .sql migration files for a driver from the migrations subdirectory,
30
+ * sorted by filename (ascending, so NNN prefix determines order).
31
+ */
32
+ export declare function loadMigrationFiles(driver: "sqlite" | "postgres"): Migration[];
33
+ /**
34
+ * Run all pending migrations against a better-sqlite3 Database instance.
35
+ * Creates schema_migrations table if it does not exist.
36
+ */
37
+ export declare function runMigrationsSqlite(db: Database.Database): void;
38
+ /**
39
+ * Return the status of every migration file for SQLite.
40
+ */
41
+ export declare function getMigrationStatusSqlite(db: Database.Database): MigrationStatus[];
42
+ /**
43
+ * Run all pending migrations against a postgres.js Sql client.
44
+ * Creates schema_migrations table if it does not exist.
45
+ */
46
+ export declare function runMigrationsPostgres(client: Sql): Promise<void>;
47
+ /**
48
+ * Return the status of every migration file for Postgres.
49
+ */
50
+ export declare function getMigrationStatusPostgres(client: Sql): Promise<MigrationStatus[]>;
51
+ //# sourceMappingURL=migrator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrator.d.ts","sourceRoot":"","sources":["../../src/db/migrator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAKH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAKpC,6DAA6D;AAC7D,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb;AAED,kDAAkD;AAClD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,IAAI,CAAC;CAClB;AAkBD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,EAAE,CAe7E;AAMD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAiE/D;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GACpB,eAAe,EAAE,CAuBnB;AAMD;;;GAGG;AACH,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CA0BtE;AAED;;GAEG;AACH,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,GAAG,GACV,OAAO,CAAC,eAAe,EAAE,CAAC,CAuB5B"}
@@ -0,0 +1,188 @@
1
+ /**
2
+ * Migration framework for Linear Agent Framework.
3
+ *
4
+ * Reads numbered SQL migration files from packages/core/src/db/migrations/{driver}/
5
+ * and applies any that have not yet been recorded in the schema_migrations table.
6
+ *
7
+ * Design:
8
+ * - schema_migrations table is created before any migrations run.
9
+ * - Migration files are sorted by name (NNN_description.sql) so they apply in order.
10
+ * - Each applied migration is recorded atomically; a failed migration is not recorded.
11
+ * - SQLite ALTER TABLE does not support IF NOT EXISTS, so duplicate-column errors are
12
+ * caught and treated as a no-op (idempotent re-run safety).
13
+ * - Postgres migrations use DO $$ IF NOT EXISTS $$ guards for native idempotency.
14
+ */
15
+ import { readdirSync, readFileSync } from "node:fs";
16
+ import { fileURLToPath } from "node:url";
17
+ import { dirname, join } from "node:path";
18
+ const __filename = fileURLToPath(import.meta.url);
19
+ const __dirname = dirname(__filename);
20
+ const CREATE_SCHEMA_MIGRATIONS_SQLITE = `
21
+ CREATE TABLE IF NOT EXISTS schema_migrations (
22
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
23
+ name TEXT NOT NULL UNIQUE,
24
+ applied_at INTEGER NOT NULL DEFAULT (unixepoch())
25
+ )
26
+ `;
27
+ const CREATE_SCHEMA_MIGRATIONS_POSTGRES = `
28
+ CREATE TABLE IF NOT EXISTS schema_migrations (
29
+ id SERIAL PRIMARY KEY,
30
+ name TEXT NOT NULL UNIQUE,
31
+ applied_at TIMESTAMPTZ NOT NULL DEFAULT now()
32
+ )
33
+ `;
34
+ /**
35
+ * Read all .sql migration files for a driver from the migrations subdirectory,
36
+ * sorted by filename (ascending, so NNN prefix determines order).
37
+ */
38
+ export function loadMigrationFiles(driver) {
39
+ const dir = join(__dirname, "migrations", driver);
40
+ let files;
41
+ try {
42
+ files = readdirSync(dir)
43
+ .filter((f) => f.endsWith(".sql"))
44
+ .sort();
45
+ }
46
+ catch {
47
+ // migrations directory missing — no migrations to run
48
+ return [];
49
+ }
50
+ return files.map((file) => ({
51
+ name: file.replace(/\.sql$/, ""),
52
+ sql: readFileSync(join(dir, file), "utf8"),
53
+ }));
54
+ }
55
+ // ---------------------------------------------------------------------------
56
+ // SQLite
57
+ // ---------------------------------------------------------------------------
58
+ /**
59
+ * Run all pending migrations against a better-sqlite3 Database instance.
60
+ * Creates schema_migrations table if it does not exist.
61
+ */
62
+ export function runMigrationsSqlite(db) {
63
+ // Ensure tracking table exists
64
+ db.exec(CREATE_SCHEMA_MIGRATIONS_SQLITE);
65
+ const migrations = loadMigrationFiles("sqlite");
66
+ const getApplied = db.prepare("SELECT name FROM schema_migrations WHERE name = ?");
67
+ const recordApplied = db.prepare("INSERT OR IGNORE INTO schema_migrations (name) VALUES (?)");
68
+ for (const migration of migrations) {
69
+ const existing = getApplied.get(migration.name);
70
+ if (existing) {
71
+ continue; // already applied
72
+ }
73
+ try {
74
+ // Execute each statement individually so we can catch column-exists errors.
75
+ // Split on semicolons, strip comment lines from each chunk, then keep non-empty statements.
76
+ // We must strip comments BEFORE checking for empty — a chunk that starts with "--" may
77
+ // also contain valid SQL (e.g. the very first statement in a file that has a comment header).
78
+ const statements = migration.sql
79
+ .split(";")
80
+ .map((s) => s
81
+ .split("\n")
82
+ .filter((line) => !line.trim().startsWith("--"))
83
+ .join("\n")
84
+ .trim())
85
+ .filter((s) => s.length > 0);
86
+ for (const stmt of statements) {
87
+ try {
88
+ db.exec(stmt);
89
+ }
90
+ catch (err) {
91
+ // SQLite has no IF NOT EXISTS for ALTER TABLE ADD COLUMN.
92
+ // Treat "duplicate column name" as a no-op so re-running is safe.
93
+ if (err instanceof Error &&
94
+ err.message.includes("duplicate column name")) {
95
+ continue;
96
+ }
97
+ // Also handle "table X already exists" for idempotent CREATE TABLE
98
+ if (err instanceof Error &&
99
+ err.message.includes("already exists")) {
100
+ continue;
101
+ }
102
+ throw err;
103
+ }
104
+ }
105
+ // Record as applied only after all statements succeed
106
+ recordApplied.run(migration.name);
107
+ }
108
+ catch (err) {
109
+ throw new Error(`Migration "${migration.name}" failed: ${err instanceof Error ? err.message : String(err)}`);
110
+ }
111
+ }
112
+ }
113
+ /**
114
+ * Return the status of every migration file for SQLite.
115
+ */
116
+ export function getMigrationStatusSqlite(db) {
117
+ // Ensure tracking table exists before querying
118
+ db.exec(CREATE_SCHEMA_MIGRATIONS_SQLITE);
119
+ const migrations = loadMigrationFiles("sqlite");
120
+ const rows = db
121
+ .prepare("SELECT name, applied_at FROM schema_migrations")
122
+ .all();
123
+ const appliedMap = new Map(rows.map((r) => [r.name, new Date(r.applied_at * 1000)]));
124
+ // Include any applied migrations that no longer have a file (e.g., squashed)
125
+ const allNames = new Set([
126
+ ...migrations.map((m) => m.name),
127
+ ...appliedMap.keys(),
128
+ ]);
129
+ return Array.from(allNames)
130
+ .sort()
131
+ .map((name) => ({
132
+ name,
133
+ applied: appliedMap.has(name),
134
+ appliedAt: appliedMap.get(name),
135
+ }));
136
+ }
137
+ // ---------------------------------------------------------------------------
138
+ // Postgres
139
+ // ---------------------------------------------------------------------------
140
+ /**
141
+ * Run all pending migrations against a postgres.js Sql client.
142
+ * Creates schema_migrations table if it does not exist.
143
+ */
144
+ export async function runMigrationsPostgres(client) {
145
+ // Ensure tracking table exists
146
+ await client.unsafe(CREATE_SCHEMA_MIGRATIONS_POSTGRES);
147
+ const migrations = loadMigrationFiles("postgres");
148
+ for (const migration of migrations) {
149
+ const existing = await client `
150
+ SELECT name FROM schema_migrations WHERE name = ${migration.name}
151
+ `;
152
+ if (existing.length > 0) {
153
+ continue; // already applied
154
+ }
155
+ try {
156
+ await client.unsafe(migration.sql);
157
+ await client `
158
+ INSERT INTO schema_migrations (name) VALUES (${migration.name})
159
+ ON CONFLICT (name) DO NOTHING
160
+ `;
161
+ }
162
+ catch (err) {
163
+ throw new Error(`Migration "${migration.name}" failed: ${err instanceof Error ? err.message : String(err)}`);
164
+ }
165
+ }
166
+ }
167
+ /**
168
+ * Return the status of every migration file for Postgres.
169
+ */
170
+ export async function getMigrationStatusPostgres(client) {
171
+ // Ensure tracking table exists before querying
172
+ await client.unsafe(CREATE_SCHEMA_MIGRATIONS_POSTGRES);
173
+ const migrations = loadMigrationFiles("postgres");
174
+ const rows = await client `SELECT name, applied_at FROM schema_migrations`;
175
+ const appliedMap = new Map(rows.map((r) => [r.name, r.applied_at]));
176
+ const allNames = new Set([
177
+ ...migrations.map((m) => m.name),
178
+ ...appliedMap.keys(),
179
+ ]);
180
+ return Array.from(allNames)
181
+ .sort()
182
+ .map((name) => ({
183
+ name,
184
+ applied: appliedMap.has(name),
185
+ appliedAt: appliedMap.get(name),
186
+ }));
187
+ }
188
+ //# sourceMappingURL=migrator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrator.js","sourceRoot":"","sources":["../../src/db/migrator.ts"],"names":[],"mappings":"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"}