@on-par/factory-core 0.9.6 → 0.9.7-next.10
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/internal.d.ts +2 -2
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +1 -0
- package/dist/internal.js.map +1 -1
- package/dist/logger/index.d.ts +2 -1
- package/dist/logger/index.d.ts.map +1 -1
- package/dist/logger/index.js +1 -0
- package/dist/logger/index.js.map +1 -1
- package/dist/phases/check.d.ts +29 -0
- package/dist/phases/check.d.ts.map +1 -1
- package/dist/phases/check.js +2 -2
- package/dist/phases/check.js.map +1 -1
- package/dist/phases/plan-design-retry.d.ts +9 -0
- package/dist/phases/plan-design-retry.d.ts.map +1 -0
- package/dist/phases/plan-design-retry.js +22 -0
- package/dist/phases/plan-design-retry.js.map +1 -0
- package/dist/phases/plan-routes.d.ts +17 -0
- package/dist/phases/plan-routes.d.ts.map +1 -0
- package/dist/phases/plan-routes.js +34 -0
- package/dist/phases/plan-routes.js.map +1 -0
- package/dist/phases/plan-test-helpers.d.ts +12 -0
- package/dist/phases/plan-test-helpers.d.ts.map +1 -0
- package/dist/phases/plan-test-helpers.js +44 -0
- package/dist/phases/plan-test-helpers.js.map +1 -0
- package/dist/phases/plan.d.ts +4 -12
- package/dist/phases/plan.d.ts.map +1 -1
- package/dist/phases/plan.js +59 -70
- package/dist/phases/plan.js.map +1 -1
- package/dist/phases/ship-git.d.ts +52 -0
- package/dist/phases/ship-git.d.ts.map +1 -0
- package/dist/phases/ship-git.js +104 -0
- package/dist/phases/ship-git.js.map +1 -0
- package/dist/phases/ship-spec.d.ts +5 -0
- package/dist/phases/ship-spec.d.ts.map +1 -0
- package/dist/phases/ship-spec.js +26 -0
- package/dist/phases/ship-spec.js.map +1 -0
- package/dist/phases/ship.d.ts +11 -7
- package/dist/phases/ship.d.ts.map +1 -1
- package/dist/phases/ship.js +73 -144
- package/dist/phases/ship.js.map +1 -1
- package/dist/run/ci-rework-loop.d.ts +56 -0
- package/dist/run/ci-rework-loop.d.ts.map +1 -0
- package/dist/run/ci-rework-loop.js +112 -0
- package/dist/run/ci-rework-loop.js.map +1 -0
- package/dist/run/ci-rework.d.ts +13 -0
- package/dist/run/ci-rework.d.ts.map +1 -0
- package/dist/run/ci-rework.js +59 -0
- package/dist/run/ci-rework.js.map +1 -0
- package/dist/run/run-issue.d.ts +4 -2
- package/dist/run/run-issue.d.ts.map +1 -1
- package/dist/run/run-issue.js +11 -37
- package/dist/run/run-issue.js.map +1 -1
- package/dist/run/ship-park.d.ts +14 -0
- package/dist/run/ship-park.d.ts.map +1 -0
- package/dist/run/ship-park.js +21 -0
- package/dist/run/ship-park.js.map +1 -0
- package/dist/steward/detect.d.ts +5 -2
- package/dist/steward/detect.d.ts.map +1 -1
- package/dist/steward/detect.js +5 -2
- package/dist/steward/detect.js.map +1 -1
- package/dist/types/index.d.ts +23 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/ci-evidence.d.ts +21 -0
- package/dist/utils/ci-evidence.d.ts.map +1 -0
- package/dist/utils/ci-evidence.js +66 -0
- package/dist/utils/ci-evidence.js.map +1 -0
- package/dist/utils/ci-watch.d.ts +12 -0
- package/dist/utils/ci-watch.d.ts.map +1 -1
- package/dist/utils/ci-watch.js +1 -1
- package/dist/utils/ci-watch.js.map +1 -1
- package/dist/utils/index.d.ts +2 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +2 -0
- package/dist/utils/index.js.map +1 -1
- package/package.json +5 -5
package/dist/phases/ship.js
CHANGED
|
@@ -2,10 +2,11 @@
|
|
|
2
2
|
import { exec as execCb } from 'node:child_process';
|
|
3
3
|
import { promisify } from 'node:util';
|
|
4
4
|
import { withLifecycle } from '../bus/index.js';
|
|
5
|
-
import { readDesignArtifact } from '../design/index.js';
|
|
6
5
|
import { gatherEvidencePack } from '../reports/evidence-pack.js';
|
|
7
6
|
import { renderPrBody } from '../reports/pr-body.js';
|
|
8
|
-
import {
|
|
7
|
+
import { describePushFailure, readRemoteBranchSha, shortDetail, verifyRemoteHead, } from './ship-git.js';
|
|
8
|
+
import { readRisk, readSpecBody } from './ship-spec.js';
|
|
9
|
+
import { collectCiFailureEvidence } from '../utils/ci-evidence.js';
|
|
9
10
|
import { DEFAULT_CI_DEADLINE_MS, resolveCiNoChecksGraceMs, watchChecksWithInfraRerun, } from '../utils/ci-watch.js';
|
|
10
11
|
import { shellEscape } from '../utils/index.js';
|
|
11
12
|
import { GITHUB_ISSUE_SOURCE } from '../work/github-issue.js';
|
|
@@ -48,6 +49,50 @@ async function shipPhaseImpl(opts) {
|
|
|
48
49
|
return { ok: false };
|
|
49
50
|
}
|
|
50
51
|
let prNumber = openLookup.status === 'found' ? openLookup.prNumber : undefined;
|
|
52
|
+
const reentry = opts.reentry;
|
|
53
|
+
let watchRef = branch;
|
|
54
|
+
let headSha;
|
|
55
|
+
if (reentry) {
|
|
56
|
+
if (prNumber !== reentry.prNumber) {
|
|
57
|
+
const reason = `re-entry expected open PR #${reentry.prNumber} for ${branch} but found ${prNumber === undefined ? 'none' : `#${prNumber}`}`;
|
|
58
|
+
log('ship', reason);
|
|
59
|
+
return { ok: false, reason };
|
|
60
|
+
}
|
|
61
|
+
let localSha;
|
|
62
|
+
try {
|
|
63
|
+
localSha = (await run('git rev-parse HEAD', { cwd: worktree })).stdout.trim();
|
|
64
|
+
}
|
|
65
|
+
catch (err) {
|
|
66
|
+
const reason = `could not read local HEAD on re-entry (${shortDetail(err)})`;
|
|
67
|
+
log('ship', reason);
|
|
68
|
+
return { ok: false, prNumber, reason };
|
|
69
|
+
}
|
|
70
|
+
if (localSha && localSha === reentry.previousHeadSha) {
|
|
71
|
+
const reason = `CI rework produced no new commit on ${branch}`;
|
|
72
|
+
log('ship', reason);
|
|
73
|
+
return { ok: false, prNumber, ciOutcome: 'failure', reason, headSha: localSha };
|
|
74
|
+
}
|
|
75
|
+
try {
|
|
76
|
+
await run(`git push origin ${shellEscape(branch)}`, { cwd: worktree });
|
|
77
|
+
}
|
|
78
|
+
catch (err) {
|
|
79
|
+
const { kind, detail } = describePushFailure(err);
|
|
80
|
+
const reason = `re-entry push of ${branch} failed (${kind}): ${detail}`;
|
|
81
|
+
log('ship', reason);
|
|
82
|
+
return { ok: false, prNumber, reason };
|
|
83
|
+
}
|
|
84
|
+
const remoteHead = await verifyRemoteHead(run, worktree, branch);
|
|
85
|
+
if (remoteHead.status !== 'match') {
|
|
86
|
+
const reason = remoteHead.status === 'mismatch'
|
|
87
|
+
? `remote head ${remoteHead.remoteSha} does not match local HEAD ${remoteHead.localSha} for ${branch} after re-entry push`
|
|
88
|
+
: `could not verify the remote head for ${branch} after re-entry push (${remoteHead.detail})`;
|
|
89
|
+
log('ship', reason);
|
|
90
|
+
return { ok: false, prNumber, reason };
|
|
91
|
+
}
|
|
92
|
+
watchRef = remoteHead.remoteSha;
|
|
93
|
+
headSha = remoteHead.remoteSha;
|
|
94
|
+
log('ship', `re-entry pushed ${branch} @ ${headSha}`);
|
|
95
|
+
}
|
|
51
96
|
if (!prNumber) {
|
|
52
97
|
// Recovery decisions must compare against the *current* remote — a stale
|
|
53
98
|
// remote-tracking ref makes already-delivered work look like recovery work (#520).
|
|
@@ -217,22 +262,23 @@ async function shipPhaseImpl(opts) {
|
|
|
217
262
|
log('fail', `Could not create or find PR for ${branch}`);
|
|
218
263
|
return { ok: false };
|
|
219
264
|
}
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
265
|
+
if (!reentry)
|
|
266
|
+
try {
|
|
267
|
+
const body = gatherEvidencePack({
|
|
268
|
+
issue,
|
|
269
|
+
checkSummary,
|
|
270
|
+
reworkRounds: opts.reworkRounds,
|
|
271
|
+
specPath: opts.specPath,
|
|
272
|
+
eventsFile: opts.eventsFile,
|
|
273
|
+
startedAt: opts.startedAt,
|
|
274
|
+
logsDir: opts.logsDir,
|
|
275
|
+
reviewRouting: opts.reviewRouting,
|
|
276
|
+
pinNotes: opts.pinNotes,
|
|
277
|
+
});
|
|
278
|
+
await octokit.rest.issues.createComment({ owner, repo: repoName, issue_number: prNumber, body });
|
|
279
|
+
log('evidence', `posted evidence pack to PR #${prNumber}`);
|
|
280
|
+
}
|
|
281
|
+
catch { }
|
|
236
282
|
let ciOutcome;
|
|
237
283
|
// Watch CI (best-effort)
|
|
238
284
|
if (watchCI) {
|
|
@@ -242,7 +288,7 @@ async function shipPhaseImpl(opts) {
|
|
|
242
288
|
octokit,
|
|
243
289
|
owner,
|
|
244
290
|
repo: repoName,
|
|
245
|
-
ref:
|
|
291
|
+
ref: watchRef,
|
|
246
292
|
rerun,
|
|
247
293
|
deadlineMs: DEFAULT_CI_DEADLINE_MS,
|
|
248
294
|
noChecksGraceMs: opts.ciNoChecksGraceMs ?? resolveCiNoChecksGraceMs(),
|
|
@@ -256,7 +302,8 @@ async function shipPhaseImpl(opts) {
|
|
|
256
302
|
else if (ciOutcome === 'failure') {
|
|
257
303
|
const reason = `CI failed for PR #${prNumber}`;
|
|
258
304
|
log('ship', reason);
|
|
259
|
-
|
|
305
|
+
const ciFailure = await collectCiFailureEvidence({ octokit, owner, repo: repoName, ref: watchRef, prNumber });
|
|
306
|
+
return { ok: false, prNumber, reason, ciOutcome, ciFailure, ...(headSha ? { headSha } : {}) };
|
|
260
307
|
}
|
|
261
308
|
else if (ciOutcome === 'infra-failure') {
|
|
262
309
|
const reason = `CI failed again for infrastructure reasons for PR #${prNumber} after one rerun`;
|
|
@@ -286,29 +333,12 @@ async function shipPhaseImpl(opts) {
|
|
|
286
333
|
log('ready', ciOutcome === 'no-checks'
|
|
287
334
|
? `PR #${prNumber} ready for review (CI skipped: no checks found)`
|
|
288
335
|
: `PR #${prNumber} ready for review`);
|
|
289
|
-
return
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
try {
|
|
296
|
-
return (await readSpec(specPath)).body;
|
|
297
|
-
}
|
|
298
|
-
catch {
|
|
299
|
-
return undefined;
|
|
300
|
-
}
|
|
301
|
-
}
|
|
302
|
-
/** The design artifact's Risk / blast radius for the PR body; undefined when there is no readable artifact. */
|
|
303
|
-
async function readRisk(specPath) {
|
|
304
|
-
if (!specPath)
|
|
305
|
-
return undefined;
|
|
306
|
-
try {
|
|
307
|
-
return (await readDesignArtifact(specPath))?.riskBlastRadius;
|
|
308
|
-
}
|
|
309
|
-
catch {
|
|
310
|
-
return undefined;
|
|
311
|
-
}
|
|
336
|
+
return {
|
|
337
|
+
ok: true,
|
|
338
|
+
prNumber,
|
|
339
|
+
...(ciOutcome === undefined ? {} : { ciOutcome }),
|
|
340
|
+
...(headSha ? { headSha } : {}),
|
|
341
|
+
};
|
|
312
342
|
}
|
|
313
343
|
async function computeDiffStat(run, worktree) {
|
|
314
344
|
try {
|
|
@@ -406,105 +436,4 @@ async function commitLeftoverBuildOutput(o) {
|
|
|
406
436
|
o.log('ship', `committed ${o.statusLines.length} uncommitted path(s) left after check on ${o.branch}`);
|
|
407
437
|
return { ok: true };
|
|
408
438
|
}
|
|
409
|
-
/** Bound on the failure text copied into one NDJSON event row. */
|
|
410
|
-
const MAX_PUSH_ERROR_DETAIL = 400;
|
|
411
|
-
const NON_FAST_FORWARD_MARKERS = [
|
|
412
|
-
'non-fast-forward',
|
|
413
|
-
'! [rejected]',
|
|
414
|
-
'fetch first',
|
|
415
|
-
'updates were rejected',
|
|
416
|
-
'stale info',
|
|
417
|
-
];
|
|
418
|
-
const NETWORK_MARKERS = [
|
|
419
|
-
'could not resolve host',
|
|
420
|
-
'failed to connect',
|
|
421
|
-
'connection timed out',
|
|
422
|
-
'connection refused',
|
|
423
|
-
'network is unreachable',
|
|
424
|
-
'operation timed out',
|
|
425
|
-
'the remote end hung up unexpectedly',
|
|
426
|
-
];
|
|
427
|
-
function classifyPushFailure(text) {
|
|
428
|
-
const t = text.toLowerCase();
|
|
429
|
-
if (NON_FAST_FORWARD_MARKERS.some((m) => t.includes(m)))
|
|
430
|
-
return 'non-fast-forward';
|
|
431
|
-
if (NETWORK_MARKERS.some((m) => t.includes(m)))
|
|
432
|
-
return 'network';
|
|
433
|
-
return 'unknown';
|
|
434
|
-
}
|
|
435
|
-
/**
|
|
436
|
-
* The real reason a push failed, from git's own stderr when the runner exposes it
|
|
437
|
-
* (node's promisified `exec` rejection carries `stderr`), else the Error message, else the
|
|
438
|
-
* value's string form. Flattened to one line and bounded so a single event row stays
|
|
439
|
-
* greppable in `.factory/events.ndjson`.
|
|
440
|
-
*/
|
|
441
|
-
function describePushFailure(err) {
|
|
442
|
-
const raw = err?.stderr;
|
|
443
|
-
const stderr = typeof raw === 'string' ? raw : '';
|
|
444
|
-
const text = stderr.trim() || (err instanceof Error ? err.message : String(err));
|
|
445
|
-
const detail = text.replace(/\s+/g, ' ').trim().slice(0, MAX_PUSH_ERROR_DETAIL);
|
|
446
|
-
return { kind: classifyPushFailure(detail), detail: detail || 'no error output' };
|
|
447
|
-
}
|
|
448
|
-
/** Bound on the ls-remote failure text copied into one NDJSON event row (#735). */
|
|
449
|
-
const MAX_REMOTE_HEAD_DETAIL = 200;
|
|
450
|
-
/** Same flatten-and-bound shaping as {@link describePushFailure}, kept separate so that
|
|
451
|
-
* function's asserted output never changes. */
|
|
452
|
-
function shortDetail(err) {
|
|
453
|
-
const raw = err?.stderr;
|
|
454
|
-
const stderr = typeof raw === 'string' ? raw : '';
|
|
455
|
-
const text = stderr.trim() || (err instanceof Error ? err.message : String(err));
|
|
456
|
-
return text.replace(/\s+/g, ' ').trim().slice(0, MAX_REMOTE_HEAD_DETAIL) || 'no error output';
|
|
457
|
-
}
|
|
458
|
-
/** The SHA on the `refs/heads/<branch>` line of `git ls-remote` output. `--heads origin <branch>`
|
|
459
|
-
* is a suffix pattern, so it can list more than one ref — match the ref name exactly rather than
|
|
460
|
-
* trusting the first line. */
|
|
461
|
-
function parseRemoteHeadSha(stdout, branch) {
|
|
462
|
-
for (const line of stdout.split('\n')) {
|
|
463
|
-
const [sha, ref] = line.trim().split(/\s+/);
|
|
464
|
-
if (ref === `refs/heads/${branch}` && sha)
|
|
465
|
-
return sha;
|
|
466
|
-
}
|
|
467
|
-
return undefined;
|
|
468
|
-
}
|
|
469
|
-
/** origin/<branch>'s current SHA, `null` when the branch is absent, or the failure detail (#1869). */
|
|
470
|
-
async function readRemoteBranchSha(run, worktree, branch) {
|
|
471
|
-
try {
|
|
472
|
-
const { stdout } = await run(`git ls-remote --heads origin ${shellEscape(branch)}`, { cwd: worktree });
|
|
473
|
-
return { status: 'ok', sha: parseRemoteHeadSha(stdout, branch) ?? null };
|
|
474
|
-
}
|
|
475
|
-
catch (err) {
|
|
476
|
-
return { status: 'unreadable', detail: shortDetail(err) };
|
|
477
|
-
}
|
|
478
|
-
}
|
|
479
|
-
/**
|
|
480
|
-
* A zero-exit push is not proof the remote branch actually carries this run's commits — a
|
|
481
|
-
* concurrent push or an update that silently applied nothing leaves the remote head elsewhere,
|
|
482
|
-
* and a PR opened against it would advertise work that is not there (#735).
|
|
483
|
-
*/
|
|
484
|
-
async function verifyRemoteHead(run, worktree, branch) {
|
|
485
|
-
let localSha;
|
|
486
|
-
try {
|
|
487
|
-
const { stdout } = await run('git rev-parse HEAD', { cwd: worktree });
|
|
488
|
-
localSha = stdout.trim();
|
|
489
|
-
}
|
|
490
|
-
catch (err) {
|
|
491
|
-
return { status: 'unreadable', detail: shortDetail(err) };
|
|
492
|
-
}
|
|
493
|
-
if (!localSha)
|
|
494
|
-
return { status: 'unreadable', detail: 'git rev-parse HEAD produced no SHA' };
|
|
495
|
-
let listing;
|
|
496
|
-
try {
|
|
497
|
-
const { stdout } = await run(`git ls-remote --heads origin ${shellEscape(branch)}`, { cwd: worktree });
|
|
498
|
-
listing = stdout;
|
|
499
|
-
}
|
|
500
|
-
catch (err) {
|
|
501
|
-
return { status: 'unreadable', localSha, detail: shortDetail(err) };
|
|
502
|
-
}
|
|
503
|
-
const remoteSha = parseRemoteHeadSha(listing, branch);
|
|
504
|
-
if (!remoteSha)
|
|
505
|
-
return { status: 'unreadable', localSha, detail: `no refs/heads/${branch} on origin` };
|
|
506
|
-
return remoteSha === localSha
|
|
507
|
-
? { status: 'match', localSha, remoteSha }
|
|
508
|
-
: { status: 'mismatch', localSha, remoteSha };
|
|
509
|
-
}
|
|
510
439
|
//# sourceMappingURL=ship.js.map
|
package/dist/phases/ship.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ship.js","sourceRoot":"","sources":["../../src/phases/ship.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ship.js","sourceRoot":"","sources":["../../src/phases/ship.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { type checkPhase as checkPhaseDefault, reworkWorker as reworkWorkerDefault } from '../phases/check.js';
|
|
2
|
+
import type { PlanResult } from '../phases/plan.js';
|
|
3
|
+
import type { shipPhase as shipPhaseDefault, ShipResult } from '../phases/ship.js';
|
|
4
|
+
import type { ReviewRouting } from '../review/routing.js';
|
|
5
|
+
import type { CiFailureEvidence, Constitution } from '../types/index.js';
|
|
6
|
+
import { listPrChangedFiles as listPrChangedFilesDefault } from './ci-rework.js';
|
|
7
|
+
import type { BuildRoute, ParkReason } from './outcome.js';
|
|
8
|
+
import type { RunPorts, RunRequest } from './run-issue.js';
|
|
9
|
+
/** Injectable seams for the CI rework loop; RunPorts extends this. */
|
|
10
|
+
export interface CiReworkPorts {
|
|
11
|
+
/** BUILD rework worker used for CI rework rounds; defaults to check.ts's reworkWorker. */
|
|
12
|
+
reworkWorker?: typeof reworkWorkerDefault;
|
|
13
|
+
/** Lists a PR's changed files for CI alert attribution; defaults to the GitHub REST lister. */
|
|
14
|
+
listPrChangedFiles?: typeof listPrChangedFilesDefault;
|
|
15
|
+
}
|
|
16
|
+
export interface CiReworkLoopContext {
|
|
17
|
+
request: RunRequest;
|
|
18
|
+
ports: RunPorts;
|
|
19
|
+
shipPhase: typeof shipPhaseDefault;
|
|
20
|
+
checkPhase: typeof checkPhaseDefault;
|
|
21
|
+
/** The options the first CHECK ran with; reused verbatim for each re-CHECK. */
|
|
22
|
+
checkOpts: Parameters<typeof checkPhaseDefault>[0];
|
|
23
|
+
check: Awaited<ReturnType<typeof checkPhaseDefault>>;
|
|
24
|
+
constitution: Constitution | null;
|
|
25
|
+
appPort: number | undefined;
|
|
26
|
+
appBaseUrl: string | undefined;
|
|
27
|
+
onPgid: (pgid: number) => void;
|
|
28
|
+
runId: string;
|
|
29
|
+
}
|
|
30
|
+
export interface CiReworkShipInputs {
|
|
31
|
+
builtRoute: BuildRoute;
|
|
32
|
+
builtModel: string;
|
|
33
|
+
reviewRouting: ReviewRouting | undefined;
|
|
34
|
+
pinNote: string | undefined;
|
|
35
|
+
planSlice: PlanResult['slice'];
|
|
36
|
+
}
|
|
37
|
+
export interface ShipWithCiReworkResult {
|
|
38
|
+
ship: ShipResult;
|
|
39
|
+
/** Set when the run must park: a failed re-CHECK or a SHIP that did not succeed. */
|
|
40
|
+
parked?: {
|
|
41
|
+
reason: ParkReason;
|
|
42
|
+
message: string;
|
|
43
|
+
checkFailure?: {
|
|
44
|
+
failureSignature: string;
|
|
45
|
+
failingChecks: string[];
|
|
46
|
+
};
|
|
47
|
+
ciFailure?: CiFailureEvidence;
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Runs SHIP. When the CI watch fails on CodeQL alerts in files the PR changed, feeds them to the
|
|
52
|
+
* BUILD rework worker, re-runs CHECK and re-enters SHIP on the same PR, up to
|
|
53
|
+
* resolveMaxCiReworkRounds() rounds — a counter separate from CHECK's own rework rounds.
|
|
54
|
+
*/
|
|
55
|
+
export declare function shipWithCiRework(ctx: CiReworkLoopContext, inputs: CiReworkShipInputs): Promise<ShipWithCiReworkResult>;
|
|
56
|
+
//# sourceMappingURL=ci-rework-loop.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ci-rework-loop.d.ts","sourceRoot":"","sources":["../../src/run/ci-rework-loop.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,UAAU,IAAI,iBAAiB,EAAE,YAAY,IAAI,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC/G,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,IAAI,gBAAgB,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACnF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAIL,kBAAkB,IAAI,yBAAyB,EAEhD,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAG3D,sEAAsE;AACtE,MAAM,WAAW,aAAa;IAC5B,0FAA0F;IAC1F,YAAY,CAAC,EAAE,OAAO,mBAAmB,CAAC;IAC1C,+FAA+F;IAC/F,kBAAkB,CAAC,EAAE,OAAO,yBAAyB,CAAC;CACvD;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,UAAU,CAAC;IACpB,KAAK,EAAE,QAAQ,CAAC;IAChB,SAAS,EAAE,OAAO,gBAAgB,CAAC;IACnC,UAAU,EAAE,OAAO,iBAAiB,CAAC;IACrC,+EAA+E;IAC/E,SAAS,EAAE,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC,CAAC;IACrD,YAAY,EAAE,YAAY,GAAG,IAAI,CAAC;IAClC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,UAAU,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,aAAa,GAAG,SAAS,CAAC;IACzC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,SAAS,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,UAAU,CAAC;IACjB,oFAAoF;IACpF,MAAM,CAAC,EAAE;QACP,MAAM,EAAE,UAAU,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;QAChB,YAAY,CAAC,EAAE;YAAE,gBAAgB,EAAE,MAAM,CAAC;YAAC,aAAa,EAAE,MAAM,EAAE,CAAA;SAAE,CAAC;QACrE,SAAS,CAAC,EAAE,iBAAiB,CAAC;KAC/B,CAAC;CACH;AAID;;;;GAIG;AACH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,mBAAmB,EACxB,MAAM,EAAE,kBAAkB,GACzB,OAAO,CAAC,sBAAsB,CAAC,CAsGjC"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
// packages/core/src/run/ci-rework-loop.ts — SHIP with a bounded CI rework loop (#2816)
|
|
2
|
+
import { reworkWorker as reworkWorkerDefault } from '../phases/check.js';
|
|
3
|
+
import { attributableCodeqlAlerts, CI_REWORK_INSTRUCTIONS, ciReworkSummary, listPrChangedFiles as listPrChangedFilesDefault, resolveMaxCiReworkRounds, } from './ci-rework.js';
|
|
4
|
+
import { shipParkReason } from './ship-park.js';
|
|
5
|
+
const errorMessage = (err) => (err instanceof Error ? err.message : String(err));
|
|
6
|
+
/**
|
|
7
|
+
* Runs SHIP. When the CI watch fails on CodeQL alerts in files the PR changed, feeds them to the
|
|
8
|
+
* BUILD rework worker, re-runs CHECK and re-enters SHIP on the same PR, up to
|
|
9
|
+
* resolveMaxCiReworkRounds() rounds — a counter separate from CHECK's own rework rounds.
|
|
10
|
+
*/
|
|
11
|
+
export async function shipWithCiRework(ctx, inputs) {
|
|
12
|
+
const { request, ports, shipPhase, checkPhase, check } = ctx;
|
|
13
|
+
const rework = ports.reworkWorker ?? reworkWorkerDefault;
|
|
14
|
+
const listChanged = ports.listPrChangedFiles ?? listPrChangedFilesDefault;
|
|
15
|
+
const { builtRoute, builtModel, planSlice } = inputs;
|
|
16
|
+
const log = ports.events();
|
|
17
|
+
const shipOpts = {
|
|
18
|
+
issue: request.issue,
|
|
19
|
+
repo: request.repo,
|
|
20
|
+
worktree: ports.workspace.path,
|
|
21
|
+
branch: request.branch,
|
|
22
|
+
recordedRemoteSha: ports.workspace.remoteBranch?.sha,
|
|
23
|
+
octokit: ports.octokit,
|
|
24
|
+
watchCI: !request.skipCI,
|
|
25
|
+
log: ports.events('ship'),
|
|
26
|
+
approvalGate: request.options.interactive ? ports.createApprovalGate?.() : undefined,
|
|
27
|
+
specPath: request.specPath,
|
|
28
|
+
eventsFile: request.eventsFile,
|
|
29
|
+
startedAt: request.startedAt,
|
|
30
|
+
logsDir: request.logsDir,
|
|
31
|
+
work: request.work,
|
|
32
|
+
laneId: request.lane,
|
|
33
|
+
reviewRouting: inputs.reviewRouting,
|
|
34
|
+
...(inputs.pinNote ? { pinNotes: [inputs.pinNote] } : {}),
|
|
35
|
+
slice: planSlice ? { index: planSlice.index, count: planSlice.plan.slices.length } : undefined,
|
|
36
|
+
};
|
|
37
|
+
let ship = await shipPhase({ ...shipOpts, checkSummary: check.summary, reworkRounds: check.reworkRounds });
|
|
38
|
+
const [owner, repoName] = request.repo.split('/');
|
|
39
|
+
const maxRounds = resolveMaxCiReworkRounds();
|
|
40
|
+
let rounds = 0;
|
|
41
|
+
let lastCiFailure = ship.ciFailure;
|
|
42
|
+
let suffix = '';
|
|
43
|
+
while (!ship.ok && ship.ciOutcome === 'failure' && ship.prNumber !== undefined) {
|
|
44
|
+
lastCiFailure = ship.ciFailure ?? lastCiFailure;
|
|
45
|
+
let changed;
|
|
46
|
+
try {
|
|
47
|
+
changed = await listChanged(ports.octokit, owner, repoName, ship.prNumber);
|
|
48
|
+
}
|
|
49
|
+
catch (err) {
|
|
50
|
+
const msg = `could not list PR #${ship.prNumber} files for CI attribution: ${errorMessage(err)}`;
|
|
51
|
+
ports.events('ship')('ship', msg);
|
|
52
|
+
break;
|
|
53
|
+
}
|
|
54
|
+
const attributable = attributableCodeqlAlerts(ship.ciFailure, changed);
|
|
55
|
+
if (attributable.length === 0)
|
|
56
|
+
break;
|
|
57
|
+
if (rounds >= maxRounds) {
|
|
58
|
+
suffix = ` — CI rework budget exhausted after ${rounds} round${rounds === 1 ? '' : 's'}`;
|
|
59
|
+
break;
|
|
60
|
+
}
|
|
61
|
+
rounds++;
|
|
62
|
+
log('rework', `CI rework round ${rounds}/${maxRounds}: ${attributable.length} attributable CodeQL alert(s) on PR #${ship.prNumber}`);
|
|
63
|
+
const worked = await rework({
|
|
64
|
+
issue: request.issue,
|
|
65
|
+
worktree: ports.workspace.path,
|
|
66
|
+
specPath: request.specPath,
|
|
67
|
+
summary: ciReworkSummary(attributable),
|
|
68
|
+
constitution: ctx.constitution,
|
|
69
|
+
router: ports.router,
|
|
70
|
+
log: ports.events('build'),
|
|
71
|
+
buildTimeoutSeconds: request.timeouts.build,
|
|
72
|
+
sandbox: request.sandboxPolicy,
|
|
73
|
+
appPort: ctx.appPort,
|
|
74
|
+
appBaseUrl: ctx.appBaseUrl,
|
|
75
|
+
onPgid: ctx.onPgid,
|
|
76
|
+
reworkRoute: builtRoute,
|
|
77
|
+
reworkModel: builtModel,
|
|
78
|
+
runId: ctx.runId,
|
|
79
|
+
extraInstructions: CI_REWORK_INSTRUCTIONS,
|
|
80
|
+
});
|
|
81
|
+
if (!worked.modelCompleted) {
|
|
82
|
+
suffix = ' — CI rework worker never ran';
|
|
83
|
+
break;
|
|
84
|
+
}
|
|
85
|
+
const recheck = await checkPhase(ctx.checkOpts);
|
|
86
|
+
if (!recheck.passed) {
|
|
87
|
+
const checkFailure = recheck.failureSignature !== undefined
|
|
88
|
+
? {
|
|
89
|
+
failureSignature: recheck.failureSignature,
|
|
90
|
+
failingChecks: recheck.summary.results.filter((r) => r.result === 'FAIL').map((r) => r.checker),
|
|
91
|
+
}
|
|
92
|
+
: undefined;
|
|
93
|
+
const message = `${recheck.summary.failures} check failures after CI rework round ${rounds}`;
|
|
94
|
+
return { ship, parked: { reason: 'fail', message, ...(checkFailure ? { checkFailure } : {}) } };
|
|
95
|
+
}
|
|
96
|
+
ship = await shipPhase({
|
|
97
|
+
...shipOpts,
|
|
98
|
+
checkSummary: recheck.summary,
|
|
99
|
+
reworkRounds: recheck.reworkRounds,
|
|
100
|
+
reentry: { prNumber: ship.prNumber, previousHeadSha: ship.headSha },
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
if (ship.ok)
|
|
104
|
+
return { ship };
|
|
105
|
+
const message = ship.denied
|
|
106
|
+
? `ship denied: ${ship.deniedReason}`
|
|
107
|
+
: ship.reason
|
|
108
|
+
? `ship phase failed: ${ship.reason}${suffix}`
|
|
109
|
+
: `ship phase failed${suffix}`;
|
|
110
|
+
return { ship, parked: { reason: shipParkReason(ship), message, ciFailure: ship.ciFailure ?? lastCiFailure } };
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=ci-rework-loop.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ci-rework-loop.js","sourceRoot":"","sources":["../../src/run/ci-rework-loop.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Octokit } from '@octokit/rest';
|
|
2
|
+
import type { CheckSummary, CiCodeScanningAlert, CiFailureEvidence } from '../types/index.js';
|
|
3
|
+
export declare const MAX_CI_REWORK_ROUNDS = 2;
|
|
4
|
+
export declare const CI_REWORK_ENV = "FACTORY_MAX_CI_REWORK_ROUNDS";
|
|
5
|
+
export declare const CI_REWORK_INSTRUCTIONS: string;
|
|
6
|
+
/** Non-negative integer from FACTORY_MAX_CI_REWORK_ROUNDS (0 disables CI rework); anything else falls back to the default. */
|
|
7
|
+
export declare function resolveMaxCiReworkRounds(env?: NodeJS.ProcessEnv): number;
|
|
8
|
+
/** Alerts whose file is among the PR's changed files; the rest are pre-existing or baseline. */
|
|
9
|
+
export declare function attributableCodeqlAlerts(evidence: CiFailureEvidence | undefined, changedFiles: readonly string[]): CiCodeScanningAlert[];
|
|
10
|
+
/** The same CheckSummary shape local CHECK rework consumes, with one FAIL `ci_codeql` result. */
|
|
11
|
+
export declare function ciReworkSummary(alerts: readonly CiCodeScanningAlert[]): CheckSummary;
|
|
12
|
+
export declare function listPrChangedFiles(octokit: Octokit, owner: string, repo: string, prNumber: number): Promise<string[]>;
|
|
13
|
+
//# sourceMappingURL=ci-rework.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ci-rework.d.ts","sourceRoot":"","sources":["../../src/run/ci-rework.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE9F,eAAO,MAAM,oBAAoB,IAAI,CAAC;AACtC,eAAO,MAAM,aAAa,iCAAiC,CAAC;AAK5D,eAAO,MAAM,sBAAsB,QAGhB,CAAC;AAEpB,8HAA8H;AAC9H,wBAAgB,wBAAwB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAGrF;AASD,gGAAgG;AAChG,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,iBAAiB,GAAG,SAAS,EACvC,YAAY,EAAE,SAAS,MAAM,EAAE,GAC9B,mBAAmB,EAAE,CAOvB;AAED,iGAAiG;AACjG,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,mBAAmB,EAAE,GAAG,YAAY,CAUpF;AAED,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,EAAE,CAAC,CAcnB"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
// packages/core/src/run/ci-rework.ts — attribution, budget and feedback for SHIP CI rework (#2816)
|
|
2
|
+
export const MAX_CI_REWORK_ROUNDS = 2;
|
|
3
|
+
export const CI_REWORK_ENV = 'FACTORY_MAX_CI_REWORK_ROUNDS';
|
|
4
|
+
const LIST_FILES_PAGE_SIZE = 100;
|
|
5
|
+
const LIST_FILES_MAX_PAGES = 30;
|
|
6
|
+
export const CI_REWORK_INSTRUCTIONS = 'CI (CodeQL) flagged the alerts above on files this PR changed. Fix the root cause in the code at the listed file:line. ' +
|
|
7
|
+
'Suppression is forbidden: do not add `// codeql[...]`, `lgtm`, `eslint-disable` or `@ts-ignore` comments, do not exclude queries or paths in any config, and do not dismiss alerts. ' +
|
|
8
|
+
'Commit the fix.';
|
|
9
|
+
/** Non-negative integer from FACTORY_MAX_CI_REWORK_ROUNDS (0 disables CI rework); anything else falls back to the default. */
|
|
10
|
+
export function resolveMaxCiReworkRounds(env = process.env) {
|
|
11
|
+
const value = (env[CI_REWORK_ENV] ?? '').trim();
|
|
12
|
+
return /^\d+$/.test(value) ? Number(value) : MAX_CI_REWORK_ROUNDS;
|
|
13
|
+
}
|
|
14
|
+
function alertPath(location) {
|
|
15
|
+
const trimmed = location.trim();
|
|
16
|
+
if (trimmed === '' || trimmed === '(unknown location)')
|
|
17
|
+
return undefined;
|
|
18
|
+
const path = trimmed.replace(/:\d+$/, '').replace(/^\.\//, '');
|
|
19
|
+
return path === '' ? undefined : path;
|
|
20
|
+
}
|
|
21
|
+
/** Alerts whose file is among the PR's changed files; the rest are pre-existing or baseline. */
|
|
22
|
+
export function attributableCodeqlAlerts(evidence, changedFiles) {
|
|
23
|
+
if (!evidence)
|
|
24
|
+
return [];
|
|
25
|
+
const changed = new Set(changedFiles);
|
|
26
|
+
return evidence.alerts.filter((alert) => {
|
|
27
|
+
const path = alertPath(alert.location);
|
|
28
|
+
return path !== undefined && changed.has(path);
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
/** The same CheckSummary shape local CHECK rework consumes, with one FAIL `ci_codeql` result. */
|
|
32
|
+
export function ciReworkSummary(alerts) {
|
|
33
|
+
const lines = alerts.map((a) => `- ${a.ruleId} at ${a.location} — ${a.message}`);
|
|
34
|
+
const details = ['CodeQL alerts on files this PR changed:', ...lines].join('\n');
|
|
35
|
+
return {
|
|
36
|
+
failures: 1,
|
|
37
|
+
passes: 0,
|
|
38
|
+
skips: 0,
|
|
39
|
+
total: 1,
|
|
40
|
+
results: [{ checker: 'ci_codeql', result: 'FAIL', details }],
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
export async function listPrChangedFiles(octokit, owner, repo, prNumber) {
|
|
44
|
+
const files = [];
|
|
45
|
+
for (let page = 1; page <= LIST_FILES_MAX_PAGES; page++) {
|
|
46
|
+
const { data } = await octokit.rest.pulls.listFiles({
|
|
47
|
+
owner,
|
|
48
|
+
repo,
|
|
49
|
+
pull_number: prNumber,
|
|
50
|
+
per_page: LIST_FILES_PAGE_SIZE,
|
|
51
|
+
page,
|
|
52
|
+
});
|
|
53
|
+
files.push(...data.map((f) => f.filename));
|
|
54
|
+
if (data.length < LIST_FILES_PAGE_SIZE)
|
|
55
|
+
break;
|
|
56
|
+
}
|
|
57
|
+
return files;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=ci-rework.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ci-rework.js","sourceRoot":"","sources":["../../src/run/ci-rework.ts"],"names":[],"mappings":"AAAA,mGAAmG;AAMnG,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC;AACtC,MAAM,CAAC,MAAM,aAAa,GAAG,8BAA8B,CAAC;AAE5D,MAAM,oBAAoB,GAAG,GAAG,CAAC;AACjC,MAAM,oBAAoB,GAAG,EAAE,CAAC;AAEhC,MAAM,CAAC,MAAM,sBAAsB,GACjC,yHAAyH;IACzH,sLAAsL;IACtL,iBAAiB,CAAC;AAEpB,8HAA8H;AAC9H,MAAM,UAAU,wBAAwB,CAAC,GAAG,GAAsB,OAAO,CAAC,GAAG;IAC3E,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAChD,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC;AACpE,CAAC;AAED,SAAS,SAAS,CAAC,QAAgB;IACjC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;IAChC,IAAI,OAAO,KAAK,EAAE,IAAI,OAAO,KAAK,oBAAoB;QAAE,OAAO,SAAS,CAAC;IACzE,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAC/D,OAAO,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AACxC,CAAC;AAED,gGAAgG;AAChG,MAAM,UAAU,wBAAwB,CACtC,QAAuC,EACvC,YAA+B;IAE/B,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,CAAC;IACzB,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC;IACtC,OAAO,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;QACtC,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACvC,OAAO,IAAI,KAAK,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;AACL,CAAC;AAED,iGAAiG;AACjG,MAAM,UAAU,eAAe,CAAC,MAAsC;IACpE,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,MAAM,OAAO,CAAC,CAAC,QAAQ,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IACjF,MAAM,OAAO,GAAG,CAAC,yCAAyC,EAAE,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjF,OAAO;QACL,QAAQ,EAAE,CAAC;QACX,MAAM,EAAE,CAAC;QACT,KAAK,EAAE,CAAC;QACR,KAAK,EAAE,CAAC;QACR,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;KAC7D,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAAgB,EAChB,KAAa,EACb,IAAY,EACZ,QAAgB;IAEhB,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,IAAI,oBAAoB,EAAE,IAAI,EAAE,EAAE,CAAC;QACxD,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;YAClD,KAAK;YACL,IAAI;YACJ,WAAW,EAAE,QAAQ;YACrB,QAAQ,EAAE,oBAAoB;YAC9B,IAAI;SACL,CAAC,CAAC;QACH,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC3C,IAAI,IAAI,CAAC,MAAM,GAAG,oBAAoB;YAAE,MAAM;IAChD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|