@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.
- package/dist/__tests__/audit-immutability.test.js +50 -1
- package/dist/__tests__/audit-immutability.test.js.map +1 -1
- package/dist/__tests__/auth-monitor.test.d.ts +2 -0
- package/dist/__tests__/auth-monitor.test.d.ts.map +1 -0
- package/dist/__tests__/auth-monitor.test.js +253 -0
- package/dist/__tests__/auth-monitor.test.js.map +1 -0
- package/dist/__tests__/bec-186-repro.test.d.ts +16 -0
- package/dist/__tests__/bec-186-repro.test.d.ts.map +1 -0
- package/dist/__tests__/bec-186-repro.test.js +223 -0
- package/dist/__tests__/bec-186-repro.test.js.map +1 -0
- package/dist/__tests__/db-migrations.test.d.ts +2 -0
- package/dist/__tests__/db-migrations.test.d.ts.map +1 -0
- package/dist/__tests__/db-migrations.test.js +237 -0
- package/dist/__tests__/db-migrations.test.js.map +1 -0
- package/dist/__tests__/executor-issue-id.test.js +2 -0
- package/dist/__tests__/executor-issue-id.test.js.map +1 -1
- package/dist/__tests__/pm-scheduler.test.js +59 -0
- package/dist/__tests__/pm-scheduler.test.js.map +1 -1
- package/dist/__tests__/post-fanout-comments.test.js +36 -0
- package/dist/__tests__/post-fanout-comments.test.js.map +1 -1
- package/dist/__tests__/preflight-claude-auth.test.d.ts +2 -0
- package/dist/__tests__/preflight-claude-auth.test.d.ts.map +1 -0
- package/dist/__tests__/preflight-claude-auth.test.js +36 -0
- package/dist/__tests__/preflight-claude-auth.test.js.map +1 -0
- package/dist/__tests__/resolve-claude-auth.test.d.ts +2 -0
- package/dist/__tests__/resolve-claude-auth.test.d.ts.map +1 -0
- package/dist/__tests__/resolve-claude-auth.test.js +129 -0
- package/dist/__tests__/resolve-claude-auth.test.js.map +1 -0
- package/dist/__tests__/runner-retry-strategies.test.d.ts +23 -0
- package/dist/__tests__/runner-retry-strategies.test.d.ts.map +1 -0
- package/dist/__tests__/runner-retry-strategies.test.js +274 -0
- package/dist/__tests__/runner-retry-strategies.test.js.map +1 -0
- package/dist/__tests__/scratch-file-guard.test.d.ts +2 -0
- package/dist/__tests__/scratch-file-guard.test.d.ts.map +1 -0
- package/dist/__tests__/scratch-file-guard.test.js +144 -0
- package/dist/__tests__/scratch-file-guard.test.js.map +1 -0
- package/dist/__tests__/spec-vs-impl-gate.test.d.ts +2 -0
- package/dist/__tests__/spec-vs-impl-gate.test.d.ts.map +1 -0
- package/dist/__tests__/spec-vs-impl-gate.test.js +222 -0
- package/dist/__tests__/spec-vs-impl-gate.test.js.map +1 -0
- package/dist/__tests__/stage-models.test.js +4 -0
- package/dist/__tests__/stage-models.test.js.map +1 -1
- package/dist/__tests__/typecheck-gate.test.d.ts +2 -0
- package/dist/__tests__/typecheck-gate.test.d.ts.map +1 -0
- package/dist/__tests__/typecheck-gate.test.js +196 -0
- package/dist/__tests__/typecheck-gate.test.js.map +1 -0
- package/dist/audit/events.d.ts +52 -0
- package/dist/audit/events.d.ts.map +1 -1
- package/dist/audit/events.js +81 -0
- package/dist/audit/events.js.map +1 -1
- package/dist/db/client.d.ts.map +1 -1
- package/dist/db/client.js +8 -0
- package/dist/db/client.js.map +1 -1
- package/dist/db/migrations/postgres/014_missing_indexes.sql +28 -0
- package/dist/db/migrations/sqlite/013_missing_indexes.sql +28 -0
- package/dist/executor/auth-check.d.ts +39 -0
- package/dist/executor/auth-check.d.ts.map +1 -1
- package/dist/executor/auth-check.js +31 -0
- package/dist/executor/auth-check.js.map +1 -1
- package/dist/executor/auth-monitor.d.ts +40 -0
- package/dist/executor/auth-monitor.d.ts.map +1 -0
- package/dist/executor/auth-monitor.js +114 -0
- package/dist/executor/auth-monitor.js.map +1 -0
- package/dist/executor/executor.d.ts.map +1 -1
- package/dist/executor/executor.js +12 -26
- package/dist/executor/executor.js.map +1 -1
- package/dist/executor/index.d.ts +2 -0
- package/dist/executor/index.d.ts.map +1 -1
- package/dist/executor/index.js +2 -0
- package/dist/executor/index.js.map +1 -1
- package/dist/executor/review/post-fanout-comments.d.ts +8 -0
- package/dist/executor/review/post-fanout-comments.d.ts.map +1 -1
- package/dist/executor/review/post-fanout-comments.js +23 -3
- package/dist/executor/review/post-fanout-comments.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/notifier/composite.d.ts +1 -0
- package/dist/notifier/composite.d.ts.map +1 -1
- package/dist/notifier/composite.js +3 -0
- package/dist/notifier/composite.js.map +1 -1
- package/dist/notifier/linear.d.ts +2 -0
- package/dist/notifier/linear.d.ts.map +1 -1
- package/dist/notifier/linear.js +12 -2
- package/dist/notifier/linear.js.map +1 -1
- package/dist/pipeline/runner.d.ts.map +1 -1
- package/dist/pipeline/runner.js +152 -2
- package/dist/pipeline/runner.js.map +1 -1
- package/dist/pipeline/scratch-file-guard.d.ts +21 -0
- package/dist/pipeline/scratch-file-guard.d.ts.map +1 -0
- package/dist/pipeline/scratch-file-guard.js +155 -0
- package/dist/pipeline/scratch-file-guard.js.map +1 -0
- package/dist/pipeline/spec-vs-impl-gate.d.ts +49 -0
- package/dist/pipeline/spec-vs-impl-gate.d.ts.map +1 -0
- package/dist/pipeline/spec-vs-impl-gate.js +177 -0
- package/dist/pipeline/spec-vs-impl-gate.js.map +1 -0
- package/dist/pipeline/typecheck-gate.d.ts +34 -0
- package/dist/pipeline/typecheck-gate.d.ts.map +1 -0
- package/dist/pipeline/typecheck-gate.js +89 -0
- package/dist/pipeline/typecheck-gate.js.map +1 -0
- package/dist/pm/scheduler.d.ts.map +1 -1
- package/dist/pm/scheduler.js +19 -0
- package/dist/pm/scheduler.js.map +1 -1
- package/dist/release-manager/index.d.ts +2 -0
- package/dist/release-manager/index.d.ts.map +1 -1
- package/dist/release-manager/index.js +2 -0
- package/dist/release-manager/index.js.map +1 -1
- package/dist/release-manager/release-helpers.d.ts +112 -0
- package/dist/release-manager/release-helpers.d.ts.map +1 -0
- package/dist/release-manager/release-helpers.js +164 -0
- package/dist/release-manager/release-helpers.js.map +1 -0
- package/dist/release-manager/release-tick.d.ts +101 -0
- package/dist/release-manager/release-tick.d.ts.map +1 -0
- package/dist/release-manager/release-tick.js +374 -0
- package/dist/release-manager/release-tick.js.map +1 -0
- package/dist/release-manager/scheduler.d.ts +28 -3
- package/dist/release-manager/scheduler.d.ts.map +1 -1
- package/dist/release-manager/scheduler.js +41 -417
- package/dist/release-manager/scheduler.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +3 -0
- package/dist/server.js.map +1 -1
- package/dist/types.d.ts +15 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +17 -0
- package/dist/types.js.map +1 -1
- package/dist/webhook/github-handler.d.ts +7 -1
- package/dist/webhook/github-handler.d.ts.map +1 -1
- package/dist/webhook/github-handler.js +82 -38
- package/dist/webhook/github-handler.js.map +1 -1
- 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":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9E,OAAO,EAAmB,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE5E,OAAO,EAAmB,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAsB,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAA2B,KAAK,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC5F,OAAO,EAAyB,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAoB,KAAK,qBAAqB,EAAE,KAAK,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAC3H,OAAO,EAAwB,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAChF,OAAO,EAAgC,KAAK,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACjG,OAAO,EAAmB,KAAK,cAAc,EAAE,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AACrG,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAkB,MAAM,eAAe,CAAC;AAInF,OAAO,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../src/pm/scheduler.ts"],"names":[],"mappings":"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"}
|
package/dist/pm/scheduler.js
CHANGED
|
@@ -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,
|
package/dist/pm/scheduler.js.map
CHANGED
|
@@ -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":"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"}
|
|
@@ -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"}
|