@urateam/core 0.1.32 → 0.1.34

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 (132) hide show
  1. package/dist/__tests__/audit-immutability.test.js +50 -1
  2. package/dist/__tests__/audit-immutability.test.js.map +1 -1
  3. package/dist/__tests__/auth-monitor.test.d.ts +2 -0
  4. package/dist/__tests__/auth-monitor.test.d.ts.map +1 -0
  5. package/dist/__tests__/auth-monitor.test.js +253 -0
  6. package/dist/__tests__/auth-monitor.test.js.map +1 -0
  7. package/dist/__tests__/bec-186-repro.test.d.ts +16 -0
  8. package/dist/__tests__/bec-186-repro.test.d.ts.map +1 -0
  9. package/dist/__tests__/bec-186-repro.test.js +223 -0
  10. package/dist/__tests__/bec-186-repro.test.js.map +1 -0
  11. package/dist/__tests__/db-migrations.test.d.ts +2 -0
  12. package/dist/__tests__/db-migrations.test.d.ts.map +1 -0
  13. package/dist/__tests__/db-migrations.test.js +237 -0
  14. package/dist/__tests__/db-migrations.test.js.map +1 -0
  15. package/dist/__tests__/executor-issue-id.test.js +2 -0
  16. package/dist/__tests__/executor-issue-id.test.js.map +1 -1
  17. package/dist/__tests__/pm-scheduler.test.js +59 -0
  18. package/dist/__tests__/pm-scheduler.test.js.map +1 -1
  19. package/dist/__tests__/post-fanout-comments.test.js +36 -0
  20. package/dist/__tests__/post-fanout-comments.test.js.map +1 -1
  21. package/dist/__tests__/preflight-claude-auth.test.d.ts +2 -0
  22. package/dist/__tests__/preflight-claude-auth.test.d.ts.map +1 -0
  23. package/dist/__tests__/preflight-claude-auth.test.js +36 -0
  24. package/dist/__tests__/preflight-claude-auth.test.js.map +1 -0
  25. package/dist/__tests__/resolve-claude-auth.test.d.ts +2 -0
  26. package/dist/__tests__/resolve-claude-auth.test.d.ts.map +1 -0
  27. package/dist/__tests__/resolve-claude-auth.test.js +129 -0
  28. package/dist/__tests__/resolve-claude-auth.test.js.map +1 -0
  29. package/dist/__tests__/runner-retry-strategies.test.d.ts +23 -0
  30. package/dist/__tests__/runner-retry-strategies.test.d.ts.map +1 -0
  31. package/dist/__tests__/runner-retry-strategies.test.js +274 -0
  32. package/dist/__tests__/runner-retry-strategies.test.js.map +1 -0
  33. package/dist/__tests__/scratch-file-guard.test.d.ts +2 -0
  34. package/dist/__tests__/scratch-file-guard.test.d.ts.map +1 -0
  35. package/dist/__tests__/scratch-file-guard.test.js +144 -0
  36. package/dist/__tests__/scratch-file-guard.test.js.map +1 -0
  37. package/dist/__tests__/spec-vs-impl-gate.test.d.ts +2 -0
  38. package/dist/__tests__/spec-vs-impl-gate.test.d.ts.map +1 -0
  39. package/dist/__tests__/spec-vs-impl-gate.test.js +222 -0
  40. package/dist/__tests__/spec-vs-impl-gate.test.js.map +1 -0
  41. package/dist/__tests__/stage-models.test.js +4 -0
  42. package/dist/__tests__/stage-models.test.js.map +1 -1
  43. package/dist/__tests__/typecheck-gate.test.d.ts +2 -0
  44. package/dist/__tests__/typecheck-gate.test.d.ts.map +1 -0
  45. package/dist/__tests__/typecheck-gate.test.js +196 -0
  46. package/dist/__tests__/typecheck-gate.test.js.map +1 -0
  47. package/dist/audit/events.d.ts +52 -0
  48. package/dist/audit/events.d.ts.map +1 -1
  49. package/dist/audit/events.js +81 -0
  50. package/dist/audit/events.js.map +1 -1
  51. package/dist/db/client.d.ts.map +1 -1
  52. package/dist/db/client.js +8 -0
  53. package/dist/db/client.js.map +1 -1
  54. package/dist/db/migrations/postgres/014_missing_indexes.sql +28 -0
  55. package/dist/db/migrations/sqlite/013_missing_indexes.sql +28 -0
  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 +12 -26
  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 +2 -1
  76. package/dist/index.d.ts.map +1 -1
  77. package/dist/index.js +2 -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 +2 -0
  84. package/dist/notifier/linear.d.ts.map +1 -1
  85. package/dist/notifier/linear.js +12 -2
  86. package/dist/notifier/linear.js.map +1 -1
  87. package/dist/pipeline/runner.d.ts.map +1 -1
  88. package/dist/pipeline/runner.js +152 -2
  89. package/dist/pipeline/runner.js.map +1 -1
  90. package/dist/pipeline/scratch-file-guard.d.ts +21 -0
  91. package/dist/pipeline/scratch-file-guard.d.ts.map +1 -0
  92. package/dist/pipeline/scratch-file-guard.js +155 -0
  93. package/dist/pipeline/scratch-file-guard.js.map +1 -0
  94. package/dist/pipeline/spec-vs-impl-gate.d.ts +49 -0
  95. package/dist/pipeline/spec-vs-impl-gate.d.ts.map +1 -0
  96. package/dist/pipeline/spec-vs-impl-gate.js +177 -0
  97. package/dist/pipeline/spec-vs-impl-gate.js.map +1 -0
  98. package/dist/pipeline/typecheck-gate.d.ts +34 -0
  99. package/dist/pipeline/typecheck-gate.d.ts.map +1 -0
  100. package/dist/pipeline/typecheck-gate.js +89 -0
  101. package/dist/pipeline/typecheck-gate.js.map +1 -0
  102. package/dist/pm/scheduler.d.ts.map +1 -1
  103. package/dist/pm/scheduler.js +19 -0
  104. package/dist/pm/scheduler.js.map +1 -1
  105. package/dist/release-manager/index.d.ts +2 -0
  106. package/dist/release-manager/index.d.ts.map +1 -1
  107. package/dist/release-manager/index.js +2 -0
  108. package/dist/release-manager/index.js.map +1 -1
  109. package/dist/release-manager/release-helpers.d.ts +112 -0
  110. package/dist/release-manager/release-helpers.d.ts.map +1 -0
  111. package/dist/release-manager/release-helpers.js +164 -0
  112. package/dist/release-manager/release-helpers.js.map +1 -0
  113. package/dist/release-manager/release-tick.d.ts +101 -0
  114. package/dist/release-manager/release-tick.d.ts.map +1 -0
  115. package/dist/release-manager/release-tick.js +374 -0
  116. package/dist/release-manager/release-tick.js.map +1 -0
  117. package/dist/release-manager/scheduler.d.ts +28 -3
  118. package/dist/release-manager/scheduler.d.ts.map +1 -1
  119. package/dist/release-manager/scheduler.js +41 -417
  120. package/dist/release-manager/scheduler.js.map +1 -1
  121. package/dist/server.d.ts.map +1 -1
  122. package/dist/server.js +3 -0
  123. package/dist/server.js.map +1 -1
  124. package/dist/types.d.ts +15 -0
  125. package/dist/types.d.ts.map +1 -1
  126. package/dist/types.js +17 -0
  127. package/dist/types.js.map +1 -1
  128. package/dist/webhook/github-handler.d.ts +7 -1
  129. package/dist/webhook/github-handler.d.ts.map +1 -1
  130. package/dist/webhook/github-handler.js +82 -38
  131. package/dist/webhook/github-handler.js.map +1 -1
  132. package/package.json +1 -1
@@ -0,0 +1,177 @@
1
+ /**
2
+ * Tier 1c — spec-vs-impl JSDoc gate.
3
+ *
4
+ * Catches the failure mode where the autonomous agent writes a JSDoc that
5
+ * references a config / option / env / deps / options field by name, but
6
+ * never actually adds that field to any schema or implementation. (The PR
7
+ * #254 failure mode is detailed in `docs/superpowers/plans/2026-05-11-
8
+ * pipeline-reliability-tiers.md`; we intentionally do NOT spell the
9
+ * canonical example symbol here so the corpus check doesn't launder it
10
+ * past the gate in regression tests.)
11
+ *
12
+ * Algorithm (per file in the agent's diff):
13
+ * 1. Find every `/** ... *\/` block.
14
+ * 2. Inside each block, extract identifiers matching
15
+ * `\b(config|opts|env|deps|options)\.([A-Za-z_][A-Za-z0-9_]*)\b`.
16
+ * 3. For each unique (file, symbol), check whether the symbol exists in any
17
+ * `.ts` / `.tsx` / `.js` / `.jsx` file under the worktree.
18
+ * 4. If not found, emit a `SpecVsImplFinding`. The runner pushes a
19
+ * `category: "spec-vs-impl"` blocking ReviewFinding and forces draft.
20
+ *
21
+ * Heuristic — false positives are accepted as warnings in v1. Calibrate after
22
+ * two weeks of production data per the operator brief. Escape hatch:
23
+ * `URATEAM_DISABLE_SPEC_VS_IMPL_GATE=true`.
24
+ *
25
+ * Architecture: the matcher (`extractPromisedSymbols`) is pure and unit-
26
+ * tested directly. The corpus-lookup is injected via `corpusContainsSymbol`
27
+ * so tests don't need a real worktree. The git layer
28
+ * (`enumerateChangedTsFiles` + `buildWorktreeCorpus`) is glued together by
29
+ * the public `checkSpecVsImpl` entry point.
30
+ */
31
+ import { readFile } from "node:fs/promises";
32
+ import { join } from "node:path";
33
+ import { gitExecSafe } from "../repo/git.js";
34
+ const PROMISED_REF_REGEX = /\b(config|opts|env|deps|options)\.([A-Za-z_][A-Za-z0-9_]*)\b/g;
35
+ const JSDOC_BLOCK_REGEX = /\/\*\*[\s\S]*?\*\//g;
36
+ /**
37
+ * Pure matcher: scans `content` for JSDoc blocks and returns the list of
38
+ * `<prefix>.<symbol>` references inside them, preserving first-occurrence
39
+ * order and deduplicating across blocks.
40
+ */
41
+ export function extractPromisedSymbols(content) {
42
+ const seen = new Set();
43
+ const result = [];
44
+ const jsdocBlocks = content.match(JSDOC_BLOCK_REGEX);
45
+ if (!jsdocBlocks)
46
+ return result;
47
+ for (const block of jsdocBlocks) {
48
+ for (const match of block.matchAll(PROMISED_REF_REGEX)) {
49
+ const prefix = match[1];
50
+ const symbol = match[2];
51
+ const key = `${prefix}.${symbol}`;
52
+ if (seen.has(key))
53
+ continue;
54
+ seen.add(key);
55
+ result.push({ prefix, symbol });
56
+ }
57
+ }
58
+ return result;
59
+ }
60
+ /**
61
+ * Pure orchestrator for the per-file check. Given a list of changed files
62
+ * (path + content) and a corpus-lookup function, returns the list of
63
+ * findings. Exported for unit testing; the runner uses `checkSpecVsImpl`
64
+ * instead.
65
+ */
66
+ export function checkSpecVsImplFromContent(args) {
67
+ const findings = [];
68
+ for (const file of args.files) {
69
+ const promised = extractPromisedSymbols(file.content);
70
+ for (const p of promised) {
71
+ if (!args.corpusContainsSymbol(p.symbol)) {
72
+ findings.push({
73
+ filePath: file.path,
74
+ promisedSymbol: p.symbol,
75
+ promisedPrefix: p.prefix,
76
+ });
77
+ }
78
+ }
79
+ }
80
+ return findings;
81
+ }
82
+ const TS_EXT_REGEX = /\.(tsx?|jsx?)$/;
83
+ /**
84
+ * Enumerate TS/TSX/JS/JSX files added or modified vs `origin/<baseBranch>`.
85
+ * The gate only inspects the agent's own changes; pre-existing JSDoc drift in
86
+ * the rest of the repo is not in scope.
87
+ *
88
+ * Fail-open: a git error returns an empty list.
89
+ */
90
+ async function enumerateChangedTsFiles(worktreePath, baseBranch) {
91
+ const out = await gitExecSafe([
92
+ "diff",
93
+ "--name-only",
94
+ "--diff-filter=AM",
95
+ `origin/${baseBranch}...HEAD`,
96
+ ], worktreePath);
97
+ return out
98
+ .split("\n")
99
+ .map((s) => s.trim())
100
+ .filter(Boolean)
101
+ .filter((p) => TS_EXT_REGEX.test(p));
102
+ }
103
+ /**
104
+ * Build a string corpus by concatenating every TS/TSX/JS/JSX file under the
105
+ * worktree (excluding `node_modules`, `dist`, `.git`). The corpus is searched
106
+ * via `.includes(symbol)` — fast and good enough for heuristic detection.
107
+ * False positives are acceptable per the brief.
108
+ */
109
+ async function buildWorktreeCorpus(worktreePath) {
110
+ const out = await gitExecSafe([
111
+ "ls-files",
112
+ "--cached",
113
+ "--others",
114
+ "--exclude-standard",
115
+ "--",
116
+ "*.ts",
117
+ "*.tsx",
118
+ "*.js",
119
+ "*.jsx",
120
+ ], worktreePath);
121
+ const paths = out
122
+ .split("\n")
123
+ .map((s) => s.trim())
124
+ .filter(Boolean);
125
+ let corpus = "";
126
+ for (const p of paths) {
127
+ try {
128
+ corpus += "\n" + (await readFile(join(worktreePath, p), "utf8"));
129
+ }
130
+ catch {
131
+ // Skip unreadable files; the corpus is best-effort.
132
+ }
133
+ }
134
+ return corpus;
135
+ }
136
+ /**
137
+ * Public entry point. Scans the agent's added/modified TS files for JSDoc
138
+ * references that aren't defined anywhere in the worktree's tracked source.
139
+ * Returns a flat list of findings.
140
+ *
141
+ * Escape hatch: `URATEAM_DISABLE_SPEC_VS_IMPL_GATE=true` short-circuits.
142
+ *
143
+ * Fail-open behavior: errors during git or filesystem access return an empty
144
+ * result with `skipped: false`. The runner additionally wraps the call in a
145
+ * try/catch and logs a warning rather than blocking the pipeline.
146
+ */
147
+ export async function checkSpecVsImpl(worktreePath, baseBranch) {
148
+ if (process.env.URATEAM_DISABLE_SPEC_VS_IMPL_GATE === "true") {
149
+ return { findings: [], skipped: true };
150
+ }
151
+ const changedFiles = await enumerateChangedTsFiles(worktreePath, baseBranch);
152
+ if (changedFiles.length === 0) {
153
+ return { findings: [], skipped: false };
154
+ }
155
+ // Read only the changed files for the JSDoc scan. The corpus (used for
156
+ // symbol existence) is built once over the whole worktree.
157
+ const filePairs = [];
158
+ for (const p of changedFiles) {
159
+ try {
160
+ const content = await readFile(join(worktreePath, p), "utf8");
161
+ filePairs.push({ path: p, content });
162
+ }
163
+ catch {
164
+ // Skip — likely deleted in HEAD; not relevant for the JSDoc scan.
165
+ }
166
+ }
167
+ if (filePairs.length === 0) {
168
+ return { findings: [], skipped: false };
169
+ }
170
+ const corpus = await buildWorktreeCorpus(worktreePath);
171
+ const findings = checkSpecVsImplFromContent({
172
+ files: filePairs,
173
+ corpusContainsSymbol: (sym) => corpus.includes(sym),
174
+ });
175
+ return { findings, skipped: false };
176
+ }
177
+ //# sourceMappingURL=spec-vs-impl-gate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spec-vs-impl-gate.js","sourceRoot":"","sources":["../../src/pipeline/spec-vs-impl-gate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * DI seam: the function that actually invokes the typecheck command. Tests
3
+ * inject a synthetic version; the runner imports and uses the real one (via
4
+ * the default in `runTypecheck`'s opts).
5
+ */
6
+ export type TypecheckRunner = (command: string[], cwd: string, timeoutMs: number) => Promise<{
7
+ stdout: string;
8
+ stderr: string;
9
+ code: number;
10
+ }>;
11
+ export interface TypecheckResult {
12
+ /** True when typecheck exited 0. */
13
+ passed: boolean;
14
+ /** Number of lines matching a TypeScript error signature (`error TSnnnn`).
15
+ * Zero when the command failed for a non-typecheck reason (e.g. missing
16
+ * binary); the caller distinguishes by also reading `passed` and `output`. */
17
+ errorCount: number;
18
+ /** Up to 5 error lines, each truncated at 500 chars with a trailing `…`. */
19
+ firstMessages: string[];
20
+ /** Full combined stdout + stderr, capped at 50 KB with a `(truncated)`
21
+ * sentinel when oversize. Goes into the PR-body excerpt; the audit payload
22
+ * uses `firstMessages` to stay bounded. */
23
+ output: string;
24
+ /** True when `URATEAM_DISABLE_TYPECHECK_GATE=true` short-circuited the gate.
25
+ * In that case the rest of the fields are zero/empty; treat as "skip, don't
26
+ * block". */
27
+ skipped: boolean;
28
+ }
29
+ export declare function runTypecheck(worktreePath: string, opts?: {
30
+ command?: string[];
31
+ timeoutMs?: number;
32
+ runner?: TypecheckRunner;
33
+ }): Promise<TypecheckResult>;
34
+ //# sourceMappingURL=typecheck-gate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typecheck-gate.d.ts","sourceRoot":"","sources":["../../src/pipeline/typecheck-gate.ts"],"names":[],"mappings":"AAoBA;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG,CAC5B,OAAO,EAAE,MAAM,EAAE,EACjB,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,KACd,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAE/D,MAAM,WAAW,eAAe;IAC9B,oCAAoC;IACpC,MAAM,EAAE,OAAO,CAAC;IAChB;;mFAE+E;IAC/E,UAAU,EAAE,MAAM,CAAC;IACnB,4EAA4E;IAC5E,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB;;gDAE4C;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf;;kBAEc;IACd,OAAO,EAAE,OAAO,CAAC;CAClB;AAqDD,wBAAsB,YAAY,CAChC,YAAY,EAAE,MAAM,EACpB,IAAI,CAAC,EAAE;IACL,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,eAAe,CAAC;CAC1B,GACA,OAAO,CAAC,eAAe,CAAC,CAoC1B"}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Tier 1b — typecheck gate.
3
+ *
4
+ * Runs the project's idiomatic typecheck command inside the worktree before
5
+ * push. On failure, the runner surfaces a `category: "typecheck"` blocking
6
+ * `ReviewFinding` and emits a `pipeline.typecheck_failed` audit event. The
7
+ * existing draft-PR renderer picks up the finding and surfaces the first 5
8
+ * messages in the PR body.
9
+ *
10
+ * Escape hatch: `URATEAM_DISABLE_TYPECHECK_GATE=true`. Documented in CLAUDE.md.
11
+ *
12
+ * The gate is unit-tested via a runner DI hook (`TypecheckRunner`) so the test
13
+ * suite doesn't need a real `pnpm` / `tsc` install. The real default uses
14
+ * `execFile` per repo convention.
15
+ */
16
+ import { execFile as execFileCb } from "node:child_process";
17
+ import { promisify } from "node:util";
18
+ const execFileAsync = promisify(execFileCb);
19
+ const TS_ERROR_REGEX = /\berror TS\d+\b/;
20
+ function parseFirstMessages(combinedOutput) {
21
+ const errorLines = combinedOutput
22
+ .split("\n")
23
+ .map((l) => l.trim())
24
+ .filter((l) => TS_ERROR_REGEX.test(l));
25
+ const firstMessages = errorLines.slice(0, 5).map((l) => l.length > 500 ? l.slice(0, 500) + "…" : l);
26
+ return { errorCount: errorLines.length, firstMessages };
27
+ }
28
+ function truncateOutput(combined, limit = 50_000) {
29
+ if (combined.length <= limit)
30
+ return combined;
31
+ return combined.slice(0, limit) + "\n…(truncated)";
32
+ }
33
+ /**
34
+ * Default runner: invokes the typecheck command via `execFile`. Captures both
35
+ * stdout and stderr and returns the exit code (0 = pass, anything else = fail).
36
+ */
37
+ const defaultRunner = async (command, cwd, timeoutMs) => {
38
+ try {
39
+ const { stdout, stderr } = await execFileAsync(command[0], command.slice(1), {
40
+ cwd,
41
+ timeout: timeoutMs,
42
+ maxBuffer: 100 * 1024 * 1024, // 100 MB — typecheck output is bounded but not tiny
43
+ });
44
+ return { stdout, stderr, code: 0 };
45
+ }
46
+ catch (err) {
47
+ const e = err;
48
+ const code = typeof e.code === "number" ? e.code : 1;
49
+ return {
50
+ stdout: e.stdout ?? "",
51
+ stderr: e.stderr ?? e.message ?? "",
52
+ code,
53
+ };
54
+ }
55
+ };
56
+ export async function runTypecheck(worktreePath, opts) {
57
+ if (process.env.URATEAM_DISABLE_TYPECHECK_GATE === "true") {
58
+ return {
59
+ passed: true,
60
+ errorCount: 0,
61
+ firstMessages: [],
62
+ output: "",
63
+ skipped: true,
64
+ };
65
+ }
66
+ const command = opts?.command ?? ["pnpm", "-w", "typecheck"];
67
+ const timeoutMs = opts?.timeoutMs ?? 5 * 60 * 1000;
68
+ const runner = opts?.runner ?? defaultRunner;
69
+ const { stdout, stderr, code } = await runner(command, worktreePath, timeoutMs);
70
+ const combined = `${stderr}\n${stdout}`.trim();
71
+ if (code === 0) {
72
+ return {
73
+ passed: true,
74
+ errorCount: 0,
75
+ firstMessages: [],
76
+ output: "",
77
+ skipped: false,
78
+ };
79
+ }
80
+ const { errorCount, firstMessages } = parseFirstMessages(combined);
81
+ return {
82
+ passed: false,
83
+ errorCount,
84
+ firstMessages,
85
+ output: truncateOutput(combined),
86
+ skipped: false,
87
+ };
88
+ }
89
+ //# sourceMappingURL=typecheck-gate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typecheck-gate.js","sourceRoot":"","sources":["../../src/pipeline/typecheck-gate.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../src/pm/scheduler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../src/pm/scheduler.ts"],"names":[],"mappings":"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"}
@@ -25,12 +25,23 @@ import { createLogger } from "../logger.js";
25
25
  import { logAuditEventUnchecked, budgetRefusedEvent, pruneAuditLog } from "../audit/index.js";
26
26
  import { pruneExpiredSessions } from "../auth/index.js";
27
27
  import { recomputeCostRollups } from "../cost/index.js";
28
+ import { createAuthMonitor } from "../executor/auth-monitor.js";
28
29
  const log = createLogger({ component: "PmAgent:scheduler" });
29
30
  export function createPmScheduler(deps) {
30
31
  const actions = deps.actions;
31
32
  const { getClient: getLinearClient } = createLazyLinearClient(deps.linearApiKey);
32
33
  let slackNotifier = null;
33
34
  const callClaudeFn = makeCallClaude();
35
+ // BEC-207: AuthMonitor — periodic Claude session health-check (every 6h).
36
+ // Alerts to the PM agent's Slack channel when SLACK_ERROR_ALERTS=true.
37
+ // No-ops when CLAUDE_CODE_OAUTH_TOKEN or ANTHROPIC_API_KEY is set.
38
+ const authMonitor = createAuthMonitor({
39
+ slackBotToken: deps.slackBotToken || undefined,
40
+ slackErrorChannel: process.env.SLACK_ERROR_ALERTS === "true"
41
+ ? deps.config.slackChannelId
42
+ : undefined,
43
+ db: deps.db,
44
+ });
34
45
  function getSlackNotifier() {
35
46
  if (!slackNotifier) {
36
47
  slackNotifier = new PmSlackNotifier({
@@ -457,6 +468,14 @@ export function createPmScheduler(deps) {
457
468
  catch (err) {
458
469
  log.warn({ err }, "cost rollup failed");
459
470
  }
471
+ // BEC-207: AuthMonitor — periodic Claude session health-check (every 6h).
472
+ // Throttled internally; fire-and-forget safe.
473
+ try {
474
+ await authMonitor.tick();
475
+ }
476
+ catch (err) {
477
+ log.warn({ err }, "auth monitor tick failed");
478
+ }
460
479
  log.info({
461
480
  triaged: tick.triaged.length,
462
481
  promoted: tick.promoted.filter((p) => p.promoted).length,
@@ -1 +1 @@
1
- {"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../../src/pm/scheduler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../../src/pm/scheduler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAyB,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAoB,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAqB,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAA0B,MAAM,2BAA2B,CAAC;AAC5F,OAAO,EAAE,qBAAqB,EAAoB,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAA2D,MAAM,gCAAgC,CAAC;AAC3H,OAAO,EAAE,oBAAoB,EAAsB,MAAM,sBAAsB,CAAC;AAChF,OAAO,EAAE,4BAA4B,EAAyB,MAAM,4BAA4B,CAAC;AACjG,OAAO,EAAE,eAAe,EAA6C,MAAM,yBAAyB,CAAC;AACrG,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAkB,MAAM,eAAe,CAAC;AACnF,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAElD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AACpF,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC9F,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAoB,MAAM,6BAA6B,CAAC;AAElF,MAAM,GAAG,GAAG,YAAY,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC,CAAC;AAsC7D,MAAM,UAAU,iBAAiB,CAAC,IAAqB;IACrD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAyC,CAAC;IAE/D,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,GAAG,sBAAsB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACjF,IAAI,aAAa,GAA2B,IAAI,CAAC;IACjD,MAAM,YAAY,GAAG,cAAc,EAAE,CAAC;IAEtC,0EAA0E;IAC1E,uEAAuE;IACvE,mEAAmE;IACnE,MAAM,WAAW,GAAgB,iBAAiB,CAAC;QACjD,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,SAAS;QAC9C,iBAAiB,EACf,OAAO,CAAC,GAAG,CAAC,kBAAkB,KAAK,MAAM;YACvC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc;YAC5B,CAAC,CAAC,SAAS;QACf,EAAE,EAAE,IAAI,CAAC,EAAW;KACrB,CAAC,CAAC;IAEH,SAAS,gBAAgB;QACvB,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,aAAa,GAAG,IAAI,eAAe,CAAC;gBAClC,QAAQ,EAAE,IAAI,CAAC,aAAa;gBAC5B,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc;aACtC,CAAC,CAAC;QACL,CAAC;QACD,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,KAAK,UAAU,cAAc;QAC3B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAAE,OAAO,IAAI,CAAC;QACtC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAO,IAAI,CAAC,EAAU,CAAC,OAAO,CAC3C,GAAG,CAAA,oEAAoE,CACxE,CAAC;YACF,OAAO,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,KAAK,IAAI,CAAC;QACxC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,+CAA+C,CAAC,CAAC;YACnE,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,UAAU,WAAW;QACxB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAAE,OAAO;QACjC,IAAI,CAAC;YACH,MAAO,IAAI,CAAC,EAAU,CAAC,OAAO,CAC5B,GAAG,CAAA,sDAAsD,CAC1D,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,cAAc;QAChB,CAAC;IACH,CAAC;IAED,OAAO;QACL,KAAK,CAAC,IAAI;YACR,MAAM,QAAQ,GAAG,MAAM,cAAc,EAAE,CAAC;YACxC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,GAAG,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;gBAC9C,OAAO;YACT,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,IAAI,GAAe;oBACvB,OAAO,EAAE,EAAE;oBACX,QAAQ,EAAE,EAAE;oBACZ,iBAAiB,EAAE,CAAC;oBACpB,gBAAgB,EAAE,CAAC;oBACnB,qBAAqB,EAAE,EAAE;oBACzB,eAAe,EAAE,EAAE;oBACnB,MAAM,EAAE,EAAE;oBACV,WAAW,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE;iBACjG,CAAC;gBAEF,MAAM,EAAE,GAAG,IAAI,CAAC,EAAW,CAAC;gBAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;gBAE3B,IAAI,UAA4B,CAAC;gBACjC,IAAI,CAAC;oBACH,UAAU,GAAG,OAAO,EAAE,cAAc;wBAClC,CAAC,CAAC,MAAM,OAAO,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC;wBAC9C,CAAC,CAAC,MAAM,cAAc,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;gBAC3C,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,0BAA0B,CAAC,CAAC;oBAC/C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAY,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;oBACtD,UAAU,GAAG;wBACX,MAAM,EAAE,EAAE;wBACV,SAAS,EAAE,IAAI;wBACf,cAAc,EAAE,KAAK;wBACrB,WAAW,EAAE,CAAC;qBACf,CAAC;gBACJ,CAAC;gBAED,8EAA8E;gBAC9E,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;gBAC7E,IAAI,CAAC,WAAW,GAAG;oBACjB,cAAc,EAAE,UAAU,CAAC,cAAc;oBACzC,MAAM,EAAE,UAAU,CAAC,WAAW;oBAC9B,WAAW,EAAE,UAAU,CAAC,WAAW;oBACnC,iBAAiB,EAAE,WAAW,EAAE,OAAO,IAAI,CAAC;oBAC5C,eAAe,EAAE,WAAW,EAAE,IAAI,IAAI,CAAC;iBACxC,CAAC;gBACF,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC;gBAEtC,uEAAuE;gBACvE,qEAAqE;gBACrE,iDAAiD;gBACjD,IAAI,UAAU,CAAC,cAAc,EAAE,CAAC;oBAC9B,KAAK,MAAM,CAAC,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;wBAClC,IAAI,CAAC,CAAC,IAAI,KAAK,aAAa;4BAAE,SAAS;wBACvC,MAAM,QAAQ,GACZ,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ;4BACvB,CAAC,CAAC,QAAQ;4BACV,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM;gCACvB,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE;gCAC1B,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;wBAClC,KAAK,sBAAsB,CACzB,EAAE,EACF,kBAAkB,CAAC;4BACjB,KAAK,EAAE,QAAQ;4BACf,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI;4BACvB,UAAU,EAAE,CAAC,CAAC,IAAI;4BAClB,KAAK,EAAE,CAAC,CAAC,KAAK;4BACd,WAAW,EAAE,CAAC,CAAC,OAAO;yBACvB,CAAC,CACH,CAAC;oBACJ,CAAC;gBACH,CAAC;gBAED,4EAA4E;gBAC5E,sEAAsE;gBACtE,IAAI,UAAU,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC;oBACrF,IAAI,CAAC,WAAW,CAAC,cAAc,GAAG,IAAI,CAAC;oBACvC,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,wBAAwB,UAAU,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,GAAG,CAAC;oBAClG,qEAAqE;oBACrE,mEAAmE;oBACnE,KAAK,sBAAsB,CACzB,EAAE,EACF,kBAAkB,CAAC;wBACjB,KAAK,EAAE,QAAQ;wBACf,SAAS,EAAE,QAAQ;wBACnB,UAAU,EAAE,UAAU,CAAC,WAAW;wBAClC,KAAK,EAAE,MAAM,CAAC,WAAW;wBACzB,WAAW,EAAE,GAAG;qBACjB,CAAC,CACH,CAAC;gBACJ,CAAC;gBAED,6EAA6E;gBAC7E,IAAI,CAAC;oBACH,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,EAAE,YAAY,IAAI,MAAM,CAAC,cAAc,CAAC;oBAC3E,MAAM,SAAS,GAAiC,OAAO,EAAE,gBAAgB;2BACpE,CAAC,IAAI,CAAC,aAAa;4BACpB,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;gCACxB,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;gCAC/E,iEAAiE;gCACjE,+DAA+D;gCAC/D,gEAAgE;gCAChE,sBAAsB;gCACtB,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;oCACpB,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;gCACnE,CAAC;gCACD,IAAI,MAAM,IAAI,MAAM,CAAC,EAAE,KAAK,KAAK,EAAE,CAAC;oCAClC,MAAM,IAAI,KAAK,CAAC,uCAAuC,MAAM,CAAC,KAAK,IAAI,SAAS,GAAG,CAAC,CAAC;gCACvF,CAAC;4BACH,CAAC;4BACH,CAAC,CAAC,SAAS,CAAC,CAAC;oBACjB,IAAI,SAAS,EAAE,CAAC;wBACd,MAAM,eAAe,CAAC,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;oBACjE,CAAC;gBACH,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,8BAA8B,CAAC,CAAC;gBACrD,CAAC;gBAED,qEAAqE;gBACrE,IAAI,CAAC;oBACH,MAAM,cAAc,GAAG,OAAO;wBAC5B,CAAC,CAAC,MAAM,OAAO,CAAC,oBAAoB,CAAC,EAAS,CAAC;wBAC/C,CAAC,CAAC,MAAM,oBAAoB,CAAC;4BACzB,EAAE,EAAE,IAAI,CAAC,EAAS;4BAClB,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC,CAAC,CAAC,EAAE;4BACjG,UAAU,EAAE,CAAC;yBACd,CAAC,CAAC;oBACP,IAAI,cAAc,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACxC,GAAG,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,cAAc,CAAC,SAAS,EAAE,EAAE,0BAA0B,CAAC,CAAC;oBAChF,CAAC;oBACD,IAAI,cAAc,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACxC,GAAG,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,cAAc,CAAC,SAAS,EAAE,EAAE,sCAAsC,CAAC,CAAC;oBAC5F,CAAC;gBACH,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,uBAAuB,CAAC,CAAC;oBAC5C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAa,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;gBACzD,CAAC;gBAED,gFAAgF;gBAChF,IAAI,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;gBACzC,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,IAAI,CAAC;wBACH,QAAQ,GAAG,MAAM,qBAAqB,CAAC,MAAM,eAAe,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;oBAClF,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,8BAA8B,CAAC,CAAC;wBACnD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0BAA2B,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;oBACvE,CAAC;gBACH,CAAC;gBAED,iDAAiD;gBACjD,IAAI,MAAM,CAAC,kBAAkB,KAAK,KAAK,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;oBACzD,IAAI,CAAC;wBACH,sEAAsE;wBACtE,uEAAuE;wBACvE,qDAAqD;wBACrD,sEAAsE;wBACtE,iEAAiE;wBACjE,4DAA4D;wBAC5D,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,0BAA0B,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;wBAC9E,MAAM,kBAAkB,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;wBAC5E,MAAM,WAAW,GAAG,OAAO,EAAE,4BAA4B;4BACvD,CAAC,CAAC,MAAM,OAAO,CAAC,4BAA4B,CAAC,EAAS,CAAC;4BACvD,CAAC,CAAC,MAAM,4BAA4B,CAAC;gCACjC,YAAY,EAAE,MAAM,eAAe,EAAE;gCACrC,EAAE;gCACF,OAAO,EAAE,MAAM,CAAC,OAAO;gCACvB,WAAW,EAAE,MAAM,CAAC,qBAAqB,IAAI,SAAS;gCACtD,UAAU,EAAE,MAAM,CAAC,oBAAoB,IAAI,CAAC;gCAC5C,kBAAkB;gCAClB,QAAQ;gCACR,qBAAqB,EAAE,CAAC,MAAM,EAAE,EAAE,CAChC,gBAAgB,EAAE,CAAC,uBAAuB,CAAC,MAAM,CAAC;6BACrD,CAAC,CAAC;wBACP,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;4BAC3B,IAAI,CAAC,oBAAoB,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;4BACjE,GAAG,CAAC,IAAI,CACN,EAAE,SAAS,EAAE,IAAI,CAAC,oBAAoB,EAAE,EACxC,yCAAyC,CAC1C,CAAC;wBACJ,CAAC;oBACH,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,mCAAmC,CAAC,CAAC;wBACxD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAkB,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;oBAC9D,CAAC;gBACH,CAAC;gBAED,8DAA8D;gBAC9D,MAAM,cAAc,GAAG,MAAM,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC;gBAEhF,mDAAmD;gBACnD,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;oBACnE,IAAI,CAAC;wBACH,IAAI,cAAc,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;4BAC5E,MAAM,WAAW,GAAG,OAAO,EAAE,eAAe;gCAC1C,CAAC,CAAC,MAAM,OAAO,CAAC,eAAe,CAAC,EAAS,CAAC;gCAC1C,CAAC,CAAC,MAAM,eAAe,CAAC;oCACpB,YAAY,EAAE,MAAM,eAAe,EAAE;oCACrC,EAAE,EAAE,IAAI,CAAC,EAAW;oCACpB,OAAO,EAAE,MAAM,CAAC,OAAO;oCACvB,MAAM,EAAE,IAAI,CAAC,MAAa;oCAC1B,eAAe,EAAE,IAAI,CAAC,eAAe;oCACrC,WAAW,EAAE,IAAI,CAAC,WAAW;oCAC7B,UAAU,EAAE,cAAc;oCAC1B,gBAAgB,EAAE,UAAU;oCAC5B,sBAAsB,EAAE,MAAM,CAAC,sBAAsB,GAAG,CAAC;wCACvD,CAAC,CAAC,MAAM,CAAC,sBAAsB;wCAC/B,CAAC,CAAC,SAAS;oCACb,kEAAkE;oCAClE,mEAAmE;oCACnE,gDAAgD;iCACjD,CAAC,CAAC;4BACP,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;4BACrD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gCACvB,IAAI,CAAC,iBAAiB,GAAG,WAAW,CAAC;gCACrC,GAAG,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,MAAM,EAAE,EAAE,4CAA4C,CAAC,CAAC;4BAC3F,CAAC;wBACH,CAAC;oBACH,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,wBAAwB,CAAC,CAAC;wBAC7C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,cAAe,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;oBAC3D,CAAC;gBACH,CAAC;gBAED,IAAI,CAAC;oBACH,IAAI,CAAC,OAAO,GAAG,OAAO;wBACpB,CAAC,CAAC,MAAM,OAAO,CAAC,eAAe,CAAC,EAAS,CAAC;wBAC1C,CAAC,CAAC,MAAM,eAAe,CAAC;4BACpB,YAAY,EAAE,MAAM,eAAe,EAAE;4BACrC,OAAO,EAAE,MAAM,CAAC,OAAO;4BACvB,UAAU,EAAE,YAAY;4BACxB,QAAQ;4BACR,SAAS,EAAE,MAAM,CAAC,eAAe;4BACjC,QAAQ;4BACR,EAAE;yBACH,CAAC,CAAC;gBACT,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,eAAe,CAAC,CAAC;oBACpC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAY,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;gBACxD,CAAC;gBAED,IAAI,CAAC;oBACH,MAAM,cAAc,GAAG,OAAO;wBAC5B,CAAC,CAAC,MAAM,OAAO,CAAC,gBAAgB,CAAC,EAAS,CAAC;wBAC3C,CAAC,CAAC,MAAM,gBAAgB,CAAC;4BACrB,YAAY,EAAE,MAAM,eAAe,EAAE;4BACrC,aAAa,EAAE,gBAAgB,EAAE;4BACjC,EAAE;4BACF,OAAO,EAAE,MAAM,CAAC,OAAO;4BACvB,QAAQ;yBACT,CAAC,CAAC;oBACP,IAAI,CAAC,iBAAiB,GAAG,cAAc,CAAC,QAAQ,CAAC;oBACjD,IAAI,CAAC,gBAAgB,GAAG,cAAc,CAAC,YAAY,CAAC;gBACtD,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,0BAA0B,CAAC,CAAC;oBAC/C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAsB,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;gBAClE,CAAC;gBAED,IAAI,UAAU,EAAE,EAAE,CAAC;oBACjB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;oBACnB,GAAG,CAAC,IAAI,CAAC,4FAA4F,CAAC,CAAC;gBACzG,CAAC;gBAED,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;oBACtD,IAAI,CAAC;wBACH,IAAI,OAAO,EAAE,CAAC;4BACZ,IAAI,CAAC,QAAQ,GAAG,MAAM,OAAO,CAAC,kBAAkB,CAAC,EAAS,CAAC,CAAC;wBAC9D,CAAC;6BAAM,CAAC;4BACN,MAAM,UAAU,GAAG,MAAM,mBAAmB,CAAC,EAAE,CAAC,CAAC;4BACjD,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;4BACtE,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,MAAM,CAAC;4BAEnD,iFAAiF;4BACjF,IAAI,OAAO,GAAG,OAAO,CAAC;4BACtB,IAAI,CAAC;gCACH,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;gCAC3D,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;gCACvC,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,GAAG,CAClC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;oCAC1B,MAAM,SAAS,GAAG,GAAG,OAAO,IAAI,KAAK,EAAE,CAAC;oCACxC,IAAI,CAAC;wCACH,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,GAAG,SAAS,OAAO,CAAC,CAAC;wCAC1C,IAAI,CAAC,CAAC,WAAW,EAAE;4CAAE,OAAO,SAAS,CAAC;oCACxC,CAAC;oCAAC,MAAM,CAAC,CAAC,oBAAoB,CAAC,CAAC;oCAChC,OAAO,IAAI,CAAC;gCACd,CAAC,CAAC,CACH,CAAC;gCACF,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;gCACjD,IAAI,KAAK;oCAAE,OAAO,GAAG,KAAK,CAAC;4BAC7B,CAAC;4BAAC,MAAM,CAAC;gCACP,GAAG,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;4BACxD,CAAC;4BAED,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC;gCACvC,UAAU;gCACV,aAAa;gCACb,OAAO;gCACP,OAAO,EAAE,CAAC,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO;6BAClD,CAAC,CAAC;4BAEH,MAAM,aAAa,GAAG,iBAAiB,CAAC,oBAAoB,CAAC;gCAC3D,CAAC,CAAC,CAAC,WAAmB,EAAE,EAAE,CACtB,eAAe,CAAC,EAAE,oBAAoB,EAAE,WAAW,EAAE,cAAc,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC;gCACxH,CAAC,CAAC,KAAK,EAAE,YAAoB,EAAE,EAAE,CAC7B,CAAC,EAAE,WAAW,EAAE,MAAe,EAAE,WAAW,EAAE,EAAc,EAAE,SAAS,EAAE,qCAAqC,EAAE,CAAC,CAAC;4BAExH,IAAI,CAAC,QAAQ,GAAG,MAAM,kBAAkB,CAAC;gCACvC,YAAY,EAAE,MAAM,eAAe,EAAE;gCACrC,OAAO,EAAE,MAAM,CAAC,OAAO;gCACvB,cAAc;gCACd,aAAa;gCACb,QAAQ;gCACR,EAAE;gCACF,oBAAoB,EAAE,MAAM,CAAC,8BAA8B;gCAC3D,eAAe,EAAE,IAAI,CAAC,eAAe;gCACrC,sBAAsB,EAAE,MAAM,CAAC,sBAAsB,GAAG,CAAC;oCACvD,CAAC,CAAC,MAAM,CAAC,sBAAsB;oCAC/B,CAAC,CAAC,SAAS;gCACb,qEAAqE;gCACrE,mEAAmE;gCACnE,gDAAgD;6BACjD,CAAC,CAAC;wBACL,CAAC;oBACH,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,gBAAgB,CAAC,CAAC;wBACrC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAa,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;oBACzD,CAAC;gBACH,CAAC;gBAED,IAAI,CAAC,UAAU,EAAE,IAAI,iBAAiB,CAAC,oBAAoB,CAAC,EAAE,CAAC;oBAC7D,MAAM,YAAY,GAAG,MAAM,eAAe,EAAE,CAAC;oBAC7C,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAC;oBAEzC,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC;wBACzD,OAAO;4BACL,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC,EAAS,CAAC;4BAC5C,CAAC,CAAC,uBAAuB,CAAC;gCACtB,YAAY;gCACZ,OAAO,EAAE,MAAM,CAAC,OAAO;gCACvB,aAAa;gCACb,EAAE;gCACF,SAAS,EAAE,EAAE;gCACb,WAAW,EAAE,CAAC;6BACf,CAAC;wBACN,OAAO;4BACL,CAAC,CAAC,OAAO,CAAC,qBAAqB,CAAC,EAAS,CAAC;4BAC1C,CAAC,CAAC,qBAAqB,CAAC;gCACpB,YAAY;gCACZ,OAAO,EAAE,MAAM,CAAC,OAAO;gCACvB,aAAa;gCACb,EAAE;gCACF,aAAa,EAAE,EAAE;6BAClB,CAAC;qBACP,CAAC,CAAC;oBAEH,IAAI,SAAS,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;wBACrC,IAAI,CAAC,qBAAqB,GAAG,SAAS,CAAC,KAAK,CAAC;oBAC/C,CAAC;yBAAM,CAAC;wBACN,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC,MAAM,EAAE,EAAE,qBAAqB,CAAC,CAAC;wBAC5D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAkB,SAAS,CAAC,MAAgB,CAAC,OAAO,EAAE,CAAC,CAAC;oBAC3E,CAAC;oBAED,IAAI,YAAY,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;wBACxC,IAAI,CAAC,eAAe,GAAG,YAAY,CAAC,KAAK,CAAC;oBAC5C,CAAC;yBAAM,CAAC;wBACN,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,YAAY,CAAC,MAAM,EAAE,EAAE,eAAe,CAAC,CAAC;wBACzD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAY,YAAY,CAAC,MAAgB,CAAC,OAAO,EAAE,CAAC,CAAC;oBACxE,CAAC;gBACH,CAAC;gBAED,IAAI,CAAC;oBACH,IAAI,OAAO,EAAE,CAAC;wBACZ,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;oBACrD,CAAC;yBAAM,CAAC;wBACN,MAAM,gBAAgB,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;oBAChE,CAAC;gBACH,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,eAAe,CAAC,CAAC;gBACtC,CAAC;gBAED,qEAAqE;gBACrE,oEAAoE;gBACpE,IAAI,CAAC;oBACH,IAAI,iBAAiB,CAAC,WAAW,CAAC,EAAE,CAAC;wBACnC,MAAM,IAAI,GAAI,MAAc,CAAC,QAAQ,EAAE,aAAa,IAAI,GAAG,CAAC;wBAC5D,MAAM,aAAa,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;oBAChC,CAAC;gBACH,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,8BAA8B,CAAC,CAAC;gBACpD,CAAC;gBAED,2DAA2D;gBAC3D,gEAAgE;gBAChE,IAAI,CAAC;oBACH,IAAI,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;wBAC7B,MAAM,oBAAoB,CAAC,EAAE,CAAC,CAAC;oBACjC,CAAC;gBACH,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,sBAAsB,CAAC,CAAC;gBAC5C,CAAC;gBAED,iDAAiD;gBACjD,iEAAiE;gBACjE,gEAAgE;gBAChE,kEAAkE;gBAClE,gEAAgE;gBAChE,8DAA8D;gBAC9D,2CAA2C;gBAC3C,IAAI,CAAC;oBACH,IAAI,iBAAiB,CAAC,UAAU,CAAC,EAAE,CAAC;wBAClC,MAAM,oBAAoB,CAAC,EAAE,EAAE,MAAa,CAAC,CAAC;oBAChD,CAAC;gBACH,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,oBAAoB,CAAC,CAAC;gBAC1C,CAAC;gBAED,0EAA0E;gBAC1E,8CAA8C;gBAC9C,IAAI,CAAC;oBACH,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;gBAC3B,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,0BAA0B,CAAC,CAAC;gBAChD,CAAC;gBAEH,GAAG,CAAC,IAAI,CAAC;oBACP,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;oBAC5B,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM;oBACxD,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;iBAC3B,EAAE,eAAe,CAAC,CAAC;YACpB,CAAC;oBAAS,CAAC;gBACT,MAAM,WAAW,EAAE,CAAC;YACtB,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,EAAS;IAC1C,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,EAAE;aAClB,MAAM,CAAC;YACN,OAAO,EAAE,YAAY,CAAC,OAAO;YAC7B,MAAM,EAAE,YAAY,CAAC,MAAM;SAC5B,CAAC;aACD,IAAI,CAAC,YAAY,CAAC;aAClB,KAAK,CACJ,GAAG,CAAA,GAAG,YAAY,CAAC,MAAM,2BAA2B,CACrD,CAAC;QAEJ,OAAO,IAAI;aACR,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;aAC5B,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACjE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC"}
@@ -5,5 +5,7 @@ export * from "./versioning.js";
5
5
  export * from "./github.js";
6
6
  export * from "./state.js";
7
7
  export * from "./slack-handler.js";
8
+ export * from "./release-helpers.js";
9
+ export * from "./release-tick.js";
8
10
  export * from "./scheduler.js";
9
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/release-manager/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/release-manager/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC"}
@@ -5,5 +5,7 @@ export * from "./versioning.js";
5
5
  export * from "./github.js";
6
6
  export * from "./state.js";
7
7
  export * from "./slack-handler.js";
8
+ export * from "./release-helpers.js";
9
+ export * from "./release-tick.js";
8
10
  export * from "./scheduler.js";
9
11
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/release-manager/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/release-manager/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,112 @@
1
+ import type { LinearClient } from "@linear/sdk";
2
+ import type { AnyDb } from "../db/client.js";
3
+ /** Minimal Slack client interface required by the release manager. */
4
+ export interface SlackPoster {
5
+ postMessage: (channel: string, text: string) => Promise<boolean>;
6
+ }
7
+ /**
8
+ * Mutable Slack dedup state shared between ticks.
9
+ *
10
+ * Both `lastSkipReason` and `lastPostAt` are mutated in-place by
11
+ * `maybePostSlack` on a successful post, and by the tick orchestrator when
12
+ * transitioning to fire or awaiting-approval.
13
+ */
14
+ export interface SlackDedupState {
15
+ /** Skip-reason string from the last successful Slack post, or null. */
16
+ lastSkipReason: string | null;
17
+ /** Epoch-ms timestamp of the last successful Slack post. */
18
+ lastPostAt: number;
19
+ }
20
+ /**
21
+ * Maximum consecutive QA-related retry attempts before escalating to a
22
+ * permanent skip reason (e.g. `"qa_dispatch_error"` or `"qa_gap_file_error"`).
23
+ */
24
+ export declare const MAX_QA_RETRY_ATTEMPTS = 3;
25
+ /**
26
+ * Post a Slack message, deduplicating same-reason posts within 24 hours.
27
+ *
28
+ * - When `currentSkipReason` is non-null: suppresses the post if the same
29
+ * reason was posted within `SLACK_DEDUP_WINDOW_MS`.
30
+ * - When `currentSkipReason` is null (fire / awaiting-approval transitions):
31
+ * always posts regardless of the dedup window.
32
+ *
33
+ * Mutates `dedupState.lastPostAt` and `dedupState.lastSkipReason` on success.
34
+ * Writes a `slackPostFailedEvent` audit entry if `postMessage` returns false.
35
+ */
36
+ export declare function maybePostSlack(slack: SlackPoster | undefined, slackChannel: string | undefined, db: AnyDb, dedupState: SlackDedupState, text: string, currentSkipReason: string | null): Promise<void>;
37
+ /**
38
+ * Persist a release decision row to the `release_decisions` table.
39
+ *
40
+ * @param db - Database client.
41
+ * @param repoUrl - Repository URL (used as the partition key).
42
+ * @param branch - Branch name being managed.
43
+ * @param row - Decision fields. `attemptCount` defaults to 0 when omitted.
44
+ */
45
+ export declare function persistDecision(db: AnyDb, repoUrl: string, branch: string, row: {
46
+ id: string;
47
+ decision: string;
48
+ reason: string;
49
+ triggerStateJson: string;
50
+ proposedVersion?: string;
51
+ firedTag?: string;
52
+ firedSha?: string;
53
+ attemptCount?: number;
54
+ qaRunId?: number;
55
+ qaRunSha?: string;
56
+ }): Promise<void>;
57
+ /**
58
+ * Mark the most-recent un-consumed approval row for `(repoUrl, branch)` as
59
+ * consumed by `decisionId`.
60
+ *
61
+ * No-op when no fresh approval exists (e.g. approval was already consumed by a
62
+ * concurrent tick or the approval row was deleted manually).
63
+ */
64
+ export declare function consumeApprovalRow(db: AnyDb, repoUrl: string, branch: string, decisionId: string): Promise<void>;
65
+ /**
66
+ * Query the highest `attemptCount` stored for a given `(repoUrl, branch, reason)` triple.
67
+ *
68
+ * Uses `MAX(attemptCount)` rather than `ORDER BY + LIMIT 1` to be stable when
69
+ * multiple rows share the same `decidedAt` timestamp (e.g. rapid consecutive ticks).
70
+ *
71
+ * @param db - Database client.
72
+ * @param repoUrl - Repository URL.
73
+ * @param branch - Branch name.
74
+ * @param reason - The `reason` column value to filter on (e.g. `"qa_needs_trigger"`).
75
+ * @param qaRunSha - Optional: when supplied, further filters to rows with this `qaRunSha`.
76
+ * Use when tracking retry attempts for a specific commit SHA.
77
+ * @returns The maximum attempt count found, or `0` when no matching rows exist.
78
+ */
79
+ export declare function getMaxAttemptCountForReason(db: AnyDb, repoUrl: string, branch: string, reason: string, qaRunSha?: string): Promise<number>;
80
+ /**
81
+ * File a QA gap issue via Linear and handle transient filing errors.
82
+ *
83
+ * Wraps `fileGapIssue` with attempt-count tracking. On a `linear_error` response,
84
+ * increments the per-`(repoUrl, branch, "qa_no_workflow")` attempt counter and
85
+ * escalates `finalReason` to `"qa_gap_file_error"` once `MAX_QA_RETRY_ATTEMPTS`
86
+ * consecutive failures have occurred.
87
+ *
88
+ * On success (`"filed"` or `"already_filed"`), returns
89
+ * `{ finalReason: "qa_no_workflow", attemptCount: 0 }` — the attempt counter
90
+ * resets to 0 to signal that no error has been seen for this filing.
91
+ *
92
+ * @param params.db - Database client.
93
+ * @param params.linear - Linear client (required; caller is responsible for the
94
+ * `if (linear)` guard before calling this helper).
95
+ * @param params.repoUrl - Repository URL.
96
+ * @param params.branch - Branch name.
97
+ * @param params.workflowPath - Configured QA workflow file path (e.g. `".github/workflows/smoke.yml"`).
98
+ * @param params.linearTeamId - Linear team ID to file the gap issue into.
99
+ * @returns `{ finalReason, attemptCount }` for use in the decision row.
100
+ */
101
+ export declare function tryFileQaGapIssue(params: {
102
+ db: AnyDb;
103
+ linear: LinearClient;
104
+ repoUrl: string;
105
+ branch: string;
106
+ workflowPath: string;
107
+ linearTeamId: string;
108
+ }): Promise<{
109
+ finalReason: string;
110
+ attemptCount: number;
111
+ }>;
112
+ //# sourceMappingURL=release-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"release-helpers.d.ts","sourceRoot":"","sources":["../../src/release-manager/release-helpers.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAS7C,sEAAsE;AACtE,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAClE;AAKD;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,uEAAuE;IACvE,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,4DAA4D;IAC5D,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,eAAO,MAAM,qBAAqB,IAAI,CAAC;AAEvC;;;;;;;;;;GAUG;AACH,wBAAsB,cAAc,CAClC,KAAK,EAAE,WAAW,GAAG,SAAS,EAC9B,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,EAAE,EAAE,KAAK,EACT,UAAU,EAAE,eAAe,EAC3B,IAAI,EAAE,MAAM,EACZ,iBAAiB,EAAE,MAAM,GAAG,IAAI,GAC/B,OAAO,CAAC,IAAI,CAAC,CAiBf;AAED;;;;;;;GAOG;AACH,wBAAsB,eAAe,CACnC,EAAE,EAAE,KAAK,EACT,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,GAAG,EAAE;IACH,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GACA,OAAO,CAAC,IAAI,CAAC,CAgBf;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,EAAE,EAAE,KAAK,EACT,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAmBf;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,2BAA2B,CAC/C,EAAE,EAAE,KAAK,EACT,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC,CAmBjB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,EAAE;IAC9C,EAAE,EAAE,KAAK,CAAC;IACV,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;CACtB,GAAG,OAAO,CAAC;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC,CAYzD"}