@urateam/core 0.1.31 → 0.1.33

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 (177) hide show
  1. package/dist/__tests__/agent-stream.test.js +35 -1
  2. package/dist/__tests__/agent-stream.test.js.map +1 -1
  3. package/dist/__tests__/audit-immutability.test.js +7 -1
  4. package/dist/__tests__/audit-immutability.test.js.map +1 -1
  5. package/dist/__tests__/auth-monitor.test.d.ts +2 -0
  6. package/dist/__tests__/auth-monitor.test.d.ts.map +1 -0
  7. package/dist/__tests__/auth-monitor.test.js +253 -0
  8. package/dist/__tests__/auth-monitor.test.js.map +1 -0
  9. package/dist/__tests__/bec-186-repro.test.d.ts +16 -0
  10. package/dist/__tests__/bec-186-repro.test.d.ts.map +1 -0
  11. package/dist/__tests__/bec-186-repro.test.js +223 -0
  12. package/dist/__tests__/bec-186-repro.test.js.map +1 -0
  13. package/dist/__tests__/control-signals.test.d.ts +2 -0
  14. package/dist/__tests__/control-signals.test.d.ts.map +1 -0
  15. package/dist/__tests__/control-signals.test.js +77 -0
  16. package/dist/__tests__/control-signals.test.js.map +1 -0
  17. package/dist/__tests__/db-migrations.test.d.ts +2 -0
  18. package/dist/__tests__/db-migrations.test.d.ts.map +1 -0
  19. package/dist/__tests__/db-migrations.test.js +237 -0
  20. package/dist/__tests__/db-migrations.test.js.map +1 -0
  21. package/dist/__tests__/executor-issue-id.test.js +2 -0
  22. package/dist/__tests__/executor-issue-id.test.js.map +1 -1
  23. package/dist/__tests__/pm-slack-interface.test.js +45 -0
  24. package/dist/__tests__/pm-slack-interface.test.js.map +1 -1
  25. package/dist/__tests__/pm-triage.test.js +101 -0
  26. package/dist/__tests__/pm-triage.test.js.map +1 -1
  27. package/dist/__tests__/post-fanout-comments.test.js +36 -0
  28. package/dist/__tests__/post-fanout-comments.test.js.map +1 -1
  29. package/dist/__tests__/preflight-claude-auth.test.d.ts +2 -0
  30. package/dist/__tests__/preflight-claude-auth.test.d.ts.map +1 -0
  31. package/dist/__tests__/preflight-claude-auth.test.js +36 -0
  32. package/dist/__tests__/preflight-claude-auth.test.js.map +1 -0
  33. package/dist/__tests__/resolve-claude-auth.test.d.ts +2 -0
  34. package/dist/__tests__/resolve-claude-auth.test.d.ts.map +1 -0
  35. package/dist/__tests__/resolve-claude-auth.test.js +129 -0
  36. package/dist/__tests__/resolve-claude-auth.test.js.map +1 -0
  37. package/dist/__tests__/stage-models.test.js +4 -0
  38. package/dist/__tests__/stage-models.test.js.map +1 -1
  39. package/dist/__tests__/util-linear.test.d.ts +10 -0
  40. package/dist/__tests__/util-linear.test.d.ts.map +1 -0
  41. package/dist/__tests__/util-linear.test.js +244 -0
  42. package/dist/__tests__/util-linear.test.js.map +1 -0
  43. package/dist/audit/events.d.ts +37 -0
  44. package/dist/audit/events.d.ts.map +1 -1
  45. package/dist/audit/events.js +53 -0
  46. package/dist/audit/events.js.map +1 -1
  47. package/dist/db/client.d.ts.map +1 -1
  48. package/dist/db/client.js +8 -0
  49. package/dist/db/client.js.map +1 -1
  50. package/dist/db/migrations/postgres/014_missing_indexes.sql +28 -0
  51. package/dist/db/migrations/sqlite/013_missing_indexes.sql +28 -0
  52. package/dist/executor/agent-stream.d.ts +16 -0
  53. package/dist/executor/agent-stream.d.ts.map +1 -1
  54. package/dist/executor/agent-stream.js +43 -1
  55. package/dist/executor/agent-stream.js.map +1 -1
  56. package/dist/executor/auth-check.d.ts +39 -0
  57. package/dist/executor/auth-check.d.ts.map +1 -1
  58. package/dist/executor/auth-check.js +31 -0
  59. package/dist/executor/auth-check.js.map +1 -1
  60. package/dist/executor/auth-monitor.d.ts +40 -0
  61. package/dist/executor/auth-monitor.d.ts.map +1 -0
  62. package/dist/executor/auth-monitor.js +114 -0
  63. package/dist/executor/auth-monitor.js.map +1 -0
  64. package/dist/executor/executor.d.ts.map +1 -1
  65. package/dist/executor/executor.js +7 -2
  66. package/dist/executor/executor.js.map +1 -1
  67. package/dist/executor/index.d.ts +2 -0
  68. package/dist/executor/index.d.ts.map +1 -1
  69. package/dist/executor/index.js +2 -0
  70. package/dist/executor/index.js.map +1 -1
  71. package/dist/executor/review/post-fanout-comments.d.ts +8 -0
  72. package/dist/executor/review/post-fanout-comments.d.ts.map +1 -1
  73. package/dist/executor/review/post-fanout-comments.js +23 -3
  74. package/dist/executor/review/post-fanout-comments.js.map +1 -1
  75. package/dist/index.d.ts +3 -1
  76. package/dist/index.d.ts.map +1 -1
  77. package/dist/index.js +3 -1
  78. package/dist/index.js.map +1 -1
  79. package/dist/notifier/composite.d.ts +1 -0
  80. package/dist/notifier/composite.d.ts.map +1 -1
  81. package/dist/notifier/composite.js +3 -0
  82. package/dist/notifier/composite.js.map +1 -1
  83. package/dist/notifier/linear.d.ts +1 -0
  84. package/dist/notifier/linear.d.ts.map +1 -1
  85. package/dist/notifier/linear.js +7 -0
  86. package/dist/notifier/linear.js.map +1 -1
  87. package/dist/pipeline/control-signals.d.ts +49 -0
  88. package/dist/pipeline/control-signals.d.ts.map +1 -0
  89. package/dist/pipeline/control-signals.js +93 -0
  90. package/dist/pipeline/control-signals.js.map +1 -0
  91. package/dist/pipeline/feedback-pipeline.d.ts +140 -0
  92. package/dist/pipeline/feedback-pipeline.d.ts.map +1 -0
  93. package/dist/pipeline/feedback-pipeline.js +427 -0
  94. package/dist/pipeline/feedback-pipeline.js.map +1 -0
  95. package/dist/pipeline/index.d.ts +1 -0
  96. package/dist/pipeline/index.d.ts.map +1 -1
  97. package/dist/pipeline/index.js +1 -0
  98. package/dist/pipeline/index.js.map +1 -1
  99. package/dist/pipeline/runner.d.ts +49 -33
  100. package/dist/pipeline/runner.d.ts.map +1 -1
  101. package/dist/pipeline/runner.js +143 -350
  102. package/dist/pipeline/runner.js.map +1 -1
  103. package/dist/pm/actions/promote.d.ts.map +1 -1
  104. package/dist/pm/actions/promote.js +15 -11
  105. package/dist/pm/actions/promote.js.map +1 -1
  106. package/dist/pm/actions/recover-stuck.d.ts.map +1 -1
  107. package/dist/pm/actions/recover-stuck.js +9 -5
  108. package/dist/pm/actions/recover-stuck.js.map +1 -1
  109. package/dist/pm/actions/triage.d.ts.map +1 -1
  110. package/dist/pm/actions/triage.js +67 -1
  111. package/dist/pm/actions/triage.js.map +1 -1
  112. package/dist/pm/linear-helpers.d.ts +10 -0
  113. package/dist/pm/linear-helpers.d.ts.map +1 -1
  114. package/dist/pm/linear-helpers.js +13 -21
  115. package/dist/pm/linear-helpers.js.map +1 -1
  116. package/dist/pm/pause-state.d.ts +29 -0
  117. package/dist/pm/pause-state.d.ts.map +1 -0
  118. package/dist/pm/pause-state.js +34 -0
  119. package/dist/pm/pause-state.js.map +1 -0
  120. package/dist/pm/scheduler.d.ts.map +1 -1
  121. package/dist/pm/scheduler.js +19 -0
  122. package/dist/pm/scheduler.js.map +1 -1
  123. package/dist/pm/slack-bulk.d.ts +34 -0
  124. package/dist/pm/slack-bulk.d.ts.map +1 -0
  125. package/dist/pm/slack-bulk.js +110 -0
  126. package/dist/pm/slack-bulk.js.map +1 -0
  127. package/dist/pm/slack-commands.d.ts +101 -0
  128. package/dist/pm/slack-commands.d.ts.map +1 -0
  129. package/dist/pm/slack-commands.js +309 -0
  130. package/dist/pm/slack-commands.js.map +1 -0
  131. package/dist/pm/slack-helpers.d.ts +10 -0
  132. package/dist/pm/slack-helpers.d.ts.map +1 -1
  133. package/dist/pm/slack-helpers.js +32 -0
  134. package/dist/pm/slack-helpers.js.map +1 -1
  135. package/dist/pm/slack-interface.d.ts +32 -58
  136. package/dist/pm/slack-interface.d.ts.map +1 -1
  137. package/dist/pm/slack-interface.js +150 -320
  138. package/dist/pm/slack-interface.js.map +1 -1
  139. package/dist/rbac/matrix.d.ts +2 -0
  140. package/dist/rbac/matrix.d.ts.map +1 -1
  141. package/dist/rbac/matrix.js +2 -0
  142. package/dist/rbac/matrix.js.map +1 -1
  143. package/dist/release-manager/index.d.ts +2 -0
  144. package/dist/release-manager/index.d.ts.map +1 -1
  145. package/dist/release-manager/index.js +2 -0
  146. package/dist/release-manager/index.js.map +1 -1
  147. package/dist/release-manager/release-helpers.d.ts +112 -0
  148. package/dist/release-manager/release-helpers.d.ts.map +1 -0
  149. package/dist/release-manager/release-helpers.js +164 -0
  150. package/dist/release-manager/release-helpers.js.map +1 -0
  151. package/dist/release-manager/release-tick.d.ts +101 -0
  152. package/dist/release-manager/release-tick.d.ts.map +1 -0
  153. package/dist/release-manager/release-tick.js +374 -0
  154. package/dist/release-manager/release-tick.js.map +1 -0
  155. package/dist/release-manager/scheduler.d.ts +28 -3
  156. package/dist/release-manager/scheduler.d.ts.map +1 -1
  157. package/dist/release-manager/scheduler.js +41 -417
  158. package/dist/release-manager/scheduler.js.map +1 -1
  159. package/dist/server.d.ts.map +1 -1
  160. package/dist/server.js +10 -0
  161. package/dist/server.js.map +1 -1
  162. package/dist/sync/gh-linear-sync.d.ts.map +1 -1
  163. package/dist/sync/gh-linear-sync.js +2 -2
  164. package/dist/sync/gh-linear-sync.js.map +1 -1
  165. package/dist/types.d.ts +22 -4
  166. package/dist/types.d.ts.map +1 -1
  167. package/dist/types.js +10 -0
  168. package/dist/types.js.map +1 -1
  169. package/dist/util/linear.d.ts +70 -0
  170. package/dist/util/linear.d.ts.map +1 -0
  171. package/dist/util/linear.js +108 -0
  172. package/dist/util/linear.js.map +1 -0
  173. package/dist/webhook/github-handler.d.ts +7 -1
  174. package/dist/webhook/github-handler.d.ts.map +1 -1
  175. package/dist/webhook/github-handler.js +82 -38
  176. package/dist/webhook/github-handler.js.map +1 -1
  177. package/package.json +1 -1
@@ -1,428 +1,47 @@
1
- import { randomUUID } from "node:crypto";
2
- import { eq, isNull, and, desc, max } from "drizzle-orm";
3
1
  import { Cron } from "croner";
4
- import { releaseApprovals, releaseDecisions } from "../db/schema.js";
5
2
  import { createLogger } from "../logger.js";
6
- import { logAuditEventUnchecked } from "../audit/writer.js";
7
- import { releaseFiredEvent, releaseSkippedEvent, releaseTagConflictEvent, releasePartialEvent, slackPostFailedEvent, qaRunCompletedEvent, } from "../audit/events.js";
8
- import { collectState } from "./state.js";
9
- import { decide } from "./decide.js";
10
- import { bumpFromConfigAndCommits } from "./versioning.js";
11
- import { createTagAndRelease, parseRepoFromUrl } from "./github.js";
12
- import { triggerWorkflow, pollWorkflowRun, workflowFileExists } from "../qa/github.js";
13
- import { fileGapIssue, markGapResolved } from "../qa/gap.js";
3
+ import { tick } from "./release-tick.js";
14
4
  const log = createLogger({ component: "ReleaseManager:scheduler" });
15
- const SLACK_DEDUP_WINDOW_MS = 24 * 3600 * 1000;
5
+ /**
6
+ * Create a release-manager scheduler for a single (repo, branch) pair.
7
+ *
8
+ * The returned object is the sole public API for the release-manager module.
9
+ * Callers should call `start()` to enable the cron driver, or call `tick()`
10
+ * directly in tests.
11
+ *
12
+ * Internally this function constructs a `TickContext` (defined in release-tick.ts)
13
+ * and delegates every decision cycle to `tick(ctx)`. Mutable inter-tick state
14
+ * (Slack dedup counters, license-warn flag, pause timestamp, etc.) lives in
15
+ * `ctx.mutableState` and is updated in-place by each tick invocation.
16
+ */
16
17
  export function createReleaseManagerScheduler(input) {
17
18
  const { config, db, octokit, linear, repoUrl, isLicensed, slack } = input;
18
19
  const branch = config.branch;
19
- const slackChannel = config.slackChannel;
20
- // Per-(repo, branch) in-memory dedup state.
21
- let lastSlackSkipReason = null;
22
- let lastSlackPostAt = 0;
23
- let pausedUntilTs = 0;
20
+ // Per-(repo, branch) mutable state — survives across ticks within this instance.
21
+ const mutableState = {
22
+ slackDedup: { lastSkipReason: null, lastPostAt: 0 },
23
+ licenseWarnLogged: false,
24
+ auditedCompletedRunIds: new Set(),
25
+ pausedUntilTs: 0,
26
+ };
27
+ // Build the context struct once; tick() reads and mutates mutableState in-place.
28
+ const ctx = {
29
+ config,
30
+ db,
31
+ octokit,
32
+ linear,
33
+ repoUrl,
34
+ branch,
35
+ isLicensed,
36
+ slack,
37
+ mutableState,
38
+ };
24
39
  let cronJob = null;
25
- let licenseWarnLogged = false;
26
- const auditedCompletedRunIds = new Set();
27
- function approvalTtlMs() {
28
- const hours = config.triggers.timeSinceLastHours;
29
- if (hours && hours > 0)
30
- return hours * 3600 * 1000;
31
- return 24 * 3600 * 1000;
32
- }
33
- async function maybePostSlack(text, currentSkipReason) {
34
- if (!slack || !slackChannel)
35
- return;
36
- const now = Date.now();
37
- // Always post when transitioning to fire / awaiting-approval.
38
- // Otherwise dedup: same reason + within window → suppress.
39
- if (currentSkipReason) {
40
- const sameReason = currentSkipReason === lastSlackSkipReason;
41
- const withinWindow = now - lastSlackPostAt < SLACK_DEDUP_WINDOW_MS;
42
- if (sameReason && withinWindow)
43
- return;
44
- }
45
- const ok = await slack.postMessage(slackChannel, text).catch(() => false);
46
- if (!ok) {
47
- void logAuditEventUnchecked(db, slackPostFailedEvent({ channel: slackChannel, reason: "post_returned_false" }));
48
- return;
49
- }
50
- lastSlackPostAt = now;
51
- lastSlackSkipReason = currentSkipReason;
52
- }
53
- async function persistDecision(row) {
54
- await db.insert(releaseDecisions).values({
55
- id: row.id,
56
- repoUrl,
57
- branch,
58
- decidedAt: new Date(),
59
- decision: row.decision,
60
- reason: row.reason,
61
- triggerStateJson: row.triggerStateJson,
62
- proposedVersion: row.proposedVersion,
63
- firedTag: row.firedTag,
64
- firedSha: row.firedSha,
65
- attemptCount: row.attemptCount ?? 0,
66
- qaRunId: row.qaRunId,
67
- qaRunSha: row.qaRunSha,
68
- });
69
- }
70
- async function consumeApprovalRow(decisionId) {
71
- // Mark the most-recent fresh approval as consumed by this decision.
72
- const fresh = await db
73
- .select({ id: releaseApprovals.id })
74
- .from(releaseApprovals)
75
- .where(and(eq(releaseApprovals.repoUrl, repoUrl), eq(releaseApprovals.branch, branch), isNull(releaseApprovals.consumedAt)))
76
- .orderBy(desc(releaseApprovals.approvedAt))
77
- .limit(1);
78
- if (fresh?.[0]?.id) {
79
- await db
80
- .update(releaseApprovals)
81
- .set({ consumedAt: new Date(), consumedByDecisionId: decisionId })
82
- .where(eq(releaseApprovals.id, fresh[0].id));
83
- }
84
- }
85
- async function tick() {
86
- if (!isLicensed()) {
87
- if (!licenseWarnLogged) {
88
- log.warn({ repoUrl, branch }, "release-manager unlicensed — skipping ticks");
89
- licenseWarnLogged = true;
90
- }
91
- return;
92
- }
93
- if (Date.now() < pausedUntilTs) {
94
- log.info({ pausedUntilTs }, "scheduler paused (via /release skip) — skipping tick");
95
- return;
96
- }
97
- let state;
98
- try {
99
- state = await collectState({
100
- octokit, db, repoUrl, branch, approvalTtlMs: approvalTtlMs(),
101
- });
102
- }
103
- catch (err) {
104
- log.error({ err, repoUrl, branch }, "collectState failed — skipping tick");
105
- return;
106
- }
107
- const triggerStateJson = JSON.stringify({
108
- mergedCommitsSinceLastTag: state.mergedCommitsSinceLastTag,
109
- lastTag: state.lastTag,
110
- lastTagAt: state.lastTagAt?.toISOString() ?? null,
111
- ciStatus: state.ciStatus,
112
- hasFreshApproval: state.hasFreshApproval,
113
- });
114
- // 1. Manual-tag detection — re-baseline counters.
115
- if (state.manualTagDetected) {
116
- const id = `rd_${randomUUID()}`;
117
- await persistDecision({
118
- id,
119
- decision: "skip",
120
- reason: "manual_tag_detected",
121
- triggerStateJson,
122
- });
123
- void logAuditEventUnchecked(db, releaseSkippedEvent({ repoUrl, branch, reason: "manual_tag_detected" }));
124
- log.info({ repoUrl, branch }, "manual tag detected — re-baselining");
125
- return;
126
- }
127
- // 2. BEC-136: Compute QA state when qaCheck is configured.
128
- let qaState;
129
- if (config.triggers.qaCheck) {
130
- const { owner, repo } = parseRepoFromUrl(repoUrl);
131
- let wfExists = false;
132
- try {
133
- wfExists = await workflowFileExists({
134
- octokit, owner, repo,
135
- path: config.triggers.qaCheck.workflow,
136
- ref: state.headSha,
137
- });
138
- }
139
- catch (err) {
140
- log.warn({ err }, "qa workflowFileExists check failed — treating as exists");
141
- wfExists = true; // fail-open so retries hit the dispatch path
142
- }
143
- if (wfExists) {
144
- // BEC-136: workflow file is present; if there was an open gap issue for this
145
- // (repo, branch, workflow), mark it resolved so a future gap can be re-filed.
146
- await markGapResolved({
147
- db,
148
- repoUrl,
149
- branch,
150
- workflowPath: config.triggers.qaCheck.workflow,
151
- });
152
- }
153
- let runConclusion = null;
154
- if (state.qaRun && state.qaRun.runSha === state.headSha) {
155
- try {
156
- const polled = await pollWorkflowRun({ octokit, owner, repo, runId: state.qaRun.runId });
157
- if (polled.kind === "completed" && !auditedCompletedRunIds.has(state.qaRun.runId)) {
158
- runConclusion = polled.conclusion;
159
- auditedCompletedRunIds.add(state.qaRun.runId);
160
- // Emit qa.run_completed audit on first observation of completion.
161
- void logAuditEventUnchecked(db, qaRunCompletedEvent({
162
- repoUrl, branch,
163
- runId: state.qaRun.runId,
164
- conclusion: polled.conclusion,
165
- durationMs: polled.durationMs,
166
- }));
167
- }
168
- else if (polled.kind === "completed") {
169
- runConclusion = polled.conclusion;
170
- // Already audited this runId on a prior tick; skip emit.
171
- }
172
- }
173
- catch (err) {
174
- log.warn({ err }, "qa pollWorkflowRun failed — treating as still running");
175
- }
176
- }
177
- qaState = { workflowFileExists: wfExists, runConclusion };
178
- }
179
- // 3. Decision.
180
- const result = decide(state, config.triggers, undefined, qaState);
181
- const proposedVersion = bumpFromConfigAndCommits(state.lastTag, state.commitsSinceLastTag, config.versionBump);
182
- if (result.kind === "skip") {
183
- const id = `rd_${randomUUID()}`;
184
- // Compute attempt count for retry handling on qa_dispatch_error path.
185
- let attemptCount = 0;
186
- let qaRunId;
187
- let qaRunSha;
188
- let finalReason = result.reason;
189
- if (result.qaActionNeeded?.reason === "qa_needs_trigger") {
190
- // Look up the highest attempt count across all qa_needs_trigger rows for this branch.
191
- // Using MAX instead of ORDER BY + LIMIT 1 to be stable when multiple rows share the same decidedAt.
192
- const prevAttempts = await db
193
- .select({ maxAttempts: max(releaseDecisions.attemptCount) })
194
- .from(releaseDecisions)
195
- .where(and(eq(releaseDecisions.repoUrl, repoUrl), eq(releaseDecisions.branch, branch), eq(releaseDecisions.reason, "qa_needs_trigger"), eq(releaseDecisions.qaRunSha, state.headSha)));
196
- attemptCount = (prevAttempts?.[0]?.maxAttempts ?? 0);
197
- const { owner, repo } = parseRepoFromUrl(repoUrl);
198
- const dispatch = await triggerWorkflow({
199
- octokit, db, owner, repo, repoUrl, branch,
200
- workflow: config.triggers.qaCheck.workflow,
201
- ref: state.headSha,
202
- inputs: config.triggers.qaCheck.workflowInputs,
203
- });
204
- if (dispatch.kind === "ok") {
205
- attemptCount = 0; // reset on successful dispatch
206
- qaRunId = dispatch.runId;
207
- qaRunSha = state.headSha;
208
- }
209
- else if (dispatch.kind === "dispatch_404") {
210
- // Workflow disappeared between state cache and dispatch — drop into gap-issue path.
211
- finalReason = "qa_no_workflow";
212
- if (linear) {
213
- const gapResult = await fileGapIssue({
214
- db,
215
- linear,
216
- repoUrl,
217
- branch,
218
- workflowPath: config.triggers.qaCheck.workflow,
219
- linearTeamId: config.triggers.qaCheck.linearTeamId,
220
- });
221
- if (gapResult.kind === "linear_error") {
222
- const prevGapAttempts = await db
223
- .select({ attemptCount: max(releaseDecisions.attemptCount) })
224
- .from(releaseDecisions)
225
- .where(and(eq(releaseDecisions.repoUrl, repoUrl), eq(releaseDecisions.branch, branch), eq(releaseDecisions.reason, "qa_no_workflow")));
226
- const gapAttemptCount = (prevGapAttempts?.[0]?.attemptCount ?? 0) + 1;
227
- if (gapAttemptCount >= 3) {
228
- finalReason = "qa_gap_file_error";
229
- attemptCount = gapAttemptCount;
230
- }
231
- else {
232
- attemptCount = gapAttemptCount;
233
- }
234
- log.error({ err: gapResult.message, repoUrl, branch }, "fileGapIssue failed; will retry");
235
- }
236
- }
237
- else {
238
- log.error({ repoUrl, branch }, "qaCheck requires Linear client but none configured — skipping gap-issue file");
239
- }
240
- }
241
- else if (dispatch.kind === "dispatch_422") {
242
- finalReason = "qa_dispatch_error";
243
- attemptCount = 99; // permanent skip — workflow misconfigured, retrying won't help
244
- }
245
- else if (dispatch.kind === "dispatch_pending") {
246
- // GitHub eventual-consistency window. Don't count against retry budget; next tick
247
- // will re-evaluate and the run should be findable by then.
248
- // Tag with qaRunSha so the per-SHA retry counter query can find these rows.
249
- qaRunSha = state.headSha;
250
- // attemptCount stays as-is; finalReason stays as "qa_needs_trigger" for next tick to retry.
251
- }
252
- else {
253
- // dispatch_error — increment attempt counter.
254
- // Tag with qaRunSha so the per-SHA retry counter query can find these rows.
255
- qaRunSha = state.headSha;
256
- attemptCount += 1;
257
- if (attemptCount >= 3) {
258
- finalReason = "qa_dispatch_error";
259
- }
260
- }
261
- }
262
- else if (result.qaActionNeeded?.reason === "qa_no_workflow") {
263
- if (linear) {
264
- const gapResult = await fileGapIssue({
265
- db,
266
- linear,
267
- repoUrl,
268
- branch,
269
- workflowPath: config.triggers.qaCheck.workflow,
270
- linearTeamId: config.triggers.qaCheck.linearTeamId,
271
- });
272
- if (gapResult.kind === "linear_error") {
273
- const prevGapAttempts = await db
274
- .select({ attemptCount: max(releaseDecisions.attemptCount) })
275
- .from(releaseDecisions)
276
- .where(and(eq(releaseDecisions.repoUrl, repoUrl), eq(releaseDecisions.branch, branch), eq(releaseDecisions.reason, "qa_no_workflow")));
277
- const gapAttemptCount = (prevGapAttempts?.[0]?.attemptCount ?? 0) + 1;
278
- if (gapAttemptCount >= 3) {
279
- finalReason = "qa_gap_file_error";
280
- attemptCount = gapAttemptCount;
281
- }
282
- else {
283
- attemptCount = gapAttemptCount;
284
- }
285
- log.error({ err: gapResult.message, repoUrl, branch }, "fileGapIssue failed; will retry");
286
- }
287
- }
288
- else {
289
- log.error({ repoUrl, branch }, "qaCheck requires Linear client but none configured — skipping gap-issue file");
290
- }
291
- }
292
- if (result.qaActionNeeded?.reason === "qa_timed_out" && !result.qaActionNeeded.pass && state.qaRun) {
293
- const elapsedMs = Date.now() - state.qaRun.triggeredAt.getTime();
294
- void logAuditEventUnchecked(db, qaRunCompletedEvent({
295
- repoUrl,
296
- branch,
297
- runId: result.qaActionNeeded.runId,
298
- conclusion: "timed_out",
299
- durationMs: elapsedMs,
300
- synthetic: true,
301
- }));
302
- }
303
- await persistDecision({
304
- id,
305
- decision: "skip",
306
- reason: finalReason,
307
- triggerStateJson,
308
- proposedVersion,
309
- qaRunId,
310
- qaRunSha,
311
- attemptCount,
312
- });
313
- void logAuditEventUnchecked(db, releaseSkippedEvent({ repoUrl, branch, reason: finalReason }));
314
- // BEC-160: emit a stdout line for every skip so operators tailing
315
- // docker logs can see the scheduler is alive and why it's skipping.
316
- log.info({ repoUrl, branch, reason: finalReason, mergedCommitsSinceLastTag: state.mergedCommitsSinceLastTag, lastTag: state.lastTag, proposedVersion }, "tick skip");
317
- // Slack notification with dedup
318
- await maybePostSlack(`:double_vertical_bar: Release skipped for *${repoUrl}* (${branch}): ${finalReason}`, finalReason);
319
- return;
320
- }
321
- if (result.kind === "awaiting-approval") {
322
- const id = `rd_${randomUUID()}`;
323
- await persistDecision({
324
- id,
325
- decision: "awaiting-approval",
326
- reason: result.reason,
327
- triggerStateJson,
328
- proposedVersion,
329
- });
330
- void logAuditEventUnchecked(db, releaseSkippedEvent({ repoUrl, branch, reason: "awaiting-approval" }));
331
- // BEC-160: stdout visibility for the awaiting-approval skip path.
332
- log.info({ repoUrl, branch, reason: "awaiting-approval", proposedVersion }, "tick skip");
333
- // Always post on first transition to awaiting-approval (bypass dedup).
334
- // Reset lastSlackSkipReason so a subsequent regular-skip will re-post.
335
- lastSlackSkipReason = null;
336
- await maybePostSlack(`:hourglass_flowing_sand: Release ready for *${repoUrl}* (${branch}): bumping ${proposedVersion} (${state.mergedCommitsSinceLastTag} commits since last tag). Run \`/release approve\` to fire.`, null);
337
- return;
338
- }
339
- // 3. Fire — create tag + release.
340
- const id = `rd_${randomUUID()}`;
341
- const githubResult = await createTagAndRelease({
342
- octokit,
343
- ...parseRepoFromUrl(repoUrl),
344
- tag: proposedVersion,
345
- sha: state.headSha,
346
- });
347
- if (githubResult.kind === "tag_exists") {
348
- await persistDecision({
349
- id,
350
- decision: "skip",
351
- reason: "tag_exists",
352
- triggerStateJson,
353
- proposedVersion,
354
- });
355
- void logAuditEventUnchecked(db, releaseTagConflictEvent({ repoUrl, branch, tag: proposedVersion }));
356
- // BEC-160: stdout visibility for the tag-exists skip path.
357
- log.info({ repoUrl, branch, reason: "tag_exists", proposedVersion }, "tick skip");
358
- return;
359
- }
360
- if (githubResult.kind === "release_create_failed") {
361
- // Tag was created; release-creation failed. Write a single skip row with the
362
- // partial-fire details so an operator can see what happened and clean up the
363
- // orphaned tag manually. v1 does NOT retry release-creation across ticks
364
- // (the tag is now committed, so the next tick would hit `tag_exists` and
365
- // skip again — see plan §"Known v1 simplifications"). Proper retry is a v2
366
- // feature requiring a tick-start sweep that calls only `createRelease` for
367
- // matching fire-pending rows.
368
- await persistDecision({
369
- id,
370
- decision: "skip",
371
- reason: "release_create_failed",
372
- triggerStateJson,
373
- proposedVersion,
374
- firedTag: proposedVersion,
375
- firedSha: state.headSha,
376
- });
377
- void logAuditEventUnchecked(db, releasePartialEvent({ repoUrl, branch, tag: proposedVersion, attemptCount: 1 }));
378
- log.error({ repoUrl, branch, tag: proposedVersion, msg: githubResult.message }, "release create failed — tag exists in GitHub but release page not created; manual cleanup required");
379
- return;
380
- }
381
- if (githubResult.kind === "other_error") {
382
- await persistDecision({
383
- id,
384
- decision: "skip",
385
- reason: "tag_create_error",
386
- triggerStateJson,
387
- proposedVersion,
388
- });
389
- void logAuditEventUnchecked(db, releaseSkippedEvent({ repoUrl, branch, reason: "tag_create_error" }));
390
- log.error({ err: githubResult.message, repoUrl, branch }, "createTagAndRelease unknown error — wrote skip row");
391
- return;
392
- }
393
- // ok
394
- await persistDecision({
395
- id,
396
- decision: "fire",
397
- reason: "all triggers passed",
398
- triggerStateJson,
399
- proposedVersion,
400
- firedTag: proposedVersion,
401
- firedSha: state.headSha,
402
- });
403
- if (state.hasFreshApproval) {
404
- await consumeApprovalRow(id);
405
- }
406
- void logAuditEventUnchecked(db, releaseFiredEvent({
407
- repoUrl,
408
- branch,
409
- tag: proposedVersion,
410
- sha: state.headSha,
411
- mergedPrCount: state.mergedCommitsSinceLastTag,
412
- }));
413
- // BEC-160: stdout visibility for the fire path. A successful release is a
414
- // production event — operators must see it in `docker logs`, not just the
415
- // audit table. Slack-suppressed deployments would otherwise be silent.
416
- log.info({ repoUrl, branch, tag: proposedVersion, sha: state.headSha, mergedPrCount: state.mergedCommitsSinceLastTag, releaseUrl: githubResult.releaseUrl }, "tick fire");
417
- await maybePostSlack(`:rocket: Released *${proposedVersion}* for ${repoUrl} (${branch}). ${githubResult.releaseUrl}`, null);
418
- // Reset Slack dedup so the next skip re-posts.
419
- lastSlackSkipReason = null;
420
- }
421
40
  function start() {
422
41
  if (cronJob)
423
42
  return;
424
43
  cronJob = new Cron(config.schedule, () => {
425
- tick().catch((err) => log.error({ err, repoUrl, branch }, "release-manager tick errored"));
44
+ tick(ctx).catch((err) => log.error({ err, repoUrl, branch }, "release-manager tick errored"));
426
45
  });
427
46
  log.info({ schedule: config.schedule, repoUrl, branch }, "release-manager scheduler started");
428
47
  }
@@ -431,8 +50,13 @@ export function createReleaseManagerScheduler(input) {
431
50
  cronJob = null;
432
51
  }
433
52
  function pauseUntil(ts) {
434
- pausedUntilTs = ts.getTime();
435
- }
436
- return { tick, start, stop, pauseUntil };
53
+ mutableState.pausedUntilTs = ts.getTime();
54
+ }
55
+ return {
56
+ tick: () => tick(ctx),
57
+ start,
58
+ stop,
59
+ pauseUntil,
60
+ };
437
61
  }
438
62
  //# sourceMappingURL=scheduler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../../src/release-manager/scheduler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../../src/release-manager/scheduler.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG5C,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAGzC,MAAM,GAAG,GAAG,YAAY,CAAC,EAAE,SAAS,EAAE,0BAA0B,EAAE,CAAC,CAAC;AAyBpE;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,6BAA6B,CAC3C,KAAmC;IAEnC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IAC1E,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAE7B,iFAAiF;IACjF,MAAM,YAAY,GAAqB;QACrC,UAAU,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE;QACnD,iBAAiB,EAAE,KAAK;QACxB,sBAAsB,EAAE,IAAI,GAAG,EAAU;QACzC,aAAa,EAAE,CAAC;KACjB,CAAC;IAEF,iFAAiF;IACjF,MAAM,GAAG,GAAgB;QACvB,MAAM;QACN,EAAE;QACF,OAAO;QACP,MAAM;QACN,OAAO;QACP,MAAM;QACN,UAAU;QACV,KAAK;QACL,YAAY;KACb,CAAC;IAEF,IAAI,OAAO,GAAgB,IAAI,CAAC;IAEhC,SAAS,KAAK;QACZ,IAAI,OAAO;YAAE,OAAO;QACpB,OAAO,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,EAAE;YACvC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,8BAA8B,CAAC,CAAC,CAAC;QAChG,CAAC,CAAC,CAAC;QACH,GAAG,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,mCAAmC,CAAC,CAAC;IAChG,CAAC;IAED,SAAS,IAAI;QACX,OAAO,EAAE,IAAI,EAAE,CAAC;QAChB,OAAO,GAAG,IAAI,CAAC;IACjB,CAAC;IAED,SAAS,UAAU,CAAC,EAAQ;QAC1B,YAAY,CAAC,aAAa,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IAC5C,CAAC;IAED,OAAO;QACL,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;QACrB,KAAK;QACL,IAAI;QACJ,UAAU;KACX,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAI5B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAKtD,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAMrD,MAAM,WAAW,sBAAsB;IACrC,0DAA0D;IAC1D,aAAa,EAAE,MAAM,CAAC;IACtB,qCAAqC;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,gDAAgD;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,2CAA2C;IAC3C,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAChD,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACxC,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,aAAa,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IACvD,wFAAwF;IACxF,OAAO,CAAC,EAAE,sBAAsB,CAAC;IACjC;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B;;;OAGG;IACH,QAAQ,CAAC,EAAE,aAAa,CAAC;CAC1B;AAED,wBAAsB,SAAS,CAAC,MAAM,EAAE,YAAY;;;;GAkGnD"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAI5B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAKtD,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAMrD,MAAM,WAAW,sBAAsB;IACrC,0DAA0D;IAC1D,aAAa,EAAE,MAAM,CAAC;IACtB,qCAAqC;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,gDAAgD;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,2CAA2C;IAC3C,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAChD,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACxC,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,aAAa,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IACvD,wFAAwF;IACxF,OAAO,CAAC,EAAE,sBAAsB,CAAC;IACjC;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B;;;OAGG;IACH,QAAQ,CAAC,EAAE,aAAa,CAAC;CAC1B;AAED,wBAAsB,SAAS,CAAC,MAAM,EAAE,YAAY;;;;GA4GnD"}
package/dist/server.js CHANGED
@@ -62,6 +62,9 @@ export async function createApp(config) {
62
62
  repoConfigs: config.repoConfigs,
63
63
  db: db,
64
64
  github: config.github,
65
+ // BEC-186: webhook handler needs the notifier to fire onPRMerged when a
66
+ // PR is merged externally (human merge / GitHub auto-merge-when-ready).
67
+ notifier,
65
68
  });
66
69
  app.route("/", githubWebhookApp);
67
70
  }
@@ -78,6 +81,13 @@ export async function createApp(config) {
78
81
  channelId: config.pmSlack.channelId,
79
82
  linearApiKey: config.linearApiKey,
80
83
  teamIds: config.pmSlack.teamIds,
84
+ // Wire the live runner so `/pm cancel|stop|halt` fire real signals;
85
+ // db is threaded through for audit-event writes from those commands.
86
+ runner: {
87
+ requestStop: runner.requestStop.bind(runner),
88
+ haltAll: runner.haltAll.bind(runner),
89
+ },
90
+ db: db,
81
91
  });
82
92
  app.route("/", slackRouter);
83
93
  }
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"gh-linear-sync.d.ts","sourceRoot":"","sources":["../../src/sync/gh-linear-sync.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gh-linear-sync.d.ts","sourceRoot":"","sources":["../../src/sync/gh-linear-sync.ts"],"names":[],"mappings":"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"}
@@ -17,6 +17,7 @@
17
17
  * Linear = triage / work-tracking / autonomous-pipeline routing
18
18
  */
19
19
  import { createLogger } from "../logger.js";
20
+ import { getLinearClient } from "../util/linear.js";
20
21
  const log = createLogger({ component: "gh-linear-sync" });
21
22
  // ---------------------------------------------------------------------------
22
23
  // Module-level constants
@@ -318,9 +319,8 @@ export async function createGitHubSyncClientFromToken(token) {
318
319
  * so mismatches surface immediately in CI if the SDK changes shape.
319
320
  */
320
321
  export async function createLinearSyncClientFromApiKey(apiKey) {
321
- const { LinearClient } = await import("@linear/sdk");
322
322
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
323
- const client = new LinearClient({ apiKey });
323
+ const client = await getLinearClient(apiKey);
324
324
  return {
325
325
  async issues(args) {
326
326
  // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access