@heyditto/cli 2.32.3 → 2.33.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 +52 -0
- package/dist/review-commands.d.ts +14 -0
- package/dist/review-commands.js +244 -1
- package/dist/review-commands.js.map +1 -1
- package/dist/review-snapshot.d.ts +39 -0
- package/dist/review-snapshot.js +360 -0
- package/dist/review-snapshot.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -222,6 +222,58 @@ heyditto search "launch notes" --include-public --filter-username peyton
|
|
|
222
222
|
|
|
223
223
|
### `review`
|
|
224
224
|
|
|
225
|
+
#### Review a working diff before opening a PR
|
|
226
|
+
|
|
227
|
+
```sh
|
|
228
|
+
heyditto review local --preview
|
|
229
|
+
heyditto review local --staged --profile quick --org omniaura
|
|
230
|
+
heyditto review local --base main --context-file .tmp/task.md --output json
|
|
231
|
+
heyditto review local-status <run-id> --org omniaura
|
|
232
|
+
heyditto review local-cancel <run-id> --org omniaura
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
`local` uses your existing login and selected organization, and the current
|
|
236
|
+
checkout's GitHub origin identifies its configured Review repository. Override
|
|
237
|
+
that mapping with `--repository owner/name`, or the checkout with `--directory`.
|
|
238
|
+
The backend must support local Review runs and the repository must be enabled.
|
|
239
|
+
The same permissions and spending policy as manual PR reviews apply.
|
|
240
|
+
|
|
241
|
+
The default reviews staged, unstaged and eligible untracked changes. `--staged`
|
|
242
|
+
reviews the index bytes, including when a file also has unstaged edits.
|
|
243
|
+
`--base main` includes branch and working changes since the merge base with
|
|
244
|
+
`main`. It cannot be combined with `--staged`. No commit, push, PR or index
|
|
245
|
+
mutation is required.
|
|
246
|
+
|
|
247
|
+
`--preview` is offline: it shows the selected paths, snapshot digest, file and
|
|
248
|
+
byte counts, exclusions and omitted context without logging in or uploading.
|
|
249
|
+
Running without `--preview` uploads the selected source changes and bounded
|
|
250
|
+
surrounding tracked source to Ditto Review, which uses the existing independent
|
|
251
|
+
review and verification engine. The immutable snapshot is limited to 16 MiB of
|
|
252
|
+
decoded source and 4096 files per tree. Every eligible changed file must fit;
|
|
253
|
+
nearby surrounding files fill the remaining budget. Binary files, symlinks and
|
|
254
|
+
submodules are recorded as skipped rather than followed or executed.
|
|
255
|
+
Git paths must be valid UTF-8. Unsupported path encodings abort capture before
|
|
256
|
+
upload rather than changing path identity or silently omitting changes.
|
|
257
|
+
|
|
258
|
+
Choose `quick` (default), `standard` or `deep`. The service returns the effective
|
|
259
|
+
time and budget ceilings; queue and capture time are additional. These profiles
|
|
260
|
+
are effort policies, not measured speed guarantees. `--timeout` bounds the
|
|
261
|
+
whole CLI operation and requests cancellation when it expires. Ctrl-C also
|
|
262
|
+
requests cancellation; use the printed run ID to inspect or cancel a run later.
|
|
263
|
+
An uncertain admission is identified by its request ID and is never retried
|
|
264
|
+
automatically. Use the printed recovery command with `--request-id <uuid>` to
|
|
265
|
+
recover that same admission. The server reuses the original run for identical
|
|
266
|
+
input and refuses changes to the source snapshot, profile or context under that
|
|
267
|
+
ID, so this recovery does not start another paid attempt.
|
|
268
|
+
|
|
269
|
+
Readable and JSON results identify the reviewed snapshot, findings, coverage,
|
|
270
|
+
cost receipts and whether the current working tree still matches. Partial
|
|
271
|
+
reviews return a nonzero exit code. Bounded surrounding context is stated
|
|
272
|
+
explicitly; "no findings in reviewed scope" is not an assertion that the
|
|
273
|
+
checkout is bug-free. Results are unpublished local reviews and post nothing
|
|
274
|
+
to GitHub. Organization learning-memory and complete hosted repository-policy
|
|
275
|
+
parity remain separate capabilities and are not implied by this command.
|
|
276
|
+
|
|
225
277
|
Manage Ditto Review and follow reviews from either `ditto` or `heyditto`.
|
|
226
278
|
Commands use your selected organization (`orgs use`) or `--org`; without one,
|
|
227
279
|
they use your personal workspace. Repositories must already be set up for
|
|
@@ -82,6 +82,20 @@ interface WatchOptions extends ScopeOptions {
|
|
|
82
82
|
timeout?: string;
|
|
83
83
|
watch?: boolean;
|
|
84
84
|
}
|
|
85
|
+
interface LocalOptions extends ScopeOptions {
|
|
86
|
+
staged?: boolean;
|
|
87
|
+
base?: string;
|
|
88
|
+
profile?: string;
|
|
89
|
+
contextFile?: string;
|
|
90
|
+
repository?: string;
|
|
91
|
+
directory?: string;
|
|
92
|
+
preview?: boolean;
|
|
93
|
+
timeout?: string;
|
|
94
|
+
requestId?: string;
|
|
95
|
+
}
|
|
96
|
+
export declare function cmdReviewLocal(options: LocalOptions): Promise<void>;
|
|
97
|
+
export declare function cmdReviewLocalStatus(id: string, options: ScopeOptions): Promise<void>;
|
|
98
|
+
export declare function cmdReviewLocalCancel(id: string, options: ScopeOptions): Promise<void>;
|
|
85
99
|
export declare function cmdReviewRuns(fullName: string | undefined, options: ScopeOptions): Promise<void>;
|
|
86
100
|
export declare function cmdReviewPulls(fullName: string, options: ScopeOptions): Promise<void>;
|
|
87
101
|
export declare function cmdReviewStatus(id: string, options: ScopeOptions): Promise<void>;
|
package/dist/review-commands.js
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import { readFile } from "node:fs/promises";
|
|
2
|
+
import { randomUUID } from "node:crypto";
|
|
3
|
+
import path from "node:path";
|
|
2
4
|
import { setTimeout as delay } from "node:timers/promises";
|
|
3
|
-
import { apiFetch, resolveCompany } from "./api.js";
|
|
5
|
+
import { ApiError, apiFetch, resolveCompany } from "./api.js";
|
|
4
6
|
import { registerReviewFindingCommands } from "./review-findings.js";
|
|
5
7
|
import { readStoredAuth } from "./store.js";
|
|
8
|
+
import { captureReviewSnapshot, reviewGit } from "./review-snapshot.js";
|
|
6
9
|
/** The server's bounds (backend reviewLimits). */
|
|
7
10
|
const MIN_MAX_MINUTES = 5;
|
|
8
11
|
const MAX_MAX_MINUTES = 45;
|
|
@@ -23,6 +26,230 @@ export async function listReviewRepositories(company) {
|
|
|
23
26
|
const out = await apiFetch(`/api/v5/review${scopeQuery(company)}`);
|
|
24
27
|
return out.repositories ?? [];
|
|
25
28
|
}
|
|
29
|
+
function repositoryFromRemote(remote) {
|
|
30
|
+
const match = /^(?:git@github\.com:|https?:\/\/github\.com\/|ssh:\/\/git@github\.com\/)([^/\s]+\/[^/\s]+?)(?:\.git)?\/?$/.exec(remote.trim());
|
|
31
|
+
if (!match)
|
|
32
|
+
throw new Error("cannot identify a GitHub repository from origin; pass --repository <owner/name>");
|
|
33
|
+
return match[1];
|
|
34
|
+
}
|
|
35
|
+
function printLocalRun(run, options) {
|
|
36
|
+
if (isJSON(options))
|
|
37
|
+
return writeJSON(run);
|
|
38
|
+
const result = run.result;
|
|
39
|
+
process.stdout.write(`Local review ${run.status} · ${run.profile}\nRun: ${run.runId}\nSnapshot: ${run.snapshotDigest}\n`);
|
|
40
|
+
const findings = result?.findings?.filter(f => !f.status || f.status === "posted") ?? [];
|
|
41
|
+
const reportable = result && (Array.isArray(result.findings) || result.complete === true) && ["completed", "partial"].includes(run.status);
|
|
42
|
+
if (reportable) {
|
|
43
|
+
process.stdout.write(`${findings.length ? `${findings.length} finding${findings.length === 1 ? "" : "s"} in reviewed scope` : "No findings in reviewed scope"}\n`);
|
|
44
|
+
for (const f of findings)
|
|
45
|
+
process.stdout.write(`\n${f.severity ?? "finding"} · ${f.path ?? ""}:${f.line ?? f.startLine ?? ""} · ${f.title ?? ""}\n${f.body ?? f.explanation ?? ""}\n`);
|
|
46
|
+
}
|
|
47
|
+
else
|
|
48
|
+
process.stdout.write("No review result is available for this run.\n");
|
|
49
|
+
if (!result?.complete || run.status !== "completed")
|
|
50
|
+
process.stdout.write("Review incomplete; check coverage and errors before relying on this result.\n");
|
|
51
|
+
if (result?.local?.contextComplete === false)
|
|
52
|
+
process.stdout.write("Surrounding context was bounded; omitted files were not reviewed.\n");
|
|
53
|
+
if (run.workspaceCurrent === false)
|
|
54
|
+
process.stdout.write("The working tree changed after capture; these findings describe the saved snapshot.\n");
|
|
55
|
+
if (run.workspaceCurrent === null)
|
|
56
|
+
process.stdout.write("Current working-tree identity could not be checked; these findings describe the saved snapshot.\n");
|
|
57
|
+
process.stdout.write(`Limits: ${run.maxSeconds}s, ${money(run.budgetCents)} maximum inference budget\n`);
|
|
58
|
+
if (run.chargedCredits !== undefined)
|
|
59
|
+
process.stdout.write(`Charged: ${run.chargedCredits} credits${run.creditsPerDollar ? ` (${run.creditsPerDollar} credits/USD)` : ""}\n`);
|
|
60
|
+
if (run.error || result?.error)
|
|
61
|
+
process.stdout.write(`Error: ${run.error || result?.error}\n`);
|
|
62
|
+
}
|
|
63
|
+
async function pollLocalRun(route, signal) {
|
|
64
|
+
for (let attempt = 0;; attempt++) {
|
|
65
|
+
try {
|
|
66
|
+
return await apiFetch(route, { signal });
|
|
67
|
+
}
|
|
68
|
+
catch (error) {
|
|
69
|
+
const transient = error instanceof TypeError || (error instanceof ApiError && (error.status >= 500 || [408, 429].includes(error.status)));
|
|
70
|
+
if (!transient || signal.aborted || attempt === 2)
|
|
71
|
+
throw error;
|
|
72
|
+
process.stderr.write("Review status is temporarily unavailable; retrying the read.\n");
|
|
73
|
+
await delay(500 * (attempt + 1), undefined, { signal });
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
export async function cmdReviewLocal(options) {
|
|
78
|
+
if (options.staged && options.base)
|
|
79
|
+
throw new Error("--staged and --base cannot be used together");
|
|
80
|
+
const profile = options.profile ?? "quick";
|
|
81
|
+
if (!["quick", "standard", "deep"].includes(profile))
|
|
82
|
+
throw new Error("--profile must be quick, standard or deep");
|
|
83
|
+
if (options.requestId) {
|
|
84
|
+
try {
|
|
85
|
+
runPath(options.requestId);
|
|
86
|
+
}
|
|
87
|
+
catch {
|
|
88
|
+
throw new Error("--request-id must be a UUID");
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
const timeout = intFlag("--timeout", options.timeout ?? "1200", 1, 1800) * 1000;
|
|
92
|
+
const context = options.contextFile ? new TextDecoder("utf-8", { fatal: true }).decode(await readFile(options.contextFile)) : undefined;
|
|
93
|
+
if (context && (Buffer.byteLength(context) > 16000 || context.includes("\0")))
|
|
94
|
+
throw new Error("--context-file must contain at most 16000 UTF-8 bytes without NUL characters");
|
|
95
|
+
// Preview deliberately has no auth or network dependency.
|
|
96
|
+
const company = options.preview ? undefined : await resolveScope(options);
|
|
97
|
+
const repos = options.preview ? [] : await listReviewRepositories(company);
|
|
98
|
+
const controller = new AbortController();
|
|
99
|
+
let interrupted = 0, timedOut = false, runId, posted = false, capturedRoot;
|
|
100
|
+
const interrupt = (signal) => { interrupted = signal === "SIGTERM" ? 143 : 130; controller.abort(); };
|
|
101
|
+
const onInt = () => interrupt("SIGINT"), onTerm = () => interrupt("SIGTERM");
|
|
102
|
+
process.on("SIGINT", onInt);
|
|
103
|
+
process.on("SIGTERM", onTerm);
|
|
104
|
+
const timer = setTimeout(() => { timedOut = true; controller.abort(); }, timeout);
|
|
105
|
+
const requestId = options.requestId?.toLowerCase() ?? randomUUID();
|
|
106
|
+
const recovery = () => {
|
|
107
|
+
const args = ["heyditto", "review", "local", "--request-id", requestId, "--profile", profile];
|
|
108
|
+
if (capturedRoot)
|
|
109
|
+
args.push("--directory", capturedRoot);
|
|
110
|
+
if (options.staged)
|
|
111
|
+
args.push("--staged");
|
|
112
|
+
if (options.base)
|
|
113
|
+
args.push("--base", options.base);
|
|
114
|
+
if (options.contextFile)
|
|
115
|
+
args.push("--context-file", path.resolve(options.contextFile));
|
|
116
|
+
if (options.repository)
|
|
117
|
+
args.push("--repository", options.repository);
|
|
118
|
+
if (company)
|
|
119
|
+
args.push("--org", company.id);
|
|
120
|
+
return args.map(arg => /^[a-zA-Z0-9_./:=@-]+$/.test(arg) ? arg : "'" + arg.replaceAll("'", "'\\''") + "'").join(" ");
|
|
121
|
+
};
|
|
122
|
+
try {
|
|
123
|
+
const captured = await captureReviewSnapshot({ staged: options.staged, base: options.base, cwd: options.directory, signal: controller.signal });
|
|
124
|
+
capturedRoot = captured.root;
|
|
125
|
+
const { snapshot } = captured;
|
|
126
|
+
const preview = {
|
|
127
|
+
requestId, profile, snapshotDigest: snapshot.digest, mode: snapshot.mode, baseSha: snapshot.baseSha,
|
|
128
|
+
changedPaths: snapshot.changedPaths, baseFileCount: snapshot.baseFiles.length, headFileCount: snapshot.headFiles.length,
|
|
129
|
+
contentBytes: captured.bytes, payloadBytes: Buffer.byteLength(JSON.stringify({ requestId, snapshot, profile, context })),
|
|
130
|
+
contextComplete: snapshot.contextComplete, omittedContext: snapshot.omittedContext, skipped: snapshot.skipped,
|
|
131
|
+
};
|
|
132
|
+
if (options.preview) {
|
|
133
|
+
if (isJSON(options))
|
|
134
|
+
return writeJSON(preview);
|
|
135
|
+
process.stdout.write(`Local review preview · ${profile}\nSnapshot: ${snapshot.digest}\nSelected changes: ${snapshot.changedPaths.length}\nContext files: ${snapshot.headFiles.length} (${captured.bytes} decoded bytes; ${preview.payloadBytes} payload bytes)\n`);
|
|
136
|
+
for (const file of snapshot.changedPaths)
|
|
137
|
+
process.stdout.write(` ${file}\n`);
|
|
138
|
+
process.stdout.write(`Omitted context: ${snapshot.omittedContext.length}; skipped files: ${snapshot.skipped.length}\nNo source uploaded; no review started.\n`);
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
if (!snapshot.changedPaths.length) {
|
|
142
|
+
const empty = { status: "skipped", reason: "no_changes", snapshotDigest: snapshot.digest, changedPaths: [] };
|
|
143
|
+
if (isJSON(options))
|
|
144
|
+
writeJSON(empty);
|
|
145
|
+
else
|
|
146
|
+
process.stdout.write("No working-diff changes to review.\n");
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
const fullName = options.repository ?? repositoryFromRemote((await reviewGit(captured.root, ["remote", "get-url", "origin"], undefined, controller.signal)).toString("utf8"));
|
|
150
|
+
const repo = repos.find(r => r.fullName.toLowerCase() === fullName.toLowerCase());
|
|
151
|
+
if (!repo)
|
|
152
|
+
throw new Error(`${fullName} is not set up in this workspace; see heyditto review repos${options.org ? ` --org ${options.org}` : ""}`);
|
|
153
|
+
process.stderr.write(`Uploading ${snapshot.changedPaths.length} changed paths with ${snapshot.headFiles.length} context files (${preview.payloadBytes} bytes) for ${profile} review; omitted context: ${snapshot.omittedContext.length}.\nRequest: ${requestId}\n`);
|
|
154
|
+
if (controller.signal.aborted)
|
|
155
|
+
throw controller.signal.reason;
|
|
156
|
+
posted = true;
|
|
157
|
+
// Complete the admission response even on Ctrl-C so a returned run can be
|
|
158
|
+
// cancelled. An uncertain POST is never retried automatically.
|
|
159
|
+
let run = await apiFetch(`/api/v5/review/repositories/${encodeURIComponent(repo.id)}/local${scopeQuery(company)}`, {
|
|
160
|
+
method: "POST", body: { requestId, snapshot, profile, ...(context ? { context } : {}) }, signal: AbortSignal.timeout(30000),
|
|
161
|
+
});
|
|
162
|
+
try {
|
|
163
|
+
runPath(run.runId);
|
|
164
|
+
}
|
|
165
|
+
catch {
|
|
166
|
+
throw new Error("Review API returned no valid run ID");
|
|
167
|
+
}
|
|
168
|
+
runId = run.runId;
|
|
169
|
+
process.stderr.write(`Local review run: ${runId}\n`);
|
|
170
|
+
const route = `/api/v5/review/local/runs/${encodeURIComponent(runId)}`;
|
|
171
|
+
let prior = "";
|
|
172
|
+
for (;;) {
|
|
173
|
+
if (controller.signal.aborted)
|
|
174
|
+
throw controller.signal.reason;
|
|
175
|
+
if (run.status !== prior) {
|
|
176
|
+
process.stderr.write(`Local review: ${run.status}\n`);
|
|
177
|
+
prior = run.status;
|
|
178
|
+
}
|
|
179
|
+
if (TERMINAL_REVIEW_STATUSES.has(run.status)) {
|
|
180
|
+
if (run.snapshotDigest !== snapshot.digest)
|
|
181
|
+
throw new Error("Review API returned a result for a different snapshot");
|
|
182
|
+
clearTimeout(timer);
|
|
183
|
+
try {
|
|
184
|
+
const current = await captureReviewSnapshot({ staged: options.staged, base: options.base, cwd: captured.root, signal: AbortSignal.any([controller.signal, AbortSignal.timeout(10000)]) });
|
|
185
|
+
run.workspaceCurrent = current.snapshot.digest === snapshot.digest;
|
|
186
|
+
}
|
|
187
|
+
catch {
|
|
188
|
+
run.workspaceCurrent = null;
|
|
189
|
+
run.workspaceCurrentReason = "Snapshot could not be recaptured";
|
|
190
|
+
}
|
|
191
|
+
printLocalRun(run, options);
|
|
192
|
+
if (interrupted)
|
|
193
|
+
process.exitCode = interrupted;
|
|
194
|
+
else if (["failed", "cancelled", "partial"].includes(run.status) || (run.status === "completed" && run.result?.complete !== true))
|
|
195
|
+
process.exitCode = 1;
|
|
196
|
+
return;
|
|
197
|
+
}
|
|
198
|
+
if (!ACTIVE_REVIEW_STATUSES.has(run.status))
|
|
199
|
+
throw new Error(`unknown local review status: ${run.status}`);
|
|
200
|
+
await delay(500, undefined, { signal: controller.signal });
|
|
201
|
+
run = await pollLocalRun(`${route}${scopeQuery(company)}`, controller.signal);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
catch (error) {
|
|
205
|
+
if (runId) {
|
|
206
|
+
try {
|
|
207
|
+
await apiFetch(`/api/v5/review/local/runs/${encodeURIComponent(runId)}/cancel${scopeQuery(company)}`, { method: "POST", signal: AbortSignal.timeout(5000) });
|
|
208
|
+
process.stderr.write(`Cancellation requested for ${runId}.\n`);
|
|
209
|
+
}
|
|
210
|
+
catch {
|
|
211
|
+
process.stderr.write(`Could not confirm cancellation of ${runId}; use heyditto review local-status ${runId}${options.org ? ` --org ${options.org}` : ""} to inspect it.\n`);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
if (interrupted || timedOut) {
|
|
215
|
+
process.stderr.write(`${timedOut ? "Local review timed out" : "Local review interrupted"}${runId ? ` (run ${runId})` : posted ? `; admission outcome is unknown (request ${requestId})` : ""}.\n`);
|
|
216
|
+
if (posted && !runId)
|
|
217
|
+
process.stderr.write(`Recover the same admission: ${recovery()}\nChanged source, profile or context is refused; no automatic retry was made.\n`);
|
|
218
|
+
process.exitCode = interrupted || 124;
|
|
219
|
+
return;
|
|
220
|
+
}
|
|
221
|
+
if (posted && !runId && error instanceof ApiError && error.status >= 400 && error.status < 500) {
|
|
222
|
+
if (error.status === 404)
|
|
223
|
+
throw new Error("The local review endpoint is unavailable on this Ditto backend; no local review was admitted.");
|
|
224
|
+
throw error;
|
|
225
|
+
}
|
|
226
|
+
if (posted && !runId)
|
|
227
|
+
throw new Error(`${error instanceof Error ? error.message : String(error)}\nAdmission outcome is unknown; request ${requestId}.\nRecover the same admission: ${recovery()}\nChanged source, profile or context is refused; no automatic retry was made.`);
|
|
228
|
+
throw error;
|
|
229
|
+
}
|
|
230
|
+
finally {
|
|
231
|
+
clearTimeout(timer);
|
|
232
|
+
process.removeListener("SIGINT", onInt);
|
|
233
|
+
process.removeListener("SIGTERM", onTerm);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
export async function cmdReviewLocalStatus(id, options) {
|
|
237
|
+
runPath(id);
|
|
238
|
+
const company = await resolveScope(options);
|
|
239
|
+
const run = await apiFetch(`/api/v5/review/local/runs/${encodeURIComponent(id)}${scopeQuery(company)}`);
|
|
240
|
+
run.workspaceCurrent = null;
|
|
241
|
+
run.workspaceCurrentReason = "Status reads do not recapture a local checkout";
|
|
242
|
+
printLocalRun(run, options);
|
|
243
|
+
}
|
|
244
|
+
export async function cmdReviewLocalCancel(id, options) {
|
|
245
|
+
runPath(id);
|
|
246
|
+
const company = await resolveScope(options);
|
|
247
|
+
const result = await apiFetch(`/api/v5/review/local/runs/${encodeURIComponent(id)}/cancel${scopeQuery(company)}`, { method: "POST" });
|
|
248
|
+
if (isJSON(options))
|
|
249
|
+
writeJSON(result);
|
|
250
|
+
else
|
|
251
|
+
process.stdout.write(`Cancellation requested for local review ${id}.\n`);
|
|
252
|
+
}
|
|
26
253
|
const TERMINAL_REVIEW_STATUSES = new Set(["completed", "partial", "failed", "cancelled", "skipped", "superseded"]);
|
|
27
254
|
const ACTIVE_REVIEW_STATUSES = new Set(["queued", "running", "publishing"]);
|
|
28
255
|
function runPath(id) {
|
|
@@ -399,6 +626,22 @@ export function registerReviewCommands(program, addExamples, outputOption, orgOp
|
|
|
399
626
|
.action(cmdReviewRepos), ` heyditto review repos --org omni-aura
|
|
400
627
|
heyditto review repos --output json`);
|
|
401
628
|
const scoped = (command) => command.addOption(orgOption()).addOption(outputOption());
|
|
629
|
+
addExamples(scoped(review.command("local")
|
|
630
|
+
.description("review a working diff before a PR; uploads selected changes and bounded tracked source context to Ditto Review")
|
|
631
|
+
.option("--staged", "review index bytes only, excluding unstaged and untracked changes")
|
|
632
|
+
.option("--base <ref>", "review branch and working changes since merge-base(ref, HEAD); conflicts with --staged")
|
|
633
|
+
.option("--profile <profile>", "quick, standard or deep (default quick)", "quick")
|
|
634
|
+
.option("--context-file <file>", "read task context from a UTF-8 file (maximum 16000 bytes)")
|
|
635
|
+
.option("--repository <owner/name>", "Review repository (default: current checkout's GitHub origin)")
|
|
636
|
+
.option("--directory <directory>", "checkout to review (default: current directory)")
|
|
637
|
+
.option("--preview", "inspect selected paths and upload size locally; no auth, upload or inference")
|
|
638
|
+
.option("--timeout <seconds>", "cancel after this many seconds including capture and queue time (1-1800)", "1200")
|
|
639
|
+
.option("--request-id <uuid>", "recover an uncertain admission with exactly the same source, profile and context"))
|
|
640
|
+
.action(cmdReviewLocal), ` heyditto review local --preview\n heyditto review local --staged --profile quick --org omniaura\n heyditto review local --base main --context-file .tmp/task.md --output json`);
|
|
641
|
+
scoped(review.command("local-status").description("inspect a pre-PR review run without starting or retrying it")
|
|
642
|
+
.argument("<run-id>", "local review run UUID")).action(cmdReviewLocalStatus);
|
|
643
|
+
scoped(review.command("local-cancel").description("cancel a queued or running pre-PR review")
|
|
644
|
+
.argument("<run-id>", "local review run UUID")).action(cmdReviewLocalCancel);
|
|
402
645
|
const watched = (command) => command
|
|
403
646
|
.option("--interval <seconds>", "poll interval (1-60 seconds)", "10")
|
|
404
647
|
.option("--timeout <seconds>", "stop waiting after this many seconds (review continues)", "3600");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review-commands.js","sourceRoot":"","sources":["../src/review-commands.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"review-commands.js","sourceRoot":"","sources":["../src/review-commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,UAAU,IAAI,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAgB,cAAc,EAAE,MAAM,UAAU,CAAC;AAC5E,OAAO,EAAE,6BAA6B,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAqExE,kDAAkD;AAClD,MAAM,eAAe,GAAG,CAAC,CAAC;AAC1B,MAAM,eAAe,GAAG,EAAE,CAAC;AAC3B,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAEhC,SAAS,MAAM,CAAC,OAA4B;IAC1C,OAAO,OAAO,CAAC,MAAM,KAAK,MAAM,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,CAAC;AAC/D,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,OAAqB;IAC/C,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,cAAc,EAAE,CAAC,EAAE,cAAc,CAAC;IAC/E,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAC9B,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC;AAChC,CAAC;AAED,SAAS,UAAU,CAAC,OAA4B;IAC9C,OAAO,OAAO,CAAC,CAAC,CAAC,YAAY,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACrE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,OAA4B;IACvE,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAwC,iBAAiB,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC1G,OAAO,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC;AAChC,CAAC;AAqED,SAAS,oBAAoB,CAAC,MAAc;IAC1C,MAAM,KAAK,GAAG,2GAA2G,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9I,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,iFAAiF,CAAC,CAAC;IAC/G,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,SAAS,aAAa,CAAC,GAAa,EAAE,OAAqB;IACzD,IAAI,MAAM,CAAC,OAAO,CAAC;QAAE,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;IAC1B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,GAAG,CAAC,MAAM,MAAM,GAAG,CAAC,OAAO,UAAU,GAAG,CAAC,KAAK,eAAe,GAAG,CAAC,cAAc,IAAI,CAAC,CAAC;IAC1H,MAAM,QAAQ,GAAG,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC;IACzF,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,QAAQ,KAAK,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3I,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,WAAW,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,oBAAoB,CAAC,CAAC,CAAC,+BAA+B,IAAI,CAAC,CAAC;QACnK,KAAK,MAAM,CAAC,IAAI,QAAQ;YAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,IAAI,SAAS,MAAM,CAAC,CAAC,IAAI,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,SAAS,IAAI,EAAE,MAAM,CAAC,CAAC,KAAK,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,WAAW,IAAI,EAAE,IAAI,CAAC,CAAC;IACzL,CAAC;;QAAM,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;IAC7E,IAAI,CAAC,MAAM,EAAE,QAAQ,IAAI,GAAG,CAAC,MAAM,KAAK,WAAW;QAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,+EAA+E,CAAC,CAAC;IAC3J,IAAI,MAAM,EAAE,KAAK,EAAE,eAAe,KAAK,KAAK;QAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qEAAqE,CAAC,CAAC;IAC1I,IAAI,GAAG,CAAC,gBAAgB,KAAK,KAAK;QAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,uFAAuF,CAAC,CAAC;IAClJ,IAAI,GAAG,CAAC,gBAAgB,KAAK,IAAI;QAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mGAAmG,CAAC,CAAC;IAC7J,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,UAAU,MAAM,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,6BAA6B,CAAC,CAAC;IACzG,IAAI,GAAG,CAAC,cAAc,KAAK,SAAS;QAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,cAAc,WAAW,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,gBAAgB,eAAe,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAC9K,IAAI,GAAG,CAAC,KAAK,IAAI,MAAM,EAAE,KAAK;QAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,KAAK,IAAI,MAAM,EAAE,KAAK,IAAI,CAAC,CAAC;AACjG,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,KAAa,EAAE,MAAmB;IAC5D,KAAK,IAAI,OAAO,GAAG,CAAC,GAAI,OAAO,EAAE,EAAE,CAAC;QAClC,IAAI,CAAC;YAAC,OAAO,MAAM,QAAQ,CAAW,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QAAC,CAAC;QAC3D,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,SAAS,GAAG,KAAK,YAAY,SAAS,IAAI,CAAC,KAAK,YAAY,QAAQ,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC1I,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,OAAO,IAAI,OAAO,KAAK,CAAC;gBAAE,MAAM,KAAK,CAAC;YAC/D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gEAAgE,CAAC,CAAC;YACvF,MAAM,KAAK,CAAC,GAAG,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAAqB;IACxD,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACnG,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC;IAC3C,IAAI,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IACnH,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QAAC,IAAI,CAAC;YAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QAAC,CAAC;IAAC,CAAC;IACxH,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,IAAI,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC;IAChF,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACxI,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,KAAK,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,8EAA8E,CAAC,CAAC;IAC/K,0DAA0D;IAC1D,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;IAC1E,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAC3E,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,IAAI,WAAW,GAAG,CAAC,EAAE,QAAQ,GAAG,KAAK,EAAE,KAAyB,EAAE,MAAM,GAAG,KAAK,EAAE,YAAgC,CAAC;IACnH,MAAM,SAAS,GAAG,CAAC,MAAsB,EAAE,EAAE,GAAG,WAAW,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;IACtH,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7E,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAC3D,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,GAAG,QAAQ,GAAG,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAClF,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,EAAE,WAAW,EAAE,IAAI,UAAU,EAAE,CAAC;IACnE,MAAM,QAAQ,GAAG,GAAW,EAAE;QAC5B,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;QAC9F,IAAI,YAAY;YAAE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;QACzD,IAAI,OAAO,CAAC,MAAM;YAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1C,IAAI,OAAO,CAAC,IAAI;YAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QACpD,IAAI,OAAO,CAAC,WAAW;YAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;QACxF,IAAI,OAAO,CAAC,UAAU;YAAE,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;QACtE,IAAI,OAAO;YAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,uBAAuB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvH,CAAC,CAAC;IACF,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;QAChJ,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC;QAC7B,MAAM,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC;QAC9B,MAAM,OAAO,GAAG;YACd,SAAS,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO;YACnG,YAAY,EAAE,QAAQ,CAAC,YAAY,EAAE,aAAa,EAAE,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,aAAa,EAAE,QAAQ,CAAC,SAAS,CAAC,MAAM;YACvH,YAAY,EAAE,QAAQ,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;YACxH,eAAe,EAAE,QAAQ,CAAC,eAAe,EAAE,cAAc,EAAE,QAAQ,CAAC,cAAc,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO;SAC9G,CAAC;QACF,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,IAAI,MAAM,CAAC,OAAO,CAAC;gBAAE,OAAO,SAAS,CAAC,OAAO,CAAC,CAAC;YAC/C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,OAAO,eAAe,QAAQ,CAAC,MAAM,uBAAuB,QAAQ,CAAC,YAAY,CAAC,MAAM,oBAAoB,QAAQ,CAAC,SAAS,CAAC,MAAM,KAAK,QAAQ,CAAC,KAAK,mBAAmB,OAAO,CAAC,YAAY,mBAAmB,CAAC,CAAC;YACnQ,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,YAAY;gBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC;YAC9E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,QAAQ,CAAC,cAAc,CAAC,MAAM,oBAAoB,QAAQ,CAAC,OAAO,CAAC,MAAM,4CAA4C,CAAC,CAAC;YAChK,OAAO;QACT,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;YAClC,MAAM,KAAK,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;YAC7G,IAAI,MAAM,CAAC,OAAO,CAAC;gBAAE,SAAS,CAAC,KAAK,CAAC,CAAC;;gBAAM,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;YACzG,OAAO;QACT,CAAC;QACD,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,IAAI,oBAAoB,CAAC,CAAC,MAAM,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QAC9K,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;QAClF,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,QAAQ,8DAA8D,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAClJ,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,QAAQ,CAAC,YAAY,CAAC,MAAM,uBAAuB,QAAQ,CAAC,SAAS,CAAC,MAAM,mBAAmB,OAAO,CAAC,YAAY,eAAe,OAAO,6BAA6B,QAAQ,CAAC,cAAc,CAAC,MAAM,eAAe,SAAS,IAAI,CAAC,CAAC;QACpQ,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO;YAAE,MAAM,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC;QAC9D,MAAM,GAAG,IAAI,CAAC;QACd,0EAA0E;QAC1E,+DAA+D;QAC/D,IAAI,GAAG,GAAG,MAAM,QAAQ,CAAW,+BAA+B,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,UAAU,CAAC,OAAO,CAAC,EAAE,EAAE;YAC3H,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC;SAC5H,CAAC,CAAC;QACH,IAAI,CAAC;YAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QAAC,CAAC;QAC7F,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;QAClB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,KAAK,IAAI,CAAC,CAAC;QACrD,MAAM,KAAK,GAAG,6BAA6B,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC;QACvE,IAAI,KAAK,GAAG,EAAE,CAAC;QACf,SAAS,CAAC;YACR,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO;gBAAE,MAAM,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC;YAC9D,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;gBAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;gBAAC,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC;YAAC,CAAC;YACxG,IAAI,wBAAwB,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC7C,IAAI,GAAG,CAAC,cAAc,KAAK,QAAQ,CAAC,MAAM;oBAAE,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;gBACrH,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,IAAI,CAAC;oBACH,MAAM,OAAO,GAAG,MAAM,qBAAqB,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBAC1L,GAAG,CAAC,gBAAgB,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,CAAC;gBACrE,CAAC;gBAAC,MAAM,CAAC;oBAAC,GAAG,CAAC,gBAAgB,GAAG,IAAI,CAAC;oBAAC,GAAG,CAAC,sBAAsB,GAAG,kCAAkC,CAAC;gBAAC,CAAC;gBACzG,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;gBAC5B,IAAI,WAAW;oBAAE,OAAO,CAAC,QAAQ,GAAG,WAAW,CAAC;qBAC3C,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,WAAW,IAAI,GAAG,CAAC,MAAM,EAAE,QAAQ,KAAK,IAAI,CAAC;oBAAE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;gBACxJ,OAAO;YACT,CAAC;YACD,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;YAC3G,MAAM,KAAK,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;YAC3D,GAAG,GAAG,MAAM,YAAY,CAAC,GAAG,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,EAAE,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;QAChF,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC;gBACH,MAAM,QAAQ,CAAC,6BAA6B,kBAAkB,CAAC,KAAK,CAAC,UAAU,UAAU,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC7J,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,8BAA8B,KAAK,KAAK,CAAC,CAAC;YACjE,CAAC;YAAC,MAAM,CAAC;gBAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qCAAqC,KAAK,sCAAsC,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC;YAAC,CAAC;QAC1L,CAAC;QACD,IAAI,WAAW,IAAI,QAAQ,EAAE,CAAC;YAC5B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,0BAA0B,GAAG,KAAK,CAAC,CAAC,CAAC,SAAS,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,2CAA2C,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YACnM,IAAI,MAAM,IAAI,CAAC,KAAK;gBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,+BAA+B,QAAQ,EAAE,iFAAiF,CAAC,CAAC;YACvK,OAAO,CAAC,QAAQ,GAAG,WAAW,IAAI,GAAG,CAAC;YACtC,OAAO;QACT,CAAC;QACD,IAAI,MAAM,IAAI,CAAC,KAAK,IAAI,KAAK,YAAY,QAAQ,IAAI,KAAK,CAAC,MAAM,IAAI,GAAG,IAAI,KAAK,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;YAC/F,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG;gBAAE,MAAM,IAAI,KAAK,CAAC,+FAA+F,CAAC,CAAC;YAC3I,MAAM,KAAK,CAAC;QACd,CAAC;QACD,IAAI,MAAM,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,2CAA2C,SAAS,kCAAkC,QAAQ,EAAE,+EAA+E,CAAC,CAAC;QAChR,MAAM,KAAK,CAAC;IACd,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,KAAK,CAAC,CAAC;QAAC,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAAC,OAAO,CAAC,cAAc,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAC1G,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,EAAU,EAAE,OAAqB;IAC1E,OAAO,CAAC,EAAE,CAAC,CAAC;IACZ,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAW,6BAA6B,kBAAkB,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAClH,GAAG,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAC5B,GAAG,CAAC,sBAAsB,GAAG,gDAAgD,CAAC;IAC9E,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,EAAU,EAAE,OAAqB;IAC1E,OAAO,CAAC,EAAE,CAAC,CAAC;IACZ,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,6BAA6B,kBAAkB,CAAC,EAAE,CAAC,UAAU,UAAU,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACtI,IAAI,MAAM,CAAC,OAAO,CAAC;QAAE,SAAS,CAAC,MAAM,CAAC,CAAC;;QAAM,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,2CAA2C,EAAE,KAAK,CAAC,CAAC;AACxH,CAAC;AAED,MAAM,wBAAwB,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC;AACnH,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC;AAE5E,SAAS,OAAO,CAAC,EAAU;IACzB,IAAI,CAAC,iEAAiE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;QAChF,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,uBAAuB,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC;AACzD,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAC,QAAgB,EAAE,OAA4B;IAChF,MAAM,KAAK,GAAG,MAAM,sBAAsB,CAAC,OAAO,CAAC,CAAC;IACpD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;IAC3F,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,QAAQ,wFAAwF,CAAC,CAAC;IAChI,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,SAAS,CAAC,KAAc;IAC/B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,QAAQ,CAAC,MAAoB,EAAE,OAAqB;IAC3D,IAAI,MAAM,CAAC,OAAO,CAAC;QAAE,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC;IAC9C,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC;IACrB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,KAAK,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAC3I,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC;IAC3D,IAAI,CAAC,CAAC,SAAS;QAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC;IAClE,IAAI,CAAC,CAAC,OAAO;QAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/E,IAAI,CAAC,CAAC,KAAK;QAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,QAA4B,EAAE,OAAqB;IACrF,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAa,iBAAiB,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC/E,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;IAC1B,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,IAAI,GAAG,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;QACtG,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,QAAQ,kCAAkC,CAAC,CAAC;QAC1E,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,MAAM,CAAC,OAAO,CAAC;QAAE,OAAO,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACvE,IAAI,CAAC,IAAI,CAAC,MAAM;QAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;IACrF,KAAK,MAAM,CAAC,IAAI,IAAI;QAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAChK,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,QAAgB,EAAE,OAAqB;IAC1E,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,MAAM,oBAAoB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC3D,MAAM,GAAG,GAAG,MAAM,QAAQ,CACxB,+BAA+B,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,UAAU,CAAC,OAAO,CAAC,EAAE,CACzF,CAAC;IACF,IAAI,MAAM,CAAC,OAAO,CAAC;QAAE,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;IAC3C,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM;QAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,IAAI,CAAC,QAAQ,KAAK,CAAC,CAAC;IAC5F,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,KAAK;QAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AACxH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,EAAU,EAAE,OAAqB;IACrE,MAAM,KAAK,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;IAC1B,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;IAC5C,QAAQ,CAAC,MAAM,QAAQ,CAAe,GAAG,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;AACpF,CAAC;AAED,SAAS,WAAW,CAAC,OAAqB;IACxC,OAAO;QACL,UAAU,EAAE,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,QAAQ,IAAI,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI;QACzE,SAAS,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,IAAI,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,GAAG,IAAI;KAC5E,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,EAAU,EAAE,OAA4B,EAAE,OAAqB;IACxF,MAAM,KAAK,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;IAC1B,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IACvD,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IAC/C,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,SAAS,CAAC;QACR,MAAM,SAAS,GAAG,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QAC/C,IAAI,SAAS,IAAI,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,EAAE,sCAAsC,CAAC,CAAC;QAC9G,IAAI,MAAoB,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,QAAQ,CAAe,GAAG,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;QACjI,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,WAAW,CAAC,GAAG,EAAE,IAAI,QAAQ;gBAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,EAAE,sCAAsC,CAAC,CAAC;YAC7H,MAAM,KAAK,CAAC;QACd,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;QACjC,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;YACrB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,MAAM,IAAI,CAAC,CAAC;YAClD,KAAK,GAAG,MAAM,CAAC;QACjB,CAAC;QACD,IAAI,wBAAwB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACzC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAC1B,IAAI,MAAM,KAAK,QAAQ;gBAAE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YAC9C,OAAO;QACT,CAAC;QACD,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,MAAM,EAAE,CAAC,CAAC;QAC7F,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/E,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,EAAU,EAAE,OAAqB;IACpE,OAAO,CAAC,EAAE,CAAC,CAAC;IACZ,WAAW,CAAC,OAAO,CAAC,CAAC;IACrB,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,WAAW,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,QAAgB,EAAE,QAAgB,EAAE,OAAqB;IAC5F,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,QAAQ,EAAE,CAAC,EAAE,aAAa,CAAC,CAAC;IAChE,IAAI,OAAO,CAAC,KAAK;QAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,MAAM,oBAAoB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC3D,MAAM,GAAG,GAAG,MAAM,QAAQ,CACxB,+BAA+B,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,MAAM,UAAU,UAAU,CAAC,OAAO,CAAC,EAAE,EACzG,EAAE,MAAM,EAAE,MAAM,EAAE,CACnB,CAAC;IACF,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,IAAI,CAAC,QAAQ,KAAK,MAAM,KAAK,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC;QACzF,IAAI,GAAG,CAAC,eAAe;YAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qGAAqG,CAAC,CAAC;QACrJ,OAAO,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAClD,CAAC;IACD,IAAI,MAAM,CAAC,OAAO,CAAC;QAAE,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;IAC3C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,KAAK,MAAM,KAAK,GAAG,CAAC,MAAM,UAAU,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC;IACxF,IAAI,GAAG,CAAC,eAAe;QAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gEAAgE,CAAC,CAAC;AAClH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,EAAU,EAAE,MAA0B,EAAE,OAAqB;IACjG,MAAM,KAAK,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;IAC1B,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,GAAG,GAAG,MAAM,QAAQ,CACxB,GAAG,KAAK,IAAI,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAC/D,CAAC;IACF,IAAI,MAAM,CAAC,OAAO,CAAC;QAAE,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;IAC3C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AACnN,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,cAAc,EAAE,cAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAU,CAAC;AAC5F,SAAS,kBAAkB,CAAC,KAAyC;IACnE,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IAC/B,OAAO,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AAChH,CAAC;AACD,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,MAAM,KAAK,GAAY,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACrH,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;YAAC,IAAI,OAAO,KAAK,KAAK,SAAS;gBAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;YAAC,SAAS;QAAC,CAAC;QAC5G,IAAI,CAAE,UAAgC,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,GAAG,EAAE,CAAC,CAAC;QACzG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7K,MAAM,IAAI,KAAK,CAAC,GAAG,GAAG,sHAAsH,CAAC,CAAC;QAChJ,CAAC;IACH,CAAC;IACD,OAAO,KAAwB,CAAC;AAClC,CAAC;AAED,SAAS,KAAK,CAAC,KAAa;IAC1B,OAAO,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;AACxC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAAqB;IACxD,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAG,MAAM,sBAAsB,CAAC,OAAO,CAAC,CAAC;IACpD,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QACpB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QAC9E,OAAO;IACT,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,8CAA8C,OAAO,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC9G,OAAO;IACT,CAAC;IACD,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAC5B,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK;QACxB,GAAG,CAAC,CAAC,UAAU,MAAM;QACrB,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC;QACpB,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,OAAO;KACV,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,CAAC,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IACxF,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC9F,KAAK,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QACpC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/G,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,qBAAqB,CAAC,IAAsB;IAC1D,OAAO;QACL,UAAU,EAAE,IAAI,CAAC,QAAQ;QACzB,GAAG,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtE,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,eAAe,EAAE,IAAI,CAAC,eAAe;QACrC,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;QAC7C,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;QACvC,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE;QACnC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,IAAI,EAAE;QAC7C,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;QACvC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;KACxC,CAAC;AACJ,CAAC;AAED,SAAS,OAAO,CAAC,IAAY,EAAE,KAAa,EAAE,GAAW,EAAE,GAAW;IACpE,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACxB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,gCAAgC,GAAG,OAAO,GAAG,EAAE,CAAC,CAAC;IACxH,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,QAAgB,EAAE,OAAmB;IACtE,MAAM,OAAO,GAA4B,EAAE,CAAC;IAC5C,IAAI,OAAO,CAAC,aAAa,IAAI,OAAO,CAAC,cAAc;QAAE,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC9H,IAAI,OAAO,CAAC,aAAa;QAAE,OAAO,CAAC,SAAS,GAAG,cAAc,CAAC,MAAM,QAAQ,CAAC,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC;IAC7G,IAAI,OAAO,CAAC,cAAc;QAAE,OAAO,CAAC,SAAS,GAAG,EAAE,CAAC;IACnD,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS;QAAE,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,eAAe,EAAE,OAAO,CAAC,UAAU,EAAE,eAAe,EAAE,eAAe,CAAC,CAAC;IAC1I,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS;QAAE,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,EAAE,gBAAgB,CAAC,CAAC;IACjI,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAClC,IAAI,OAAO,CAAC,OAAO,KAAK,IAAI,IAAI,OAAO,CAAC,OAAO,KAAK,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QAC1G,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,KAAK,IAAI,CAAC;IAC7C,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC/B,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QACjG,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC;IAC3C,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,gFAAgF,CAAC,CAAC;IACpG,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAG,MAAM,sBAAsB,CAAC,OAAO,CAAC,CAAC;IACpD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;IAC3F,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtD,MAAM,IAAI,KAAK,CACb,GAAG,QAAQ,kCAAkC,OAAO,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,2CAA2C,GAAG;YAC3H,CAAC,KAAK,CAAC,CAAC,CAAC,0BAA0B,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CACnD,CAAC;IACJ,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAmB,8BAA8B,UAAU,CAAC,OAAO,CAAC,EAAE,EAAE;QAClG,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,EAAE,GAAG,qBAAqB,CAAC,IAAI,CAAC,EAAE,GAAG,OAAO,EAAE;KACrD,CAAC,CAAC;IACH,IAAI,WAAW,IAAI,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QAC5G,0EAA0E;QAC1E,IAAI,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,OAAO,CAAC,SAA4B,CAAC,CAAC,EAAE,CAAC;YACrI,MAAM,IAAI,KAAK,CAAC,0EAA0E,CAAC,CAAC;QAC9F,CAAC;IACH,CAAC;IACD,IAAI,MAAM,CAAC,OAAO,CAAC;QAAE,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,EAAsB,CAAC;IAC1D,MAAM,KAAK,GAAG,CAAC,SAAS,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;IAC1C,IAAI,WAAW,IAAI,OAAO;QAAE,KAAK,CAAC,IAAI,CAAC,oBAAoB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAC9F,IAAI,YAAY,IAAI,OAAO;QAAE,KAAK,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,UAAU,MAAM,KAAK,CAAC,UAAU,MAAM,CAAC,CAAC;IACtG,IAAI,aAAa,IAAI,OAAO;QAAE,KAAK,CAAC,IAAI,CAAC,iBAAiB,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IACnH,IAAI,SAAS,IAAI,OAAO;QAAE,KAAK,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;IACvH,IAAI,UAAU,IAAI,OAAO,EAAE,CAAC;QAC1B,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACjC,KAAK,CAAC,IAAI,CAAC,4EAA4E,CAAC,CAAC;QAC3F,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,0DAA0D,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACpL,CAAC;IACH,CAAC;IACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChD,CAAC;AAUD,2FAA2F;AAC3F,MAAM,uBAAuB,GAAG,EAAE,CAAC;AACnC,MAAM,wBAAwB,GAAG,GAAG,CAAC;AAErC,SAAS,KAAK,CAAC,IAAY,EAAE,KAAyB;IACpD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,oBAAoB,CAAC,CAAC;IACpF,OAAO,KAAK,KAAK,IAAI,CAAC;AACxB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,QAAgB,EAAE,OAAmB;IACtE,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,CAAC,oCAAoC,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,QAAQ,uCAAuC,CAAC,CAAC;IAC1H,MAAM,UAAU,GACd,OAAO,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,EAAE,OAAO,CAAC,UAAU,EAAE,eAAe,EAAE,eAAe,CAAC,CAAC;IAC9I,MAAM,WAAW,GACf,OAAO,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,EAAE,gBAAgB,CAAC,CAAC;IACrI,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAG,KAAK,CAAC,YAAY,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAG,MAAM,sBAAsB,CAAC,OAAO,CAAC,CAAC;IACpD,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,6BAA6B,CAAC;IAC9E,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;QACvE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,sCAAsC,KAAK,0CAA0C,IAAI,MAAM,CAAC,CAAC;IAC1H,CAAC;IACD,IAAI,UAAU,GAAG,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC1C,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC1E,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CACb,IAAI,CAAC,MAAM,KAAK,CAAC;gBACf,CAAC,CAAC,gBAAgB,KAAK,oIAAoI;gBAC3J,CAAC,CAAC,qCAAqC,IAAI,CAAC,MAAM,sBAAsB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,uCAAuC,CACjI,CAAC;QACJ,CAAC;QACD,UAAU,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC;IACxB,CAAC;IACD,MAAM,IAAI,GAA4B;QACpC,QAAQ,EAAE,IAAI;QACd,UAAU;QACV,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,IAAI;QACZ,YAAY,EAAE,KAAK;QACnB,YAAY,EAAE,EAAE;QAChB,WAAW;QACX,UAAU;QACV,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAChE,CAAC;IACF,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAmB,8BAA8B,UAAU,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7H,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QACpB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QAC5D,OAAO;IACT,CAAC;IACD,MAAM,KAAK,GAAG;QACZ,SAAS,KAAK,CAAC,QAAQ,IAAI,IAAI,mBAAmB,KAAK,GAAG;QAC1D,iBAAiB,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,IAAI,MAAM,KAAK,KAAK,CAAC,IAAI,IAAI,SAAS,GAAG;QAClH,iBAAiB,KAAK,CAAC,UAAU,IAAI,UAAU,MAAM;QACrD,iBAAiB,KAAK,CAAC,KAAK,CAAC,WAAW,IAAI,WAAW,CAAC,EAAE;QAC1D,iBAAiB,KAAK,CAAC,UAAU,IAAI,UAAU,EAAE;KAClD,CAAC;IACF,IAAI,KAAK,CAAC,cAAc,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,iBAAiB,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAC,CAAC;IACxJ,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,iBAAiB,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;IAC/F,KAAK,CAAC,IAAI,CAAC,2CAA2C,KAAK,CAAC,QAAQ,IAAI,IAAI,SAAS,CAAC,CAAC;IACvF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,OAAgB,EAChB,WAAgD,EAChD,YAA0B,EAC1B,SAAuB;IAEvB,MAAM,MAAM,GAAG,OAAO;SACnB,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,sDAAsD,CAAC;SACnE,OAAO,CAAC,gCAAgC,CAAC,CAAC;IAC7C,WAAW,CACT,MAAM;SACH,OAAO,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;SACrC,WAAW,CAAC,+CAA+C,CAAC;SAC5D,SAAS,CAAC,SAAS,EAAE,CAAC;SACtB,SAAS,CAAC,YAAY,EAAE,CAAC;SACzB,MAAM,CAAC,cAAc,CAAC,EACzB;sCACkC,CACnC,CAAC;IACF,MAAM,MAAM,GAAG,CAAC,OAAgB,EAAW,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,CAAC;IACvG,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;SACvC,WAAW,CAAC,gHAAgH,CAAC;SAC7H,MAAM,CAAC,UAAU,EAAE,mEAAmE,CAAC;SACvF,MAAM,CAAC,cAAc,EAAE,wFAAwF,CAAC;SAChH,MAAM,CAAC,qBAAqB,EAAE,yCAAyC,EAAE,OAAO,CAAC;SACjF,MAAM,CAAC,uBAAuB,EAAE,2DAA2D,CAAC;SAC5F,MAAM,CAAC,2BAA2B,EAAE,+DAA+D,CAAC;SACpG,MAAM,CAAC,yBAAyB,EAAE,iDAAiD,CAAC;SACpF,MAAM,CAAC,WAAW,EAAE,8EAA8E,CAAC;SACnG,MAAM,CAAC,qBAAqB,EAAE,0EAA0E,EAAE,MAAM,CAAC;SACjH,MAAM,CAAC,qBAAqB,EAAE,kFAAkF,CAAC,CAAC;SAClH,MAAM,CAAC,cAAc,CAAC,EACvB,mLAAmL,CAAC,CAAC;IACvL,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,WAAW,CAAC,6DAA6D,CAAC;SAC7G,QAAQ,CAAC,UAAU,EAAE,uBAAuB,CAAC,CAAC,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAC/E,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,WAAW,CAAC,0CAA0C,CAAC;SAC1F,QAAQ,CAAC,UAAU,EAAE,uBAAuB,CAAC,CAAC,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAC/E,MAAM,OAAO,GAAG,CAAC,OAAgB,EAAW,EAAE,CAAC,OAAO;SACnD,MAAM,CAAC,sBAAsB,EAAE,8BAA8B,EAAE,IAAI,CAAC;SACpE,MAAM,CAAC,qBAAqB,EAAE,yDAAyD,EAAE,MAAM,CAAC,CAAC;IACpG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,2CAA2C,CAAC;SACnF,QAAQ,CAAC,cAAc,EAAE,sBAAsB,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IAC3E,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,6CAA6C,CAAC;SACtF,QAAQ,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IAClE,WAAW,CACT,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,uGAAuG,CAAC;SACxJ,QAAQ,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,aAAa,EAAE,0BAA0B,CAAC;SAC1F,MAAM,CAAC,SAAS,EAAE,4CAA4C,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,EAC3F,2EAA2E,CAC5E,CAAC;IACF,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,2DAA2D,CAAC;SACrG,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IACpE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,+DAA+D,CAAC;SAChH,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IACpE,KAAK,MAAM,MAAM,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAU,EAAE,CAAC;QAClD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,MAAM,KAAK,OAAO;YAC1D,CAAC,CAAC,0FAA0F;YAC5F,CAAC,CAAC,iEAAiE,CAAC;aACnE,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAU,EAAE,OAAqB,EAAE,EAAE,CAAC,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAClI,CAAC;IACD,WAAW,CACT,MAAM;SACH,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CAAC,6GAA6G,CAAC;SAC1H,QAAQ,CAAC,cAAc,EAAE,YAAY,CAAC;SACtC,MAAM,CAAC,iBAAiB,EAAE,iFAAiF,CAAC;SAC5G,MAAM,CAAC,mBAAmB,EAAE,6BAA6B,eAAe,IAAI,eAAe,aAAa,uBAAuB,GAAG,CAAC;SACnI,MAAM,CAAC,oBAAoB,EAAE,yDAAyD,wBAAwB,GAAG,CAAC;SAClH,MAAM,CAAC,qBAAqB,EAAE,4DAA4D,CAAC;SAC3F,MAAM,CAAC,iBAAiB,EAAE,6EAA6E,CAAC;SACxG,SAAS,CAAC,SAAS,EAAE,CAAC;SACtB,SAAS,CAAC,YAAY,EAAE,CAAC;SACzB,MAAM,CAAC,YAAY,CAAC,EACvB;yFACqF,CACtF,CAAC;IACF,WAAW,CACT,MAAM;SACH,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CAAC,oEAAoE,CAAC;SACjF,QAAQ,CAAC,cAAc,EAAE,YAAY,CAAC;SACtC,MAAM,CAAC,mBAAmB,EAAE,6BAA6B,eAAe,IAAI,eAAe,GAAG,CAAC;SAC/F,MAAM,CAAC,oBAAoB,EAAE,+CAA+C,CAAC;SAC7E,MAAM,CAAC,oBAAoB,EAAE,wCAAwC,CAAC;SACtE,MAAM,CAAC,0BAA0B,EAAE,oGAAoG,CAAC;SACxI,MAAM,CAAC,oBAAoB,EAAE,0BAA0B,CAAC;SACxD,MAAM,CAAC,iBAAiB,EAAE,6EAA6E,CAAC;SACxG,SAAS,CAAC,SAAS,EAAE,CAAC;SACtB,SAAS,CAAC,YAAY,EAAE,CAAC;SACzB,MAAM,CAAC,YAAY,CAAC,EACvB;;wDAEoD,CACrD,CAAC;IACF,6BAA6B,CAAC,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;AAC9E,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export declare const LOCAL_REVIEW_MAX_BYTES: number;
|
|
2
|
+
export declare const LOCAL_REVIEW_MAX_FILES = 4096;
|
|
3
|
+
export declare const LOCAL_REVIEW_MAX_JSON_BYTES: number;
|
|
4
|
+
export interface SnapshotFile {
|
|
5
|
+
path: string;
|
|
6
|
+
contentBase64: string;
|
|
7
|
+
mode: "100644" | "100755";
|
|
8
|
+
}
|
|
9
|
+
export interface ReviewSnapshot {
|
|
10
|
+
version: 1;
|
|
11
|
+
mode: "workspace" | "staged" | "base";
|
|
12
|
+
baseRef?: string;
|
|
13
|
+
baseSha?: string;
|
|
14
|
+
digest: string;
|
|
15
|
+
baseFiles: SnapshotFile[];
|
|
16
|
+
headFiles: SnapshotFile[];
|
|
17
|
+
changedPaths: string[];
|
|
18
|
+
contextComplete: boolean;
|
|
19
|
+
omittedContext: string[];
|
|
20
|
+
skipped: {
|
|
21
|
+
path: string;
|
|
22
|
+
reason: string;
|
|
23
|
+
}[];
|
|
24
|
+
}
|
|
25
|
+
export interface SnapshotOptions {
|
|
26
|
+
staged?: boolean;
|
|
27
|
+
base?: string;
|
|
28
|
+
cwd?: string;
|
|
29
|
+
signal?: AbortSignal;
|
|
30
|
+
}
|
|
31
|
+
/** Git is only ever queried. In particular capture does not write the index,
|
|
32
|
+
* create commits, stash changes, invoke hooks, or use external diff drivers. */
|
|
33
|
+
export declare function reviewGit(cwd: string, args: string[], input?: string, signal?: AbortSignal): Promise<Buffer>;
|
|
34
|
+
export declare function snapshotDigest(snapshot: Omit<ReviewSnapshot, "digest"> | ReviewSnapshot): string;
|
|
35
|
+
export declare function captureReviewSnapshot(options?: SnapshotOptions): Promise<{
|
|
36
|
+
root: string;
|
|
37
|
+
snapshot: ReviewSnapshot;
|
|
38
|
+
bytes: number;
|
|
39
|
+
}>;
|
|
@@ -0,0 +1,360 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { spawn } from "node:child_process";
|
|
3
|
+
import { constants } from "node:fs";
|
|
4
|
+
import { lstat, open, realpath } from "node:fs/promises";
|
|
5
|
+
import path from "node:path";
|
|
6
|
+
export const LOCAL_REVIEW_MAX_BYTES = 16 * 1024 * 1024;
|
|
7
|
+
export const LOCAL_REVIEW_MAX_FILES = 4096;
|
|
8
|
+
export const LOCAL_REVIEW_MAX_JSON_BYTES = 24 * 1024 * 1024;
|
|
9
|
+
const utf8 = new TextDecoder("utf-8", { fatal: true, ignoreBOM: true });
|
|
10
|
+
const order = (a, b) => Buffer.compare(Buffer.from(a), Buffer.from(b));
|
|
11
|
+
/** Git is only ever queried. In particular capture does not write the index,
|
|
12
|
+
* create commits, stash changes, invoke hooks, or use external diff drivers. */
|
|
13
|
+
export async function reviewGit(cwd, args, input, signal) {
|
|
14
|
+
const filterConfig = [];
|
|
15
|
+
if (args[0] === "diff") {
|
|
16
|
+
// --no-ext-diff/--no-textconv do not disable clean/process filters. Read
|
|
17
|
+
// names only (never credential/config values) and override each configured
|
|
18
|
+
// driver for this invocation, so preview cannot run Git LFS or custom code.
|
|
19
|
+
const keys = await reviewGit(cwd, ["config", "--null", "--name-only", "--list"], undefined, signal);
|
|
20
|
+
const drivers = new Set();
|
|
21
|
+
// Config subsections are arbitrary bytes, unlike snapshot paths. Match
|
|
22
|
+
// the ASCII filter framing before UTF-8 decoding, ignoring unrelated keys.
|
|
23
|
+
// A matching driver's bytes must round-trip exactly for safe -c overrides.
|
|
24
|
+
for (const key of keys.toString("latin1").split("\0")) {
|
|
25
|
+
const driver = /^filter\.([\s\S]*)\.(?:clean|smudge|process|required)$/i.exec(key)?.[1];
|
|
26
|
+
if (driver === undefined)
|
|
27
|
+
continue;
|
|
28
|
+
// Git splits each -c argument at its first '='; such a subsection
|
|
29
|
+
// cannot be overridden exactly, so never proceed to a diff with it.
|
|
30
|
+
if (driver.includes("="))
|
|
31
|
+
throw new Error("local review cannot safely disable a Git filter driver whose name contains '='; fix that filter configuration before retrying");
|
|
32
|
+
try {
|
|
33
|
+
drivers.add(utf8.decode(Buffer.from(driver, "latin1")));
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
throw new Error("local review cannot safely disable a non-UTF-8 Git filter driver; fix that filter configuration before retrying");
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
for (const driver of drivers)
|
|
40
|
+
for (const [setting, value] of [["clean", ""], ["smudge", ""], ["process", ""], ["required", "false"]])
|
|
41
|
+
filterConfig.push("-c", `filter.${driver}.${setting}=${value}`);
|
|
42
|
+
}
|
|
43
|
+
return new Promise((resolve, reject) => {
|
|
44
|
+
const child = spawn("git", ["-c", "core.fsmonitor=false", ...filterConfig, ...args], {
|
|
45
|
+
cwd, env: { ...process.env, GIT_OPTIONAL_LOCKS: "0", GIT_NO_LAZY_FETCH: "1", GIT_TERMINAL_PROMPT: "0" }, stdio: ["pipe", "pipe", "pipe"], signal,
|
|
46
|
+
});
|
|
47
|
+
const chunks = [], errors = [];
|
|
48
|
+
let size = 0, overflow = false;
|
|
49
|
+
child.stdout.on("data", (chunk) => {
|
|
50
|
+
size += chunk.length;
|
|
51
|
+
if (size > 40 * 1024 * 1024) {
|
|
52
|
+
overflow = true;
|
|
53
|
+
child.kill();
|
|
54
|
+
}
|
|
55
|
+
else
|
|
56
|
+
chunks.push(chunk);
|
|
57
|
+
});
|
|
58
|
+
child.stderr.on("data", (chunk) => { if (errors.reduce((n, c) => n + c.length, 0) < 4000)
|
|
59
|
+
errors.push(chunk); });
|
|
60
|
+
child.on("error", reject);
|
|
61
|
+
child.stdin.on("error", () => { });
|
|
62
|
+
child.on("close", (code) => {
|
|
63
|
+
if (overflow)
|
|
64
|
+
return reject(new Error("git output exceeds the local review capture limit"));
|
|
65
|
+
if (code !== 0)
|
|
66
|
+
return reject(new Error(`git ${args[0]} failed: ${Buffer.concat(errors).toString("utf8").trim().slice(0, 500)}`));
|
|
67
|
+
resolve(Buffer.concat(chunks));
|
|
68
|
+
});
|
|
69
|
+
child.stdin.end(input);
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
function names(data) {
|
|
73
|
+
try {
|
|
74
|
+
return utf8.decode(data).split("\0").filter(Boolean);
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
throw new Error("local review requires UTF-8 Git paths; unsupported names abort capture before upload rather than changing or omitting path identity");
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
function safePath(file) {
|
|
81
|
+
if (!file || Buffer.byteLength(file) > 1024 || /[\0\r\n\\:]/.test(file) || file.startsWith("/"))
|
|
82
|
+
throw new Error("unsupported path in local review snapshot");
|
|
83
|
+
if (file.split("/").some(p => !p || p === "." || p === ".." || p.toLowerCase() === ".git"))
|
|
84
|
+
throw new Error("unsafe path in local review snapshot");
|
|
85
|
+
}
|
|
86
|
+
async function entries(cwd, ref, index, signal) {
|
|
87
|
+
if (!index && !ref)
|
|
88
|
+
return new Map();
|
|
89
|
+
const rows = names(await reviewGit(cwd, index ? ["ls-files", "--stage", "-z"] : ["ls-tree", "-rz", "--full-tree", ref], undefined, signal));
|
|
90
|
+
const out = new Map();
|
|
91
|
+
for (const row of rows) {
|
|
92
|
+
const tab = row.indexOf("\t");
|
|
93
|
+
if (tab < 0)
|
|
94
|
+
throw new Error("invalid git tree entry");
|
|
95
|
+
const fields = row.slice(0, tab).split(" "), file = row.slice(tab + 1);
|
|
96
|
+
safePath(file);
|
|
97
|
+
if (index && fields[2] !== "0")
|
|
98
|
+
throw new Error("resolve unmerged index entries before reviewing a working diff");
|
|
99
|
+
out.set(file, { mode: fields[0], oid: fields[index ? 1 : 2] });
|
|
100
|
+
}
|
|
101
|
+
return out;
|
|
102
|
+
}
|
|
103
|
+
async function objectSizes(cwd, ids, signal) {
|
|
104
|
+
const out = new Map();
|
|
105
|
+
if (!ids.length)
|
|
106
|
+
return out;
|
|
107
|
+
const rows = (await reviewGit(cwd, ["cat-file", "--batch-check=%(objectname) %(objecttype) %(objectsize)"], ids.join("\n") + "\n", signal)).toString("ascii").trim().split("\n");
|
|
108
|
+
for (const row of rows) {
|
|
109
|
+
const [id, type, size] = row.split(" ");
|
|
110
|
+
if (type !== "blob" || !/^\d+$/.test(size))
|
|
111
|
+
throw new Error("local review requires available Git blob objects; materialize missing objects manually before retrying (capture never fetches)");
|
|
112
|
+
out.set(id, Number(size));
|
|
113
|
+
}
|
|
114
|
+
return out;
|
|
115
|
+
}
|
|
116
|
+
async function blobs(cwd, ids, signal) {
|
|
117
|
+
const out = new Map();
|
|
118
|
+
if (!ids.length)
|
|
119
|
+
return out;
|
|
120
|
+
const data = await reviewGit(cwd, ["cat-file", "--batch"], ids.join("\n") + "\n", signal);
|
|
121
|
+
let offset = 0;
|
|
122
|
+
for (const expected of ids) {
|
|
123
|
+
const end = data.indexOf(10, offset);
|
|
124
|
+
if (end < 0)
|
|
125
|
+
throw new Error("truncated Git object response");
|
|
126
|
+
const [id, type, rawSize] = data.subarray(offset, end).toString("ascii").split(" ");
|
|
127
|
+
const size = Number(rawSize), start = end + 1;
|
|
128
|
+
if (id !== expected || type !== "blob" || !Number.isSafeInteger(size) || size < 0 || start + size >= data.length || data[start + size] !== 10)
|
|
129
|
+
throw new Error("invalid Git object response");
|
|
130
|
+
out.set(id, data.subarray(start, start + size));
|
|
131
|
+
offset = start + size + 1;
|
|
132
|
+
}
|
|
133
|
+
if (offset !== data.length)
|
|
134
|
+
throw new Error("unexpected trailing Git object response");
|
|
135
|
+
return out;
|
|
136
|
+
}
|
|
137
|
+
class SkipFile extends Error {
|
|
138
|
+
}
|
|
139
|
+
/** Reject symlinks (including parent directories); do not follow them outside
|
|
140
|
+
* the checkout. Verify the opened inode and stat again after reading. */
|
|
141
|
+
async function workingFile(root, file, read) {
|
|
142
|
+
const absolute = path.join(root, file);
|
|
143
|
+
let before;
|
|
144
|
+
try {
|
|
145
|
+
let parent = root;
|
|
146
|
+
for (const part of file.split("/").slice(0, -1)) {
|
|
147
|
+
parent = path.join(parent, part);
|
|
148
|
+
const stat = await lstat(parent);
|
|
149
|
+
if (stat.isFile())
|
|
150
|
+
return undefined; // A tracked directory was replaced by a file.
|
|
151
|
+
if (stat.isSymbolicLink() || !stat.isDirectory())
|
|
152
|
+
throw new SkipFile("symlink or non-directory parent");
|
|
153
|
+
}
|
|
154
|
+
before = await lstat(absolute);
|
|
155
|
+
}
|
|
156
|
+
catch (error) {
|
|
157
|
+
if (["ENOENT", "ENOTDIR"].includes(error.code ?? ""))
|
|
158
|
+
return undefined;
|
|
159
|
+
throw error;
|
|
160
|
+
}
|
|
161
|
+
if (before.isDirectory())
|
|
162
|
+
return undefined; // A tracked file was replaced by a directory.
|
|
163
|
+
if (!before.isFile() || before.isSymbolicLink())
|
|
164
|
+
throw new SkipFile("symlink or non-regular file");
|
|
165
|
+
const mode = (before.mode & 0o111) ? "100755" : "100644";
|
|
166
|
+
if (!read)
|
|
167
|
+
return { size: before.size, mode };
|
|
168
|
+
const handle = await open(absolute, constants.O_RDONLY | (constants.O_NOFOLLOW ?? 0));
|
|
169
|
+
try {
|
|
170
|
+
const opened = await handle.stat();
|
|
171
|
+
if (!opened.isFile() || opened.dev !== before.dev || opened.ino !== before.ino || opened.size !== before.size)
|
|
172
|
+
throw new Error(`file changed while capturing ${file}; retry the review`);
|
|
173
|
+
if (opened.size > LOCAL_REVIEW_MAX_BYTES)
|
|
174
|
+
throw new Error(`file is too large for local review: ${file}`);
|
|
175
|
+
const data = await handle.readFile();
|
|
176
|
+
const after = await handle.stat(), named = await lstat(absolute);
|
|
177
|
+
const resolved = await realpath(absolute);
|
|
178
|
+
if (!resolved.startsWith(root + path.sep) || named.isSymbolicLink() || named.dev !== opened.dev || named.ino !== opened.ino || after.size !== opened.size || after.mtimeMs !== opened.mtimeMs || after.ctimeMs !== opened.ctimeMs || data.length !== opened.size)
|
|
179
|
+
throw new Error(`file changed while capturing ${file}; retry the review`);
|
|
180
|
+
return { size: data.length, mode, data };
|
|
181
|
+
}
|
|
182
|
+
finally {
|
|
183
|
+
await handle.close();
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
function textFile(data) {
|
|
187
|
+
if (data.includes(0))
|
|
188
|
+
return false;
|
|
189
|
+
try {
|
|
190
|
+
utf8.decode(data);
|
|
191
|
+
return true;
|
|
192
|
+
}
|
|
193
|
+
catch {
|
|
194
|
+
return false;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
export function snapshotDigest(snapshot) {
|
|
198
|
+
const hash = createHash("sha256");
|
|
199
|
+
hash.update(`ditto-review-local-v1\0${snapshot.mode}\0${snapshot.baseSha ?? ""}\0`);
|
|
200
|
+
for (const [tree, files] of [["base", snapshot.baseFiles], ["head", snapshot.headFiles]]) {
|
|
201
|
+
for (const file of [...files].sort((a, b) => order(a.path, b.path)))
|
|
202
|
+
hash.update(`${tree}\0${file.path}\0${file.mode || "100644"}\0${file.contentBase64}\0`);
|
|
203
|
+
}
|
|
204
|
+
for (const file of [...snapshot.changedPaths].sort(order))
|
|
205
|
+
hash.update(`changed\0${file}\0`);
|
|
206
|
+
for (const file of [...snapshot.omittedContext].sort(order))
|
|
207
|
+
hash.update(`omitted\0${file}\0`);
|
|
208
|
+
hash.update(`context\0${snapshot.contextComplete}\0`);
|
|
209
|
+
for (const skip of [...snapshot.skipped].sort((a, b) => order(a.path, b.path) || order(a.reason, b.reason)))
|
|
210
|
+
hash.update(`skip\0${skip.path}\0${skip.reason}\0`);
|
|
211
|
+
return hash.digest("hex");
|
|
212
|
+
}
|
|
213
|
+
export async function captureReviewSnapshot(options = {}) {
|
|
214
|
+
if (options.staged && options.base)
|
|
215
|
+
throw new Error("--staged and --base cannot be used together");
|
|
216
|
+
const root = await realpath(utf8.decode(await reviewGit(options.cwd ?? process.cwd(), ["rev-parse", "--show-toplevel"], undefined, options.signal)).replace(/\r?\n$/, ""));
|
|
217
|
+
let head;
|
|
218
|
+
try {
|
|
219
|
+
head = (await reviewGit(root, ["rev-parse", "--verify", "HEAD"], undefined, options.signal)).toString("ascii").trim();
|
|
220
|
+
}
|
|
221
|
+
catch {
|
|
222
|
+
const branch = (await reviewGit(root, ["symbolic-ref", "-q", "HEAD"], undefined, options.signal)).toString("utf8").trim();
|
|
223
|
+
if ((await reviewGit(root, ["for-each-ref", "--format=%(objectname)", branch], undefined, options.signal)).length)
|
|
224
|
+
throw new Error("cannot resolve repository HEAD");
|
|
225
|
+
}
|
|
226
|
+
let baseSha = head;
|
|
227
|
+
if (options.base) {
|
|
228
|
+
if (!head)
|
|
229
|
+
throw new Error("--base requires a committed HEAD");
|
|
230
|
+
const ref = (await reviewGit(root, ["rev-parse", "--verify", "--end-of-options", `${options.base}^{commit}`], undefined, options.signal)).toString("ascii").trim();
|
|
231
|
+
baseSha = (await reviewGit(root, ["merge-base", head, ref], undefined, options.signal)).toString("ascii").trim();
|
|
232
|
+
}
|
|
233
|
+
const mode = options.staged ? "staged" : options.base ? "base" : "workspace";
|
|
234
|
+
let honorFileMode = true;
|
|
235
|
+
try {
|
|
236
|
+
honorFileMode = (await reviewGit(root, ["config", "--bool", "core.fileMode"], undefined, options.signal)).toString("ascii").trim() !== "false";
|
|
237
|
+
}
|
|
238
|
+
catch { /* Git's default is true. */ }
|
|
239
|
+
const base = await entries(root, baseSha, false, options.signal), index = await entries(root, undefined, true, options.signal);
|
|
240
|
+
const untracked = options.staged ? [] : names(await reviewGit(root, ["ls-files", "--others", "--exclude-standard", "-z"], undefined, options.signal));
|
|
241
|
+
const headPaths = new Set([...index.keys(), ...untracked]);
|
|
242
|
+
const changes = baseSha ? names(await reviewGit(root, ["diff", ...(options.staged ? ["--cached"] : []), "--no-ext-diff", "--no-textconv", "--no-renames", "--name-only", "-z", baseSha, "--"], undefined, options.signal)) : [...headPaths];
|
|
243
|
+
const changedPaths = [...new Set([...changes, ...untracked])].sort(order);
|
|
244
|
+
if (changedPaths.length > LOCAL_REVIEW_MAX_FILES)
|
|
245
|
+
throw new Error("changed paths exceed the local review limit of 4096; narrow the diff");
|
|
246
|
+
const changed = new Set(changedPaths);
|
|
247
|
+
const all = [...new Set([...base.keys(), ...headPaths])];
|
|
248
|
+
all.forEach(safePath);
|
|
249
|
+
const regular = (entry) => !!entry && (entry.mode === "100644" || entry.mode === "100755");
|
|
250
|
+
const ids = [...new Set([...base.values(), ...(options.staged ? index.values() : [])].filter(regular).map(e => e.oid))];
|
|
251
|
+
const sizes = await objectSizes(root, ids, options.signal);
|
|
252
|
+
const metadata = new Map();
|
|
253
|
+
const skipped = [];
|
|
254
|
+
for (const file of all) {
|
|
255
|
+
if (options.signal?.aborted)
|
|
256
|
+
throw options.signal.reason;
|
|
257
|
+
const b = base.get(file), h = index.get(file);
|
|
258
|
+
if ((b && !regular(b)) || (headPaths.has(file) && h && !regular(h))) {
|
|
259
|
+
skipped.push({ path: file, reason: "symlink or submodule" });
|
|
260
|
+
continue;
|
|
261
|
+
}
|
|
262
|
+
try {
|
|
263
|
+
const working = !options.staged && changed.has(file) && headPaths.has(file) ? await workingFile(root, file, false) : undefined;
|
|
264
|
+
// Unchanged surrounding context intentionally comes from the pinned
|
|
265
|
+
// comparison tree. Avoid thousands of live reads (and attribute/filter
|
|
266
|
+
// execution) for bytes Git did not select as changes.
|
|
267
|
+
metadata.set(file, { baseSize: b ? sizes.get(b.oid) : 0, headSize: options.staged ? (h ? sizes.get(h.oid) : 0) : changed.has(file) ? (working?.size ?? 0) : b ? sizes.get(b.oid) : 0 });
|
|
268
|
+
}
|
|
269
|
+
catch (error) {
|
|
270
|
+
if (error instanceof SkipFile)
|
|
271
|
+
skipped.push({ path: file, reason: error.message });
|
|
272
|
+
else
|
|
273
|
+
throw error;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
const distance = (file) => {
|
|
277
|
+
const parts = file.split("/");
|
|
278
|
+
return Math.min(...changedPaths.map(p => { const target = p.split("/"); let n = 0; while (n < parts.length - 1 && n < target.length - 1 && parts[n] === target[n])
|
|
279
|
+
n++; return parts.length + target.length - 2 * n; }), 10000);
|
|
280
|
+
};
|
|
281
|
+
const prioritized = all.filter(f => metadata.has(f)).sort((a, b) => Number(changed.has(b)) - Number(changed.has(a)) || distance(a) - distance(b) || order(a, b));
|
|
282
|
+
let total = 0, baseCount = 0, headCount = 0;
|
|
283
|
+
const selected = [], omittedContext = [];
|
|
284
|
+
for (const file of prioritized) {
|
|
285
|
+
const size = metadata.get(file);
|
|
286
|
+
const nextBase = baseCount + Number(base.has(file)), nextHead = headCount + Number(headPaths.has(file));
|
|
287
|
+
if (total + size.baseSize + size.headSize > LOCAL_REVIEW_MAX_BYTES || nextBase > LOCAL_REVIEW_MAX_FILES || nextHead > LOCAL_REVIEW_MAX_FILES) {
|
|
288
|
+
if (changed.has(file))
|
|
289
|
+
throw new Error(`changed files exceed local review limits (16 MiB, 4096 files/tree); narrow the diff before reviewing: ${file}`);
|
|
290
|
+
omittedContext.push(file);
|
|
291
|
+
continue;
|
|
292
|
+
}
|
|
293
|
+
selected.push(file);
|
|
294
|
+
total += size.baseSize + size.headSize;
|
|
295
|
+
baseCount = nextBase;
|
|
296
|
+
headCount = nextHead;
|
|
297
|
+
}
|
|
298
|
+
const selectedIds = [...new Set(selected.flatMap(file => [base.get(file), ...(options.staged ? [index.get(file)] : [])].filter((e) => regular(e)).map(e => e.oid)))];
|
|
299
|
+
const content = await blobs(root, selectedIds, options.signal);
|
|
300
|
+
const baseFiles = [], headFiles = [];
|
|
301
|
+
for (const file of selected) {
|
|
302
|
+
const b = base.get(file), h = index.get(file);
|
|
303
|
+
const before = b ? content.get(b.oid) : undefined;
|
|
304
|
+
let after, headMode = "100644";
|
|
305
|
+
try {
|
|
306
|
+
if (options.staged) {
|
|
307
|
+
after = h ? content.get(h.oid) : undefined;
|
|
308
|
+
headMode = h?.mode ?? "100644";
|
|
309
|
+
}
|
|
310
|
+
else if (!changed.has(file)) {
|
|
311
|
+
after = before;
|
|
312
|
+
headMode = b?.mode ?? "100644";
|
|
313
|
+
}
|
|
314
|
+
else if (headPaths.has(file)) {
|
|
315
|
+
const value = await workingFile(root, file, true);
|
|
316
|
+
after = value?.data;
|
|
317
|
+
headMode = honorFileMode ? value?.mode ?? "100644" : h?.mode ?? "100644";
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
catch (error) {
|
|
321
|
+
if (error instanceof SkipFile) {
|
|
322
|
+
skipped.push({ path: file, reason: error.message });
|
|
323
|
+
continue;
|
|
324
|
+
}
|
|
325
|
+
throw error;
|
|
326
|
+
}
|
|
327
|
+
if ((before && !textFile(before)) || (after && !textFile(after))) {
|
|
328
|
+
skipped.push({ path: file, reason: "binary or non-UTF-8 file" });
|
|
329
|
+
continue;
|
|
330
|
+
}
|
|
331
|
+
if (before)
|
|
332
|
+
baseFiles.push({ path: file, contentBase64: before.toString("base64"), mode: b.mode });
|
|
333
|
+
if (after)
|
|
334
|
+
headFiles.push({ path: file, contentBase64: after.toString("base64"), mode: headMode });
|
|
335
|
+
}
|
|
336
|
+
baseFiles.sort((a, b) => order(a.path, b.path));
|
|
337
|
+
headFiles.sort((a, b) => order(a.path, b.path));
|
|
338
|
+
omittedContext.sort(order);
|
|
339
|
+
skipped.sort((a, b) => order(a.path, b.path) || order(a.reason, b.reason));
|
|
340
|
+
// Git attributes can normalize worktree bytes (for example CRLF) or ignore
|
|
341
|
+
// file mode. Scope identifies the actual sealed trees, not a lossy name list.
|
|
342
|
+
const baseline = new Map(baseFiles.map(f => [f.path, f]));
|
|
343
|
+
const current = new Map(headFiles.map(f => [f.path, f]));
|
|
344
|
+
const capturedChanges = [...new Set([...baseline.keys(), ...current.keys()])].filter(file => {
|
|
345
|
+
const b = baseline.get(file), h = current.get(file);
|
|
346
|
+
return !b || !h || b.contentBase64 !== h.contentBase64 || b.mode !== h.mode;
|
|
347
|
+
});
|
|
348
|
+
const sealedChanges = [...new Set([...capturedChanges, ...skipped.filter(f => changed.has(f.path)).map(f => f.path)])].sort(order);
|
|
349
|
+
if (sealedChanges.length > LOCAL_REVIEW_MAX_FILES || omittedContext.length > 20000 || skipped.length > 20000)
|
|
350
|
+
throw new Error("local review manifest exceeds path limits; narrow the diff");
|
|
351
|
+
const bytes = [...baseFiles, ...headFiles].reduce((n, f) => n + Buffer.byteLength(f.contentBase64, "base64"), 0);
|
|
352
|
+
if (bytes > LOCAL_REVIEW_MAX_BYTES)
|
|
353
|
+
throw new Error("files grew beyond the local review content limit during capture; retry with a smaller diff");
|
|
354
|
+
const snapshot = { version: 1, mode, ...(options.base ? { baseRef: options.base } : {}), ...(baseSha ? { baseSha } : {}), digest: "", baseFiles, headFiles, changedPaths: sealedChanges, contextComplete: omittedContext.length === 0 && skipped.length === 0, omittedContext, skipped };
|
|
355
|
+
snapshot.digest = snapshotDigest(snapshot);
|
|
356
|
+
if (Buffer.byteLength(JSON.stringify(snapshot)) > LOCAL_REVIEW_MAX_JSON_BYTES)
|
|
357
|
+
throw new Error("local review snapshot exceeds the 24 MiB transport limit; narrow the diff");
|
|
358
|
+
return { root, snapshot, bytes };
|
|
359
|
+
}
|
|
360
|
+
//# sourceMappingURL=review-snapshot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-snapshot.js","sourceRoot":"","sources":["../src/review-snapshot.ts"],"names":[],"mappings":"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"}
|