prismatica 0.2.0 → 0.4.0
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/README.md +20 -8
- package/dist/assurance/mainpush.js +383 -8
- package/dist/assurance/mainpush.js.map +1 -1
- package/dist/assurance/proofinputs.js +62 -34
- package/dist/assurance/proofinputs.js.map +1 -1
- package/dist/atlas/labels.js +2 -2
- package/dist/atlas/labels.js.map +1 -1
- package/dist/atlas/next.js +120 -18
- package/dist/atlas/next.js.map +1 -1
- package/dist/board/html.js +37 -9
- package/dist/board/html.js.map +1 -1
- package/dist/board/model.js +58 -14
- package/dist/board/model.js.map +1 -1
- package/dist/cli.js +70 -6
- package/dist/cli.js.map +1 -1
- package/dist/commands/delta.js +84 -1
- package/dist/commands/delta.js.map +1 -1
- package/dist/commands/doctor.js +55 -11
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/frame.js +13 -1
- package/dist/commands/frame.js.map +1 -1
- package/dist/commands/guide.js +17 -5
- package/dist/commands/guide.js.map +1 -1
- package/dist/commands/next.js +196 -26
- package/dist/commands/next.js.map +1 -1
- package/dist/commands/release.js +950 -0
- package/dist/commands/release.js.map +1 -0
- package/dist/commands/ship.js +150 -15
- package/dist/commands/ship.js.map +1 -1
- package/dist/commands/start.js +5 -2
- package/dist/commands/start.js.map +1 -1
- package/dist/commands/update.js +435 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/detect.js +40 -10
- package/dist/detect.js.map +1 -1
- package/dist/executor.js +15 -0
- package/dist/executor.js.map +1 -1
- package/dist/git.js +27 -0
- package/dist/git.js.map +1 -1
- package/dist/guide.js +254 -33
- package/dist/guide.js.map +1 -1
- package/dist/paths.js +7 -0
- package/dist/paths.js.map +1 -1
- package/dist/planning/pack.js +12 -7
- package/dist/planning/pack.js.map +1 -1
- package/dist/planning/schema.js +17 -1
- package/dist/planning/schema.js.map +1 -1
- package/dist/prepush.js +52 -0
- package/dist/prepush.js.map +1 -1
- package/dist/records/store.js +17 -1
- package/dist/records/store.js.map +1 -1
- package/dist/records/types.js +122 -7
- package/dist/records/types.js.map +1 -1
- package/dist/releases.js +287 -0
- package/dist/releases.js.map +1 -0
- package/dist/render.js +23 -0
- package/dist/render.js.map +1 -1
- package/dist/title.js +69 -0
- package/dist/title.js.map +1 -0
- package/package.json +5 -1
- package/dist/agent-runner.js +0 -656
- package/dist/agent-runner.js.map +0 -1
- package/dist/atlas/packs.js +0 -169
- package/dist/atlas/packs.js.map +0 -1
|
@@ -0,0 +1,435 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `update` — a deterministic, owner-only maintenance transaction that moves
|
|
3
|
+
* one adopted consumer repository's recognised CI gate reader to the exact
|
|
4
|
+
* published version of the Prismatica CLI currently running here.
|
|
5
|
+
*
|
|
6
|
+
* It targets the EXECUTING CLI's own semantic version — never npm's moving
|
|
7
|
+
* `latest` tag — and only after `npm view` independently confirms that exact
|
|
8
|
+
* version is public with non-empty `dist.integrity`. It edits only the one
|
|
9
|
+
* unambiguous recognised gate invocation (and, when present, the exact
|
|
10
|
+
* generated header token naming the same old version), preserving every
|
|
11
|
+
* other byte. A self-hosted, missing, malformed or ambiguous integration
|
|
12
|
+
* refuses without touching anything. The transaction creates or resumes one
|
|
13
|
+
* Light lane identified by `Contract.updateVersion` and targeting exactly the
|
|
14
|
+
* workflow `Contract.updateWorkflow` names, runs the ordinary full
|
|
15
|
+
* Check through `npx --yes prismatica@<target> check <id>` (the exact public
|
|
16
|
+
* reader future CI will fetch), and calls ordinary `ship` — the same
|
|
17
|
+
* lifecycle every other change goes through.
|
|
18
|
+
*/
|
|
19
|
+
import fs from 'node:fs';
|
|
20
|
+
import path from 'node:path';
|
|
21
|
+
import { execa } from 'execa';
|
|
22
|
+
import { checkStillBinds, isCheckEvidenceFile, laneRelative } from '../assurance/proofinputs.js';
|
|
23
|
+
import { listOpenChanges } from '../change.js';
|
|
24
|
+
import { loadConfig } from '../config.js';
|
|
25
|
+
import { classifyGateInvocations } from '../detect.js';
|
|
26
|
+
import { UserError } from '../errors.js';
|
|
27
|
+
import * as git from '../git.js';
|
|
28
|
+
import { readLedger } from '../ledger.js';
|
|
29
|
+
import { ledgerPath } from '../paths.js';
|
|
30
|
+
import { contractPath, readContract, writeContract } from '../records/store.js';
|
|
31
|
+
import { renderContractBody } from '../render.js';
|
|
32
|
+
import { prismaticaVersion } from '../runtime.js';
|
|
33
|
+
import * as ui from '../ui.js';
|
|
34
|
+
import { mainSyncCommand } from '../atlas/next.js';
|
|
35
|
+
import { runFrame } from './frame.js';
|
|
36
|
+
import { runShip } from './ship.js';
|
|
37
|
+
const PKG_NAME = 'prismatica';
|
|
38
|
+
/** `X.Y.Z` only — the one shape a pin must satisfy before any decision is made about it. */
|
|
39
|
+
const SEMVER_PATTERN = /^(\d+)\.(\d+)\.(\d+)$/;
|
|
40
|
+
/**
|
|
41
|
+
* `X.Y.Z` only — a small local copy, the same "two literal copies, on
|
|
42
|
+
* purpose" precedent `release.ts`'s own registry seam documents, since
|
|
43
|
+
* `releases.ts` is forbidden here regardless of scope.
|
|
44
|
+
*/
|
|
45
|
+
function isNewerVersion(a, b) {
|
|
46
|
+
const pa = SEMVER_PATTERN.exec(a.trim());
|
|
47
|
+
const pb = SEMVER_PATTERN.exec(b.trim());
|
|
48
|
+
if (!pa || !pb) {
|
|
49
|
+
return false; // not a plain semver either side — never guess
|
|
50
|
+
}
|
|
51
|
+
for (let i = 1; i <= 3; i += 1) {
|
|
52
|
+
const na = Number(pa[i]);
|
|
53
|
+
const nb = Number(pb[i]);
|
|
54
|
+
if (na !== nb) {
|
|
55
|
+
return na > nb;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* The state matrix (ac-1): equal is a true no-op, newer refuses downgrade,
|
|
62
|
+
* an older exact pin or a recognised legacy unpinned invocation is eligible,
|
|
63
|
+
* self-hosted/none/ambiguous all refuse without edits. A recognised pin that
|
|
64
|
+
* is not valid semver (`prismatica@banana`) is neither older nor newer —
|
|
65
|
+
* `isNewerVersion` would silently answer "false" and this matrix would then
|
|
66
|
+
* treat it as eligible, so malformed pins are classified BEFORE any
|
|
67
|
+
* older/newer comparison is even attempted. Pure — takes the
|
|
68
|
+
* already-classified structural result, decides nothing about the registry
|
|
69
|
+
* or the filesystem.
|
|
70
|
+
*/
|
|
71
|
+
export function classifyUpdateState(classification, targetVersion) {
|
|
72
|
+
if (classification.kind === 'none') {
|
|
73
|
+
return { kind: 'none' };
|
|
74
|
+
}
|
|
75
|
+
if (classification.kind === 'ambiguous') {
|
|
76
|
+
return { kind: 'ambiguous', invocations: classification.invocations };
|
|
77
|
+
}
|
|
78
|
+
const { invocation } = classification;
|
|
79
|
+
if (invocation.kind === 'self-hosted') {
|
|
80
|
+
return { kind: 'self-hosted', invocation };
|
|
81
|
+
}
|
|
82
|
+
if (invocation.kind === 'exact-pin') {
|
|
83
|
+
const pinnedVersion = invocation.pinnedVersion;
|
|
84
|
+
if (!SEMVER_PATTERN.test(pinnedVersion.trim())) {
|
|
85
|
+
return { kind: 'malformed-pin', pinnedVersion };
|
|
86
|
+
}
|
|
87
|
+
if (pinnedVersion === targetVersion) {
|
|
88
|
+
return { kind: 'no-op' };
|
|
89
|
+
}
|
|
90
|
+
if (isNewerVersion(pinnedVersion, targetVersion)) {
|
|
91
|
+
return { kind: 'downgrade-refused', pinnedVersion };
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return { kind: 'eligible', invocation };
|
|
95
|
+
}
|
|
96
|
+
// ── Narrow, byte-preserving workflow text mutation ───────────────────────
|
|
97
|
+
const LEGACY_UNPINNED_VALUES = [
|
|
98
|
+
'prismatica gate',
|
|
99
|
+
'npx prismatica gate',
|
|
100
|
+
'npx --yes prismatica gate',
|
|
101
|
+
'npx -y prismatica gate',
|
|
102
|
+
];
|
|
103
|
+
function escapeRegExp(value) {
|
|
104
|
+
return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* The exact same recognised shape `detect.ts`'s gate-invocation scanner
|
|
108
|
+
* matches for `exact-pin` — a local copy so this module never needs to
|
|
109
|
+
* export detection internals just to re-find the line it already classified.
|
|
110
|
+
*/
|
|
111
|
+
const EXACT_PIN_SEGMENT = /^npx\s+(?:--yes\s+|-y\s+)?prismatica@(\S+)\s+gate(?:\s|$)/;
|
|
112
|
+
/**
|
|
113
|
+
* Every line whose command text — after stripping an optional `run:` prefix
|
|
114
|
+
* and a trailing inline comment, then splitting on `;`/`&`/`|` exactly like
|
|
115
|
+
* the detector does — is itself the recognised `exact-pin` invocation of
|
|
116
|
+
* `oldVersion`. This is the run step's own line, positively re-derived by
|
|
117
|
+
* structure, never assumed from a substring count.
|
|
118
|
+
*/
|
|
119
|
+
function findExactPinRunLines(lines, oldVersion) {
|
|
120
|
+
const matches = [];
|
|
121
|
+
for (let i = 0; i < lines.length; i += 1) {
|
|
122
|
+
const raw = lines[i];
|
|
123
|
+
const trimmed = raw.trim();
|
|
124
|
+
if (trimmed === '' || trimmed.startsWith('#')) {
|
|
125
|
+
continue;
|
|
126
|
+
}
|
|
127
|
+
const prefixed = /^(\s*(?:-\s+)?run:\s*)(.*)$/.exec(raw);
|
|
128
|
+
const commandPart = (prefixed ? prefixed[2] : raw).replace(/\s+#.*$/, '');
|
|
129
|
+
for (const rawSegment of commandPart.split(/[;&|]+/)) {
|
|
130
|
+
const segment = rawSegment.trim();
|
|
131
|
+
if (segment === '') {
|
|
132
|
+
continue;
|
|
133
|
+
}
|
|
134
|
+
const match = EXACT_PIN_SEGMENT.exec(segment);
|
|
135
|
+
if (match && match[1] === oldVersion) {
|
|
136
|
+
matches.push(i);
|
|
137
|
+
break;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
return matches;
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* The one generated header shape `templates.ts`'s `gateWorkflowYaml` ever
|
|
145
|
+
* writes (`# npx --yes prismatica@<version> gate`, verbatim) — never any
|
|
146
|
+
* comment or command elsewhere that merely contains the same version token.
|
|
147
|
+
* An unrelated comment or command sharing the old version text will not
|
|
148
|
+
* match this exact line shape and is therefore left untouched.
|
|
149
|
+
*/
|
|
150
|
+
function findGeneratedHeaderLines(lines, oldVersion) {
|
|
151
|
+
const pattern = new RegExp(`^#\\s*npx --yes prismatica@${escapeRegExp(oldVersion)} gate\\s*$`);
|
|
152
|
+
const matches = [];
|
|
153
|
+
for (let i = 0; i < lines.length; i += 1) {
|
|
154
|
+
if (pattern.test(lines[i])) {
|
|
155
|
+
matches.push(i);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
return matches;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* The one text mutation this command ever makes, and the mechanism that
|
|
162
|
+
* makes "fails closed on anything it cannot edit without guessing" real
|
|
163
|
+
* rather than a comment: only lines POSITIVELY IDENTIFIED as Prismatica's own
|
|
164
|
+
* integration are touched, never a file-wide substring replace.
|
|
165
|
+
*
|
|
166
|
+
* `exact-pin`: the run step's own recognised invocation line (re-derived by
|
|
167
|
+
* the same structural match `detect.ts` used to classify it — required,
|
|
168
|
+
* exactly one) and, when present, the single line matching the exact
|
|
169
|
+
* generated header comment `templates.ts` writes for this old version. Any
|
|
170
|
+
* other line containing the same `prismatica@<oldVersion>` text — an
|
|
171
|
+
* unrelated comment, a different command — is never touched, because it
|
|
172
|
+
* cannot match either positively-identified shape. Zero or more than one
|
|
173
|
+
* header candidate refuses rather than guessing which one is the real one.
|
|
174
|
+
*
|
|
175
|
+
* `legacy-unpinned`: the recognised invocation is a bare `run:` value —
|
|
176
|
+
* `prismatica gate` or one of its `npx` forms, and nothing else on that
|
|
177
|
+
* line — pinned in place to `npx --yes prismatica@<targetVersion> gate`.
|
|
178
|
+
* Exactly one such line is trusted; zero or more than one refuses.
|
|
179
|
+
*
|
|
180
|
+
* A full YAML parse+reserialise is deliberately NOT used here: it would
|
|
181
|
+
* reformat bytes this command has no business touching. Text in, text out,
|
|
182
|
+
* everything else preserved.
|
|
183
|
+
*/
|
|
184
|
+
export function mutateGateWorkflowText(text, invocation, targetVersion) {
|
|
185
|
+
if (invocation.kind === 'exact-pin') {
|
|
186
|
+
const oldVersion = invocation.pinnedVersion;
|
|
187
|
+
const oldToken = `prismatica@${oldVersion}`;
|
|
188
|
+
const newToken = `prismatica@${targetVersion}`;
|
|
189
|
+
const lines = text.split('\n');
|
|
190
|
+
const runLines = findExactPinRunLines(lines, oldVersion);
|
|
191
|
+
if (runLines.length !== 1) {
|
|
192
|
+
return null; // not exactly the one recognised run invocation — never guess
|
|
193
|
+
}
|
|
194
|
+
const headerLines = findGeneratedHeaderLines(lines, oldVersion);
|
|
195
|
+
if (headerLines.length > 1) {
|
|
196
|
+
return null; // more than one candidate header — never guess which is real
|
|
197
|
+
}
|
|
198
|
+
for (const index of [...runLines, ...headerLines]) {
|
|
199
|
+
lines[index] = lines[index].split(oldToken).join(newToken);
|
|
200
|
+
}
|
|
201
|
+
return lines.join('\n');
|
|
202
|
+
}
|
|
203
|
+
// legacy-unpinned — the leading `- ` list marker is optional: the yaml
|
|
204
|
+
// library renders a step with a `name` alongside `run` on its own
|
|
205
|
+
// indented line, but a hand-written or pre-0.2.0 workflow may combine
|
|
206
|
+
// them as `- run: …` on one line.
|
|
207
|
+
const lines = text.split('\n');
|
|
208
|
+
const runLine = /^(\s*(?:-\s+)?run:\s*)(.*)$/;
|
|
209
|
+
let matchedIndex = -1;
|
|
210
|
+
for (let i = 0; i < lines.length; i += 1) {
|
|
211
|
+
const match = runLine.exec(lines[i]);
|
|
212
|
+
if (!match) {
|
|
213
|
+
continue;
|
|
214
|
+
}
|
|
215
|
+
if (LEGACY_UNPINNED_VALUES.includes(match[2].trim())) {
|
|
216
|
+
if (matchedIndex !== -1) {
|
|
217
|
+
return null; // more than one — ambiguous, never guess which
|
|
218
|
+
}
|
|
219
|
+
matchedIndex = i;
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
if (matchedIndex === -1) {
|
|
223
|
+
return null;
|
|
224
|
+
}
|
|
225
|
+
const prefix = runLine.exec(lines[matchedIndex])[1];
|
|
226
|
+
lines[matchedIndex] = `${prefix}npx --yes prismatica@${targetVersion} gate`;
|
|
227
|
+
return lines.join('\n');
|
|
228
|
+
}
|
|
229
|
+
const NPM_NOT_FOUND = /E404|404 Not Found|is not in (?:this|the) registry/i;
|
|
230
|
+
async function npmPackageIntegrity(version) {
|
|
231
|
+
const result = await execa('npm', ['view', `${PKG_NAME}@${version}`, 'dist.integrity', '--json'], {
|
|
232
|
+
reject: false,
|
|
233
|
+
});
|
|
234
|
+
if (result.failed) {
|
|
235
|
+
return NPM_NOT_FOUND.test(`${result.stderr}${result.stdout}`) ? { state: 'absent' } : { state: 'uncertain' };
|
|
236
|
+
}
|
|
237
|
+
try {
|
|
238
|
+
const parsed = JSON.parse(result.stdout);
|
|
239
|
+
return typeof parsed === 'string' && parsed.length > 0 ? { state: 'present', integrity: parsed } : { state: 'uncertain' };
|
|
240
|
+
}
|
|
241
|
+
catch {
|
|
242
|
+
return { state: 'uncertain' };
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
// ── Safety: a clean, current main before anything else is even asked ─────
|
|
246
|
+
async function requireCleanCurrentMain(mainRoot, mainBranch) {
|
|
247
|
+
const dirtyCode = (await git.dirtyPaths(mainRoot)).filter((file) => !file.startsWith('.prismatica/'));
|
|
248
|
+
if (dirtyCode.length > 0) {
|
|
249
|
+
throw new UserError(`Your "${mainBranch}" has uncommitted changes (${dirtyCode.slice(0, 3).join(', ')}${dirtyCode.length > 3 ? ', …' : ''}).`, { command: 'git status', why: 'update starts from a clean, known baseline, exactly like framing any other change' });
|
|
250
|
+
}
|
|
251
|
+
const upstream = `origin/${mainBranch}`;
|
|
252
|
+
if (await git.refExists(mainRoot, upstream)) {
|
|
253
|
+
const behind = await git.behindCount(mainRoot, mainBranch, upstream);
|
|
254
|
+
if (behind > 0) {
|
|
255
|
+
throw new UserError(`Your "${mainBranch}" is ${behind} commit(s) behind ${upstream}.`, {
|
|
256
|
+
command: mainSyncCommand(mainRoot, mainBranch),
|
|
257
|
+
why: 'update should target the current tip, not an old one',
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
async function findExistingUpdateLane(mainRoot, targetVersion) {
|
|
263
|
+
for (const change of await listOpenChanges(mainRoot)) {
|
|
264
|
+
const { data: contract } = readContract(change.home, change.id);
|
|
265
|
+
if (!contract.updateVersion) {
|
|
266
|
+
continue;
|
|
267
|
+
}
|
|
268
|
+
if (contract.updateVersion !== targetVersion) {
|
|
269
|
+
throw new UserError(`An update lane for ${contract.updateVersion} is already open ("${change.id}") — finish or abandon it before updating to ${targetVersion}.`, { command: 'prismatica next', why: 'update never runs two maintenance transactions at once' });
|
|
270
|
+
}
|
|
271
|
+
return { home: change.home, contract };
|
|
272
|
+
}
|
|
273
|
+
return null;
|
|
274
|
+
}
|
|
275
|
+
function workflowRelativePath(invocation) {
|
|
276
|
+
return path.posix.join('.github', 'workflows', invocation.workflow);
|
|
277
|
+
}
|
|
278
|
+
// ── Resuming the external, target-published Check ────────────────────────
|
|
279
|
+
/** Whether a passing, TARGET-STAMPED check for this contract still binds the current HEAD — resumability, never a re-run once already proven. */
|
|
280
|
+
async function externalCheckAlreadyBinds(home, contract, targetVersion) {
|
|
281
|
+
const entries = readLedger(home).entries.filter((entry) => entry.contractId === contract.id && entry.event === 'check_run');
|
|
282
|
+
const latest = entries.at(-1);
|
|
283
|
+
if (!latest || !latest.pass || !latest.checkedHead || latest.prismaticaVersion !== targetVersion) {
|
|
284
|
+
return false;
|
|
285
|
+
}
|
|
286
|
+
return checkStillBinds(home, contract, latest.checkedHead);
|
|
287
|
+
}
|
|
288
|
+
export async function runUpdate(options) {
|
|
289
|
+
const mainRoot = await git.mainRepoRoot(options.cwd);
|
|
290
|
+
const config = loadConfig(mainRoot);
|
|
291
|
+
const targetVersion = prismaticaVersion();
|
|
292
|
+
await requireCleanCurrentMain(mainRoot, config.mainBranch);
|
|
293
|
+
const classification = classifyUpdateState(classifyGateInvocations(mainRoot), targetVersion);
|
|
294
|
+
switch (classification.kind) {
|
|
295
|
+
case 'none':
|
|
296
|
+
throw new UserError('No recognised `prismatica gate` invocation found in .github/workflows.', {
|
|
297
|
+
command: 'prismatica init',
|
|
298
|
+
why: 'update only ever edits an invocation it can unambiguously recognise',
|
|
299
|
+
});
|
|
300
|
+
case 'ambiguous':
|
|
301
|
+
throw new UserError(`${classification.invocations.length} recognised gate invocations found (${classification.invocations.map((i) => i.workflow).join(', ')}) — refusing to guess which one to update.`, { command: 'git grep -n "prismatica" .github/workflows', why: 'update never edits an ambiguous integration' });
|
|
302
|
+
case 'self-hosted':
|
|
303
|
+
throw new UserError(`${classification.invocation.workflow} self-hosts the gate — update never converts a self-hosted Prismatica into an npm consumer.`);
|
|
304
|
+
case 'no-op':
|
|
305
|
+
return { outcome: 'no-op', targetVersion };
|
|
306
|
+
case 'downgrade-refused':
|
|
307
|
+
throw new UserError(`CI already pins prismatica@${classification.pinnedVersion}, newer than the ${targetVersion} running here — update never downgrades.`);
|
|
308
|
+
case 'malformed-pin':
|
|
309
|
+
throw new UserError(`CI pins "prismatica@${classification.pinnedVersion}", which is not a valid semantic version — update refuses to guess whether that is older or newer.`, {
|
|
310
|
+
command: `git grep -n "prismatica@${classification.pinnedVersion}" .github/workflows`,
|
|
311
|
+
why: 'a malformed pin is fail-closed integration state, never eligible for an automatic decision',
|
|
312
|
+
});
|
|
313
|
+
}
|
|
314
|
+
const invocation = classification.invocation;
|
|
315
|
+
// Registry proof BEFORE any mutation — only reached once we know we would
|
|
316
|
+
// otherwise proceed to edit something.
|
|
317
|
+
const registry = await npmPackageIntegrity(targetVersion);
|
|
318
|
+
if (registry.state !== 'present') {
|
|
319
|
+
throw new UserError(`prismatica@${targetVersion} is not confirmed public with a non-empty registry integrity — update fails closed before any mutation.`, { command: `npm view ${PKG_NAME}@${targetVersion} dist.integrity`, why: 'the target must be proven publicly resolvable before anything changes' });
|
|
320
|
+
}
|
|
321
|
+
const existing = await findExistingUpdateLane(mainRoot, targetVersion);
|
|
322
|
+
let home;
|
|
323
|
+
let contract;
|
|
324
|
+
if (existing) {
|
|
325
|
+
home = existing.home;
|
|
326
|
+
contract = existing.contract;
|
|
327
|
+
}
|
|
328
|
+
else {
|
|
329
|
+
const workflowRel = workflowRelativePath(invocation);
|
|
330
|
+
const framed = await runFrame({
|
|
331
|
+
cwd: mainRoot,
|
|
332
|
+
title: `Update Prismatica CI gate to ${targetVersion}`,
|
|
333
|
+
issue: `update/${targetVersion}`,
|
|
334
|
+
allowedPaths: [workflowRel],
|
|
335
|
+
acceptanceChecks: [
|
|
336
|
+
{ id: 'ac-1', description: `CI gate reads prismatica@${targetVersion}`, test: 'manual:owner' },
|
|
337
|
+
],
|
|
338
|
+
answers: { touchesAuth: false, touchesPayments: false, touchesSavedData: false, copyOnly: false },
|
|
339
|
+
tierOverride: 'light',
|
|
340
|
+
installHook: false,
|
|
341
|
+
now: options.now,
|
|
342
|
+
});
|
|
343
|
+
home = framed.worktree;
|
|
344
|
+
contract = { ...framed.contract, updateVersion: targetVersion, updateWorkflow: workflowRel };
|
|
345
|
+
writeContract(home, contract, renderContractBody(contract));
|
|
346
|
+
const contractRel = laneRelative(home, contractPath(home, contract.id));
|
|
347
|
+
await git.commitPaths(home, [contractRel], `update: target prismatica@${targetVersion}`);
|
|
348
|
+
}
|
|
349
|
+
// Narrow structural edit — BOTH the path and the invocation metadata this
|
|
350
|
+
// step trusts come from THIS lane, never from main. `contract.updateWorkflow`
|
|
351
|
+
// is the one workflow path this transaction was framed to modify, written
|
|
352
|
+
// once at frame time and never again — it never moves because main later
|
|
353
|
+
// relocates its gate, and never because a supported `amend` widens or
|
|
354
|
+
// reorders `allowedPaths` (an ordered list of globs, which is why reading
|
|
355
|
+
// its first entry was never a durable answer). A lane that carries an
|
|
356
|
+
// `updateVersion` but cannot name its own workflow fails closed here,
|
|
357
|
+
// before anything is read or written. `laneGate` is a fresh
|
|
358
|
+
// reclassification of the lane's own checkout, never main's. If the lane's
|
|
359
|
+
// own positively identified invocation is not in that same file, main and
|
|
360
|
+
// this lane have diverged incompatibly: refuse rather than mixing one
|
|
361
|
+
// file's invocation metadata into another's text (the resume-path mismatch
|
|
362
|
+
// this guards against).
|
|
363
|
+
const workflowRel = contract.updateWorkflow;
|
|
364
|
+
if (!workflowRel) {
|
|
365
|
+
throw new UserError(`The update lane "${contract.id}" does not record which workflow it targets — refusing to guess from its scope list.`, {
|
|
366
|
+
command: `prismatica abandon ${contract.id} --reason "update lane names no target workflow"`,
|
|
367
|
+
why: 'an update transaction mutates only the exact file its own durable record names',
|
|
368
|
+
});
|
|
369
|
+
}
|
|
370
|
+
const laneGate = classifyGateInvocations(home);
|
|
371
|
+
if (laneGate.kind === 'ambiguous') {
|
|
372
|
+
throw new UserError(`${laneGate.invocations.length} recognised gate invocations found (${laneGate.invocations.map((i) => i.workflow).join(', ')}) — refusing to guess which one to update.`, { command: `git -C ${home} grep -n "prismatica" .github/workflows`, why: 'update never edits an ambiguous integration' });
|
|
373
|
+
}
|
|
374
|
+
if (laneGate.kind === 'none') {
|
|
375
|
+
throw new UserError(`Could not safely edit ${workflowRel}'s recognised gate invocation without guessing — the recognised text no longer matches exactly what was detected.`, { command: `git -C ${home} diff -- ${workflowRel}`, why: 'update never edits a shape it cannot count exactly' });
|
|
376
|
+
}
|
|
377
|
+
const laneInvocation = laneGate.invocation;
|
|
378
|
+
if (workflowRelativePath(laneInvocation) !== workflowRel) {
|
|
379
|
+
throw new UserError(`This lane is scoped to ${workflowRel}, but its own recognised gate invocation is now in ${laneInvocation.workflow} — main and this lane have diverged since the lane was framed.`, { command: 'prismatica next', why: "update never applies one file's invocation metadata to another file" });
|
|
380
|
+
}
|
|
381
|
+
const workflowAbs = path.join(home, workflowRel);
|
|
382
|
+
const currentText = fs.readFileSync(workflowAbs, 'utf8');
|
|
383
|
+
const alreadyAtTarget = laneInvocation.kind === 'exact-pin' && laneInvocation.pinnedVersion === targetVersion;
|
|
384
|
+
if (!alreadyAtTarget) {
|
|
385
|
+
const mutated = mutateGateWorkflowText(currentText, laneInvocation, targetVersion);
|
|
386
|
+
if (mutated === null) {
|
|
387
|
+
throw new UserError(`Could not safely edit ${workflowRel}'s recognised gate invocation without guessing — the recognised text no longer matches exactly what was detected.`, { command: `git -C ${home} diff -- ${workflowRel}`, why: 'update never edits a shape it cannot count exactly' });
|
|
388
|
+
}
|
|
389
|
+
fs.writeFileSync(workflowAbs, mutated);
|
|
390
|
+
await git.commitPaths(home, [workflowRel], `update: pin CI gate to prismatica@${targetVersion}`);
|
|
391
|
+
}
|
|
392
|
+
// The ordinary full Check, through the exact published target — resumable:
|
|
393
|
+
// skip once a passing, target-stamped run already binds current HEAD.
|
|
394
|
+
if (!(await externalCheckAlreadyBinds(home, contract, targetVersion))) {
|
|
395
|
+
const checked = await execa('npx', ['--yes', `${PKG_NAME}@${targetVersion}`, 'check', contract.id], {
|
|
396
|
+
cwd: home,
|
|
397
|
+
reject: false,
|
|
398
|
+
});
|
|
399
|
+
const latest = readLedger(home)
|
|
400
|
+
.entries.filter((entry) => entry.contractId === contract.id && entry.event === 'check_run')
|
|
401
|
+
.at(-1);
|
|
402
|
+
if (checked.failed || !latest || !latest.pass || latest.prismaticaVersion !== targetVersion) {
|
|
403
|
+
throw new UserError(`\`npx --yes prismatica@${targetVersion} check ${contract.id}\` did not produce a passing, target-stamped check.`, { command: `npx --yes prismatica@${targetVersion} check ${contract.id}`, why: 'this is the exact public reader future CI will fetch — it must prove it can read this repository before shipping' });
|
|
404
|
+
}
|
|
405
|
+
const recordPaths = (await git.dirtyEntries(home))
|
|
406
|
+
.map((entry) => entry.path)
|
|
407
|
+
.filter((p) => isCheckEvidenceFile(home, contract.id, p) || p === laneRelative(home, ledgerPath(home)));
|
|
408
|
+
if (recordPaths.length > 0) {
|
|
409
|
+
await git.commitPaths(home, recordPaths, `update: check evidence for prismatica@${targetVersion}`);
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
const shipReport = await runShip({ cwd: home, contractId: contract.id });
|
|
413
|
+
if (!shipReport.shipped) {
|
|
414
|
+
throw new UserError('The gate is not satisfied yet — see the requirements above.', {
|
|
415
|
+
command: `prismatica gate ${contract.id}`,
|
|
416
|
+
why: 'update ships through the same gate every change does',
|
|
417
|
+
});
|
|
418
|
+
}
|
|
419
|
+
return { outcome: 'shipped', targetVersion, contractId: contract.id, prUrl: shipReport.prUrl };
|
|
420
|
+
}
|
|
421
|
+
export function printUpdateReport(report) {
|
|
422
|
+
if (report.outcome === 'no-op') {
|
|
423
|
+
console.log(ui.ok(`✓ already current — CI gate reads prismatica@${report.targetVersion}`));
|
|
424
|
+
return;
|
|
425
|
+
}
|
|
426
|
+
console.log(ui.ok(`✓ CI gate pinned to prismatica@${report.targetVersion}`));
|
|
427
|
+
console.log('');
|
|
428
|
+
console.log(` ${ui.bold('contract')} ${report.contractId}`);
|
|
429
|
+
if (report.prUrl) {
|
|
430
|
+
console.log(` ${ui.bold('PR')} ${report.prUrl}`);
|
|
431
|
+
}
|
|
432
|
+
console.log('');
|
|
433
|
+
console.log(ui.dim(' gate → merge → close, guided by `prismatica next`.'));
|
|
434
|
+
}
|
|
435
|
+
//# sourceMappingURL=update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
|
package/dist/detect.js
CHANGED
|
@@ -56,8 +56,14 @@ const GATE_INVOCATION_PATTERNS = [
|
|
|
56
56
|
// the live trusted-main form (`node "$RUNNER_TEMP/prismatica-trusted/dist/cli.js" gate`).
|
|
57
57
|
{ kind: 'self-hosted', pattern: /^node\s+"?[^"\s]*dist\/cli\.js"?\s+gate(?:\s|$)/ },
|
|
58
58
|
];
|
|
59
|
-
/**
|
|
60
|
-
|
|
59
|
+
/**
|
|
60
|
+
* EVERY recognised invocation in this `run` block, never just the first — a
|
|
61
|
+
* multiline step can contain two otherwise-valid gate commands (one per
|
|
62
|
+
* line, or chained with `;`/`&&`), and `update` must see both to refuse as
|
|
63
|
+
* ambiguous rather than silently editing the one it happened to find first.
|
|
64
|
+
*/
|
|
65
|
+
function runStepGateInvocations(run) {
|
|
66
|
+
const found = [];
|
|
61
67
|
for (const rawLine of run.split('\n')) {
|
|
62
68
|
const line = rawLine.trim();
|
|
63
69
|
if (line === '' || line.startsWith('#')) {
|
|
@@ -73,24 +79,34 @@ function runStepGateInvocation(run) {
|
|
|
73
79
|
for (const { kind, pattern } of GATE_INVOCATION_PATTERNS) {
|
|
74
80
|
const match = pattern.exec(segment);
|
|
75
81
|
if (match) {
|
|
76
|
-
|
|
82
|
+
found.push({ kind, pinnedVersion: match[1] });
|
|
83
|
+
break; // this segment already matched — don't test the other patterns against it
|
|
77
84
|
}
|
|
78
85
|
}
|
|
79
86
|
}
|
|
80
87
|
}
|
|
81
|
-
return
|
|
88
|
+
return found;
|
|
82
89
|
}
|
|
83
90
|
/**
|
|
84
91
|
* Structurally parses each workflow file (the `yaml` dependency already in
|
|
85
92
|
* use elsewhere) and inspects only `jobs.*.steps[].run` — never a step's
|
|
86
93
|
* `name`, a comment, or echoed text. Unparsable YAML is never treated as a
|
|
87
94
|
* match (fails closed to "missing", not a crash or a false positive).
|
|
95
|
+
*
|
|
96
|
+
* Returns EVERY recognised gate invocation found, across every workflow file,
|
|
97
|
+
* sorted by filename then job/step order — never just the first. `update`'s
|
|
98
|
+
* detector needs to tell "exactly one" apart from "more than one" before it
|
|
99
|
+
* will edit anything; `findGateWorkflow` below is the plain existence
|
|
100
|
+
* question `detectCapabilities` has always asked, answered from this same
|
|
101
|
+
* list so the two can never disagree about what a repository's workflows
|
|
102
|
+
* contain.
|
|
88
103
|
*/
|
|
89
|
-
function
|
|
104
|
+
export function findGateInvocations(cwd) {
|
|
90
105
|
const workflowsDir = path.join(cwd, '.github', 'workflows');
|
|
91
106
|
if (!fs.existsSync(workflowsDir)) {
|
|
92
|
-
return
|
|
107
|
+
return [];
|
|
93
108
|
}
|
|
109
|
+
const found = [];
|
|
94
110
|
// Sorted, so which invocation is reported never depends on directory order.
|
|
95
111
|
for (const file of fs.readdirSync(workflowsDir).sort()) {
|
|
96
112
|
if (!/\.ya?ml$/.test(file)) {
|
|
@@ -107,14 +123,28 @@ function findGateWorkflow(cwd) {
|
|
|
107
123
|
for (const job of Object.values(jobs)) {
|
|
108
124
|
const steps = Array.isArray(job?.steps) ? job.steps : [];
|
|
109
125
|
for (const step of steps) {
|
|
110
|
-
const
|
|
111
|
-
|
|
112
|
-
|
|
126
|
+
const invocations = typeof step?.run === 'string' ? runStepGateInvocations(step.run) : [];
|
|
127
|
+
for (const invocation of invocations) {
|
|
128
|
+
found.push({ ...invocation, workflow: file });
|
|
113
129
|
}
|
|
114
130
|
}
|
|
115
131
|
}
|
|
116
132
|
}
|
|
117
|
-
return
|
|
133
|
+
return found;
|
|
134
|
+
}
|
|
135
|
+
/** The first recognised gate invocation, or `null` when none exists — what `detectCapabilities`'s capability row has always needed. */
|
|
136
|
+
function findGateWorkflow(cwd) {
|
|
137
|
+
return findGateInvocations(cwd)[0] ?? null;
|
|
138
|
+
}
|
|
139
|
+
export function classifyGateInvocations(cwd) {
|
|
140
|
+
const invocations = findGateInvocations(cwd);
|
|
141
|
+
if (invocations.length === 0) {
|
|
142
|
+
return { kind: 'none' };
|
|
143
|
+
}
|
|
144
|
+
if (invocations.length === 1) {
|
|
145
|
+
return { kind: 'one', invocation: invocations[0] };
|
|
146
|
+
}
|
|
147
|
+
return { kind: 'ambiguous', invocations };
|
|
118
148
|
}
|
|
119
149
|
const ProtectionSchema = z.looseObject({
|
|
120
150
|
required_status_checks: z.looseObject({ contexts: z.array(z.string()).default([]) }).nullish(),
|
package/dist/detect.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detect.js","sourceRoot":"","sources":["../src/detect.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"detect.js","sourceRoot":"","sources":["../src/detect.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AA6F9E,SAAS,eAAe,CAAC,GAAW;IAClC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAAgB,CAAC;IAC5F,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,GAAuB,EAAE,IAAY;IAC1D,OAAO,OAAO,CAAC,GAAG,EAAE,YAAY,EAAE,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,eAAe,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5E,CAAC;AAED,SAAS,SAAS,CAAC,GAAuB,EAAE,IAAY;IACtD,OAAO,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,SAAS,CAAC,GAAW,EAAE,UAAoB;IAClD,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;AAClF,CAAC;AAED,KAAK,UAAU,aAAa;IAC1B,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IACvE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;AACxB,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,wBAAwB,GAAoD;IAChF,wEAAwE;IACxE,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,2DAA2D,EAAE;IAC3F,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,4BAA4B,EAAE;IAClE,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,qDAAqD,EAAE;IAC3F,6EAA6E;IAC7E,0FAA0F;IAC1F,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,iDAAiD,EAAE;CACpF,CAAC;AAEF;;;;;GAKG;AACH,SAAS,sBAAsB,CAAC,GAAW;IACzC,MAAM,KAAK,GAA2D,EAAE,CAAC;IACzE,KAAK,MAAM,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACxC,SAAS,CAAC,+BAA+B;QAC3C,CAAC;QACD,yEAAyE;QACzE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAC5C,KAAK,MAAM,UAAU,IAAI,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjD,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;YAClC,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;gBACnB,SAAS;YACX,CAAC;YACD,KAAK,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,wBAAwB,EAAE,CAAC;gBACzD,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACpC,IAAI,KAAK,EAAE,CAAC;oBACV,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBAC9C,MAAM,CAAC,0EAA0E;gBACnF,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAYD;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAAW;IAC7C,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;IAC5D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACjC,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,KAAK,GAAqB,EAAE,CAAC;IACnC,4EAA4E;IAC5E,KAAK,MAAM,IAAI,IAAI,EAAE,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QACvD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,SAAS;QACX,CAAC;QACD,IAAI,GAAiB,CAAC;QACtB,IAAI,CAAC;YACH,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAiB,CAAC;QAC3F,CAAC;QAAC,MAAM,CAAC;YACP,SAAS,CAAC,kCAAkC;QAC9C,CAAC;QACD,MAAM,IAAI,GAAG,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACpE,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAkB,EAAE,CAAC;YACvD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAE,GAAG,CAAC,KAAwB,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7E,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,WAAW,GAAG,OAAO,IAAI,EAAE,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC1F,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;oBACrC,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;gBAChD,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,uIAAuI;AACvI,SAAS,gBAAgB,CAAC,GAAW;IACnC,OAAO,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AAC7C,CAAC;AAaD,MAAM,UAAU,uBAAuB,CAAC,GAAW;IACjD,MAAM,WAAW,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;IAC7C,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAC1B,CAAC;IACD,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC,CAAE,EAAE,CAAC;IACtD,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC;AAC5C,CAAC;AAED,MAAM,gBAAgB,GAAG,CAAC,CAAC,WAAW,CAAC;IACrC,sBAAsB,EAAE,CAAC,CAAC,WAAW,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE;CAC/F,CAAC,CAAC;AAEH;;;;;;GAMG;AACH,MAAM,oBAAoB,GAAG,2DAA2D,CAAC;AAEzF;;;GAGG;AACH,MAAM,YAAY,GAAG,CAAC,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AAK/D;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,KAAK,UAAU,wBAAwB,CACrC,GAAW,EACX,IAAY,EACZ,UAAkB;IAElB,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,GAAG,CAAC,CAAC;IACtE,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACnD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC;AAC7D,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,cAAc,CAAC,IAAY,EAAE,UAAkB;IACtD,OAAO,SAAS,IAAI,aAAa,kBAAkB,CAAC,UAAU,CAAC,EAAE,CAAC;AACpE,CAAC;AAOD,KAAK,UAAU,qBAAqB,CAClC,GAAW,EACX,UAAkB;IAElB,MAAM,IAAI,GAAG,EAAE,EAAE,EAAE,mBAAmB,EAAE,KAAK,EAAE,mBAAmB,EAAW,CAAC;IAC9E,IAAI,CAAC,CAAC,MAAM,WAAW,EAAE,CAAC,EAAE,CAAC;QAC3B,OAAO;YACL,OAAO,EAAE,sBAAsB;YAC/B,UAAU,EAAE;gBACV,GAAG,IAAI;gBACP,MAAM,EAAE,SAAS;gBACjB,MAAM,EAAE,gFAAgF;gBACxF,GAAG,EAAE,yCAAyC;aAC/C;SACF,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,CAAC,MAAM,eAAe,EAAE,CAAC,EAAE,CAAC;QAC/B,OAAO;YACL,OAAO,EAAE,sBAAsB;YAC/B,UAAU,EAAE;gBACV,GAAG,IAAI;gBACP,MAAM,EAAE,SAAS;gBACjB,MAAM,EAAE,6CAA6C;gBACrD,GAAG,EAAE,eAAe;aACrB;SACF,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO;YACL,OAAO,EAAE,sBAAsB;YAC/B,UAAU,EAAE;gBACV,GAAG,IAAI;gBACP,MAAM,EAAE,SAAS;gBACjB,MAAM,EAAE,mCAAmC;gBAC3C,GAAG,EAAE,+EAA+E;aACrF;SACF,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,GAAG,cAAc,CAAC,IAAI,EAAE,UAAU,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;IACtF,MAAM,SAAS,GAAG,oDAAoD,UAAU,oDAAoD,CAAC;IAErI,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,qEAAqE;QACrE,wEAAwE;QACxE,+DAA+D;QAC/D,IAAI,MAAM,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC1B,MAAM,IAAI,GAAG,MAAM,wBAAwB,CAAC,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;YACnE,IAAI,IAAI,KAAK,aAAa,EAAE,CAAC;gBAC3B,OAAO;oBACL,OAAO,EAAE,QAAQ;oBACjB,UAAU,EAAE;wBACV,GAAG,IAAI;wBACP,MAAM,EAAE,SAAS;wBACjB,MAAM,EAAE,IAAI,UAAU,QAAQ,IAAI,sDAAsD;wBACxF,GAAG,EAAE,SAAS;qBACf;iBACF,CAAC;YACJ,CAAC;YACD,OAAO;gBACL,OAAO,EAAE,aAAa;gBACtB,UAAU,EAAE;oBACV,GAAG,IAAI;oBACP,MAAM,EAAE,eAAe;oBACvB,MAAM,EACJ,IAAI,KAAK,WAAW;wBAClB,CAAC,CAAC,IAAI,UAAU,QAAQ,IAAI,iIAAiI;wBAC7J,CAAC,CAAC,4BAA4B,UAAU,QAAQ,IAAI,gMAAgM;iBACzP;aACF,CAAC;QACJ,CAAC;QACD,2EAA2E;QAC3E,uEAAuE;QACvE,IAAI,MAAM,CAAC,MAAM,KAAK,GAAG,IAAI,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC;YAC7E,OAAO;gBACL,OAAO,EAAE,qBAAqB;gBAC9B,UAAU,EAAE;oBACV,GAAG,IAAI;oBACP,MAAM,EAAE,aAAa;oBACrB,MAAM,EAAE,gDAAgD,IAAI,gGAAgG;iBAC7J;aACF,CAAC;QACJ,CAAC;QACD,wEAAwE;QACxE,2EAA2E;QAC3E,OAAO;YACL,OAAO,EAAE,aAAa;YACtB,UAAU,EAAE;gBACV,GAAG,IAAI;gBACP,MAAM,EAAE,eAAe;gBACvB,MAAM,EAAE,oCAAoC,UAAU,QAAQ,IAAI,gBAAgB,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,gDAAgD;aAClL;SACF,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACvD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO;YACL,OAAO,EAAE,aAAa;YACtB,UAAU,EAAE;gBACV,GAAG,IAAI;gBACP,MAAM,EAAE,eAAe;gBACvB,MAAM,EAAE,0BAA0B,UAAU,QAAQ,IAAI,4FAA4F;aACrJ;SACF,CAAC;IACJ,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,sBAAsB,EAAE,QAAQ,IAAI,EAAE,CAAC;IACpE,IAAI,QAAQ,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACzC,OAAO;YACL,OAAO,EAAE,UAAU;YACnB,UAAU,EAAE;gBACV,GAAG,IAAI;gBACP,MAAM,EAAE,UAAU;gBAClB,MAAM,EAAE,IAAI,UAAU,QAAQ,IAAI,kDAAkD;aACrF;SACF,CAAC;IACJ,CAAC;IACD,OAAO;QACL,OAAO,EAAE,wBAAwB;QACjC,UAAU,EAAE;YACV,GAAG,IAAI;YACP,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,IAAI,UAAU,QAAQ,IAAI,4DAA4D;YAC9F,GAAG,EAAE,SAAS;SACf;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,GAAW,EACX,UAAyB,EAAE;IAE3B,MAAM,GAAG,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,YAAY,GAAiB,EAAE,CAAC;IACtC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,MAAM,CAAC;IAEhD,YAAY;IACZ,MAAM,aAAa,GAAG,SAAS,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,CAAC,IAAI,aAAa,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IAC5F,MAAM,gBAAgB,GAAG,SAAS,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,kBAAkB,CAAC;IAChG,IAAI,aAAa,EAAE,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACzB,YAAY,CAAC,IAAI,CAAC;YAChB,EAAE,EAAE,WAAW;YACf,KAAK,EAAE,WAAW;YAClB,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,gBAAgB;SACzB,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,YAAY,CAAC,IAAI,CAAC;YAChB,EAAE,EAAE,WAAW;YACf,KAAK,EAAE,WAAW;YAClB,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,iDAAiD;YACzD,GAAG,EAAE,6CAA6C;SACnD,CAAC,CAAC;IACL,CAAC;IAED,OAAO;IACP,MAAM,SAAS,GACb,aAAa,CAAC,GAAG,EAAE,QAAQ,CAAC;QAC5B,SAAS,CAAC,GAAG,EAAE;YACb,kBAAkB;YAClB,mBAAmB;YACnB,mBAAmB;YACnB,kBAAkB;YAClB,gBAAgB;YAChB,cAAc;YACd,eAAe;YACf,eAAe;SAChB,CAAC,CAAC;IACL,MAAM,WAAW,GAAG,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC;IAC7E,IAAI,SAAS,EAAE,CAAC;QACd,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrB,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;IAC3F,CAAC;SAAM,CAAC;QACN,YAAY,CAAC,IAAI,CAAC;YAChB,EAAE,EAAE,MAAM;YACV,KAAK,EAAE,MAAM;YACb,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,sCAAsC;YAC9C,GAAG,EAAE,gCAAgC;SACtC,CAAC,CAAC;IACL,CAAC;IAED,iFAAiF;IACjF,MAAM,SAAS,GACb,aAAa,CAAC,GAAG,EAAE,QAAQ,CAAC;QAC5B,SAAS,CAAC,GAAG,EAAE,CAAC,kBAAkB,EAAE,kBAAkB,EAAE,mBAAmB,CAAC,CAAC,CAAC;IAChF,IAAI,SAAS,EAAE,CAAC;QACd,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrB,YAAY,CAAC,IAAI,CAAC;YAChB,EAAE,EAAE,MAAM;YACV,KAAK,EAAE,YAAY;YACnB,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,gCAAgC;SACzC,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,YAAY,CAAC,IAAI,CAAC;YAChB,EAAE,EAAE,MAAM;YACV,KAAK,EAAE,YAAY;YACnB,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,sCAAsC;YAC9C,GAAG,EAAE,+DAA+D;SACrE,CAAC,CAAC;IACL,CAAC;IAED,QAAQ;IACR,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACzC,IAAI,QAAQ,EAAE,CAAC;QACb,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;IACjG,CAAC;SAAM,CAAC;QACN,YAAY,CAAC,IAAI,CAAC;YAChB,EAAE,EAAE,OAAO;YACX,KAAK,EAAE,OAAO;YACd,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,oCAAoC;YAC5C,GAAG,EAAE,6EAA6E;SACnF,CAAC,CAAC;IACL,CAAC;IAED,mBAAmB;IACnB,MAAM,aAAa,GACjB,aAAa,CAAC,GAAG,EAAE,kBAAkB,CAAC;QACtC,SAAS,CAAC,GAAG,EAAE,CAAC,sBAAsB,EAAE,sBAAsB,CAAC,CAAC,CAAC;IACnE,IAAI,aAAa,EAAE,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACzB,YAAY,CAAC,IAAI,CAAC;YAChB,EAAE,EAAE,UAAU;YACd,KAAK,EAAE,kBAAkB;YACzB,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,qBAAqB;SAC9B,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,YAAY,CAAC,IAAI,CAAC;YAChB,EAAE,EAAE,UAAU;YACd,KAAK,EAAE,kBAAkB;YACzB,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,0CAA0C;YAClD,GAAG,EAAE,2DAA2D;SACjE,CAAC,CAAC;IACL,CAAC;IAED,6EAA6E;IAC7E,MAAM,QAAQ,GAAG,OAAO,CAAC,iBAAiB,IAAI,CAAC,MAAM,aAAa,EAAE,CAAC,CAAC;IACtE,YAAY,CAAC,IAAI,CAAC;QAChB,EAAE,EAAE,aAAa;QACjB,KAAK,EAAE,aAAa;QACpB,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,QAAQ;YACd,CAAC,CAAC,UAAU;YACZ,CAAC,CAAC,yFAAyF;KAC9F,CAAC,CAAC;IAEH,8EAA8E;IAC9E,+EAA+E;IAC/E,0EAA0E;IAC1E,MAAM,cAAc,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;IAC7C,YAAY,CAAC,IAAI,CACf,cAAc;QACZ,CAAC,CAAC;YACE,EAAE,EAAE,eAAe;YACnB,KAAK,EAAE,eAAe;YACtB,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,yDAAyD;SAClE;QACH,CAAC,CAAC;YACE,EAAE,EAAE,eAAe;YACnB,KAAK,EAAE,eAAe;YACtB,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,2CAA2C;YACnD,GAAG,EAAE,kEAAkE;SACxE,CACN,CAAC;IAEF,2EAA2E;IAC3E,mEAAmE;IACnE,wEAAwE;IACxE,MAAM,UAAU,GACd,OAAO,CAAC,gBAAgB,KAAK,MAAM;QACjC,CAAC,CAAC;YACE,OAAO,EAAE,YAAY;YACrB,UAAU,EAAE;gBACV,EAAE,EAAE,mBAAmB;gBACvB,KAAK,EAAE,mBAAmB;gBAC1B,MAAM,EAAE,eAAe;gBACvB,MAAM,EAAE,yEAAyE;aAClF;SACF;QACH,CAAC,CAAC,MAAM,qBAAqB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IACnD,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IAEzC,OAAO;IACP,MAAM,SAAS,GAAG,SAAS,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;IACvE,YAAY,CAAC,IAAI,CACf,SAAS;QACP,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE;QAC5E,CAAC,CAAC;YACE,EAAE,EAAE,MAAM;YACV,KAAK,EAAE,MAAM;YACb,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,iBAAiB;YACzB,GAAG,EAAE,gEAAgE;SACtE,CACN,CAAC;IAEF,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC;QAC1D,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC/B,CAAC;IACD,IAAI,aAAa,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACzB,CAAC;IAED,MAAM,MAAM,GAAiB;QAC3B,SAAS,EAAE,aAAa;YACtB,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,gBAAgB,EAAE;YAC9C,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,8CAA8C,EAAE;QAC5E,IAAI,EAAE,SAAS;YACb,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE;YACzC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,8CAA8C,EAAE;QAC5E,IAAI,EAAE,SAAS;YACb,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,gCAAgC,EAAE;YAC9D,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,8CAA8C,EAAE;QAC5E,KAAK,EAAE,QAAQ;YACb,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,eAAe,EAAE;YAC7C,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,8CAA8C,EAAE;QAC5E,QAAQ,EAAE,aAAa;YACrB,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,qBAAqB,EAAE;YACnD,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,8CAA8C,EAAE;QAC5E,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,EAAE;KAClE,CAAC;IAEF,OAAO;QACL,YAAY;QACZ,MAAM;QACN,KAAK;QACL,gBAAgB,EAAE,UAAU,CAAC,OAAO;QACpC,cAAc;KACf,CAAC;AACJ,CAAC"}
|