ghagga 2.8.1 → 3.1.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/LICENSE +21 -0
- package/dist/commands/__tests__/review-tui.test.js +2 -2
- package/dist/commands/__tests__/review-tui.test.js.map +1 -1
- package/dist/commands/audit.d.ts +23 -0
- package/dist/commands/audit.d.ts.map +1 -0
- package/dist/commands/audit.js +282 -0
- package/dist/commands/audit.js.map +1 -0
- package/dist/commands/audit.test.d.ts +10 -0
- package/dist/commands/audit.test.d.ts.map +1 -0
- package/dist/commands/audit.test.js +110 -0
- package/dist/commands/audit.test.js.map +1 -0
- package/dist/commands/dismiss.d.ts +14 -0
- package/dist/commands/dismiss.d.ts.map +1 -0
- package/dist/commands/dismiss.js +98 -0
- package/dist/commands/dismiss.js.map +1 -0
- package/dist/commands/feedback.d.ts +18 -0
- package/dist/commands/feedback.d.ts.map +1 -0
- package/dist/commands/feedback.js +122 -0
- package/dist/commands/feedback.js.map +1 -0
- package/dist/commands/login.js +3 -3
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/login.test.js +3 -4
- package/dist/commands/login.test.js.map +1 -1
- package/dist/commands/review-commit-msg.test.js +2 -2
- package/dist/commands/review-commit-msg.test.js.map +1 -1
- package/dist/commands/review-output.test.js +30 -2
- package/dist/commands/review-output.test.js.map +1 -1
- package/dist/commands/review.d.ts +16 -0
- package/dist/commands/review.d.ts.map +1 -1
- package/dist/commands/review.js +239 -3
- package/dist/commands/review.js.map +1 -1
- package/dist/commands/review.mr-exit.test.d.ts +13 -0
- package/dist/commands/review.mr-exit.test.d.ts.map +1 -0
- package/dist/commands/review.mr-exit.test.js +190 -0
- package/dist/commands/review.mr-exit.test.js.map +1 -0
- package/dist/commands/review.postback-disclosure.test.d.ts +22 -0
- package/dist/commands/review.postback-disclosure.test.d.ts.map +1 -0
- package/dist/commands/review.postback-disclosure.test.js +192 -0
- package/dist/commands/review.postback-disclosure.test.js.map +1 -0
- package/dist/commands/review.pr-exit.test.d.ts +13 -0
- package/dist/commands/review.pr-exit.test.d.ts.map +1 -0
- package/dist/commands/review.pr-exit.test.js +162 -0
- package/dist/commands/review.pr-exit.test.js.map +1 -0
- package/dist/commands/review.pr-jenkins.test.d.ts +16 -0
- package/dist/commands/review.pr-jenkins.test.d.ts.map +1 -0
- package/dist/commands/review.pr-jenkins.test.js +106 -0
- package/dist/commands/review.pr-jenkins.test.js.map +1 -0
- package/dist/commands/review.pr-nativeid-fallback.test.d.ts +15 -0
- package/dist/commands/review.pr-nativeid-fallback.test.d.ts.map +1 -0
- package/dist/commands/review.pr-nativeid-fallback.test.js +151 -0
- package/dist/commands/review.pr-nativeid-fallback.test.js.map +1 -0
- package/dist/commands/review.test.js +48 -33
- package/dist/commands/review.test.js.map +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +15 -2
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/status.test.js +31 -10
- package/dist/commands/status.test.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.js +116 -23
- package/dist/index.js.map +1 -1
- package/dist/lib/cli-github-client-port.d.ts +52 -0
- package/dist/lib/cli-github-client-port.d.ts.map +1 -0
- package/dist/lib/cli-github-client-port.js +199 -0
- package/dist/lib/cli-github-client-port.js.map +1 -0
- package/dist/lib/cli-github-client-port.test.d.ts +10 -0
- package/dist/lib/cli-github-client-port.test.d.ts.map +1 -0
- package/dist/lib/cli-github-client-port.test.js +47 -0
- package/dist/lib/cli-github-client-port.test.js.map +1 -0
- package/dist/lib/cli-gitlab-client-port.d.ts +62 -0
- package/dist/lib/cli-gitlab-client-port.d.ts.map +1 -0
- package/dist/lib/cli-gitlab-client-port.js +209 -0
- package/dist/lib/cli-gitlab-client-port.js.map +1 -0
- package/dist/lib/cli-gitlab-client-port.test.d.ts +9 -0
- package/dist/lib/cli-gitlab-client-port.test.d.ts.map +1 -0
- package/dist/lib/cli-gitlab-client-port.test.js +278 -0
- package/dist/lib/cli-gitlab-client-port.test.js.map +1 -0
- package/dist/lib/config.d.ts +12 -0
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +14 -2
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/config.test.js +22 -3
- package/dist/lib/config.test.js.map +1 -1
- package/dist/lib/forge-postback.d.ts +72 -0
- package/dist/lib/forge-postback.d.ts.map +1 -0
- package/dist/lib/forge-postback.js +39 -0
- package/dist/lib/forge-postback.js.map +1 -0
- package/dist/lib/github-api.d.ts.map +1 -1
- package/dist/lib/github-api.js +15 -6
- package/dist/lib/github-api.js.map +1 -1
- package/dist/lib/github-api.test.js +24 -1
- package/dist/lib/github-api.test.js.map +1 -1
- package/dist/lib/gitlab-api.d.ts +50 -0
- package/dist/lib/gitlab-api.d.ts.map +1 -0
- package/dist/lib/gitlab-api.js +75 -0
- package/dist/lib/gitlab-api.js.map +1 -0
- package/dist/lib/gitlab-api.test.d.ts +2 -0
- package/dist/lib/gitlab-api.test.d.ts.map +1 -0
- package/dist/lib/gitlab-api.test.js +79 -0
- package/dist/lib/gitlab-api.test.js.map +1 -0
- package/dist/lib/gitlab-e2e.manual.test.d.ts +24 -0
- package/dist/lib/gitlab-e2e.manual.test.d.ts.map +1 -0
- package/dist/lib/gitlab-e2e.manual.test.js +57 -0
- package/dist/lib/gitlab-e2e.manual.test.js.map +1 -0
- package/dist/lib/gitlab-token.d.ts +17 -0
- package/dist/lib/gitlab-token.d.ts.map +1 -0
- package/dist/lib/gitlab-token.js +24 -0
- package/dist/lib/gitlab-token.js.map +1 -0
- package/dist/lib/gitlab-token.test.d.ts +2 -0
- package/dist/lib/gitlab-token.test.d.ts.map +1 -0
- package/dist/lib/gitlab-token.test.js +38 -0
- package/dist/lib/gitlab-token.test.js.map +1 -0
- package/dist/lib/oauth.test.js +0 -1
- package/dist/lib/oauth.test.js.map +1 -1
- package/dist/lib/pr-postback.d.ts +42 -0
- package/dist/lib/pr-postback.d.ts.map +1 -0
- package/dist/lib/pr-postback.js +44 -0
- package/dist/lib/pr-postback.js.map +1 -0
- package/dist/lib/pr-postback.test.d.ts +9 -0
- package/dist/lib/pr-postback.test.d.ts.map +1 -0
- package/dist/lib/pr-postback.test.js +196 -0
- package/dist/lib/pr-postback.test.js.map +1 -0
- package/dist/lib/pr-token.d.ts +15 -0
- package/dist/lib/pr-token.d.ts.map +1 -0
- package/dist/lib/pr-token.js +22 -0
- package/dist/lib/pr-token.js.map +1 -0
- package/dist/lib/pr-token.test.d.ts +2 -0
- package/dist/lib/pr-token.test.d.ts.map +1 -0
- package/dist/lib/pr-token.test.js +25 -0
- package/dist/lib/pr-token.test.js.map +1 -0
- package/dist/lib/providers.d.ts +29 -0
- package/dist/lib/providers.d.ts.map +1 -0
- package/dist/lib/providers.js +41 -0
- package/dist/lib/providers.js.map +1 -0
- package/dist/lib/providers.test.d.ts +9 -0
- package/dist/lib/providers.test.d.ts.map +1 -0
- package/dist/lib/providers.test.js +60 -0
- package/dist/lib/providers.test.js.map +1 -0
- package/dist/ui/__tests__/format.test.js +2 -2
- package/dist/ui/__tests__/format.test.js.map +1 -1
- package/dist/ui/__tests__/theme.test.js +3 -2
- package/dist/ui/__tests__/theme.test.js.map +1 -1
- package/dist/ui/theme.d.ts.map +1 -1
- package/dist/ui/theme.js +1 -0
- package/dist/ui/theme.js.map +1 -1
- package/package.json +18 -18
package/dist/commands/review.js
CHANGED
|
@@ -8,10 +8,17 @@
|
|
|
8
8
|
import { execSync } from 'node:child_process';
|
|
9
9
|
import { existsSync, readFileSync } from 'node:fs';
|
|
10
10
|
import { join, resolve } from 'node:path';
|
|
11
|
-
import { buildSarif, DEFAULT_SETTINGS, EngramMemoryStorage, initializeDefaultTools, reviewPipeline, SqliteMemoryStorage, toolRegistry, } from 'ghagga-core';
|
|
11
|
+
import { buildSarif, DEFAULT_SETTINGS, EngramMemoryStorage, formatReviewComment, initializeDefaultTools, REVIEW_COMMENT_MARKER, reviewPipeline, SqliteMemoryStorage, toolRegistry, } from 'ghagga-core';
|
|
12
|
+
import { GitHubForgeAdapter, GitLabForgeAdapter, StaticTokenProvider, } from 'ghagga-forge';
|
|
13
|
+
import { createCliGitHubClientPort, resolveGitHubRepoId } from '../lib/cli-github-client-port.js';
|
|
14
|
+
import { createCliGitLabClientPort, resolveGitLabApiBase, resolveGitLabProjectId, } from '../lib/cli-gitlab-client-port.js';
|
|
12
15
|
import { getConfigDir, getStoredToken } from '../lib/config.js';
|
|
16
|
+
import { composeForgePostback } from '../lib/forge-postback.js';
|
|
13
17
|
import { getStagedDiff, resolveProjectId } from '../lib/git.js';
|
|
14
18
|
import { createComment, createIssue, ensureLabel, formatIssueBody, parseGitHubRemote, } from '../lib/github-api.js';
|
|
19
|
+
import { parseGitLabRemote } from '../lib/gitlab-api.js';
|
|
20
|
+
import { resolveMrToken } from '../lib/gitlab-token.js';
|
|
21
|
+
import { resolvePrToken } from '../lib/pr-token.js';
|
|
15
22
|
import { formatBoxSummary, formatMarkdownResult } from '../ui/format.js';
|
|
16
23
|
import { resolveStepIcon } from '../ui/theme.js';
|
|
17
24
|
import * as tui from '../ui/tui.js';
|
|
@@ -38,6 +45,14 @@ export async function reviewCommand(targetPath, options) {
|
|
|
38
45
|
tui.log.error('❌ --staged and --commit-msg are mutually exclusive. Use one or the other.');
|
|
39
46
|
process.exit(1);
|
|
40
47
|
}
|
|
48
|
+
// ── Mutual exclusivity check: --pr (GitHub) and --mr (GitLab) ──
|
|
49
|
+
// Defensive guard at the command layer: the CLI index.ts also blocks this, but
|
|
50
|
+
// reviewCommand() must not silently run GitLab and DROP --pr if a caller (or a
|
|
51
|
+
// future entrypoint) reaches it with both set.
|
|
52
|
+
if (options.pr != null && options.mr != null) {
|
|
53
|
+
tui.log.error('❌ --pr and --mr are mutually exclusive. Use one or the other.');
|
|
54
|
+
process.exit(1);
|
|
55
|
+
}
|
|
41
56
|
// ── Commit message review path (bypasses file-based pipeline) ──
|
|
42
57
|
if (options.commitMsg) {
|
|
43
58
|
const commitMsgFile = resolve(options.commitMsg);
|
|
@@ -183,8 +198,27 @@ export async function reviewCommand(targetPath, options) {
|
|
|
183
198
|
if (options.issue) {
|
|
184
199
|
await handleIssueExport(result, options);
|
|
185
200
|
}
|
|
186
|
-
// Step
|
|
187
|
-
|
|
201
|
+
// Step 6.6: Post the summary back to a GitHub PR (--pr) or GitLab MR (--mr).
|
|
202
|
+
// Composes WITH --issue and --output: all are independent outputs. Both route
|
|
203
|
+
// through the SHARED composeForgePostback helper (BL-CLI-FORGE-COMPOSITION).
|
|
204
|
+
// Returns false when an explicitly-requested post-back FAILED and soft-fail
|
|
205
|
+
// is OFF — that turns into a non-zero exit below (the requested job failed).
|
|
206
|
+
let prPostbackFailed = false;
|
|
207
|
+
if (options.pr != null) {
|
|
208
|
+
const ok = await handleForgePostback(result, options, 'github', options.pr);
|
|
209
|
+
prPostbackFailed = !ok && !(options.prSoftFail ?? false);
|
|
210
|
+
}
|
|
211
|
+
else if (options.mr != null) {
|
|
212
|
+
const ok = await handleForgePostback(result, options, 'gitlab', options.mr);
|
|
213
|
+
prPostbackFailed = !ok && !(options.prSoftFail ?? false);
|
|
214
|
+
}
|
|
215
|
+
// Step 7: Exit code — pick the WORST (most-failing) of:
|
|
216
|
+
// - the review's own exit code (--exit-on-issues / status-based), and
|
|
217
|
+
// - the post-back outcome (non-zero when a required post-back failed).
|
|
218
|
+
// Worst = any non-zero wins; we never mask a review-found-issues code with 0,
|
|
219
|
+
// nor mask a post-back failure with a review PASS.
|
|
220
|
+
const reviewExitCode = resolveExitCode(result, options.exitOnIssues ?? false);
|
|
221
|
+
const exitCode = reviewExitCode !== 0 ? reviewExitCode : prPostbackFailed ? 1 : 0;
|
|
188
222
|
if (!options.outputFormat) {
|
|
189
223
|
tui.outro('Review complete');
|
|
190
224
|
}
|
|
@@ -261,6 +295,194 @@ async function handleIssueExport(result, options) {
|
|
|
261
295
|
tui.log.warn(`⚠️ Issue export failed: ${msg}`);
|
|
262
296
|
}
|
|
263
297
|
}
|
|
298
|
+
/** GitHub `--pr` composition (P3): owner/repo from the remote, GitHub adapter. */
|
|
299
|
+
function githubPostbackConfig() {
|
|
300
|
+
return {
|
|
301
|
+
label: 'PR',
|
|
302
|
+
flag: '--pr',
|
|
303
|
+
forgeName: 'GitHub',
|
|
304
|
+
resolveToken: resolvePrToken,
|
|
305
|
+
tokenHint: 'Set GITHUB_TOKEN (or GH_TOKEN) in your environment, or run `ghagga login`.',
|
|
306
|
+
// The CLI GitHub client targets api.github.com (no GHE base override today);
|
|
307
|
+
// disclose what the client actually hits.
|
|
308
|
+
resolveTargetHost: () => 'api.github.com',
|
|
309
|
+
async buildComposition(token, prNumber) {
|
|
310
|
+
// Resolve owner/repo from the git remote (same source as issue-export).
|
|
311
|
+
const remoteUrl = execSync('git remote get-url origin', { encoding: 'utf-8' }).trim();
|
|
312
|
+
const { owner, repo } = parseGitHubRemote(remoteUrl);
|
|
313
|
+
// StaticTokenProvider satisfies the SAME credential seam the server worker
|
|
314
|
+
// uses (construction-site choice — no mint/refresh for a static token).
|
|
315
|
+
const resolvedToken = await new StaticTokenProvider(token).getToken();
|
|
316
|
+
const adapter = new GitHubForgeAdapter({
|
|
317
|
+
client: createCliGitHubClientPort(),
|
|
318
|
+
token: resolvedToken,
|
|
319
|
+
owner,
|
|
320
|
+
repo,
|
|
321
|
+
});
|
|
322
|
+
// Resolve the numeric repo id for RepoRef.nativeId (the opaque forge-native
|
|
323
|
+
// identity — see packages/forge/src/types.ts). Normally the IMMUTABLE
|
|
324
|
+
// numeric id (a rename changes owner/repo but not the id). Mirrors the
|
|
325
|
+
// GitLab `--mr` flow's resolveGitLabProjectId — ONE GET /repos/{owner}/{repo}
|
|
326
|
+
// → .id before the post. The adapter's wire calls still key on owner/repo
|
|
327
|
+
// from its ctor, so nativeId is identity metadata only (no wire-behavior
|
|
328
|
+
// change). If the resolution fails (network/404), degrade to the
|
|
329
|
+
// path-shaped owner/repo — an OPAQUE-string fallback, honest per the
|
|
330
|
+
// RepoRef.nativeId contract (opaque, may be path-shaped) — so an identity
|
|
331
|
+
// field never crashes the post-back, and warn.
|
|
332
|
+
let nativeId = `${owner}/${repo}`;
|
|
333
|
+
try {
|
|
334
|
+
nativeId = await resolveGitHubRepoId(owner, repo, resolvedToken);
|
|
335
|
+
}
|
|
336
|
+
catch (error) {
|
|
337
|
+
console.warn(`[ghagga] Could not resolve numeric GitHub repo id for ${owner}/${repo} ` +
|
|
338
|
+
`(${error instanceof Error ? error.message : String(error)}); ` +
|
|
339
|
+
'falling back to the owner/repo path for RepoRef.nativeId.');
|
|
340
|
+
}
|
|
341
|
+
const ref = {
|
|
342
|
+
repo: { kind: 'github', nativeId, path: `${owner}/${repo}` },
|
|
343
|
+
iid: prNumber,
|
|
344
|
+
};
|
|
345
|
+
return { adapter, ref };
|
|
346
|
+
},
|
|
347
|
+
};
|
|
348
|
+
}
|
|
349
|
+
/**
|
|
350
|
+
* GitLab `--mr` composition (P4): resolve the NUMERIC project id from the remote
|
|
351
|
+
* path (R-GITLAB — path is mutable, id is canonical), build the GitLab adapter.
|
|
352
|
+
*/
|
|
353
|
+
function gitlabPostbackConfig() {
|
|
354
|
+
return {
|
|
355
|
+
label: 'MR',
|
|
356
|
+
flag: '--mr',
|
|
357
|
+
forgeName: 'GitLab',
|
|
358
|
+
resolveToken: resolveMrToken,
|
|
359
|
+
tokenHint: 'Set GITLAB_TOKEN (or GL_TOKEN) in your environment, or run `ghagga login`.',
|
|
360
|
+
// Disclose the REAL resolved API host (remote host + GITLAB_HOST /
|
|
361
|
+
// GITLAB_API_BASE overrides) — the ACTUAL host the GITLAB_TOKEN is sent to.
|
|
362
|
+
// A poisoned `origin` (or override) therefore surfaces BEFORE the post.
|
|
363
|
+
resolveTargetHost: () => {
|
|
364
|
+
const remoteUrl = execSync('git remote get-url origin', { encoding: 'utf-8' }).trim();
|
|
365
|
+
const { host } = parseGitLabRemote(remoteUrl);
|
|
366
|
+
return gitlabApiBaseHost(resolveGitLabApiBase(host));
|
|
367
|
+
},
|
|
368
|
+
async buildComposition(token, mrIid) {
|
|
369
|
+
const remoteUrl = execSync('git remote get-url origin', { encoding: 'utf-8' }).trim();
|
|
370
|
+
// Self-hosted GitLab: derive the API base from the REMOTE host (with a
|
|
371
|
+
// GITLAB_HOST / GITLAB_API_BASE env override) so a self-managed instance
|
|
372
|
+
// works, not just gitlab.com.
|
|
373
|
+
const { host, projectPath } = parseGitLabRemote(remoteUrl);
|
|
374
|
+
const apiBase = resolveGitLabApiBase(host);
|
|
375
|
+
const resolvedToken = await new StaticTokenProvider(token).getToken();
|
|
376
|
+
// R-GITLAB: nativeId MUST be the numeric project id (GET /projects/:path).
|
|
377
|
+
const projectId = await resolveGitLabProjectId(projectPath, resolvedToken, apiBase);
|
|
378
|
+
const adapter = new GitLabForgeAdapter({
|
|
379
|
+
client: createCliGitLabClientPort(apiBase),
|
|
380
|
+
token: resolvedToken,
|
|
381
|
+
projectId,
|
|
382
|
+
});
|
|
383
|
+
const ref = {
|
|
384
|
+
repo: { kind: 'gitlab', nativeId: projectId, path: projectPath },
|
|
385
|
+
iid: mrIid,
|
|
386
|
+
};
|
|
387
|
+
return { adapter, ref };
|
|
388
|
+
},
|
|
389
|
+
};
|
|
390
|
+
}
|
|
391
|
+
/**
|
|
392
|
+
* Extract the bare host from a resolved GitLab API base (`https://<host>/api/v4`
|
|
393
|
+
* or a verbatim `GITLAB_API_BASE`). Used ONLY for the human-readable pre-POST
|
|
394
|
+
* disclosure line — falls back to the raw base if it cannot be URL-parsed (e.g. a
|
|
395
|
+
* malformed override) so the user still sees SOMETHING about the destination.
|
|
396
|
+
*/
|
|
397
|
+
function gitlabApiBaseHost(apiBase) {
|
|
398
|
+
try {
|
|
399
|
+
return new URL(apiBase).host;
|
|
400
|
+
}
|
|
401
|
+
catch {
|
|
402
|
+
return apiBase;
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
/**
|
|
406
|
+
* Handle `--pr` (GitHub) / `--mr` (GitLab): post (idempotently upsert) the review
|
|
407
|
+
* summary as a comment on the change request, routed through the SHARED
|
|
408
|
+
* {@link composeForgePostback} pipeline (BL-CLI-FORGE-COMPOSITION). The
|
|
409
|
+
* forge-specific glue (token resolver, remote parse, adapter, ref identity) is
|
|
410
|
+
* supplied by the per-forge {@link ForgePostbackConfig}; the find-stale→delete→
|
|
411
|
+
* repost idempotency lives inside the adapter + the forge-neutral
|
|
412
|
+
* {@link postSummaryComment}.
|
|
413
|
+
*
|
|
414
|
+
* Token resolution is env-first (CI/Jenkins) with stored-login fallback. Missing
|
|
415
|
+
* token is a hard, actionable error (unlike issue-export's soft-skip) because the
|
|
416
|
+
* flag is an explicit post-back request. A 401 with a static token is fatal —
|
|
417
|
+
* there is nothing to re-mint, so NO invalidate-retry is attempted.
|
|
418
|
+
*
|
|
419
|
+
* BLOCKING by default: the flag is an explicitly-requested side-effect, so
|
|
420
|
+
* failing to perform it (thrown error OR missing token) is a JOB failure. The
|
|
421
|
+
* review output is already emitted; we only signal the failure via the RETURN
|
|
422
|
+
* value so the caller folds it into the worst exit code. `--pr-soft-fail` flips
|
|
423
|
+
* this to the non-blocking behavior (warn + keep exit 0).
|
|
424
|
+
*
|
|
425
|
+
* @returns true when the summary was posted (or soft-fail-skipped), false when an
|
|
426
|
+
* explicitly-requested post-back FAILED (token missing or error thrown).
|
|
427
|
+
*/
|
|
428
|
+
async function handleForgePostback(result, options, forge, changeRequestNumber) {
|
|
429
|
+
const softFail = options.prSoftFail ?? false;
|
|
430
|
+
const config = forge === 'github' ? githubPostbackConfig() : gitlabPostbackConfig();
|
|
431
|
+
// Render the body via core's formatter (PARITY with the server PR comment).
|
|
432
|
+
const body = formatReviewComment(result, { fileList: result.metadata.fileList });
|
|
433
|
+
const marker = { html: REVIEW_COMMENT_MARKER };
|
|
434
|
+
try {
|
|
435
|
+
// SECURITY HYGIENE: disclose the DESTINATION HOST on stderr BEFORE the POST
|
|
436
|
+
// fires, so the user sees where their token is going even if the post then
|
|
437
|
+
// fails/hangs. For GitLab the host is the REAL resolved API host (derived
|
|
438
|
+
// from the git remote + env overrides) — a poisoned `origin` that would
|
|
439
|
+
// exfiltrate the token is therefore visible. stderr ONLY (never stdout /
|
|
440
|
+
// SARIF): console.error regardless of --output, one line per post.
|
|
441
|
+
const targetHost = config.resolveTargetHost();
|
|
442
|
+
console.error(`→ Posting ${config.label} #${changeRequestNumber} review to ${targetHost}`);
|
|
443
|
+
const outcome = await composeForgePostback({
|
|
444
|
+
changeRequestNumber,
|
|
445
|
+
resolveToken: config.resolveToken,
|
|
446
|
+
buildComposition: config.buildComposition,
|
|
447
|
+
body,
|
|
448
|
+
marker,
|
|
449
|
+
});
|
|
450
|
+
if (outcome.kind === 'missing-token') {
|
|
451
|
+
const errMsg = `❌ ${config.flag} requires a ${config.forgeName} token. ${config.tokenHint}`;
|
|
452
|
+
if (softFail) {
|
|
453
|
+
if (options.outputFormat)
|
|
454
|
+
console.error(errMsg);
|
|
455
|
+
else
|
|
456
|
+
tui.log.warn(errMsg);
|
|
457
|
+
return true;
|
|
458
|
+
}
|
|
459
|
+
if (options.outputFormat)
|
|
460
|
+
console.error(errMsg);
|
|
461
|
+
else
|
|
462
|
+
tui.log.error(errMsg);
|
|
463
|
+
return false;
|
|
464
|
+
}
|
|
465
|
+
const { createdNativeId, deletedNativeIds } = outcome.result;
|
|
466
|
+
const stale = deletedNativeIds.length > 0 ? ` (replaced ${deletedNativeIds.length} stale)` : '';
|
|
467
|
+
issueLog(options, `✅ ${config.label} #${changeRequestNumber} summary posted (comment ${createdNativeId})${stale}`);
|
|
468
|
+
return true;
|
|
469
|
+
}
|
|
470
|
+
catch (error) {
|
|
471
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
472
|
+
if (softFail) {
|
|
473
|
+
issueLog(options, `⚠️ ${config.label} post-back failed (soft-fail, ignoring): ${msg}`);
|
|
474
|
+
return true;
|
|
475
|
+
}
|
|
476
|
+
// BLOCKING: surface the failure so the caller exits non-zero. The review
|
|
477
|
+
// output itself is already printed and is unaffected.
|
|
478
|
+
const failMsg = `❌ ${config.label} post-back failed: ${msg}`;
|
|
479
|
+
if (options.outputFormat)
|
|
480
|
+
console.error(failMsg);
|
|
481
|
+
else
|
|
482
|
+
tui.log.error(failMsg);
|
|
483
|
+
return false;
|
|
484
|
+
}
|
|
485
|
+
}
|
|
264
486
|
/**
|
|
265
487
|
* Print issue URL to stderr when --output is set (stdout reserved for format),
|
|
266
488
|
* otherwise use tui.log.success().
|
|
@@ -377,6 +599,17 @@ function mergeSettings(options, fileConfig) {
|
|
|
377
599
|
for (const tool of disabledTools) {
|
|
378
600
|
enabledTools.delete(tool);
|
|
379
601
|
}
|
|
602
|
+
// Resolve lens configuration: CLI --lenses flag > .ghagga.json lenses > undefined (defaults)
|
|
603
|
+
const lenses = options.lenses
|
|
604
|
+
? options.lenses
|
|
605
|
+
.split(',')
|
|
606
|
+
.map((s) => s.trim())
|
|
607
|
+
.filter(Boolean)
|
|
608
|
+
: fileConfig.lenses;
|
|
609
|
+
// Resolve lens directory: CLI --lens-dir > default .ghagga/lenses/
|
|
610
|
+
// The lensDir is resolved to an absolute path relative to the repo root later,
|
|
611
|
+
// but we set the default convention here.
|
|
612
|
+
const lensDir = options.lensDir ?? join(resolve('.'), '.ghagga', 'lenses');
|
|
380
613
|
return {
|
|
381
614
|
enableSemgrep: options.semgrep ?? fileConfig.enableSemgrep ?? DEFAULT_SETTINGS.enableSemgrep,
|
|
382
615
|
enableTrivy: options.trivy ?? fileConfig.enableTrivy ?? DEFAULT_SETTINGS.enableTrivy,
|
|
@@ -387,6 +620,8 @@ function mergeSettings(options, fileConfig) {
|
|
|
387
620
|
reviewLevel: fileConfig.reviewLevel ?? DEFAULT_SETTINGS.reviewLevel,
|
|
388
621
|
disabledTools: Array.from(disabledTools),
|
|
389
622
|
enabledTools: Array.from(enabledTools),
|
|
623
|
+
lenses,
|
|
624
|
+
lensDir,
|
|
390
625
|
};
|
|
391
626
|
}
|
|
392
627
|
// ─── Tool List ──────────────────────────────────────────────────
|
|
@@ -537,6 +772,7 @@ function getExitCode(status) {
|
|
|
537
772
|
return 0;
|
|
538
773
|
case 'FAILED':
|
|
539
774
|
case 'NEEDS_HUMAN_REVIEW':
|
|
775
|
+
case 'PARTIAL':
|
|
540
776
|
return 1;
|
|
541
777
|
default: {
|
|
542
778
|
const _exhaustive = status;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review.js","sourceRoot":"","sources":["../../src/commands/review.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"review.js","sourceRoot":"","sources":["../../src/commands/review.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAY1C,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,sBAAsB,EACtB,qBAAqB,EACrB,cAAc,EACd,mBAAmB,EACnB,YAAY,GACb,MAAM,aAAa,CAAC;AACrB,OAAO,EAEL,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAClG,OAAO,EACL,yBAAyB,EACzB,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAyB,MAAM,0BAA0B,CAAC;AACvF,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAChE,OAAO,EACL,aAAa,EACb,WAAW,EACX,WAAW,EACX,eAAe,EACf,iBAAiB,GAClB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,GAAG,MAAM,cAAc,CAAC;AACpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAwE7D,mEAAmE;AAEnE,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,UAAkB,EAAE,OAAsB;IAC5E,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAErC,IAAI,aAAwC,CAAC;IAE7C,IAAI,CAAC;QACH,4DAA4D;QAC5D,sBAAsB,EAAE,CAAC;QAEzB,4DAA4D;QAC5D,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACtB,aAAa,CAAC,OAAO,CAAC,YAAY,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;YACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,4DAA4D;QAC5D,uBAAuB,CAAC,OAAO,CAAC,CAAC;QAEjC,6DAA6D;QAC7D,iBAAiB,CAAC,OAAO,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;QAC1D,iBAAiB,CAAC,OAAO,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;QAExD,4DAA4D;QAC5D,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACxC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,2EAA2E,CAAC,CAAC;YAC3F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,kEAAkE;QAClE,+EAA+E;QAC/E,+EAA+E;QAC/E,+CAA+C;QAC/C,IAAI,OAAO,CAAC,EAAE,IAAI,IAAI,IAAI,OAAO,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC;YAC7C,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,+DAA+D,CAAC,CAAC;YAC/E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,kEAAkE;QAClE,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACtB,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAEjD,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;gBAC/B,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,oCAAoC,aAAa,EAAE,CAAC,CAAC;gBACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,MAAM,OAAO,GAAG,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;YAErD,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;gBAC1B,GAAG,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;YAC/C,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC;gBACvC,OAAO;gBACP,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,KAAK,EAAE,OAAO,CAAC,KAAK;aACrB,CAAC,CAAC;YAEH,oCAAoC;YACpC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;YAE5D,yDAAyD;YACzD,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,YAAY,IAAI,KAAK,CAAC,CAAC;YACxE,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;gBAC1B,GAAG,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;YAC9C,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC;QAED,4DAA4D;QAC5D,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAE7E,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtC,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM;gBACxB,CAAC,CAAC,gEAAgE;gBAClE,CAAC,CAAC,wEAAwE,CAAC;YAC7E,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,oCAAoC;QACpC,MAAM,UAAU,GAAG,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QAE5D,sEAAsE;QACtE,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAEpD,wBAAwB;QACxB,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;YAC1B,GAAG,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;YACnC,GAAG,CAAC,GAAG,CAAC,OAAO,CACb,YAAY,OAAO,CAAC,IAAI,gBAAgB,OAAO,CAAC,QAAQ,aAAa,OAAO,CAAC,KAAK,EAAE,CACrF,CAAC;YACF,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBACnB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;YACnD,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;QAED,sCAAsC;QACtC,MAAM,YAAY,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAEhD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,6DAA6D;YAC7D,MAAM,aAAa,GACjB,OAAO,CAAC,aAAa;gBACpB,OAAO,CAAC,GAAG,CAAC,qBAAyD;gBACtE,QAAQ,CAAC;YAEX,yBAAyB;YACzB,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAU,CAAC;YACpD,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,aAA+C,CAAC,EAAE,CAAC;gBAC7E,GAAG,CAAC,GAAG,CAAC,KAAK,CACX,6BAA6B,aAAa,mBAAmB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACxF,CAAC;gBACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,EAAE,WAAW,CAAC,CAAC;gBAEjD,IAAI,aAAa,KAAK,QAAQ,EAAE,CAAC;oBAC/B,iDAAiD;oBACjD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,uBAAuB,CAAC;oBAC7E,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB;wBACrD,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,GAAG,IAAI;wBAClD,CAAC,CAAC,SAAS,CAAC;oBAEd,MAAM,aAAa,GAAG,MAAM,mBAAmB,CAAC,MAAM,CAAC;wBACrD,IAAI,EAAE,UAAU;wBAChB,GAAG,CAAC,aAAa,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBAC7D,CAAC,CAAC;oBAEH,IAAI,aAAa,EAAE,CAAC;wBAClB,aAAa,GAAG,aAAa,CAAC;oBAChC,CAAC;yBAAM,CAAC;wBACN,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;wBACxE,aAAa,GAAG,MAAM,mBAAmB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;oBAC3D,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,aAAa,GAAG,MAAM,mBAAmB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAC3D,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACnE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,oCAAoC,GAAG,EAAE,CAAC,CAAC;gBACxD,aAAa,GAAG,SAAS,CAAC;YAC5B,CAAC;QACH,CAAC;QAED,6CAA6C;QAC7C,MAAM,oBAAoB,GAAG,CAAC,CAAC,CAAC,2DAA2D;QAC3F,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACxE,MAAM,UAAU,GAAG,oBAAoB,GAAG,eAAe,CAAC;QAE1D,kCAAkC;QAClC,IAAI,SAAS,GAAG,CAAC,CAAC;QAElB,IAAI,CAA6C,CAAC;QAClD,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;YAC1B,CAAC,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;YAClB,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;YACxB,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAChC,CAAC;QAED,MAAM,UAAU,GAAqB,OAAO,CAAC,OAAO;YAClD,CAAC,CAAC,qBAAqB,EAAE;YACzB,CAAC,CAAC,CAAC,KAAoB,EAAE,EAAE;gBACvB,SAAS,EAAE,CAAC;gBACZ,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;oBAC1B,GAAG,CAAC,QAAQ,CAAC,SAAS,EAAE,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;gBACrD,CAAC;YACH,CAAC,CAAC;QAEN,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC;YAClC,IAAI;YACJ,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,QAAQ;YACR,OAAO,EAAE;gBACP,YAAY;gBACZ,QAAQ,EAAE,CAAC;gBACX,cAAc,EAAE,EAAE;gBAClB,QAAQ,EAAE,EAAE;aACb;YACD,aAAa;YACb,UAAU;YACV,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,uDAAuD;YACvD,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACrD,CAAC,CAAC;QAEH,mCAAmC;QACnC,MAAM,aAAa,EAAE,KAAK,EAAE,CAAC;QAE7B,IAAI,CAAC,EAAE,CAAC;YACN,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YAC5B,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;QAED,4BAA4B;QAC5B,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAE5D,2DAA2D;QAC3D,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,MAAM,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC3C,CAAC;QAED,6EAA6E;QAC7E,8EAA8E;QAC9E,6EAA6E;QAC7E,4EAA4E;QAC5E,6EAA6E;QAC7E,IAAI,gBAAgB,GAAG,KAAK,CAAC;QAC7B,IAAI,OAAO,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,EAAE,GAAG,MAAM,mBAAmB,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;YAC5E,gBAAgB,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,IAAI,KAAK,CAAC,CAAC;QAC3D,CAAC;aAAM,IAAI,OAAO,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC;YAC9B,MAAM,EAAE,GAAG,MAAM,mBAAmB,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;YAC5E,gBAAgB,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,IAAI,KAAK,CAAC,CAAC;QAC3D,CAAC;QAED,wDAAwD;QACxD,wEAAwE;QACxE,yEAAyE;QACzE,8EAA8E;QAC9E,mDAAmD;QACnD,MAAM,cAAc,GAAG,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,YAAY,IAAI,KAAK,CAAC,CAAC;QAC9E,MAAM,QAAQ,GAAG,cAAc,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClF,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;YAC1B,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAC/B,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,2CAA2C;QAC3C,MAAM,aAAa,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAE7C,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,sBAAsB,OAAO,EAAE,CAAC,CAAC;QAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,mEAAmE;AAEnE;;;GAGG;AACH,KAAK,UAAU,iBAAiB,CAAC,MAAoB,EAAE,OAAsB;IAC3E,IAAI,CAAC;QACH,2BAA2B;QAC3B,MAAM,KAAK,GAAG,cAAc,EAAE,CAAC;QAC/B,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;YAC/E,OAAO;QACT,CAAC;QAED,wBAAwB;QACxB,MAAM,SAAS,GAAG,QAAQ,CAAC,2BAA2B,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAEtF,sBAAsB;QACtB,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAErD,mBAAmB;QACnB,MAAM,GAAG,GAAG,QAAQ,CAAC,4BAA4B,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAEjF,yBAAyB;QACzB,MAAM,WAAW,CAAC;YAChB,KAAK;YACL,KAAK;YACL,IAAI;YACJ,IAAI,EAAE,eAAe;YACrB,KAAK,EAAE,QAAQ;YACf,WAAW,EAAE,4BAA4B;SAC1C,CAAC,CAAC;QAEH,uBAAuB;QACvB,MAAM,IAAI,GAAG,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,CAAC;QAEjE,6BAA6B;QAC7B,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;YAC5B,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,WAAW,CAAC;gBAChC,KAAK;gBACL,KAAK;gBACL,IAAI;gBACJ,KAAK,EAAE,mBAAmB,GAAG,EAAE;gBAC/B,IAAI;gBACJ,MAAM,EAAE,CAAC,eAAe,CAAC;aAC1B,CAAC,CAAC;YACH,QAAQ,CAAC,OAAO,EAAE,oBAAoB,GAAG,EAAE,CAAC,CAAC;QAC/C,CAAC;aAAM,CAAC;YACN,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;YAC7D,IAAI,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;gBAClD,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,6BAA6B,OAAO,CAAC,KAAK,iCAAiC,CAAC,CAAC;gBAC1F,OAAO;YACT,CAAC;YACD,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,aAAa,CAAC;gBAClC,KAAK;gBACL,KAAK;gBACL,IAAI;gBACJ,WAAW;gBACX,IAAI;aACL,CAAC,CAAC;YACH,QAAQ,CAAC,OAAO,EAAE,oBAAoB,GAAG,EAAE,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,4BAA4B,GAAG,EAAE,CAAC,CAAC;IAClD,CAAC;AACH,CAAC;AA2BD,kFAAkF;AAClF,SAAS,oBAAoB;IAC3B,OAAO;QACL,KAAK,EAAE,IAAI;QACX,IAAI,EAAE,MAAM;QACZ,SAAS,EAAE,QAAQ;QACnB,YAAY,EAAE,cAAc;QAC5B,SAAS,EAAE,4EAA4E;QACvF,6EAA6E;QAC7E,0CAA0C;QAC1C,iBAAiB,EAAE,GAAG,EAAE,CAAC,gBAAgB;QACzC,KAAK,CAAC,gBAAgB,CAAC,KAAK,EAAE,QAAQ;YACpC,wEAAwE;YACxE,MAAM,SAAS,GAAG,QAAQ,CAAC,2BAA2B,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACtF,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;YACrD,2EAA2E;YAC3E,wEAAwE;YACxE,MAAM,aAAa,GAAG,MAAM,IAAI,mBAAmB,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;YACtE,MAAM,OAAO,GAAG,IAAI,kBAAkB,CAAC;gBACrC,MAAM,EAAE,yBAAyB,EAAE;gBACnC,KAAK,EAAE,aAAa;gBACpB,KAAK;gBACL,IAAI;aACL,CAAC,CAAC;YACH,4EAA4E;YAC5E,sEAAsE;YACtE,uEAAuE;YACvE,8EAA8E;YAC9E,0EAA0E;YAC1E,yEAAyE;YACzE,iEAAiE;YACjE,qEAAqE;YACrE,0EAA0E;YAC1E,+CAA+C;YAC/C,IAAI,QAAQ,GAAG,GAAG,KAAK,IAAI,IAAI,EAAE,CAAC;YAClC,IAAI,CAAC;gBACH,QAAQ,GAAG,MAAM,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;YACnE,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,CACV,yDAAyD,KAAK,IAAI,IAAI,GAAG;oBACvE,IAAI,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK;oBAC/D,2DAA2D,CAC9D,CAAC;YACJ,CAAC;YACD,MAAM,GAAG,GAAqB;gBAC5B,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,KAAK,IAAI,IAAI,EAAE,EAAE;gBAC5D,GAAG,EAAE,QAAQ;aACd,CAAC;YACF,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;QAC1B,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAS,oBAAoB;IAC3B,OAAO;QACL,KAAK,EAAE,IAAI;QACX,IAAI,EAAE,MAAM;QACZ,SAAS,EAAE,QAAQ;QACnB,YAAY,EAAE,cAAc;QAC5B,SAAS,EAAE,4EAA4E;QACvF,mEAAmE;QACnE,4EAA4E;QAC5E,wEAAwE;QACxE,iBAAiB,EAAE,GAAG,EAAE;YACtB,MAAM,SAAS,GAAG,QAAQ,CAAC,2BAA2B,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACtF,MAAM,EAAE,IAAI,EAAE,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAC9C,OAAO,iBAAiB,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC;QACvD,CAAC;QACD,KAAK,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK;YACjC,MAAM,SAAS,GAAG,QAAQ,CAAC,2BAA2B,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACtF,uEAAuE;YACvE,yEAAyE;YACzE,8BAA8B;YAC9B,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAC3D,MAAM,OAAO,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;YAC3C,MAAM,aAAa,GAAG,MAAM,IAAI,mBAAmB,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;YACtE,2EAA2E;YAC3E,MAAM,SAAS,GAAG,MAAM,sBAAsB,CAAC,WAAW,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;YACpF,MAAM,OAAO,GAAG,IAAI,kBAAkB,CAAC;gBACrC,MAAM,EAAE,yBAAyB,CAAC,OAAO,CAAC;gBAC1C,KAAK,EAAE,aAAa;gBACpB,SAAS;aACV,CAAC,CAAC;YACH,MAAM,GAAG,GAAqB;gBAC5B,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE;gBAChE,GAAG,EAAE,KAAK;aACX,CAAC;YACF,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;QAC1B,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAS,iBAAiB,CAAC,OAAe;IACxC,IAAI,CAAC;QACH,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,KAAK,UAAU,mBAAmB,CAChC,MAAoB,EACpB,OAAsB,EACtB,KAA0B,EAC1B,mBAA2B;IAE3B,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,IAAI,KAAK,CAAC;IAC7C,MAAM,MAAM,GAAG,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,oBAAoB,EAAE,CAAC;IAEpF,4EAA4E;IAC5E,MAAM,IAAI,GAAG,mBAAmB,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;IACjF,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC;IAE/C,IAAI,CAAC;QACH,4EAA4E;QAC5E,2EAA2E;QAC3E,0EAA0E;QAC1E,wEAAwE;QACxE,yEAAyE;QACzE,mEAAmE;QACnE,MAAM,UAAU,GAAG,MAAM,CAAC,iBAAiB,EAAE,CAAC;QAC9C,OAAO,CAAC,KAAK,CAAC,aAAa,MAAM,CAAC,KAAK,KAAK,mBAAmB,cAAc,UAAU,EAAE,CAAC,CAAC;QAE3F,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC;YACzC,mBAAmB;YACnB,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;YACzC,IAAI;YACJ,MAAM;SACP,CAAC,CAAC;QAEH,IAAI,OAAO,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YACrC,MAAM,MAAM,GAAG,KAAK,MAAM,CAAC,IAAI,eAAe,MAAM,CAAC,SAAS,WAAW,MAAM,CAAC,SAAS,EAAE,CAAC;YAC5F,IAAI,QAAQ,EAAE,CAAC;gBACb,IAAI,OAAO,CAAC,YAAY;oBAAE,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;;oBAC3C,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC1B,OAAO,IAAI,CAAC;YACd,CAAC;YACD,IAAI,OAAO,CAAC,YAAY;gBAAE,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;;gBAC3C,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC3B,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,EAAE,eAAe,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7D,MAAM,KAAK,GAAG,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,gBAAgB,CAAC,MAAM,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QAChG,QAAQ,CACN,OAAO,EACP,KAAK,MAAM,CAAC,KAAK,KAAK,mBAAmB,4BAA4B,eAAe,IAAI,KAAK,EAAE,CAChG,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnE,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,OAAO,EAAE,OAAO,MAAM,CAAC,KAAK,4CAA4C,GAAG,EAAE,CAAC,CAAC;YACxF,OAAO,IAAI,CAAC;QACd,CAAC;QACD,yEAAyE;QACzE,sDAAsD;QACtD,MAAM,OAAO,GAAG,KAAK,MAAM,CAAC,KAAK,sBAAsB,GAAG,EAAE,CAAC;QAC7D,IAAI,OAAO,CAAC,YAAY;YAAE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;;YAC5C,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC5B,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,QAAQ,CAAC,OAAsB,EAAE,OAAe;IACvD,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QACzB,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACzB,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;AACH,CAAC;AAED,mEAAmE;AAEnE;;;GAGG;AACH,SAAS,UAAU,CAAC,QAAgB;IAClC,MAAM,QAAQ,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAgB,EAAE,SAAS,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC;IAE5F,iCAAiC;IACjC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,QAAQ,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;QAClE,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,OAAO,MAAM,CAAC;QAChB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,qCAAqC;IACvC,CAAC;IAED,iCAAiC;IACjC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,QAAQ,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;QAChE,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,OAAO,QAAQ,CAAC;QAClB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,uDAAuD;IACzD,CAAC;IAED,6BAA6B;IAC7B,IAAI,CAAC;QACH,OAAO,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;IACnD,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CACb,gCAAgC,QAAQ,KAAK;YAC3C,sDAAsD,CACzD,CAAC;IACJ,CAAC;AACH,CAAC;AAED,mEAAmE;AAEnE;;GAEG;AACH,SAAS,cAAc,CAAC,QAAgB,EAAE,UAAmB;IAC3D,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;IAEnF,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAiB,CAAC;IACzC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,oCAAoC,OAAO,EAAE,CAAC,CAAC;QAC5D,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,mEAAmE;AAEnE;;;;;;;;GAQG;AACH,SAAS,aAAa,CAAC,OAAsB,EAAE,UAAwB;IACrE,kFAAkF;IAClF,MAAM,aAAa,GAAG,IAAI,GAAG,CAAS,gBAAgB,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC;IAE5E,wDAAwD;IACxD,IAAI,OAAO,CAAC,OAAO,KAAK,KAAK;QAAE,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC5D,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK;QAAE,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACxD,IAAI,OAAO,CAAC,GAAG,KAAK,KAAK;QAAE,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAEpD,gCAAgC;IAChC,IAAI,UAAU,CAAC,aAAa,EAAE,CAAC;QAC7B,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,aAAa;YAAE,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACvE,CAAC;IAED,iDAAiD;IACjD,IAAI,UAAU,CAAC,aAAa,KAAK,KAAK;QAAE,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACrE,IAAI,UAAU,CAAC,WAAW,KAAK,KAAK;QAAE,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACjE,IAAI,UAAU,CAAC,SAAS,KAAK,KAAK;QAAE,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAE7D,uDAAuD;IACvD,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,YAAY,IAAI,EAAE;QAAE,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAEvE,6DAA6D;IAC7D,MAAM,YAAY,GAAG,IAAI,GAAG,CAAS,gBAAgB,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;IAE1E,2BAA2B;IAC3B,IAAI,UAAU,CAAC,YAAY,EAAE,CAAC;QAC5B,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,YAAY;YAAE,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACrE,CAAC;IAED,+BAA+B;IAC/B,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,WAAW,IAAI,EAAE;QAAE,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAErE,mEAAmE;IACnE,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;QACjC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED,6FAA6F;IAC7F,MAAM,MAAM,GAAyB,OAAO,CAAC,MAAM;QACjD,CAAC,CAAC,OAAO,CAAC,MAAM;aACX,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aACpB,MAAM,CAAC,OAAO,CAAC;QACpB,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;IAEtB,mEAAmE;IACnE,+EAA+E;IAC/E,0CAA0C;IAC1C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAE3E,OAAO;QACL,aAAa,EAAE,OAAO,CAAC,OAAO,IAAI,UAAU,CAAC,aAAa,IAAI,gBAAgB,CAAC,aAAa;QAC5F,WAAW,EAAE,OAAO,CAAC,KAAK,IAAI,UAAU,CAAC,WAAW,IAAI,gBAAgB,CAAC,WAAW;QACpF,SAAS,EAAE,OAAO,CAAC,GAAG,IAAI,UAAU,CAAC,SAAS,IAAI,gBAAgB,CAAC,SAAS;QAC5E,YAAY,EAAE,OAAO,CAAC,MAAM,IAAI,IAAI,EAAE,kDAAkD;QACxF,WAAW,EAAE,UAAU,CAAC,WAAW,IAAI,gBAAgB,CAAC,WAAW;QACnE,cAAc,EAAE,UAAU,CAAC,cAAc,IAAI,gBAAgB,CAAC,cAAc;QAC5E,WAAW,EACR,UAAU,CAAC,WAA6C,IAAI,gBAAgB,CAAC,WAAW;QAC3F,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC;QACxC,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC;QACtC,MAAM;QACN,OAAO;KACR,CAAC;AACJ,CAAC;AAED,mEAAmE;AAEnE;;;;GAIG;AACH,SAAS,aAAa,CAAC,MAA2B;IAChD,sBAAsB,EAAE,CAAC;IACzB,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC;IAEvC,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAChC,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,OAAO,EAAE,CAAC,CAAC,OAAO;SACnB,CAAC,CAAC,CAAC;QACJ,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3C,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;IAChE,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC;IAEpE,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;IAC/C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACzB,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IACvD,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC3B,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACpC,CAAC;AAED,mEAAmE;AAEnE,mDAAmD;AACnD,MAAM,gBAAgB,GAA2B;IAC/C,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,OAAO;IACd,GAAG,EAAE,KAAK;CACX,CAAC;AAEF;;;GAGG;AACH,SAAS,uBAAuB,CAAC,OAAsB;IACrD,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,KAAK,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACpE,uEAAuE;QACvE,MAAM,KAAK,GAAG,OAAO,CAAC,QAA+B,CAAC,CAAC;QACvD,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;YACpB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,QAAQ,sCAAsC,QAAQ,UAAU,CAAC,CAAC;YACzF,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,mEAAmE;AAEnE;;;GAGG;AACH,SAAS,iBAAiB,CAAC,SAA+B,EAAE,SAAiB;IAC3E,IAAI,CAAC,SAAS,EAAE,MAAM;QAAE,OAAO;IAE/B,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAE5D,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAA8B,CAAC,EAAE,CAAC;YACzD,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,0BAA0B,IAAI,mBAAmB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzF,CAAC;IACH,CAAC;AACH,CAAC;AAED,mEAAmE;AAEnE;;;;GAIG;AACH,SAAS,qBAAqB;IAC5B,OAAO,CAAC,KAAoB,EAAE,EAAE;QAC9B,MAAM,IAAI,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAEzC,MAAM,MAAM,GAAG,KAAK,IAAI,KAAK,KAAK,CAAC,IAAI,GAAG,CAAC;QAC3C,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAE3C,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACjB,sCAAsC;YACtC,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM;iBAC1B,KAAK,CAAC,IAAI,CAAC;iBACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,IAAI,EAAE,CAAC;iBAC9B,IAAI,CAAC,IAAI,CAAC,CAAC;YACd,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED,mEAAmE;AAEnE;;;GAGG;AACH,SAAS,YAAY,CACnB,MAAoB,EACpB,YAAuD,EACvD,OAAgB;IAEhB,QAAQ,YAAY,EAAE,CAAC;QACrB,KAAK,MAAM;YACT,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC7C,MAAM;QACR,KAAK,OAAO;YACV,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,IAAI,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC7E,MAAM;QACR,KAAK,UAAU;YACb,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC;YAC1C,MAAM;QACR,OAAO,CAAC,CAAC,CAAC;YACR,yDAAyD;YACzD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;YAC1C,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC,CAAC;YACrD,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACpB,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC;YAC9C,MAAM;QACR,CAAC;IACH,CAAC;AACH,CAAC;AAED,mEAAmE;AAEnE;;;;;;GAMG;AACH,SAAS,eAAe,CAAC,MAAoB,EAAE,YAAqB;IAClE,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,iBAAiB,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAC5C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,UAAU,IAAI,CAAC,CAAC,QAAQ,KAAK,MAAM,CAC1D,CAAC;QACF,OAAO,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC;IACD,+CAA+C;IAC/C,OAAO,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACpC,CAAC;AAED;;;GAGG;AACH,SAAS,WAAW,CAAC,MAAoB;IACvC,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,QAAQ,CAAC;QACd,KAAK,SAAS;YACZ,OAAO,CAAC,CAAC;QACX,KAAK,QAAQ,CAAC;QACd,KAAK,oBAAoB,CAAC;QAC1B,KAAK,SAAS;YACZ,OAAO,CAAC,CAAC;QACX,OAAO,CAAC,CAAC,CAAC;YACR,MAAM,WAAW,GAAU,MAAM,CAAC;YAClC,OAAO,CAAC,IAAI,CAAC,mBAAmB,WAAqB,EAAE,CAAC,CAAC;YACzD,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* P4 — `ghagga review --mr N` (GitLab MR) post-back routes through the SHARED
|
|
3
|
+
* composition helper (composeForgePostback → postSummaryComment) and honors the
|
|
4
|
+
* SAME blocking-by-default exit semantics as `--pr` (FIX 3). `--pr-soft-fail`
|
|
5
|
+
* (shared) opts out.
|
|
6
|
+
*
|
|
7
|
+
* We mock the seams reviewCommand composes (pipeline, git, gitlab-token,
|
|
8
|
+
* gitlab-api, gitlab client port, post-back, core formatters) so these tests are
|
|
9
|
+
* deterministic + offline, and assert the resolved process exit code + that the
|
|
10
|
+
* GitLab adapter is the one constructed (shared helper routes --mr to GitLab).
|
|
11
|
+
*/
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=review.mr-exit.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review.mr-exit.test.d.ts","sourceRoot":"","sources":["../../src/commands/review.mr-exit.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG"}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* P4 — `ghagga review --mr N` (GitLab MR) post-back routes through the SHARED
|
|
3
|
+
* composition helper (composeForgePostback → postSummaryComment) and honors the
|
|
4
|
+
* SAME blocking-by-default exit semantics as `--pr` (FIX 3). `--pr-soft-fail`
|
|
5
|
+
* (shared) opts out.
|
|
6
|
+
*
|
|
7
|
+
* We mock the seams reviewCommand composes (pipeline, git, gitlab-token,
|
|
8
|
+
* gitlab-api, gitlab client port, post-back, core formatters) so these tests are
|
|
9
|
+
* deterministic + offline, and assert the resolved process exit code + that the
|
|
10
|
+
* GitLab adapter is the one constructed (shared helper routes --mr to GitLab).
|
|
11
|
+
*/
|
|
12
|
+
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
|
|
13
|
+
vi.mock('ghagga-core', () => ({
|
|
14
|
+
reviewPipeline: vi.fn(),
|
|
15
|
+
buildSarif: vi.fn().mockReturnValue({ version: '2.1.0', runs: [] }),
|
|
16
|
+
formatReviewComment: vi.fn().mockReturnValue('<!-- ghagga-review -->\nbody'),
|
|
17
|
+
formatBoxSummary: vi.fn().mockReturnValue([]),
|
|
18
|
+
REVIEW_COMMENT_MARKER: '<!-- ghagga-review -->',
|
|
19
|
+
DEFAULT_SETTINGS: {
|
|
20
|
+
enableSemgrep: true,
|
|
21
|
+
enableTrivy: true,
|
|
22
|
+
enableCpd: true,
|
|
23
|
+
enableMemory: true,
|
|
24
|
+
customRules: [],
|
|
25
|
+
ignorePatterns: [],
|
|
26
|
+
reviewLevel: 'normal',
|
|
27
|
+
enabledTools: [],
|
|
28
|
+
disabledTools: [],
|
|
29
|
+
},
|
|
30
|
+
DEFAULT_MODELS: { gateway: 'auto', 'cli-bridge': 'auto', ollama: 'llama3' },
|
|
31
|
+
initializeDefaultTools: vi.fn(),
|
|
32
|
+
toolRegistry: { getAll: vi.fn().mockReturnValue([]) },
|
|
33
|
+
EngramMemoryStorage: { create: vi.fn() },
|
|
34
|
+
SqliteMemoryStorage: { create: vi.fn() },
|
|
35
|
+
formatReviewResult: vi.fn(),
|
|
36
|
+
}));
|
|
37
|
+
vi.mock('node:child_process', () => ({ execSync: vi.fn() }));
|
|
38
|
+
vi.mock('node:fs', () => ({ readFileSync: vi.fn(), existsSync: vi.fn().mockReturnValue(false) }));
|
|
39
|
+
vi.mock('../lib/gitlab-token.js', () => ({ resolveMrToken: vi.fn() }));
|
|
40
|
+
vi.mock('../lib/pr-postback.js', () => ({ postSummaryComment: vi.fn() }));
|
|
41
|
+
vi.mock('../lib/gitlab-api.js', () => ({
|
|
42
|
+
parseGitLabRemote: vi.fn().mockReturnValue({ host: 'gitlab.com', projectPath: 'acme/widgets' }),
|
|
43
|
+
GitLabApiError: class extends Error {
|
|
44
|
+
},
|
|
45
|
+
}));
|
|
46
|
+
vi.mock('../lib/cli-gitlab-client-port.js', () => ({
|
|
47
|
+
createCliGitLabClientPort: vi.fn(),
|
|
48
|
+
resolveGitLabApiBase: vi.fn().mockReturnValue('https://gitlab.com/api/v4'),
|
|
49
|
+
resolveGitLabProjectId: vi.fn().mockResolvedValue('12345'),
|
|
50
|
+
}));
|
|
51
|
+
// Track which adapter the shared helper constructs (routing proof).
|
|
52
|
+
const gitlabCtor = vi.fn();
|
|
53
|
+
const githubCtor = vi.fn();
|
|
54
|
+
vi.mock('ghagga-forge', () => ({
|
|
55
|
+
GitHubForgeAdapter: class {
|
|
56
|
+
constructor(deps) {
|
|
57
|
+
githubCtor(deps);
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
GitLabForgeAdapter: class {
|
|
61
|
+
constructor(deps) {
|
|
62
|
+
gitlabCtor(deps);
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
StaticTokenProvider: class {
|
|
66
|
+
async getToken() {
|
|
67
|
+
return 'glpat';
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
}));
|
|
71
|
+
vi.mock('../lib/cli-github-client-port.js', () => ({ createCliGitHubClientPort: vi.fn() }));
|
|
72
|
+
import { execSync } from 'node:child_process';
|
|
73
|
+
import { reviewPipeline } from 'ghagga-core';
|
|
74
|
+
import { resolveGitLabProjectId } from '../lib/cli-gitlab-client-port.js';
|
|
75
|
+
import { resolveMrToken } from '../lib/gitlab-token.js';
|
|
76
|
+
import { postSummaryComment } from '../lib/pr-postback.js';
|
|
77
|
+
const mockExecSync = vi.mocked(execSync);
|
|
78
|
+
const mockReviewPipeline = vi.mocked(reviewPipeline);
|
|
79
|
+
const mockResolveMrToken = vi.mocked(resolveMrToken);
|
|
80
|
+
const mockPostSummaryComment = vi.mocked(postSummaryComment);
|
|
81
|
+
const mockResolveProjectId = vi.mocked(resolveGitLabProjectId);
|
|
82
|
+
function defaultOptions(overrides = {}) {
|
|
83
|
+
return {
|
|
84
|
+
mode: 'simple',
|
|
85
|
+
provider: 'gateway',
|
|
86
|
+
model: 'm',
|
|
87
|
+
apiKey: 'k',
|
|
88
|
+
semgrep: true,
|
|
89
|
+
trivy: true,
|
|
90
|
+
cpd: true,
|
|
91
|
+
memory: false,
|
|
92
|
+
verbose: false,
|
|
93
|
+
disableTools: [],
|
|
94
|
+
enableTools: [],
|
|
95
|
+
...overrides,
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
function passedResult() {
|
|
99
|
+
return {
|
|
100
|
+
status: 'PASSED',
|
|
101
|
+
summary: 'ok',
|
|
102
|
+
findings: [],
|
|
103
|
+
staticAnalysis: {
|
|
104
|
+
semgrep: { status: 'skipped', findings: [], executionTimeMs: 0 },
|
|
105
|
+
trivy: { status: 'skipped', findings: [], executionTimeMs: 0 },
|
|
106
|
+
cpd: { status: 'skipped', findings: [], executionTimeMs: 0 },
|
|
107
|
+
},
|
|
108
|
+
memoryContext: null,
|
|
109
|
+
metadata: {
|
|
110
|
+
mode: 'simple',
|
|
111
|
+
provider: 'gateway',
|
|
112
|
+
model: 'm',
|
|
113
|
+
tokensUsed: 1,
|
|
114
|
+
executionTimeMs: 1,
|
|
115
|
+
toolsRun: [],
|
|
116
|
+
toolsSkipped: [],
|
|
117
|
+
fileList: [],
|
|
118
|
+
},
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
describe('reviewCommand — --mr post-back (P4, shared composition helper)', () => {
|
|
122
|
+
// biome-ignore lint/suspicious/noExplicitAny: spy
|
|
123
|
+
let exitSpy;
|
|
124
|
+
// biome-ignore lint/suspicious/noExplicitAny: spy
|
|
125
|
+
let errorSpy;
|
|
126
|
+
beforeEach(() => {
|
|
127
|
+
vi.clearAllMocks();
|
|
128
|
+
exitSpy = vi.spyOn(process, 'exit').mockImplementation((() => { }));
|
|
129
|
+
errorSpy = vi.spyOn(console, 'error').mockImplementation(() => { });
|
|
130
|
+
vi.spyOn(console, 'log').mockImplementation(() => { });
|
|
131
|
+
mockExecSync.mockReturnValue('git@gitlab.com:acme/widgets.git');
|
|
132
|
+
mockReviewPipeline.mockResolvedValue(passedResult());
|
|
133
|
+
});
|
|
134
|
+
afterEach(() => {
|
|
135
|
+
vi.restoreAllMocks();
|
|
136
|
+
});
|
|
137
|
+
it('--mr success → posts via the GitLab adapter through the SHARED helper, exit 0', async () => {
|
|
138
|
+
mockResolveMrToken.mockReturnValue('glpat');
|
|
139
|
+
mockPostSummaryComment.mockResolvedValue({ createdNativeId: 77, deletedNativeIds: [] });
|
|
140
|
+
const { reviewCommand } = await import('./review.js');
|
|
141
|
+
await reviewCommand('.', defaultOptions({ mr: 7, outputFormat: 'sarif' }));
|
|
142
|
+
// Routing proof: GitLab adapter constructed, NOT GitHub; ref via numeric id.
|
|
143
|
+
expect(gitlabCtor).toHaveBeenCalledOnce();
|
|
144
|
+
expect(githubCtor).not.toHaveBeenCalled();
|
|
145
|
+
expect(gitlabCtor).toHaveBeenCalledWith(expect.objectContaining({ projectId: '12345' }));
|
|
146
|
+
expect(mockResolveProjectId).toHaveBeenCalledWith('acme/widgets', 'glpat', 'https://gitlab.com/api/v4');
|
|
147
|
+
// Post routed through the shared forge-neutral postSummaryComment.
|
|
148
|
+
expect(mockPostSummaryComment).toHaveBeenCalledOnce();
|
|
149
|
+
expect(exitSpy).toHaveBeenCalledWith(0);
|
|
150
|
+
});
|
|
151
|
+
it('--mr + post-back throws → exit NON-ZERO (1) even when review PASSED', async () => {
|
|
152
|
+
mockResolveMrToken.mockReturnValue('glpat');
|
|
153
|
+
mockPostSummaryComment.mockRejectedValue(new Error('GitLab 500'));
|
|
154
|
+
const { reviewCommand } = await import('./review.js');
|
|
155
|
+
await reviewCommand('.', defaultOptions({ mr: 7, outputFormat: 'sarif' }));
|
|
156
|
+
expect(exitSpy).toHaveBeenCalledWith(1);
|
|
157
|
+
});
|
|
158
|
+
it('--mr + missing token → exit NON-ZERO (1) with a GitLab-specific message', async () => {
|
|
159
|
+
mockResolveMrToken.mockReturnValue(null);
|
|
160
|
+
const { reviewCommand } = await import('./review.js');
|
|
161
|
+
await reviewCommand('.', defaultOptions({ mr: 7, outputFormat: 'sarif' }));
|
|
162
|
+
expect(exitSpy).toHaveBeenCalledWith(1);
|
|
163
|
+
expect(errorSpy).toHaveBeenCalledWith(expect.stringContaining('--mr requires a GitLab token'));
|
|
164
|
+
});
|
|
165
|
+
it('--mr + --pr-soft-fail + throws → WARNS and exits 0', async () => {
|
|
166
|
+
mockResolveMrToken.mockReturnValue('glpat');
|
|
167
|
+
mockPostSummaryComment.mockRejectedValue(new Error('GitLab 500'));
|
|
168
|
+
const { reviewCommand } = await import('./review.js');
|
|
169
|
+
await reviewCommand('.', defaultOptions({ mr: 7, prSoftFail: true, outputFormat: 'sarif' }));
|
|
170
|
+
expect(exitSpy).toHaveBeenCalledWith(0);
|
|
171
|
+
});
|
|
172
|
+
it('both --pr AND --mr → defensive guard exits 1 BEFORE the pipeline runs (FIX D)', async () => {
|
|
173
|
+
mockResolveMrToken.mockReturnValue('glpat');
|
|
174
|
+
const { reviewCommand } = await import('./review.js');
|
|
175
|
+
await reviewCommand('.', defaultOptions({ pr: 3, mr: 7, outputFormat: 'sarif' }));
|
|
176
|
+
// The guard fires FIRST: the first recorded exit is the guard's non-zero exit
|
|
177
|
+
// (in production process.exit terminates here; the test mock lets it fall
|
|
178
|
+
// through, so we assert on the FIRST exit call specifically).
|
|
179
|
+
expect(exitSpy.mock.calls[0]?.[0]).toBe(1);
|
|
180
|
+
});
|
|
181
|
+
it('does NOT mask a review-found-issues exit: --mr success + FAILED review → exit 1', async () => {
|
|
182
|
+
mockReviewPipeline.mockResolvedValue({ ...passedResult(), status: 'FAILED' });
|
|
183
|
+
mockResolveMrToken.mockReturnValue('glpat');
|
|
184
|
+
mockPostSummaryComment.mockResolvedValue({ createdNativeId: 77, deletedNativeIds: [] });
|
|
185
|
+
const { reviewCommand } = await import('./review.js');
|
|
186
|
+
await reviewCommand('.', defaultOptions({ mr: 7, outputFormat: 'sarif' }));
|
|
187
|
+
expect(exitSpy).toHaveBeenCalledWith(1);
|
|
188
|
+
});
|
|
189
|
+
});
|
|
190
|
+
//# sourceMappingURL=review.mr-exit.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review.mr-exit.test.js","sourceRoot":"","sources":["../../src/commands/review.mr-exit.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SECURITY HYGIENE — before the CLI posts a review back to a forge (`--pr` GitHub
|
|
3
|
+
* PR / `--mr` GitLab MR), it discloses the DESTINATION HOST on stderr so the user
|
|
4
|
+
* sees where their token is going BEFORE the network POST fires.
|
|
5
|
+
*
|
|
6
|
+
* Rationale: the GitLab API base is derived from the git remote host, so a
|
|
7
|
+
* poisoned `origin` could exfiltrate GITLAB_TOKEN. Disclosing the REAL resolved
|
|
8
|
+
* host makes that visible.
|
|
9
|
+
*
|
|
10
|
+
* These tests assert:
|
|
11
|
+
* - the disclosure line is emitted to STDERR (console.error), NOT stdout
|
|
12
|
+
* (stdout is reserved for SARIF / JSON / markdown output)
|
|
13
|
+
* - the host is correct for --pr (api.github.com) and --mr (gitlab.com)
|
|
14
|
+
* - a self-hosted GitLab remote discloses THAT host (real resolution, not a
|
|
15
|
+
* mock) — this is the poisoned-origin-visible case
|
|
16
|
+
*
|
|
17
|
+
* For the GitLab path we deliberately use the REAL parseGitLabRemote +
|
|
18
|
+
* resolveGitLabApiBase (only the network seams are mocked) so the host shown is
|
|
19
|
+
* the genuinely-resolved destination.
|
|
20
|
+
*/
|
|
21
|
+
export {};
|
|
22
|
+
//# sourceMappingURL=review.postback-disclosure.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review.postback-disclosure.test.d.ts","sourceRoot":"","sources":["../../src/commands/review.postback-disclosure.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG"}
|