@urateam/core 0.1.55 → 0.1.57

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 (332) hide show
  1. package/dist/__tests__/audit-immutability.test.js +8 -0
  2. package/dist/__tests__/audit-immutability.test.js.map +1 -1
  3. package/dist/__tests__/auth-check.test.js +130 -16
  4. package/dist/__tests__/auth-check.test.js.map +1 -1
  5. package/dist/__tests__/auth-monitor.test.js +210 -87
  6. package/dist/__tests__/auth-monitor.test.js.map +1 -1
  7. package/dist/__tests__/bec-238-repro.test.d.ts +2 -0
  8. package/dist/__tests__/bec-238-repro.test.d.ts.map +1 -0
  9. package/dist/__tests__/bec-238-repro.test.js +116 -0
  10. package/dist/__tests__/bec-238-repro.test.js.map +1 -0
  11. package/dist/__tests__/bec146-repro.test.d.ts +2 -0
  12. package/dist/__tests__/bec146-repro.test.d.ts.map +1 -0
  13. package/dist/__tests__/bec146-repro.test.js +153 -0
  14. package/dist/__tests__/bec146-repro.test.js.map +1 -0
  15. package/dist/__tests__/circuit-breaker-config.test.d.ts +2 -0
  16. package/dist/__tests__/circuit-breaker-config.test.d.ts.map +1 -0
  17. package/dist/__tests__/circuit-breaker-config.test.js +32 -0
  18. package/dist/__tests__/circuit-breaker-config.test.js.map +1 -0
  19. package/dist/__tests__/circuit-breaker-events.test.d.ts +2 -0
  20. package/dist/__tests__/circuit-breaker-events.test.d.ts.map +1 -0
  21. package/dist/__tests__/circuit-breaker-events.test.js +53 -0
  22. package/dist/__tests__/circuit-breaker-events.test.js.map +1 -0
  23. package/dist/__tests__/circuit-breaker-integration.test.d.ts +2 -0
  24. package/dist/__tests__/circuit-breaker-integration.test.d.ts.map +1 -0
  25. package/dist/__tests__/circuit-breaker-integration.test.js +192 -0
  26. package/dist/__tests__/circuit-breaker-integration.test.js.map +1 -0
  27. package/dist/__tests__/circuit-breaker-probe.test.d.ts +2 -0
  28. package/dist/__tests__/circuit-breaker-probe.test.d.ts.map +1 -0
  29. package/dist/__tests__/circuit-breaker-probe.test.js +124 -0
  30. package/dist/__tests__/circuit-breaker-probe.test.js.map +1 -0
  31. package/dist/__tests__/circuit-breaker-recover.test.d.ts +2 -0
  32. package/dist/__tests__/circuit-breaker-recover.test.d.ts.map +1 -0
  33. package/dist/__tests__/circuit-breaker-recover.test.js +52 -0
  34. package/dist/__tests__/circuit-breaker-recover.test.js.map +1 -0
  35. package/dist/__tests__/circuit-breaker-sweep.test.d.ts +2 -0
  36. package/dist/__tests__/circuit-breaker-sweep.test.d.ts.map +1 -0
  37. package/dist/__tests__/circuit-breaker-sweep.test.js +118 -0
  38. package/dist/__tests__/circuit-breaker-sweep.test.js.map +1 -0
  39. package/dist/__tests__/db-migrations.test.js +7 -3
  40. package/dist/__tests__/db-migrations.test.js.map +1 -1
  41. package/dist/__tests__/decision-artifact-schema.test.d.ts +2 -0
  42. package/dist/__tests__/decision-artifact-schema.test.d.ts.map +1 -0
  43. package/dist/__tests__/decision-artifact-schema.test.js +45 -0
  44. package/dist/__tests__/decision-artifact-schema.test.js.map +1 -0
  45. package/dist/__tests__/decisions-parser.test.d.ts +2 -0
  46. package/dist/__tests__/decisions-parser.test.d.ts.map +1 -0
  47. package/dist/__tests__/decisions-parser.test.js +59 -0
  48. package/dist/__tests__/decisions-parser.test.js.map +1 -0
  49. package/dist/__tests__/decisions-store.test.d.ts +2 -0
  50. package/dist/__tests__/decisions-store.test.d.ts.map +1 -0
  51. package/dist/__tests__/decisions-store.test.js +68 -0
  52. package/dist/__tests__/decisions-store.test.js.map +1 -0
  53. package/dist/__tests__/decisions-table-migration.test.d.ts +2 -0
  54. package/dist/__tests__/decisions-table-migration.test.d.ts.map +1 -0
  55. package/dist/__tests__/decisions-table-migration.test.js +56 -0
  56. package/dist/__tests__/decisions-table-migration.test.js.map +1 -0
  57. package/dist/__tests__/execute-stage-session-opts.test.js +2 -1
  58. package/dist/__tests__/execute-stage-session-opts.test.js.map +1 -1
  59. package/dist/__tests__/executor-issue-id.test.js +2 -1
  60. package/dist/__tests__/executor-issue-id.test.js.map +1 -1
  61. package/dist/__tests__/extract-handoff-decisions.test.d.ts +2 -0
  62. package/dist/__tests__/extract-handoff-decisions.test.d.ts.map +1 -0
  63. package/dist/__tests__/extract-handoff-decisions.test.js +26 -0
  64. package/dist/__tests__/extract-handoff-decisions.test.js.map +1 -0
  65. package/dist/__tests__/force-push-agent-branches.test.js +38 -15
  66. package/dist/__tests__/force-push-agent-branches.test.js.map +1 -1
  67. package/dist/__tests__/github-webhook.test.js +117 -0
  68. package/dist/__tests__/github-webhook.test.js.map +1 -1
  69. package/dist/__tests__/implement-template-decisions.test.d.ts +2 -0
  70. package/dist/__tests__/implement-template-decisions.test.d.ts.map +1 -0
  71. package/dist/__tests__/implement-template-decisions.test.js +41 -0
  72. package/dist/__tests__/implement-template-decisions.test.js.map +1 -0
  73. package/dist/__tests__/migrator.test.js +137 -39
  74. package/dist/__tests__/migrator.test.js.map +1 -1
  75. package/dist/__tests__/pipeline-runner.test.js +118 -0
  76. package/dist/__tests__/pipeline-runner.test.js.map +1 -1
  77. package/dist/__tests__/pm-audit-retention-step.test.js +3 -0
  78. package/dist/__tests__/pm-audit-retention-step.test.js.map +1 -1
  79. package/dist/__tests__/pm-budget-alerts.test.d.ts +14 -0
  80. package/dist/__tests__/pm-budget-alerts.test.d.ts.map +1 -1
  81. package/dist/__tests__/pm-budget-alerts.test.js +90 -18
  82. package/dist/__tests__/pm-budget-alerts.test.js.map +1 -1
  83. package/dist/__tests__/pm-budget-refused-event.test.js +2 -0
  84. package/dist/__tests__/pm-budget-refused-event.test.js.map +1 -1
  85. package/dist/__tests__/pm-budget-utc-boundary.test.d.ts +2 -0
  86. package/dist/__tests__/pm-budget-utc-boundary.test.d.ts.map +1 -0
  87. package/dist/__tests__/pm-budget-utc-boundary.test.js +128 -0
  88. package/dist/__tests__/pm-budget-utc-boundary.test.js.map +1 -0
  89. package/dist/__tests__/pm-conflict.test.js +145 -5
  90. package/dist/__tests__/pm-conflict.test.js.map +1 -1
  91. package/dist/__tests__/pm-cost-rollup-step.test.js +2 -0
  92. package/dist/__tests__/pm-cost-rollup-step.test.js.map +1 -1
  93. package/dist/__tests__/pm-promote.test.js +111 -0
  94. package/dist/__tests__/pm-promote.test.js.map +1 -1
  95. package/dist/__tests__/pm-scheduler.test.js +1 -0
  96. package/dist/__tests__/pm-scheduler.test.js.map +1 -1
  97. package/dist/__tests__/pm-sso-prune-step.test.js +2 -0
  98. package/dist/__tests__/pm-sso-prune-step.test.js.map +1 -1
  99. package/dist/__tests__/preflight-claude-auth.test.js +3 -2
  100. package/dist/__tests__/preflight-claude-auth.test.js.map +1 -1
  101. package/dist/__tests__/ralph-review-fix-regression.test.js +1 -0
  102. package/dist/__tests__/ralph-review-fix-regression.test.js.map +1 -1
  103. package/dist/__tests__/ralph.test.js +1 -0
  104. package/dist/__tests__/ralph.test.js.map +1 -1
  105. package/dist/__tests__/release-manager-qarun-query.test.d.ts +2 -0
  106. package/dist/__tests__/release-manager-qarun-query.test.d.ts.map +1 -0
  107. package/dist/__tests__/release-manager-qarun-query.test.js +233 -0
  108. package/dist/__tests__/release-manager-qarun-query.test.js.map +1 -0
  109. package/dist/__tests__/release-manager-scheduler.test.js +62 -0
  110. package/dist/__tests__/release-manager-scheduler.test.js.map +1 -1
  111. package/dist/__tests__/release-manager-slack-handler.test.js +66 -0
  112. package/dist/__tests__/release-manager-slack-handler.test.js.map +1 -1
  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__/resolve-claude-auth.test.js +10 -8
  120. package/dist/__tests__/resolve-claude-auth.test.js.map +1 -1
  121. package/dist/__tests__/session-lazy-creation.test.js +2 -1
  122. package/dist/__tests__/session-lazy-creation.test.js.map +1 -1
  123. package/dist/__tests__/session-resolver.test.d.ts +13 -0
  124. package/dist/__tests__/session-resolver.test.d.ts.map +1 -0
  125. package/dist/__tests__/session-resolver.test.js +152 -0
  126. package/dist/__tests__/session-resolver.test.js.map +1 -0
  127. package/dist/__tests__/session-resume-fallback.test.js +2 -1
  128. package/dist/__tests__/session-resume-fallback.test.js.map +1 -1
  129. package/dist/__tests__/stage-models.test.js +3 -2
  130. package/dist/__tests__/stage-models.test.js.map +1 -1
  131. package/dist/__tests__/start-todo.test.js +29 -0
  132. package/dist/__tests__/start-todo.test.js.map +1 -1
  133. package/dist/__tests__/surgical-review-fix-prompt.test.d.ts +2 -0
  134. package/dist/__tests__/surgical-review-fix-prompt.test.d.ts.map +1 -0
  135. package/dist/__tests__/surgical-review-fix-prompt.test.js +71 -0
  136. package/dist/__tests__/surgical-review-fix-prompt.test.js.map +1 -0
  137. package/dist/__tests__/surgical-review-fix-runner.test.d.ts +2 -0
  138. package/dist/__tests__/surgical-review-fix-runner.test.d.ts.map +1 -0
  139. package/dist/__tests__/surgical-review-fix-runner.test.js +171 -0
  140. package/dist/__tests__/surgical-review-fix-runner.test.js.map +1 -0
  141. package/dist/__tests__/triage-preserve-acs.test.d.ts +2 -0
  142. package/dist/__tests__/triage-preserve-acs.test.d.ts.map +1 -0
  143. package/dist/__tests__/triage-preserve-acs.test.js +240 -0
  144. package/dist/__tests__/triage-preserve-acs.test.js.map +1 -0
  145. package/dist/__tests__/validate-run-mode.test.js +1 -0
  146. package/dist/__tests__/validate-run-mode.test.js.map +1 -1
  147. package/dist/__tests__/validate.test.js +1 -0
  148. package/dist/__tests__/validate.test.js.map +1 -1
  149. package/dist/audit/auth-error-messages.d.ts +6 -0
  150. package/dist/audit/auth-error-messages.d.ts.map +1 -0
  151. package/dist/audit/auth-error-messages.js +18 -0
  152. package/dist/audit/auth-error-messages.js.map +1 -0
  153. package/dist/audit/events.d.ts +51 -4
  154. package/dist/audit/events.d.ts.map +1 -1
  155. package/dist/audit/events.js +78 -5
  156. package/dist/audit/events.js.map +1 -1
  157. package/dist/audit/index.d.ts +1 -0
  158. package/dist/audit/index.d.ts.map +1 -1
  159. package/dist/audit/index.js +1 -0
  160. package/dist/audit/index.js.map +1 -1
  161. package/dist/db/client.d.ts.map +1 -1
  162. package/dist/db/client.js +20 -0
  163. package/dist/db/client.js.map +1 -1
  164. package/dist/db/decisions-store.d.ts +25 -0
  165. package/dist/db/decisions-store.d.ts.map +1 -0
  166. package/dist/db/decisions-store.js +56 -0
  167. package/dist/db/decisions-store.js.map +1 -0
  168. package/dist/db/index.d.ts +2 -2
  169. package/dist/db/index.d.ts.map +1 -1
  170. package/dist/db/index.js +2 -2
  171. package/dist/db/index.js.map +1 -1
  172. package/dist/db/migrations/postgres/008_sso.sql +9 -20
  173. package/dist/db/migrations/postgres/009_review_model_runs.sql +9 -18
  174. package/dist/db/migrations/postgres/009_sso.sql +20 -0
  175. package/dist/db/migrations/postgres/010_release_manager.sql +9 -38
  176. package/dist/db/migrations/postgres/010_review_model_runs.sql +18 -0
  177. package/dist/db/migrations/postgres/011_qa_run_columns.sql +9 -8
  178. package/dist/db/migrations/postgres/011_release_manager.sql +38 -0
  179. package/dist/db/migrations/postgres/012_qa_gap_issues.sql +9 -18
  180. package/dist/db/migrations/postgres/012_qa_run_columns.sql +8 -0
  181. package/dist/db/migrations/postgres/013_qa_gap_issues.sql +18 -0
  182. package/dist/db/migrations/postgres/013_stage_runs_cache_tokens.sql +11 -6
  183. package/dist/db/migrations/postgres/014_missing_indexes.sql +9 -28
  184. package/dist/db/migrations/postgres/014_stage_runs_cache_tokens.sql +6 -0
  185. package/dist/db/migrations/postgres/015_missing_indexes.sql +28 -0
  186. package/dist/db/migrations/postgres/015_triage_results.sql +9 -11
  187. package/dist/db/migrations/postgres/016_triage_results.sql +11 -0
  188. package/dist/db/migrations/sqlite/007_sso.sql +9 -20
  189. package/dist/db/migrations/sqlite/008_review_model_runs.sql +9 -18
  190. package/dist/db/migrations/sqlite/008_sso.sql +20 -0
  191. package/dist/db/migrations/sqlite/009_release_manager.sql +9 -43
  192. package/dist/db/migrations/sqlite/009_review_model_runs.sql +18 -0
  193. package/dist/db/migrations/sqlite/010_qa_run_columns.sql +9 -9
  194. package/dist/db/migrations/sqlite/010_release_manager.sql +43 -0
  195. package/dist/db/migrations/sqlite/011_qa_gap_issues.sql +9 -22
  196. package/dist/db/migrations/sqlite/011_qa_run_columns.sql +9 -0
  197. package/dist/db/migrations/sqlite/012_qa_gap_issues.sql +22 -0
  198. package/dist/db/migrations/sqlite/012_stage_runs_cache_tokens.sql +11 -6
  199. package/dist/db/migrations/sqlite/013_missing_indexes.sql +10 -28
  200. package/dist/db/migrations/sqlite/013_stage_runs_cache_tokens.sql +6 -0
  201. package/dist/db/migrations/sqlite/013_triage_results.sql +10 -11
  202. package/dist/db/migrations/sqlite/014_missing_indexes.sql +28 -0
  203. package/dist/db/migrations/sqlite/015_triage_results.sql +11 -0
  204. package/dist/db/migrator.d.ts +45 -2
  205. package/dist/db/migrator.d.ts.map +1 -1
  206. package/dist/db/migrator.js +113 -29
  207. package/dist/db/migrator.js.map +1 -1
  208. package/dist/db/schema.d.ts +213 -0
  209. package/dist/db/schema.d.ts.map +1 -1
  210. package/dist/db/schema.js +28 -0
  211. package/dist/db/schema.js.map +1 -1
  212. package/dist/executor/auth-check.d.ts +30 -7
  213. package/dist/executor/auth-check.d.ts.map +1 -1
  214. package/dist/executor/auth-check.js +66 -16
  215. package/dist/executor/auth-check.js.map +1 -1
  216. package/dist/executor/auth-monitor.d.ts.map +1 -1
  217. package/dist/executor/auth-monitor.js +48 -39
  218. package/dist/executor/auth-monitor.js.map +1 -1
  219. package/dist/executor/deep-review.d.ts.map +1 -1
  220. package/dist/executor/deep-review.js +14 -79
  221. package/dist/executor/deep-review.js.map +1 -1
  222. package/dist/executor/executor.d.ts +21 -0
  223. package/dist/executor/executor.d.ts.map +1 -1
  224. package/dist/executor/executor.js +42 -91
  225. package/dist/executor/executor.js.map +1 -1
  226. package/dist/executor/extract-handoff.d.ts +9 -0
  227. package/dist/executor/extract-handoff.d.ts.map +1 -1
  228. package/dist/executor/extract-handoff.js +48 -0
  229. package/dist/executor/extract-handoff.js.map +1 -1
  230. package/dist/executor/handoff.d.ts +10 -1
  231. package/dist/executor/handoff.d.ts.map +1 -1
  232. package/dist/executor/handoff.js +7 -1
  233. package/dist/executor/handoff.js.map +1 -1
  234. package/dist/executor/index.d.ts +1 -0
  235. package/dist/executor/index.d.ts.map +1 -1
  236. package/dist/executor/index.js +1 -0
  237. package/dist/executor/index.js.map +1 -1
  238. package/dist/executor/prompt/templates.d.ts +12 -1
  239. package/dist/executor/prompt/templates.d.ts.map +1 -1
  240. package/dist/executor/prompt/templates.js +64 -0
  241. package/dist/executor/prompt/templates.js.map +1 -1
  242. package/dist/executor/session-resolver.d.ts +51 -0
  243. package/dist/executor/session-resolver.d.ts.map +1 -0
  244. package/dist/executor/session-resolver.js +83 -0
  245. package/dist/executor/session-resolver.js.map +1 -0
  246. package/dist/index.d.ts +3 -2
  247. package/dist/index.d.ts.map +1 -1
  248. package/dist/index.js +3 -2
  249. package/dist/index.js.map +1 -1
  250. package/dist/notifier/composite.js +1 -1
  251. package/dist/notifier/composite.js.map +1 -1
  252. package/dist/notifier/linear.d.ts +1 -1
  253. package/dist/notifier/linear.d.ts.map +1 -1
  254. package/dist/notifier/linear.js +49 -9
  255. package/dist/notifier/linear.js.map +1 -1
  256. package/dist/pipeline/run-surgical-review-fix.d.ts +29 -0
  257. package/dist/pipeline/run-surgical-review-fix.d.ts.map +1 -0
  258. package/dist/pipeline/run-surgical-review-fix.js +48 -0
  259. package/dist/pipeline/run-surgical-review-fix.js.map +1 -0
  260. package/dist/pipeline/runner.d.ts.map +1 -1
  261. package/dist/pipeline/runner.js +132 -36
  262. package/dist/pipeline/runner.js.map +1 -1
  263. package/dist/pm/actions/circuit-breaker-config.d.ts +13 -0
  264. package/dist/pm/actions/circuit-breaker-config.d.ts.map +1 -0
  265. package/dist/pm/actions/circuit-breaker-config.js +23 -0
  266. package/dist/pm/actions/circuit-breaker-config.js.map +1 -0
  267. package/dist/pm/actions/db-queries.d.ts +18 -0
  268. package/dist/pm/actions/db-queries.d.ts.map +1 -1
  269. package/dist/pm/actions/db-queries.js +75 -2
  270. package/dist/pm/actions/db-queries.js.map +1 -1
  271. package/dist/pm/actions/promote.d.ts +7 -0
  272. package/dist/pm/actions/promote.d.ts.map +1 -1
  273. package/dist/pm/actions/promote.js +17 -1
  274. package/dist/pm/actions/promote.js.map +1 -1
  275. package/dist/pm/actions/recover-circuit-breaker.d.ts +21 -0
  276. package/dist/pm/actions/recover-circuit-breaker.d.ts.map +1 -0
  277. package/dist/pm/actions/recover-circuit-breaker.js +47 -0
  278. package/dist/pm/actions/recover-circuit-breaker.js.map +1 -0
  279. package/dist/pm/actions/select-probe-candidates.d.ts +21 -0
  280. package/dist/pm/actions/select-probe-candidates.d.ts.map +1 -0
  281. package/dist/pm/actions/select-probe-candidates.js +81 -0
  282. package/dist/pm/actions/select-probe-candidates.js.map +1 -0
  283. package/dist/pm/actions/start-todo.d.ts +7 -0
  284. package/dist/pm/actions/start-todo.d.ts.map +1 -1
  285. package/dist/pm/actions/start-todo.js +2 -1
  286. package/dist/pm/actions/start-todo.js.map +1 -1
  287. package/dist/pm/actions/sweep-recovered-circuit-breakers.d.ts +28 -0
  288. package/dist/pm/actions/sweep-recovered-circuit-breakers.d.ts.map +1 -0
  289. package/dist/pm/actions/sweep-recovered-circuit-breakers.js +47 -0
  290. package/dist/pm/actions/sweep-recovered-circuit-breakers.js.map +1 -0
  291. package/dist/pm/actions/triage-prompt.d.ts +14 -0
  292. package/dist/pm/actions/triage-prompt.d.ts.map +1 -1
  293. package/dist/pm/actions/triage-prompt.js +52 -9
  294. package/dist/pm/actions/triage-prompt.js.map +1 -1
  295. package/dist/pm/actions/triage.d.ts.map +1 -1
  296. package/dist/pm/actions/triage.js +37 -24
  297. package/dist/pm/actions/triage.js.map +1 -1
  298. package/dist/pm/conflict.d.ts +2 -0
  299. package/dist/pm/conflict.d.ts.map +1 -1
  300. package/dist/pm/conflict.js +59 -9
  301. package/dist/pm/conflict.js.map +1 -1
  302. package/dist/pm/scheduler.d.ts +5 -0
  303. package/dist/pm/scheduler.d.ts.map +1 -1
  304. package/dist/pm/scheduler.js +91 -44
  305. package/dist/pm/scheduler.js.map +1 -1
  306. package/dist/pm/slack.d.ts +11 -0
  307. package/dist/pm/slack.d.ts.map +1 -1
  308. package/dist/pm/slack.js +48 -5
  309. package/dist/pm/slack.js.map +1 -1
  310. package/dist/release-manager/release-helpers.d.ts +19 -2
  311. package/dist/release-manager/release-helpers.d.ts.map +1 -1
  312. package/dist/release-manager/release-helpers.js +22 -3
  313. package/dist/release-manager/release-helpers.js.map +1 -1
  314. package/dist/release-manager/release-tick.d.ts.map +1 -1
  315. package/dist/release-manager/release-tick.js +20 -8
  316. package/dist/release-manager/release-tick.js.map +1 -1
  317. package/dist/release-manager/slack-handler.d.ts +6 -0
  318. package/dist/release-manager/slack-handler.d.ts.map +1 -1
  319. package/dist/release-manager/slack-handler.js +76 -1
  320. package/dist/release-manager/slack-handler.js.map +1 -1
  321. package/dist/release-manager/state.d.ts.map +1 -1
  322. package/dist/release-manager/state.js +25 -18
  323. package/dist/release-manager/state.js.map +1 -1
  324. package/dist/types.d.ts +238 -13
  325. package/dist/types.d.ts.map +1 -1
  326. package/dist/types.js +67 -0
  327. package/dist/types.js.map +1 -1
  328. package/dist/webhook/github-handler.d.ts +2 -2
  329. package/dist/webhook/github-handler.d.ts.map +1 -1
  330. package/dist/webhook/github-handler.js +18 -6
  331. package/dist/webhook/github-handler.js.map +1 -1
  332. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"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"}
package/dist/db/schema.js CHANGED
@@ -120,6 +120,21 @@ export const webhookDedup = sqliteTable("webhook_dedup", {
120
120
  id: text("id").primaryKey(),
121
121
  expiresAt: crossTimestamp("expires_at").notNull(),
122
122
  });
123
+ /**
124
+ * BEC-236 — tracks Tier-5 circuit-breaker escalations so the half-open
125
+ * probe can distinguish them from human/triage-added `needs-design`
126
+ * labels. Insert on Tier-5 escalation (idempotent via the issue_id PK),
127
+ * update last_probe_at + probe_attempts in selectProbeCandidates, delete
128
+ * on probe-recovery or manual reset.
129
+ */
130
+ export const circuitBreakerState = sqliteTable("circuit_breaker_state", {
131
+ issueId: text("issue_id").primaryKey(),
132
+ escalatedAt: crossTimestamp("escalated_at")
133
+ .notNull()
134
+ .$defaultFn(() => new Date()),
135
+ lastProbeAt: crossTimestamp("last_probe_at"),
136
+ probeAttempts: integer("probe_attempts").notNull().default(0),
137
+ });
123
138
  export const triageResults = sqliteTable("triage_results", {
124
139
  issueId: text("issue_id").primaryKey(),
125
140
  v2Prediction: text("v2_prediction").notNull().default("{}"),
@@ -139,6 +154,19 @@ export const pmApprovals = sqliteTable("pm_approvals", {
139
154
  .$defaultFn(() => new Date()),
140
155
  resolvedAt: crossTimestamp("resolved_at"),
141
156
  });
157
+ /**
158
+ * BEC-227 Phase 4 / Track D. Persists the `<decisions>` JSON block emitted
159
+ * by the implement agent at the end of each implement turn. Multiple rows
160
+ * per pipeline_run when RALPH iterates (one per (iteration, stage)).
161
+ */
162
+ export const pipelineRunDecisions = sqliteTable("pipeline_run_decisions", {
163
+ id: text("id").primaryKey(),
164
+ pipelineRunId: text("pipeline_run_id").notNull().references(() => pipelineRuns.id),
165
+ iteration: integer("iteration").notNull(),
166
+ stage: text("stage").notNull(),
167
+ payload: text("payload").notNull(),
168
+ createdAt: crossTimestamp("created_at").notNull(),
169
+ });
142
170
  /**
143
171
  * Dedup table for budget threshold alerts. One row per (date, scope, threshold)
144
172
  * — the UNIQUE constraint + onConflictDoNothing() guarantees an alert fires at
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"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"}
@@ -11,15 +11,15 @@
11
11
  export interface ClaudeAuthCredentials {
12
12
  /**
13
13
  * Which auth path was selected:
14
- * - "oauth-token" — CLAUDE_CODE_OAUTH_TOKEN env var is present (long-lived
14
+ * - "oauth-token" — CLAUDE_CODE_OAUTH_TOKEN env var is present (long-lived
15
15
  * programmatic token produced by `claude setup-token`, bills against
16
16
  * Pro/Max subscription, no weekly expiry)
17
- * - "api-key" — ANTHROPIC_API_KEY env var is present (pay-per-token,
17
+ * - "api-key" — ANTHROPIC_API_KEY env var is present (pay-per-token,
18
18
  * no expiry)
19
- * - "session" — neither env var is set; falls back to the locally
19
+ * - "mounted-session" — neither env var is set; falls back to the locally
20
20
  * mounted `claude login` session (~/.config/claude/), which expires ~weekly
21
21
  */
22
- method: "oauth-token" | "api-key" | "session";
22
+ method: "oauth-token" | "api-key" | "mounted-session";
23
23
  }
24
24
  /**
25
25
  * Resolve which Claude auth method is active based on environment variables.
@@ -32,16 +32,39 @@ export interface ClaudeAuthCredentials {
32
32
  * alongside the stage, run-id, and issue-id fields for observability.
33
33
  */
34
34
  export declare function resolveClaudeAuth(): ClaudeAuthCredentials;
35
+ export type ProbeResult = {
36
+ valid: true;
37
+ } | {
38
+ valid: false;
39
+ reason: "auth";
40
+ };
35
41
  /**
36
- * Validates Claude auth credentials by running `claude auth status`.
37
- * Results are cached for 5 minutes to avoid hammering the CLI on every call.
42
+ * Probes Claude API validity by running `claude -p "ok"` — a minimal headless
43
+ * prompt that exercises the credential against the Anthropic API.
44
+ *
45
+ * - Success (exit 0) → `{ valid: true }`
46
+ * - 401 / auth error (stderr contains auth patterns) → `{ valid: false, reason: "auth" }`
47
+ * - Network error, timeout, or command-not-found → `{ valid: true }` (fail-open;
48
+ * do not page operators on transient noise)
49
+ *
50
+ * Probe stdout and stderr are never logged — only the pass/fail classification
51
+ * is recorded to avoid leaking token values.
52
+ */
53
+ export declare function probeClaudeAuth(timeoutMs: number): Promise<ProbeResult>;
54
+ /**
55
+ * Validates Claude auth credentials by running a real API probe (`claude -p "ok"`).
56
+ * Results are cached for 5 minutes to avoid hammering the API on every call.
38
57
  * Uses a single-flight pattern so concurrent callers share one subprocess.
39
58
  * Returns true if auth is valid, false otherwise.
40
59
  *
41
60
  * **Short-circuits to true when CLAUDE_CODE_OAUTH_TOKEN or ANTHROPIC_API_KEY
42
61
  * is present** — those paths have no session-lifetime semantics and the
43
62
  * subprocess check is unnecessary (and would be incorrect if no local
44
- * `claude` CLI is installed).
63
+ * `claude` CLI is installed). The AuthMonitor (`auth-monitor.ts`) handles
64
+ * periodic validation for those paths separately.
65
+ *
66
+ * Network errors and timeouts return true (fail-open) — only a confirmed
67
+ * 401 / auth error returns false.
45
68
  */
46
69
  export declare function isClaudeAuthValid(): Promise<boolean>;
47
70
  /** Reset the cached auth check (e.g., after a refresh attempt). */
@@ -1 +1 @@
1
- {"version":3,"file":"auth-check.d.ts","sourceRoot":"","sources":["../../src/executor/auth-check.ts"],"names":[],"mappings":"AAcA;;;;;;;;;GASG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;;;;;;;OASG;IACH,MAAM,EAAE,aAAa,GAAG,SAAS,GAAG,SAAS,CAAC;CAC/C;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,IAAI,qBAAqB,CAQzD;AAMD;;;;;;;;;;GAUG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC,CAmC1D;AAED,mEAAmE;AACnE,wBAAgB,mBAAmB,IAAI,IAAI,CAG1C"}
1
+ {"version":3,"file":"auth-check.d.ts","sourceRoot":"","sources":["../../src/executor/auth-check.ts"],"names":[],"mappings":"AAwBA;;;;;;;;;GASG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;;;;;;;OASG;IACH,MAAM,EAAE,aAAa,GAAG,SAAS,GAAG,iBAAiB,CAAC;CACvD;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,IAAI,qBAAqB,CAQzD;AAMD,MAAM,MAAM,WAAW,GAAG;IAAE,KAAK,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAY7E;;;;;;;;;;;GAWG;AACH,wBAAsB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAkB7E;AAMD;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC,CAkC1D;AAED,mEAAmE;AACnE,wBAAgB,mBAAmB,IAAI,IAAI,CAG1C"}
@@ -5,6 +5,14 @@ let lastCheckTime = 0;
5
5
  let lastCheckResult = false;
6
6
  let inflightCheck = null;
7
7
  const CHECK_INTERVAL_MS = 5 * 60 * 1000; // 5 minutes
8
+ /** Minimal headless prompt used to exercise the credential against the Anthropic API (BEC-244). */
9
+ const PROBE_PROMPT = "ok";
10
+ /**
11
+ * Timeout for the pre-flight probe in isClaudeAuthValid().
12
+ * Kept shorter than the monitor's timeout so stage execution doesn't stall at
13
+ * boot — a fast fail is preferable to a long hang before the first stage.
14
+ */
15
+ const PROBE_TIMEOUT_PREFLIGHT_MS = 10_000;
8
16
  /**
9
17
  * Resolve which Claude auth method is active based on environment variables.
10
18
  * Implements the precedence order documented in deploy/CLAUDE_AUTH.md:
@@ -22,21 +30,65 @@ export function resolveClaudeAuth() {
22
30
  if (process.env.ANTHROPIC_API_KEY) {
23
31
  return { method: "api-key" };
24
32
  }
25
- return { method: "session" };
33
+ return { method: "mounted-session" };
34
+ }
35
+ /** Auth-related patterns in claude CLI stderr that indicate a 401 from the Anthropic API. */
36
+ const AUTH_ERROR_PATTERNS = [
37
+ "401",
38
+ "authentication",
39
+ "unauthorized",
40
+ "invalid api key",
41
+ "invalid x-api-key",
42
+ "credentials",
43
+ ];
44
+ /**
45
+ * Probes Claude API validity by running `claude -p "ok"` — a minimal headless
46
+ * prompt that exercises the credential against the Anthropic API.
47
+ *
48
+ * - Success (exit 0) → `{ valid: true }`
49
+ * - 401 / auth error (stderr contains auth patterns) → `{ valid: false, reason: "auth" }`
50
+ * - Network error, timeout, or command-not-found → `{ valid: true }` (fail-open;
51
+ * do not page operators on transient noise)
52
+ *
53
+ * Probe stdout and stderr are never logged — only the pass/fail classification
54
+ * is recorded to avoid leaking token values.
55
+ */
56
+ export async function probeClaudeAuth(timeoutMs) {
57
+ return new Promise((resolve) => {
58
+ execFile("claude", ["-p", PROBE_PROMPT], { timeout: timeoutMs }, (err, _stdout, stderr) => {
59
+ if (!err) {
60
+ resolve({ valid: true });
61
+ return;
62
+ }
63
+ // Killed by timeout or any non-subprocess error (ENOENT, ECONNREFUSED, etc.) → fail-open.
64
+ if (err.killed || err.code === "ENOENT") {
65
+ resolve({ valid: true });
66
+ return;
67
+ }
68
+ // Classify by stderr content — auth errors contain recognisable patterns.
69
+ const stderrLower = (stderr ?? "").toLowerCase();
70
+ const isAuthError = AUTH_ERROR_PATTERNS.some((p) => stderrLower.includes(p));
71
+ resolve(isAuthError ? { valid: false, reason: "auth" } : { valid: true });
72
+ });
73
+ });
26
74
  }
27
75
  // ---------------------------------------------------------------------------
28
76
  // isClaudeAuthValid — session-lifetime gate for the mounted-session path
29
77
  // ---------------------------------------------------------------------------
30
78
  /**
31
- * Validates Claude auth credentials by running `claude auth status`.
32
- * Results are cached for 5 minutes to avoid hammering the CLI on every call.
79
+ * Validates Claude auth credentials by running a real API probe (`claude -p "ok"`).
80
+ * Results are cached for 5 minutes to avoid hammering the API on every call.
33
81
  * Uses a single-flight pattern so concurrent callers share one subprocess.
34
82
  * Returns true if auth is valid, false otherwise.
35
83
  *
36
84
  * **Short-circuits to true when CLAUDE_CODE_OAUTH_TOKEN or ANTHROPIC_API_KEY
37
85
  * is present** — those paths have no session-lifetime semantics and the
38
86
  * subprocess check is unnecessary (and would be incorrect if no local
39
- * `claude` CLI is installed).
87
+ * `claude` CLI is installed). The AuthMonitor (`auth-monitor.ts`) handles
88
+ * periodic validation for those paths separately.
89
+ *
90
+ * Network errors and timeouts return true (fail-open) — only a confirmed
91
+ * 401 / auth error returns false.
40
92
  */
41
93
  export async function isClaudeAuthValid() {
42
94
  // Long-lived token paths — no session-lifetime semantics, always valid.
@@ -52,20 +104,18 @@ export async function isClaudeAuthValid() {
52
104
  return inflightCheck;
53
105
  inflightCheck = (async () => {
54
106
  try {
55
- await new Promise((resolve, reject) => {
56
- execFile("claude", ["auth", "status"], { timeout: 10_000 }, (err) => {
57
- if (err)
58
- reject(err);
59
- else
60
- resolve();
61
- });
62
- });
63
- lastCheckResult = true;
64
- log.debug("Claude auth check passed");
107
+ const result = await probeClaudeAuth(PROBE_TIMEOUT_PREFLIGHT_MS);
108
+ lastCheckResult = result.valid;
109
+ if (result.valid) {
110
+ log.debug("Claude auth check passed");
111
+ }
112
+ else {
113
+ log.error("Claude auth check failed — credentials may be expired. Run: claude login");
114
+ }
65
115
  }
66
116
  catch {
67
- lastCheckResult = false;
68
- log.error("Claude auth check failed — credentials may be expired. Run: claude login");
117
+ // probeClaudeAuth should not throw, but fail-open if it does
118
+ lastCheckResult = true;
69
119
  }
70
120
  finally {
71
121
  lastCheckTime = Date.now();
@@ -1 +1 @@
1
- {"version":3,"file":"auth-check.js","sourceRoot":"","sources":["../../src/executor/auth-check.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,MAAM,GAAG,GAAG,YAAY,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,CAAC;AAErD,IAAI,aAAa,GAAG,CAAC,CAAC;AACtB,IAAI,eAAe,GAAG,KAAK,CAAC;AAC5B,IAAI,aAAa,GAA4B,IAAI,CAAC;AAClD,MAAM,iBAAiB,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,YAAY;AA8BrD;;;;;;;;;GASG;AACH,MAAM,UAAU,iBAAiB;IAC/B,IAAI,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,CAAC;QACxC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;IACnC,CAAC;IACD,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC;QAClC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAC/B,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AAC/B,CAAC;AAED,8EAA8E;AAC9E,yEAAyE;AACzE,8EAA8E;AAE9E;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACrC,wEAAwE;IACxE,IAAI,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC;QACzE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,IAAI,GAAG,GAAG,aAAa,GAAG,iBAAiB,EAAE,CAAC;QAC5C,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,sEAAsE;IACtE,IAAI,aAAa;QAAE,OAAO,aAAa,CAAC;IAExC,aAAa,GAAG,CAAC,KAAK,IAAI,EAAE;QAC1B,IAAI,CAAC;YACH,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAC1C,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE;oBAClE,IAAI,GAAG;wBAAE,MAAM,CAAC,GAAG,CAAC,CAAC;;wBAChB,OAAO,EAAE,CAAC;gBACjB,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YACH,eAAe,GAAG,IAAI,CAAC;YACvB,GAAG,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;QACxC,CAAC;QAAC,MAAM,CAAC;YACP,eAAe,GAAG,KAAK,CAAC;YACxB,GAAG,CAAC,KAAK,CAAC,0EAA0E,CAAC,CAAC;QACxF,CAAC;gBAAS,CAAC;YACT,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC3B,aAAa,GAAG,IAAI,CAAC;QACvB,CAAC;QACD,OAAO,eAAe,CAAC;IACzB,CAAC,CAAC,EAAE,CAAC;IAEL,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,mBAAmB;IACjC,aAAa,GAAG,CAAC,CAAC;IAClB,eAAe,GAAG,KAAK,CAAC;AAC1B,CAAC"}
1
+ {"version":3,"file":"auth-check.js","sourceRoot":"","sources":["../../src/executor/auth-check.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"auth-monitor.d.ts","sourceRoot":"","sources":["../../src/executor/auth-monitor.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAI7C,sCAAsC;AACtC,eAAO,MAAM,wBAAwB,QAAqB,CAAC;AAE3D,MAAM,WAAW,kBAAkB;IACjC,4EAA4E;IAC5E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,uEAAuE;IACvE,EAAE,CAAC,EAAE,KAAK,CAAC;CACZ;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,mBAAmB,CACvC,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE,kBAAkB,EACxB,UAAU,SAA2B,GACpC,OAAO,CAAC,MAAM,CAAC,CAkEjB;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,kBAAkB,EAAE,UAAU,SAA2B;IAI7F;;;OAGG;YACW,OAAO,CAAC,IAAI,CAAC;EAQ9B;AAED,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
1
+ {"version":3,"file":"auth-monitor.d.ts","sourceRoot":"","sources":["../../src/executor/auth-monitor.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAI7C,sCAAsC;AACtC,eAAO,MAAM,wBAAwB,QAAqB,CAAC;AAK3D,MAAM,WAAW,kBAAkB;IACjC,4EAA4E;IAC5E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,uEAAuE;IACvE,EAAE,CAAC,EAAE,KAAK,CAAC;CACZ;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,mBAAmB,CACvC,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE,kBAAkB,EACxB,UAAU,SAA2B,GACpC,OAAO,CAAC,MAAM,CAAC,CAyEjB;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,kBAAkB,EAAE,UAAU,SAA2B;IAI7F;;;OAGG;YACW,OAAO,CAAC,IAAI,CAAC;EAQ9B;AAED,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
@@ -1,27 +1,31 @@
1
1
  /**
2
- * AuthMonitor — periodic Claude session health-check (BEC-207).
2
+ * AuthMonitor — periodic Claude session health-check (BEC-207 / BEC-237).
3
3
  *
4
- * Defence-in-depth for operators still using the mounted-session auth path
5
- * (`claude login` / ~/.config/claude/). The monitor runs every 6 hours:
4
+ * Covers three auth paths:
6
5
  *
7
- * - When CLAUDE_CODE_OAUTH_TOKEN or ANTHROPIC_API_KEY is set returns
8
- * immediately (long-lived token paths have no session-lifetime semantics).
9
- * - Otherwiseruns `claude auth status`. On failure: fires a Slack alert
10
- * to the configured error channel and writes a `claude.auth_expired` audit
11
- * event so operators can correlate expiry with pipeline failures.
6
+ * - ANTHROPIC_API_KEY only (no CLAUDE_CODE_OAUTH_TOKEN) skip. Static key
7
+ * never expires on its own; probing would add noise with no benefit.
8
+ * - CLAUDE_CODE_OAUTH_TOKEN set probe with `claude -p "ok"` (real API call).
9
+ * OAuth tokens CAN expire or be revoked. On failure: Slack alert + audit event
10
+ * with authMethod "oauth-token" so operators know to run `claude setup-token`.
11
+ * - Neither env var (mounted session) → probe with `claude -p "ok"` (real API call).
12
+ * Interactive sessions expire weekly. On failure: Slack alert + audit event
13
+ * with authMethod "mounted-session" so operators know to run `claude login`.
12
14
  *
13
15
  * The monitor is registered as a step inside the PM scheduler tick so it runs
14
16
  * on the same cadence as the PM agent's own health checks.
15
17
  */
16
- import { execFile } from "node:child_process";
17
18
  import { createLogger } from "../logger.js";
18
19
  import { postSlackMessage } from "../pm/slack-helpers.js";
19
20
  import { claudeAuthExpiredEvent } from "../audit/events.js";
21
+ import { getAuthExpiredMessages } from "../audit/auth-error-messages.js";
20
22
  import { logAuditEventUnchecked } from "../audit/writer.js";
21
- import { resetAuthCheckCache } from "./auth-check.js";
23
+ import { resetAuthCheckCache, probeClaudeAuth } from "./auth-check.js";
22
24
  const log = createLogger({ component: "AuthMonitor" });
23
25
  /** Default check interval: 6 hours */
24
26
  export const AUTH_MONITOR_INTERVAL_MS = 6 * 60 * 60 * 1000;
27
+ /** Timeout for the AuthMonitor probe. Longer than the preflight timeout — the monitor runs off the critical path. */
28
+ const PROBE_TIMEOUT_MONITOR_MS = 15_000;
25
29
  /**
26
30
  * Run the periodic Claude auth health-check.
27
31
  *
@@ -38,35 +42,41 @@ export async function runAuthMonitorCheck(lastCheckTime, opts, intervalMs = AUTH
38
42
  if (now - lastCheckTime < intervalMs) {
39
43
  return lastCheckTime; // Not time to check yet
40
44
  }
41
- // BEC-207: env-var paths have no session-lifetime semantics skip.
42
- if (process.env.CLAUDE_CODE_OAUTH_TOKEN || process.env.ANTHROPIC_API_KEY) {
43
- log.debug("AuthMonitor: env-var auth path detected, skipping session check");
45
+ // Skip ONLY when ANTHROPIC_API_KEY is the sole auth mechanism. That key
46
+ // never expires on its own — probing it adds noise with no benefit.
47
+ // CLAUDE_CODE_OAUTH_TOKEN is different: it is an OAuth token that CAN expire
48
+ // or be revoked, so we always probe when it is set (BEC-237).
49
+ if (process.env.ANTHROPIC_API_KEY && !process.env.CLAUDE_CODE_OAUTH_TOKEN) {
50
+ log.debug("AuthMonitor: ANTHROPIC_API_KEY static key detected, skipping session check");
44
51
  return now;
45
52
  }
46
- log.info("AuthMonitor: checking mounted Claude session validity");
47
- // Force a fresh subprocess call (bypass the 5-min cache in isClaudeAuthValid)
53
+ const authMethod = process.env.CLAUDE_CODE_OAUTH_TOKEN
54
+ ? "oauth-token"
55
+ : "mounted-session";
56
+ log.info({ authMethod }, "AuthMonitor: checking Claude auth validity");
57
+ // Force a fresh probe (bypass the 5-min cache in isClaudeAuthValid)
48
58
  resetAuthCheckCache();
49
- const valid = await new Promise((resolve) => {
50
- execFile("claude", ["auth", "status"], { timeout: 15_000 }, (err) => {
51
- resolve(!err);
52
- });
53
- });
54
- if (valid) {
55
- log.debug("AuthMonitor: mounted session is valid");
59
+ // Real API call `claude auth status` only checks local credential presence,
60
+ // not whether the credential is accepted by the Anthropic API (BEC-244).
61
+ // Network errors / timeouts resolve { valid: true } (fail-open).
62
+ const result = await probeClaudeAuth(PROBE_TIMEOUT_MONITOR_MS);
63
+ if (result.valid) {
64
+ log.debug({ authMethod }, "AuthMonitor: auth is valid");
56
65
  return now;
57
66
  }
58
- // Session invalid — alert and record.
59
- log.error("AuthMonitor: mounted Claude session expired. " +
60
- "Run `claude login` in the container, or switch to CLAUDE_CODE_OAUTH_TOKEN (see deploy/CLAUDE_AUTH.md).");
61
- // Slack alert
67
+ // Auth invalid — alert and record.
68
+ const { hint, slackText } = getAuthExpiredMessages(authMethod);
69
+ const logPrefix = authMethod === "oauth-token"
70
+ ? "AuthMonitor: CLAUDE_CODE_OAUTH_TOKEN has expired or been revoked. "
71
+ : "AuthMonitor: mounted Claude session expired. ";
72
+ log.error(logPrefix + hint);
73
+ // Slack alert — text branches on auth method so operators get actionable instructions.
62
74
  if (opts.slackBotToken && opts.slackErrorChannel) {
75
+ const text = slackText;
63
76
  try {
64
77
  await postSlackMessage(opts.slackBotToken, {
65
78
  channel: opts.slackErrorChannel,
66
- text: "⚠ *Claude session auth expired* — new pipeline runs will fail immediately.\n" +
67
- "Fix: `docker compose exec <service> claude login`\n" +
68
- "Or switch to `CLAUDE_CODE_OAUTH_TOKEN` (run `claude setup-token` once). " +
69
- "See `deploy/CLAUDE_AUTH.md` for details.",
79
+ text,
70
80
  });
71
81
  }
72
82
  catch (err) {
@@ -76,16 +86,15 @@ export async function runAuthMonitorCheck(lastCheckTime, opts, intervalMs = AUTH
76
86
  // Audit event.
77
87
  //
78
88
  // We use `logAuditEventUnchecked` (which bypasses the `audit-log` Enterprise
79
- // feature gate) deliberately: a Claude-session expiry is an operational
80
- // signal that any operator needs to see regardless of license tier. The
81
- // alternative — `logAuditEvent` — would silently drop the event in OSS and
82
- // Pro deployments where `audit-log` isn't licensed, leaving the operator
83
- // wondering why their pipeline runs started failing en masse with no
84
- // visible event in the audit dashboard. CLAUDE.md's list of bypass call
85
- // sites should include this one alongside `license.ts` and the Pro-tier
86
- // PM/RM modules.
89
+ // feature gate) deliberately: a Claude auth expiry is an operational signal
90
+ // that any operator needs to see regardless of license tier. The alternative
91
+ // — `logAuditEvent` — would silently drop the event in OSS and Pro deployments
92
+ // where `audit-log` isn't licensed, leaving the operator wondering why their
93
+ // pipeline runs started failing en masse with no visible event in the audit
94
+ // dashboard. CLAUDE.md's list of bypass call sites should include this one
95
+ // alongside `license.ts` and the Pro-tier PM/RM modules.
87
96
  if (opts.db) {
88
- void logAuditEventUnchecked(opts.db, claudeAuthExpiredEvent({ detectedAt: new Date() }));
97
+ void logAuditEventUnchecked(opts.db, claudeAuthExpiredEvent({ detectedAt: new Date(), authMethod }));
89
98
  }
90
99
  return now;
91
100
  }
@@ -1 +1 @@
1
- {"version":3,"file":"auth-monitor.js","sourceRoot":"","sources":["../../src/executor/auth-monitor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth-monitor.js","sourceRoot":"","sources":["../../src/executor/auth-monitor.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"deep-review.d.ts","sourceRoot":"","sources":["../../src/executor/deep-review.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAalE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAiB7C,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,OAAO,GAAG,SAAS,GAAG,YAAY,CAAC;IAC1C,QAAQ,EAAE,UAAU,GAAG,SAAS,GAAG,YAAY,CAAC;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,uDAAuD;IACvD,WAAW,EAAE,MAAM,CAAC;IACpB,wDAAwD;IACxD,YAAY,EAAE,MAAM,CAAC;CACtB;AAyDD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAS1D;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAO/D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAE5D;AAmSD;;;;;;;;GAQG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,eAAe,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB;mEAC+D;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;0CACsC;IACtC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,wEAAwE;IACxE,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;oEACgE;IAChE,EAAE,CAAC,EAAE,KAAK,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,gBAAgB,CAAC,CA6D3B;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,iBAAiB,EAAE,GAC5B,aAAa,EAAE,CASjB;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,iBAAiB,EAAE,EAC7B,eAAe,EAAE,eAAe,GAC/B,MAAM,CAqCR"}
1
+ {"version":3,"file":"deep-review.d.ts","sourceRoot":"","sources":["../../src/executor/deep-review.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAOlE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAiB7C,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,OAAO,GAAG,SAAS,GAAG,YAAY,CAAC;IAC1C,QAAQ,EAAE,UAAU,GAAG,SAAS,GAAG,YAAY,CAAC;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,uDAAuD;IACvD,WAAW,EAAE,MAAM,CAAC;IACpB,wDAAwD;IACxD,YAAY,EAAE,MAAM,CAAC;CACtB;AAyDD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAS1D;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAO/D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAE5D;AAwND;;;;;;;;GAQG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,eAAe,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB;mEAC+D;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;0CACsC;IACtC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,wEAAwE;IACxE,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;oEACgE;IAChE,EAAE,CAAC,EAAE,KAAK,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,gBAAgB,CAAC,CA6D3B;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,iBAAiB,EAAE,GAC5B,aAAa,EAAE,CASjB;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,iBAAiB,EAAE,EAC7B,eAAe,EAAE,eAAe,GAC/B,MAAM,CAqCR"}
@@ -8,10 +8,7 @@ import { createLogger } from "../logger.js";
8
8
  import { consumeAgentStream, parseJsonBlock } from "./agent-stream.js";
9
9
  import { buildStagePermissionOptions } from "./permissions.js";
10
10
  import { sanitize, buildSandboxedBlock } from "./prompt/sanitizer.js";
11
- import { isResumable } from "./session-policy.js";
12
- import { transcriptExists, defaultProjectsRoot, transcriptPath } from "./session-store.js";
13
- import { agentSessionMissingFallbackEvent, agentSessionResumedEvent, } from "../audit/index.js";
14
- import { logAuditEvent } from "../audit/writer.js";
11
+ import { resolveSessionOpts } from "./session-resolver.js";
15
12
  const log = createLogger({ component: "DeepReview" });
16
13
  const DEEP_REVIEW_MODEL = "claude-haiku-4-5-20251001";
17
14
  /**
@@ -173,83 +170,21 @@ If no issues found, return \`{"findings": []}\`. Be strict but fair.`.trim();
173
170
  async function runSubAgent(agentName, prompt, workdir, sessionOptsCtx = {}) {
174
171
  try {
175
172
  const { query } = await import("@anthropic-ai/claude-agent-sdk");
176
- // ── BEC-227 — resolve per-sub-agent session opts ────────────────────────
177
- // Mirror the pattern in executor.ts: when agentSessionId is set and the
178
- // resolved model is in the resumable family, choose between sessionId
179
- // (first resumable stage of the run) and resume (subsequent stages).
180
- // Pre-check the JSONL on the resume branch; fall back to fresh + audit
181
- // event when the transcript is missing.
182
- //
183
- // Note: deep-review's three sub-agents run in parallel against the same
184
- // session id. The SDK supports concurrent `resume` calls — each spawns
185
- // its own conversation branch from the shared transcript. Each branch
186
- // emits its own audit event with `stage = "review"` so operators see
187
- // the resume rate at the sub-agent level.
173
+ // BEC-228 — resolve per-sub-agent session opts via shared helper (extracted
174
+ // from the ~70-line inline block that was duplicated in executor.ts).
175
+ // Each sub-agent uses a qualified stage label ("review:reuse" etc.) so
176
+ // operators can spot per-sub-agent resume patterns in the audit log.
188
177
  const resolvedModel = sessionOptsCtx.model ?? DEEP_REVIEW_MODEL;
189
178
  const agentSessionId = sessionOptsCtx.agentSessionId ?? null;
190
- const isFirstResumableStage = sessionOptsCtx.isFirstResumableStage ?? false;
191
- const wantsResume = agentSessionId !== null &&
192
- isResumable(DEEP_REVIEW_STAGE_LABEL, resolvedModel);
193
- let sessionOpts = {};
194
- if (wantsResume) {
195
- if (isFirstResumableStage) {
196
- sessionOpts = { sessionId: agentSessionId };
197
- }
198
- else {
199
- const exists = transcriptExists({
200
- projectsRoot: defaultProjectsRoot(),
201
- cwd: workdir,
202
- sessionId: agentSessionId,
203
- });
204
- if (exists) {
205
- sessionOpts = { resume: agentSessionId };
206
- // Emit resumed audit event with prior message count (best-effort
207
- // sync read of the JSONL; non-blocking).
208
- if (sessionOptsCtx.db && sessionOptsCtx.runId && sessionOptsCtx.issueId) {
209
- try {
210
- const { readFileSync } = await import("node:fs");
211
- const tp = transcriptPath({
212
- projectsRoot: defaultProjectsRoot(),
213
- cwd: workdir,
214
- sessionId: agentSessionId,
215
- });
216
- const priorMessageCount = readFileSync(tp, "utf8")
217
- .split("\n")
218
- .filter((line) => line.trim().length > 0).length;
219
- void logAuditEvent(sessionOptsCtx.db, agentSessionResumedEvent({
220
- runId: sessionOptsCtx.runId,
221
- issueId: sessionOptsCtx.issueId,
222
- sessionId: agentSessionId,
223
- stage: `${DEEP_REVIEW_STAGE_LABEL}:${agentName}`,
224
- priorMessageCount,
225
- }));
226
- }
227
- catch (err) {
228
- log.warn({ err: err.message, agent: agentName }, "deep-review: failed to count prior session messages — emitting resumed event with count=0");
229
- void logAuditEvent(sessionOptsCtx.db, agentSessionResumedEvent({
230
- runId: sessionOptsCtx.runId,
231
- issueId: sessionOptsCtx.issueId,
232
- sessionId: agentSessionId,
233
- stage: `${DEEP_REVIEW_STAGE_LABEL}:${agentName}`,
234
- priorMessageCount: 0,
235
- }));
236
- }
237
- }
238
- }
239
- else {
240
- if (sessionOptsCtx.db && sessionOptsCtx.runId && sessionOptsCtx.issueId) {
241
- void logAuditEvent(sessionOptsCtx.db, agentSessionMissingFallbackEvent({
242
- runId: sessionOptsCtx.runId,
243
- issueId: sessionOptsCtx.issueId,
244
- sessionId: agentSessionId,
245
- reason: "jsonl-not-found",
246
- }));
247
- }
248
- log.warn({ runId: sessionOptsCtx.runId, sessionId: agentSessionId, agent: agentName, cwd: workdir }, "deep-review: agent session JSONL missing — falling back to fresh session");
249
- sessionOpts = {};
250
- }
251
- }
252
- }
179
+ const sessionOpts = await resolveSessionOpts({
180
+ stage: `${DEEP_REVIEW_STAGE_LABEL}:${agentName}`,
181
+ model: resolvedModel,
182
+ agentSessionId,
183
+ workdir,
184
+ runId: sessionOptsCtx.runId,
185
+ issueId: sessionOptsCtx.issueId,
186
+ db: sessionOptsCtx.db,
187
+ });
253
188
  const messages = query({
254
189
  prompt,
255
190
  options: {