@vertaaux/cli 0.3.3 → 0.5.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/CHANGELOG.md +97 -0
- package/MIGRATION.md +239 -0
- package/README.md +34 -16
- package/dist/app/interactive-app.d.ts +101 -0
- package/dist/app/interactive-app.d.ts.map +1 -0
- package/dist/app/interactive-app.js +309 -0
- package/dist/app/layout/canvas.d.ts +23 -0
- package/dist/app/layout/canvas.d.ts.map +1 -0
- package/dist/app/layout/canvas.js +36 -0
- package/dist/app/layout/footer.d.ts +31 -0
- package/dist/app/layout/footer.d.ts.map +1 -0
- package/dist/app/layout/footer.js +41 -0
- package/dist/app/layout/header.d.ts +20 -0
- package/dist/app/layout/header.d.ts.map +1 -0
- package/dist/app/layout/header.js +27 -0
- package/dist/app/menu/categories.d.ts +20 -0
- package/dist/app/menu/categories.d.ts.map +1 -0
- package/dist/app/menu/categories.js +181 -0
- package/dist/app/menu/filter.d.ts +17 -0
- package/dist/app/menu/filter.d.ts.map +1 -0
- package/dist/app/menu/filter.js +33 -0
- package/dist/app/menu/menu-view.d.ts +35 -0
- package/dist/app/menu/menu-view.d.ts.map +1 -0
- package/dist/app/menu/menu-view.js +230 -0
- package/dist/app/menu/recent.d.ts +24 -0
- package/dist/app/menu/recent.d.ts.map +1 -0
- package/dist/app/menu/recent.js +49 -0
- package/dist/app/types.d.ts +43 -0
- package/dist/app/types.d.ts.map +1 -0
- package/dist/app/types.js +7 -0
- package/dist/app/views/command-runner.d.ts +36 -0
- package/dist/app/views/command-runner.d.ts.map +1 -0
- package/dist/app/views/command-runner.js +372 -0
- package/dist/app/views/help-overlay.d.ts +21 -0
- package/dist/app/views/help-overlay.d.ts.map +1 -0
- package/dist/app/views/help-overlay.js +45 -0
- package/dist/auth/ci-token.d.ts +14 -2
- package/dist/auth/ci-token.d.ts.map +1 -1
- package/dist/auth/ci-token.js +15 -30
- package/dist/auth/device-flow.d.ts +2 -1
- package/dist/auth/device-flow.d.ts.map +1 -1
- package/dist/auth/device-flow.js +13 -10
- package/dist/auth/token-store.d.ts.map +1 -1
- package/dist/auth/token-store.js +12 -2
- package/dist/baseline/diff.d.ts +2 -2
- package/dist/baseline/diff.d.ts.map +1 -1
- package/dist/baseline/diff.js +15 -34
- package/dist/commands/a11y.d.ts +9 -0
- package/dist/commands/a11y.d.ts.map +1 -0
- package/dist/commands/a11y.js +76 -0
- package/dist/commands/audit/artifacts.d.ts +27 -0
- package/dist/commands/audit/artifacts.d.ts.map +1 -0
- package/dist/commands/audit/artifacts.js +158 -0
- package/dist/commands/audit/ci-detection.d.ts +18 -0
- package/dist/commands/audit/ci-detection.d.ts.map +1 -0
- package/dist/commands/audit/ci-detection.js +71 -0
- package/dist/commands/audit/explain.d.ts +11 -0
- package/dist/commands/audit/explain.d.ts.map +1 -0
- package/dist/commands/audit/explain.js +45 -0
- package/dist/commands/audit/filters.d.ts +17 -0
- package/dist/commands/audit/filters.d.ts.map +1 -0
- package/dist/commands/audit/filters.js +40 -0
- package/dist/commands/audit/index.d.ts +18 -0
- package/dist/commands/audit/index.d.ts.map +1 -0
- package/dist/commands/audit/index.js +564 -0
- package/dist/commands/audit/output.d.ts +32 -0
- package/dist/commands/audit/output.d.ts.map +1 -0
- package/dist/commands/audit/output.js +130 -0
- package/dist/commands/audit/policy.d.ts +19 -0
- package/dist/commands/audit/policy.d.ts.map +1 -0
- package/dist/commands/audit/policy.js +102 -0
- package/dist/commands/audit/scoring.d.ts +23 -0
- package/dist/commands/audit/scoring.d.ts.map +1 -0
- package/dist/commands/audit/scoring.js +70 -0
- package/dist/commands/audit/types.d.ts +88 -0
- package/dist/commands/audit/types.d.ts.map +1 -0
- package/dist/commands/audit/types.js +8 -0
- package/dist/commands/audit.d.ts +2 -60
- package/dist/commands/audit.d.ts.map +1 -1
- package/dist/commands/audit.js +2 -1038
- package/dist/commands/baseline.d.ts +1 -0
- package/dist/commands/baseline.d.ts.map +1 -1
- package/dist/commands/baseline.js +205 -121
- package/dist/commands/comment.d.ts +22 -0
- package/dist/commands/comment.d.ts.map +1 -1
- package/dist/commands/comment.js +122 -58
- package/dist/commands/compare.d.ts +17 -0
- package/dist/commands/compare.d.ts.map +1 -1
- package/dist/commands/compare.js +287 -180
- package/dist/commands/diff.d.ts +5 -0
- package/dist/commands/diff.d.ts.map +1 -1
- package/dist/commands/diff.js +168 -141
- package/dist/commands/doc.d.ts +10 -0
- package/dist/commands/doc.d.ts.map +1 -1
- package/dist/commands/doc.js +134 -76
- package/dist/commands/doctor.d.ts +2 -0
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +164 -17
- package/dist/commands/download.d.ts +10 -0
- package/dist/commands/download.d.ts.map +1 -1
- package/dist/commands/download.js +169 -112
- package/dist/commands/explain.d.ts +5 -0
- package/dist/commands/explain.d.ts.map +1 -1
- package/dist/commands/explain.js +241 -155
- package/dist/commands/fix-all.d.ts +25 -0
- package/dist/commands/fix-all.d.ts.map +1 -0
- package/dist/commands/fix-all.js +206 -0
- package/dist/commands/fix-plan.d.ts +9 -0
- package/dist/commands/fix-plan.d.ts.map +1 -1
- package/dist/commands/fix-plan.js +152 -89
- package/dist/commands/fix.d.ts +17 -0
- package/dist/commands/fix.d.ts.map +1 -0
- package/dist/commands/fix.js +111 -0
- package/dist/commands/init.d.ts +11 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +94 -42
- package/dist/commands/login.d.ts +18 -0
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +268 -95
- package/dist/commands/patch-review.d.ts +11 -0
- package/dist/commands/patch-review.d.ts.map +1 -1
- package/dist/commands/patch-review.js +159 -97
- package/dist/commands/policy.d.ts +31 -0
- package/dist/commands/policy.d.ts.map +1 -1
- package/dist/commands/policy.js +269 -124
- package/dist/commands/release-notes.d.ts +10 -0
- package/dist/commands/release-notes.d.ts.map +1 -1
- package/dist/commands/release-notes.js +127 -73
- package/dist/commands/scan.d.ts +13 -0
- package/dist/commands/scan.d.ts.map +1 -0
- package/dist/commands/scan.js +133 -0
- package/dist/commands/status.d.ts +9 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +81 -0
- package/dist/commands/suggest.d.ts +10 -0
- package/dist/commands/suggest.d.ts.map +1 -1
- package/dist/commands/suggest.js +153 -82
- package/dist/commands/triage.d.ts +35 -0
- package/dist/commands/triage.d.ts.map +1 -1
- package/dist/commands/triage.js +206 -81
- package/dist/commands/upload.d.ts +9 -0
- package/dist/commands/upload.d.ts.map +1 -1
- package/dist/commands/upload.js +140 -101
- package/dist/commands/verify.d.ts +13 -0
- package/dist/commands/verify.d.ts.map +1 -0
- package/dist/commands/verify.js +118 -0
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +125 -990
- package/dist/interactive/fix-wizard.d.ts +3 -0
- package/dist/interactive/fix-wizard.d.ts.map +1 -1
- package/dist/interactive/fix-wizard.js +130 -112
- package/dist/interactive/init-wizard.d.ts +3 -1
- package/dist/interactive/init-wizard.d.ts.map +1 -1
- package/dist/interactive/init-wizard.js +207 -138
- package/dist/interactive/prompts.d.ts +7 -3
- package/dist/interactive/prompts.d.ts.map +1 -1
- package/dist/interactive/prompts.js +44 -23
- package/dist/output/envelope.d.ts +2 -0
- package/dist/output/envelope.d.ts.map +1 -1
- package/dist/output/envelope.js +18 -2
- package/dist/output/factory.d.ts +9 -1
- package/dist/output/factory.d.ts.map +1 -1
- package/dist/output/html.d.ts +2 -1
- package/dist/output/html.d.ts.map +1 -1
- package/dist/output/html.js +3 -2
- package/dist/output/human.d.ts +9 -1
- package/dist/output/human.d.ts.map +1 -1
- package/dist/output/human.js +17 -2
- package/dist/output/json.d.ts +2 -1
- package/dist/output/json.d.ts.map +1 -1
- package/dist/output/junit.d.ts +2 -1
- package/dist/output/junit.d.ts.map +1 -1
- package/dist/output/sarif.d.ts +2 -1
- package/dist/output/sarif.d.ts.map +1 -1
- package/dist/types.d.ts +74 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/ui/banner.d.ts +34 -0
- package/dist/ui/banner.d.ts.map +1 -1
- package/dist/ui/banner.js +97 -5
- package/dist/ui/diagnostics.d.ts +9 -4
- package/dist/ui/diagnostics.d.ts.map +1 -1
- package/dist/ui/diagnostics.js +32 -82
- package/dist/ui/strings.d.ts +373 -0
- package/dist/ui/strings.d.ts.map +1 -0
- package/dist/ui/strings.js +499 -0
- package/dist/ui/table.d.ts +0 -2
- package/dist/ui/table.d.ts.map +1 -1
- package/dist/ui/table.js +3 -4
- package/dist/utils/api-client.d.ts +46 -0
- package/dist/utils/api-client.d.ts.map +1 -0
- package/dist/utils/api-client.js +170 -0
- package/dist/utils/client.d.ts +29 -18
- package/dist/utils/client.d.ts.map +1 -1
- package/dist/utils/client.js +102 -12
- package/dist/utils/formatters.d.ts +38 -0
- package/dist/utils/formatters.d.ts.map +1 -0
- package/dist/utils/formatters.js +277 -0
- package/dist/utils/local-capture.d.ts +25 -0
- package/dist/utils/local-capture.d.ts.map +1 -0
- package/dist/utils/local-capture.js +57 -0
- package/dist/utils/url-classify.d.ts +18 -0
- package/dist/utils/url-classify.d.ts.map +1 -0
- package/dist/utils/url-classify.js +106 -0
- package/node_modules/@vertaaux/tui/dist/index.cjs +713 -20
- package/node_modules/@vertaaux/tui/dist/index.cjs.map +1 -1
- package/node_modules/@vertaaux/tui/dist/index.d.cts +361 -4
- package/node_modules/@vertaaux/tui/dist/index.d.ts +361 -4
- package/node_modules/@vertaaux/tui/dist/index.js +689 -21
- package/node_modules/@vertaaux/tui/dist/index.js.map +1 -1
- package/package.json +13 -5
- package/dist/commands/client.d.ts +0 -14
- package/dist/commands/client.d.ts.map +0 -1
- package/dist/commands/client.js +0 -362
- package/dist/commands/drift.d.ts +0 -15
- package/dist/commands/drift.d.ts.map +0 -1
- package/dist/commands/drift.js +0 -309
- package/dist/commands/protect.d.ts +0 -16
- package/dist/commands/protect.d.ts.map +0 -1
- package/dist/commands/protect.js +0 -323
- package/dist/commands/report.d.ts +0 -15
- package/dist/commands/report.d.ts.map +0 -1
- package/dist/commands/report.js +0 -214
- package/dist/policy/sync.d.ts +0 -67
- package/dist/policy/sync.d.ts.map +0 -1
- package/dist/policy/sync.js +0 -147
package/dist/output/html.js
CHANGED
|
@@ -22,10 +22,11 @@ function normalizeIssues(issues) {
|
|
|
22
22
|
function getOverallScore(scores) {
|
|
23
23
|
if (!scores)
|
|
24
24
|
return null;
|
|
25
|
-
const
|
|
25
|
+
const s = scores;
|
|
26
|
+
const direct = s.overall ?? s.ux ?? s.total;
|
|
26
27
|
if (typeof direct === "number" && Number.isFinite(direct))
|
|
27
28
|
return direct;
|
|
28
|
-
const numeric = Object.values(
|
|
29
|
+
const numeric = Object.values(s)
|
|
29
30
|
.filter((v) => typeof v === "number" && Number.isFinite(v));
|
|
30
31
|
if (numeric.length === 0)
|
|
31
32
|
return null;
|
package/dist/output/human.d.ts
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* Outputs audit results as colorful, formatted text for terminal display.
|
|
5
5
|
* Delegates to @vertaaux/tui for consistent rendering.
|
|
6
6
|
*/
|
|
7
|
+
import type { AuditScores } from "@vertaaux/sdk";
|
|
7
8
|
import { type FormatTableOptions } from "../ui/table.js";
|
|
8
9
|
export interface AuditResult {
|
|
9
10
|
job_id?: string;
|
|
@@ -14,9 +15,16 @@ export interface AuditResult {
|
|
|
14
15
|
created_at?: string;
|
|
15
16
|
started_at?: string;
|
|
16
17
|
completed_at?: string;
|
|
17
|
-
scores?: Record<string, unknown>;
|
|
18
|
+
scores?: AuditScores | Record<string, unknown>;
|
|
18
19
|
issues?: unknown;
|
|
19
20
|
error?: string;
|
|
21
|
+
analysis_type?: string;
|
|
22
|
+
metadata?: {
|
|
23
|
+
partial?: boolean;
|
|
24
|
+
source?: string;
|
|
25
|
+
unavailable_checks?: string[];
|
|
26
|
+
[key: string]: unknown;
|
|
27
|
+
};
|
|
20
28
|
}
|
|
21
29
|
export interface FormatHumanOptions {
|
|
22
30
|
groupBy?: "severity" | "category" | "route";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"human.d.ts","sourceRoot":"","sources":["../../src/output/human.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,OAAO,EAOL,KAAK,kBAAkB,EACxB,MAAM,gBAAgB,CAAC;AAExB,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"human.d.ts","sourceRoot":"","sources":["../../src/output/human.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAOL,KAAK,kBAAkB,EACxB,MAAM,gBAAgB,CAAC;AAExB,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE;QACT,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;QAC9B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;CACH;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,UAAU,GAAG,UAAU,GAAG,OAAO,CAAC;IAC5C,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,kBAAkB,CAAC;CACnC;AAwND;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,WAAW,EACnB,OAAO,GAAE,kBAAuB,GAC/B,MAAM,CA4DR"}
|
package/dist/output/human.js
CHANGED
|
@@ -24,10 +24,11 @@ function normalizeIssues(issues) {
|
|
|
24
24
|
function getOverallScore(scores) {
|
|
25
25
|
if (!scores)
|
|
26
26
|
return null;
|
|
27
|
-
const
|
|
27
|
+
const s = scores;
|
|
28
|
+
const direct = s.overall ?? s.ux ?? s.total;
|
|
28
29
|
if (typeof direct === "number" && Number.isFinite(direct))
|
|
29
30
|
return direct;
|
|
30
|
-
const numeric = Object.values(
|
|
31
|
+
const numeric = Object.values(s)
|
|
31
32
|
.filter((v) => typeof v === "number" && Number.isFinite(v));
|
|
32
33
|
if (numeric.length === 0)
|
|
33
34
|
return null;
|
|
@@ -198,5 +199,19 @@ export function formatAuditHuman(result, options = {}) {
|
|
|
198
199
|
if (showSummary) {
|
|
199
200
|
sections.push(formatSummary(issues, result.scores));
|
|
200
201
|
}
|
|
202
|
+
// Partial result annotation for local/static analysis audits
|
|
203
|
+
if (result.metadata?.partial || result.analysis_type === "static_html") {
|
|
204
|
+
const checks = result.metadata?.unavailable_checks ?? [];
|
|
205
|
+
const lines = [];
|
|
206
|
+
lines.push("");
|
|
207
|
+
lines.push(text.dim("─".repeat(Math.min(getTerminalWidth(), 80))));
|
|
208
|
+
lines.push(text.dim("This audit ran in static analysis mode (local URL)."));
|
|
209
|
+
if (checks.length > 0) {
|
|
210
|
+
lines.push(text.dim("Unavailable checks: " +
|
|
211
|
+
checks.map((c) => c.replace(/_/g, " ")).join(", ")));
|
|
212
|
+
}
|
|
213
|
+
lines.push(text.dim("Deploy to a public URL for a full browser-based audit."));
|
|
214
|
+
sections.push(lines.join("\n"));
|
|
215
|
+
}
|
|
201
216
|
return sections.join("\n") + "\n";
|
|
202
217
|
}
|
package/dist/output/json.d.ts
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* Outputs audit results as pretty-printed JSON.
|
|
5
5
|
* Used for piped output and machine parsing.
|
|
6
6
|
*/
|
|
7
|
+
import type { AuditScores } from "@vertaaux/sdk";
|
|
7
8
|
export interface AuditResult {
|
|
8
9
|
job_id?: string;
|
|
9
10
|
status?: string;
|
|
@@ -13,7 +14,7 @@ export interface AuditResult {
|
|
|
13
14
|
created_at?: string;
|
|
14
15
|
started_at?: string;
|
|
15
16
|
completed_at?: string;
|
|
16
|
-
scores?: Record<string, unknown>;
|
|
17
|
+
scores?: AuditScores | Record<string, unknown>;
|
|
17
18
|
issues?: unknown;
|
|
18
19
|
error?: string;
|
|
19
20
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../../src/output/json.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../../src/output/json.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,sCAAsC;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mCAAmC;IACnC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,WAAW,EACnB,OAAO,GAAE,iBAAsB,GAC9B,MAAM,CAeR;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,SAAI,GAAG,MAAM,CAE5D"}
|
package/dist/output/junit.d.ts
CHANGED
|
@@ -16,6 +16,7 @@ export interface JunitOptions {
|
|
|
16
16
|
/** Custom test suite name prefix */
|
|
17
17
|
suiteNamePrefix?: string;
|
|
18
18
|
}
|
|
19
|
+
import type { AuditScores } from "@vertaaux/sdk";
|
|
19
20
|
/**
|
|
20
21
|
* Audit result structure (matches factory.ts).
|
|
21
22
|
*/
|
|
@@ -28,7 +29,7 @@ export interface AuditResult {
|
|
|
28
29
|
created_at?: string;
|
|
29
30
|
started_at?: string;
|
|
30
31
|
completed_at?: string;
|
|
31
|
-
scores?: Record<string, unknown>;
|
|
32
|
+
scores?: AuditScores | Record<string, unknown>;
|
|
32
33
|
issues?: unknown;
|
|
33
34
|
error?: string;
|
|
34
35
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"junit.d.ts","sourceRoot":"","sources":["../../src/output/junit.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,2CAA2C;IAC3C,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,oCAAoC;IACpC,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"junit.d.ts","sourceRoot":"","sources":["../../src/output/junit.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,2CAA2C;IAC3C,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,oCAAoC;IACpC,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAqFD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,MAAM,CA+D/E;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,YAAY,CAAC;CACtB"}
|
package/dist/output/sarif.d.ts
CHANGED
|
@@ -118,6 +118,7 @@ export interface SarifOptions {
|
|
|
118
118
|
/** Working directory for invocation */
|
|
119
119
|
workingDirectory?: string;
|
|
120
120
|
}
|
|
121
|
+
import type { AuditScores } from "@vertaaux/sdk";
|
|
121
122
|
/**
|
|
122
123
|
* Audit result structure (matches factory.ts).
|
|
123
124
|
*/
|
|
@@ -130,7 +131,7 @@ export interface AuditResult {
|
|
|
130
131
|
created_at?: string;
|
|
131
132
|
started_at?: string;
|
|
132
133
|
completed_at?: string;
|
|
133
|
-
scores?: Record<string, unknown>;
|
|
134
|
+
scores?: AuditScores | Record<string, unknown>;
|
|
134
135
|
issues?: unknown;
|
|
135
136
|
error?: string;
|
|
136
137
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sarif.d.ts","sourceRoot":"","sources":["../../src/output/sarif.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"sarif.d.ts","sourceRoot":"","sources":["../../src/output/sarif.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared type definitions for the VertaaUX CLI.
|
|
3
|
+
* Used by legacy command handlers and utility functions.
|
|
4
|
+
*/
|
|
5
|
+
import type { Audit } from "@vertaaux/sdk";
|
|
6
|
+
export type FlagValue = string | boolean;
|
|
7
|
+
export type Flags = Record<string, FlagValue>;
|
|
8
|
+
export type IssueLike = {
|
|
9
|
+
id?: string;
|
|
10
|
+
title?: string;
|
|
11
|
+
severity?: string;
|
|
12
|
+
category?: string;
|
|
13
|
+
description?: string;
|
|
14
|
+
recommendation?: string;
|
|
15
|
+
recommended_fix?: string;
|
|
16
|
+
wcag_reference?: string;
|
|
17
|
+
selector?: string;
|
|
18
|
+
};
|
|
19
|
+
export type AuditResponse = Audit;
|
|
20
|
+
export type PatchResponse = {
|
|
21
|
+
success: boolean;
|
|
22
|
+
patch?: {
|
|
23
|
+
search: string;
|
|
24
|
+
replace: string;
|
|
25
|
+
confidence: {
|
|
26
|
+
label: string;
|
|
27
|
+
percentage: number;
|
|
28
|
+
};
|
|
29
|
+
classification: string;
|
|
30
|
+
explanation: string;
|
|
31
|
+
};
|
|
32
|
+
error?: {
|
|
33
|
+
code: string;
|
|
34
|
+
message: string;
|
|
35
|
+
};
|
|
36
|
+
timing_ms?: number;
|
|
37
|
+
};
|
|
38
|
+
export type BatchPatchResult = {
|
|
39
|
+
successes: Array<{
|
|
40
|
+
issueId: string;
|
|
41
|
+
patch: PatchResponse["patch"];
|
|
42
|
+
}>;
|
|
43
|
+
failures: Array<{
|
|
44
|
+
issueId: string;
|
|
45
|
+
reason: string;
|
|
46
|
+
details?: string;
|
|
47
|
+
}>;
|
|
48
|
+
totalRequested: number;
|
|
49
|
+
totalSkipped: number;
|
|
50
|
+
};
|
|
51
|
+
export type VerifyResponse = {
|
|
52
|
+
success: boolean;
|
|
53
|
+
verification?: {
|
|
54
|
+
issue_fixed: boolean;
|
|
55
|
+
regressions: Array<{
|
|
56
|
+
rule_id: string;
|
|
57
|
+
impact: string;
|
|
58
|
+
description: string;
|
|
59
|
+
}>;
|
|
60
|
+
score_delta: {
|
|
61
|
+
before: number;
|
|
62
|
+
after: number;
|
|
63
|
+
delta: number;
|
|
64
|
+
};
|
|
65
|
+
component_audited: string;
|
|
66
|
+
duration_ms: number;
|
|
67
|
+
error?: string;
|
|
68
|
+
};
|
|
69
|
+
error?: {
|
|
70
|
+
code: string;
|
|
71
|
+
message: string;
|
|
72
|
+
};
|
|
73
|
+
};
|
|
74
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAE3C,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;AACzC,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAE9C,MAAM,MAAM,SAAS,GAAG;IACtB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAIF,MAAM,MAAM,aAAa,GAAG,KAAK,CAAC;AAElC,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE;QACN,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAA;SAAE,CAAC;QAClD,cAAc,EAAE,MAAM,CAAC;QACvB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,SAAS,EAAE,KAAK,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;KAC/B,CAAC,CAAC;IACH,QAAQ,EAAE,KAAK,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;IACH,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE;QACb,WAAW,EAAE,OAAO,CAAC;QACrB,WAAW,EAAE,KAAK,CAAC;YACjB,OAAO,EAAE,MAAM,CAAC;YAChB,MAAM,EAAE,MAAM,CAAC;YACf,WAAW,EAAE,MAAM,CAAC;SACrB,CAAC,CAAC;QACH,WAAW,EAAE;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC;QAC9D,iBAAiB,EAAE,MAAM,CAAC;QAC1B,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3C,CAAC"}
|
package/dist/types.js
ADDED
package/dist/ui/banner.d.ts
CHANGED
|
@@ -3,6 +3,13 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Displays a compact arrow wedge in teal/mint gradient.
|
|
5
5
|
* Can be suppressed via --quiet, --no-banner, or non-TTY environments.
|
|
6
|
+
*
|
|
7
|
+
* animateBanner() plays a 3-frame entrance animation in TTY+color mode:
|
|
8
|
+
* Frame 1: dim ghost outline (75ms)
|
|
9
|
+
* Frame 2: normal teal/mint colors (75ms)
|
|
10
|
+
* Frame 3: full lime→cyan gradient (100ms hold)
|
|
11
|
+
* Falls back to static showBanner() when --no-color, NO_COLOR, TERM=dumb,
|
|
12
|
+
* or non-TTY.
|
|
6
13
|
*/
|
|
7
14
|
export interface BannerOptions {
|
|
8
15
|
/** CLI version to display */
|
|
@@ -12,6 +19,33 @@ export interface BannerOptions {
|
|
|
12
19
|
/** Whether --no-banner was passed */
|
|
13
20
|
noBanner?: boolean;
|
|
14
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* Frame 1: ghost/dim outline — all lines wrapped in dim().
|
|
24
|
+
* Structure: 5 content lines + "\n\n"
|
|
25
|
+
*/
|
|
26
|
+
export declare function buildFrame1(version: string, cwd: string): string;
|
|
27
|
+
/**
|
|
28
|
+
* Frame 2: normal colors — identical to current showBanner() color branch.
|
|
29
|
+
* TEAL art, MINT bold VertaaUX, dim cwd.
|
|
30
|
+
* Structure: 5 content lines + "\n\n"
|
|
31
|
+
*/
|
|
32
|
+
export declare function buildFrame2(version: string, cwd: string): string;
|
|
33
|
+
/**
|
|
34
|
+
* Frame 3: full gradient — ARROW_MARK + "VertaaUX" with applyGradient(), dim cwd.
|
|
35
|
+
* Structure: 5 content lines + "\n\n"
|
|
36
|
+
*/
|
|
37
|
+
export declare function buildFrame3(version: string, cwd: string): string;
|
|
38
|
+
/**
|
|
39
|
+
* Show the arrow-mark banner with a 3-frame entrance animation.
|
|
40
|
+
*
|
|
41
|
+
* Animation plays only in TTY + color + unicode environments.
|
|
42
|
+
* Falls back to static showBanner() otherwise.
|
|
43
|
+
*
|
|
44
|
+
* All output goes to process.stderr (stdout reserved for --format json).
|
|
45
|
+
*
|
|
46
|
+
* @param options - Banner display options
|
|
47
|
+
*/
|
|
48
|
+
export declare function animateBanner(options: BannerOptions): Promise<void>;
|
|
15
49
|
/**
|
|
16
50
|
* Show the arrow-mark banner with version and working directory.
|
|
17
51
|
*
|
package/dist/ui/banner.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"banner.d.ts","sourceRoot":"","sources":["../../src/ui/banner.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"banner.d.ts","sourceRoot":"","sources":["../../src/ui/banner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAoCH,MAAM,WAAW,aAAa;IAC5B,6BAA6B;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,uCAAuC;IACvC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,qCAAqC;IACrC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAID;;;GAGG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAShE;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAUhE;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAUhE;AAID;;;;;;;;;GASG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA4BzE;AAID;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CA+BvD;AAID;;;GAGG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAOnC"}
|
package/dist/ui/banner.js
CHANGED
|
@@ -3,10 +3,17 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Displays a compact arrow wedge in teal/mint gradient.
|
|
5
5
|
* Can be suppressed via --quiet, --no-banner, or non-TTY environments.
|
|
6
|
+
*
|
|
7
|
+
* animateBanner() plays a 3-frame entrance animation in TTY+color mode:
|
|
8
|
+
* Frame 1: dim ghost outline (75ms)
|
|
9
|
+
* Frame 2: normal teal/mint colors (75ms)
|
|
10
|
+
* Frame 3: full lime→cyan gradient (100ms hold)
|
|
11
|
+
* Falls back to static showBanner() when --no-color, NO_COLOR, TERM=dumb,
|
|
12
|
+
* or non-TTY.
|
|
6
13
|
*/
|
|
7
|
-
import
|
|
14
|
+
import { colorize, bold, dim, applyGradient, isColorEnabled, isTTY, supportsUnicode, cursor, screen, physicalRows, } from "@vertaaux/tui";
|
|
8
15
|
import { createRequire } from "module";
|
|
9
|
-
import {
|
|
16
|
+
import { shouldUseColor } from "../utils/detect-env.js";
|
|
10
17
|
// For JSON imports in ESM
|
|
11
18
|
const require = createRequire(import.meta.url);
|
|
12
19
|
// Arrow-mark ASCII art (compact 5-line wedge matching brand)
|
|
@@ -19,6 +26,90 @@ const ARROW_MARK = [
|
|
|
19
26
|
];
|
|
20
27
|
const TEAL = "#5EE4C4";
|
|
21
28
|
const MINT = "#90EECE";
|
|
29
|
+
/** Simple sleep helper for animation timing */
|
|
30
|
+
const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
|
|
31
|
+
// ── Frame builders (exported for testability) ────────────────────
|
|
32
|
+
/**
|
|
33
|
+
* Frame 1: ghost/dim outline — all lines wrapped in dim().
|
|
34
|
+
* Structure: 5 content lines + "\n\n"
|
|
35
|
+
*/
|
|
36
|
+
export function buildFrame1(version, cwd) {
|
|
37
|
+
const lines = [
|
|
38
|
+
`${dim(ARROW_MARK[0])} ${dim(`VertaaUX v${version}`)}`,
|
|
39
|
+
`${dim(ARROW_MARK[1])} ${dim(cwd)}`,
|
|
40
|
+
`${dim(ARROW_MARK[2])}`,
|
|
41
|
+
`${dim(ARROW_MARK[3])}`,
|
|
42
|
+
`${dim(ARROW_MARK[4])}`,
|
|
43
|
+
];
|
|
44
|
+
return lines.join("\n") + "\n\n";
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Frame 2: normal colors — identical to current showBanner() color branch.
|
|
48
|
+
* TEAL art, MINT bold VertaaUX, dim cwd.
|
|
49
|
+
* Structure: 5 content lines + "\n\n"
|
|
50
|
+
*/
|
|
51
|
+
export function buildFrame2(version, cwd) {
|
|
52
|
+
const logo = ARROW_MARK.map((line) => colorize(line, TEAL));
|
|
53
|
+
const lines = [
|
|
54
|
+
`${logo[0]} ${bold(colorize("VertaaUX", MINT))} v${version}`,
|
|
55
|
+
`${logo[1]} ${dim(cwd)}`,
|
|
56
|
+
`${logo[2]}`,
|
|
57
|
+
`${logo[3]}`,
|
|
58
|
+
`${logo[4]}`,
|
|
59
|
+
];
|
|
60
|
+
return lines.join("\n") + "\n\n";
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Frame 3: full gradient — ARROW_MARK + "VertaaUX" with applyGradient(), dim cwd.
|
|
64
|
+
* Structure: 5 content lines + "\n\n"
|
|
65
|
+
*/
|
|
66
|
+
export function buildFrame3(version, cwd) {
|
|
67
|
+
const logo = ARROW_MARK.map((line) => applyGradient(line));
|
|
68
|
+
const lines = [
|
|
69
|
+
`${logo[0]} ${bold(applyGradient("VertaaUX"))} v${version}`,
|
|
70
|
+
`${logo[1]} ${dim(cwd)}`,
|
|
71
|
+
`${logo[2]}`,
|
|
72
|
+
`${logo[3]}`,
|
|
73
|
+
`${logo[4]}`,
|
|
74
|
+
];
|
|
75
|
+
return lines.join("\n") + "\n\n";
|
|
76
|
+
}
|
|
77
|
+
// ── Animated banner ──────────────────────────────────────────────
|
|
78
|
+
/**
|
|
79
|
+
* Show the arrow-mark banner with a 3-frame entrance animation.
|
|
80
|
+
*
|
|
81
|
+
* Animation plays only in TTY + color + unicode environments.
|
|
82
|
+
* Falls back to static showBanner() otherwise.
|
|
83
|
+
*
|
|
84
|
+
* All output goes to process.stderr (stdout reserved for --format json).
|
|
85
|
+
*
|
|
86
|
+
* @param options - Banner display options
|
|
87
|
+
*/
|
|
88
|
+
export async function animateBanner(options) {
|
|
89
|
+
const { version, quiet = false, noBanner = false } = options;
|
|
90
|
+
// Static fallback: suppressed modes, non-TTY, no-color, dumb terminal
|
|
91
|
+
if (quiet || noBanner || !isTTY() || !isColorEnabled() || !supportsUnicode()) {
|
|
92
|
+
showBanner(options);
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
const cwd = process.cwd();
|
|
96
|
+
const termWidth = process.stderr.columns || 80;
|
|
97
|
+
// Frame 1: dim ghost
|
|
98
|
+
const f1 = buildFrame1(version, cwd);
|
|
99
|
+
process.stderr.write(f1);
|
|
100
|
+
await sleep(75);
|
|
101
|
+
// Frame 2: normal colors (overwrite in-place)
|
|
102
|
+
const rows1 = physicalRows(f1, termWidth);
|
|
103
|
+
const f2 = buildFrame2(version, cwd);
|
|
104
|
+
process.stderr.write(cursor.up(rows1) + screen.clearDown + f2);
|
|
105
|
+
await sleep(75);
|
|
106
|
+
// Frame 3: full gradient (overwrite in-place, hold 100ms)
|
|
107
|
+
const rows2 = physicalRows(f2, termWidth);
|
|
108
|
+
const f3 = buildFrame3(version, cwd);
|
|
109
|
+
process.stderr.write(cursor.up(rows2) + screen.clearDown + f3);
|
|
110
|
+
await sleep(100);
|
|
111
|
+
}
|
|
112
|
+
// ── Static banner ────────────────────────────────────────────────
|
|
22
113
|
/**
|
|
23
114
|
* Show the arrow-mark banner with version and working directory.
|
|
24
115
|
*
|
|
@@ -38,10 +129,10 @@ export function showBanner(options) {
|
|
|
38
129
|
const useColor = shouldUseColor();
|
|
39
130
|
const cwd = process.cwd();
|
|
40
131
|
if (useColor) {
|
|
41
|
-
const logo = ARROW_MARK.map((line) =>
|
|
132
|
+
const logo = ARROW_MARK.map((line) => colorize(line, TEAL));
|
|
42
133
|
const lines = [
|
|
43
|
-
`${logo[0]} ${
|
|
44
|
-
`${logo[1]} ${
|
|
134
|
+
`${logo[0]} ${bold(colorize("VertaaUX", MINT))} v${version}`,
|
|
135
|
+
`${logo[1]} ${dim(cwd)}`,
|
|
45
136
|
`${logo[2]}`,
|
|
46
137
|
`${logo[3]}`,
|
|
47
138
|
`${logo[4]}`,
|
|
@@ -59,6 +150,7 @@ export function showBanner(options) {
|
|
|
59
150
|
process.stderr.write(lines.join("\n") + "\n\n");
|
|
60
151
|
}
|
|
61
152
|
}
|
|
153
|
+
// ── Version helper ───────────────────────────────────────────────
|
|
62
154
|
/**
|
|
63
155
|
* Get version from package.json.
|
|
64
156
|
* Falls back to "0.0.0" if unable to read.
|
package/dist/ui/diagnostics.d.ts
CHANGED
|
@@ -6,6 +6,9 @@
|
|
|
6
6
|
*
|
|
7
7
|
* Integrates with Commander's configureOutput({ outputError }) hook
|
|
8
8
|
* to intercept and restyle all validation and argument errors.
|
|
9
|
+
*
|
|
10
|
+
* Delegates to renderError/renderWarning from @vertaaux/tui for
|
|
11
|
+
* consistent branded output across all error surfaces.
|
|
9
12
|
*/
|
|
10
13
|
export interface ValidationErrorOptions {
|
|
11
14
|
flag: string;
|
|
@@ -19,8 +22,10 @@ export interface ValidationErrorOptions {
|
|
|
19
22
|
/**
|
|
20
23
|
* Format a validation error with branded styling.
|
|
21
24
|
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
25
|
+
* Delegates to renderError() from @vertaaux/tui for the box border,
|
|
26
|
+
* then appends flag/value details as context lines.
|
|
27
|
+
*
|
|
28
|
+
* Plain mode is evaluated at call time (isPlainMode() inside renderError).
|
|
24
29
|
*/
|
|
25
30
|
export declare function formatValidationError(opts: ValidationErrorOptions): string;
|
|
26
31
|
/**
|
|
@@ -28,12 +33,12 @@ export declare function formatValidationError(opts: ValidationErrorOptions): str
|
|
|
28
33
|
*
|
|
29
34
|
* Commander passes raw error strings to configureOutput({ outputError }).
|
|
30
35
|
* This function parses them to extract flag/value information and applies
|
|
31
|
-
* branded formatting.
|
|
36
|
+
* branded formatting via renderError().
|
|
32
37
|
*
|
|
33
38
|
* InvalidArgumentError pattern:
|
|
34
39
|
* "error: option '--flag <arg>' argument 'value' is invalid. Detail"
|
|
35
40
|
*
|
|
36
|
-
* Other Commander errors (missing required, etc.) get
|
|
41
|
+
* Other Commander errors (missing required, etc.) get renderError treatment.
|
|
37
42
|
*/
|
|
38
43
|
export declare function formatCommanderError(rawMessage: string): string;
|
|
39
44
|
//# sourceMappingURL=diagnostics.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../src/ui/diagnostics.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../src/ui/diagnostics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AA8BH,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,sBAAsB,GAAG,MAAM,CAgC1E;AAMD;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAsC/D"}
|
package/dist/ui/diagnostics.js
CHANGED
|
@@ -6,96 +6,54 @@
|
|
|
6
6
|
*
|
|
7
7
|
* Integrates with Commander's configureOutput({ outputError }) hook
|
|
8
8
|
* to intercept and restyle all validation and argument errors.
|
|
9
|
+
*
|
|
10
|
+
* Delegates to renderError/renderWarning from @vertaaux/tui for
|
|
11
|
+
* consistent branded output across all error surfaces.
|
|
9
12
|
*/
|
|
10
|
-
import
|
|
11
|
-
import { shouldUseColor, isTTY, getTerminalWidth, } from "../utils/detect-env.js";
|
|
12
|
-
// ---------------------------------------------------------------------------
|
|
13
|
-
// Brand colors (matching banner.ts gradient)
|
|
14
|
-
// ---------------------------------------------------------------------------
|
|
15
|
-
const BRAND_ACCENT = "#78FFB4"; // Lime
|
|
16
|
-
const ERROR_COLOR = "#FF6B6B"; // Red
|
|
17
|
-
const HINT_COLOR = "#78FFB4"; // Brand lime for hints/suggestions
|
|
13
|
+
import { dim, isPlainMode, renderError, } from "@vertaaux/tui";
|
|
18
14
|
// ---------------------------------------------------------------------------
|
|
19
15
|
// Terminal capability detection
|
|
20
16
|
// ---------------------------------------------------------------------------
|
|
21
17
|
/**
|
|
22
18
|
* Determine if box-drawing characters and colors can be used.
|
|
23
|
-
* Returns false
|
|
19
|
+
* Returns false in plain mode (ASCII-only output).
|
|
24
20
|
*/
|
|
25
21
|
function canUseBoxDrawing() {
|
|
26
|
-
|
|
27
|
-
return false;
|
|
28
|
-
if (!shouldUseColor())
|
|
29
|
-
return false;
|
|
30
|
-
if (!isTTY())
|
|
31
|
-
return false;
|
|
32
|
-
return true;
|
|
22
|
+
return !isPlainMode();
|
|
33
23
|
}
|
|
34
24
|
/**
|
|
35
25
|
* Format a validation error with branded styling.
|
|
36
26
|
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
27
|
+
* Delegates to renderError() from @vertaaux/tui for the box border,
|
|
28
|
+
* then appends flag/value details as context lines.
|
|
29
|
+
*
|
|
30
|
+
* Plain mode is evaluated at call time (isPlainMode() inside renderError).
|
|
39
31
|
*/
|
|
40
32
|
export function formatValidationError(opts) {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Rich box-drawn error frame for TTY terminals with color support.
|
|
48
|
-
*/
|
|
49
|
-
function boxDrawnError(opts) {
|
|
50
|
-
const width = Math.min(getTerminalWidth(), 72);
|
|
51
|
-
const prefix = chalk.hex(BRAND_ACCENT).bold("vertaa");
|
|
52
|
-
const border = chalk.dim(" " + "\u2500".repeat(width - 4));
|
|
53
|
-
const pipe = chalk.dim(" \u2502");
|
|
54
|
-
const lines = [
|
|
55
|
-
`${prefix} ${chalk.hex(ERROR_COLOR).bold("error")}: ${opts.message}`,
|
|
56
|
-
border,
|
|
57
|
-
`${pipe} ${chalk.dim("flag:")} --${opts.flag}`,
|
|
58
|
-
`${pipe} ${chalk.dim("value:")} ${chalk.yellow(opts.value)}`,
|
|
33
|
+
// Build a rich context string with flag + value details
|
|
34
|
+
const contextParts = [
|
|
35
|
+
`flag: --${opts.flag}`,
|
|
36
|
+
`value: ${opts.value}`,
|
|
59
37
|
];
|
|
60
38
|
if (opts.suggestion) {
|
|
61
|
-
|
|
62
|
-
lines.push(`${pipe} ${chalk.hex(HINT_COLOR)("hint:")} Did you mean "${opts.suggestion}"?`);
|
|
39
|
+
contextParts.push(`hint: Did you mean "${opts.suggestion}"?`);
|
|
63
40
|
}
|
|
64
41
|
if (opts.validValues && opts.validValues.length > 0) {
|
|
65
|
-
|
|
42
|
+
contextParts.push(`valid: ${opts.validValues.join(", ")}`);
|
|
66
43
|
}
|
|
67
44
|
if (opts.hint) {
|
|
68
|
-
|
|
69
|
-
lines.push(`${pipe} ${chalk.dim(opts.hint)}`);
|
|
45
|
+
contextParts.push(opts.hint);
|
|
70
46
|
}
|
|
71
|
-
|
|
47
|
+
const context = contextParts.join("\n");
|
|
48
|
+
const base = renderError({
|
|
49
|
+
message: opts.message,
|
|
50
|
+
context,
|
|
51
|
+
suggestion: "vertaa <command> --help for all options",
|
|
52
|
+
});
|
|
72
53
|
if (opts.moreIssues && opts.moreIssues > 0) {
|
|
73
|
-
|
|
54
|
+
return base + "\n" + dim(` ...and ${opts.moreIssues} more issues`);
|
|
74
55
|
}
|
|
75
|
-
return
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* Plain text error for non-TTY, NO_COLOR, CI, or TERM=dumb environments.
|
|
79
|
-
*/
|
|
80
|
-
function plainTextError(opts) {
|
|
81
|
-
const lines = [
|
|
82
|
-
`error: ${opts.message}`,
|
|
83
|
-
` flag: --${opts.flag}`,
|
|
84
|
-
` value: ${opts.value}`,
|
|
85
|
-
];
|
|
86
|
-
if (opts.suggestion) {
|
|
87
|
-
lines.push(` hint: Did you mean "${opts.suggestion}"?`);
|
|
88
|
-
}
|
|
89
|
-
if (opts.validValues && opts.validValues.length > 0) {
|
|
90
|
-
lines.push(` valid: ${opts.validValues.join(", ")}`);
|
|
91
|
-
}
|
|
92
|
-
if (opts.hint) {
|
|
93
|
-
lines.push(` ${opts.hint}`);
|
|
94
|
-
}
|
|
95
|
-
if (opts.moreIssues && opts.moreIssues > 0) {
|
|
96
|
-
lines.push(` ...and ${opts.moreIssues} more issues`);
|
|
97
|
-
}
|
|
98
|
-
return lines.join("\n");
|
|
56
|
+
return base;
|
|
99
57
|
}
|
|
100
58
|
// ---------------------------------------------------------------------------
|
|
101
59
|
// Commander error formatting
|
|
@@ -105,12 +63,12 @@ function plainTextError(opts) {
|
|
|
105
63
|
*
|
|
106
64
|
* Commander passes raw error strings to configureOutput({ outputError }).
|
|
107
65
|
* This function parses them to extract flag/value information and applies
|
|
108
|
-
* branded formatting.
|
|
66
|
+
* branded formatting via renderError().
|
|
109
67
|
*
|
|
110
68
|
* InvalidArgumentError pattern:
|
|
111
69
|
* "error: option '--flag <arg>' argument 'value' is invalid. Detail"
|
|
112
70
|
*
|
|
113
|
-
* Other Commander errors (missing required, etc.) get
|
|
71
|
+
* Other Commander errors (missing required, etc.) get renderError treatment.
|
|
114
72
|
*/
|
|
115
73
|
export function formatCommanderError(rawMessage) {
|
|
116
74
|
// Strip leading "error: " prefix that Commander adds
|
|
@@ -137,17 +95,9 @@ export function formatCommanderError(rawMessage) {
|
|
|
137
95
|
hint: "Run vertaa <command> --help for all options",
|
|
138
96
|
});
|
|
139
97
|
}
|
|
140
|
-
// For other Commander errors:
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
`${prefix} ${errorLabel}: ${msg}`,
|
|
146
|
-
chalk.dim(" Run vertaa <command> --help for all options"),
|
|
147
|
-
].join("\n");
|
|
148
|
-
}
|
|
149
|
-
return [
|
|
150
|
-
`vertaa error: ${msg}`,
|
|
151
|
-
" Run vertaa <command> --help for all options",
|
|
152
|
-
].join("\n");
|
|
98
|
+
// For other Commander errors: use renderError with a help suggestion
|
|
99
|
+
return renderError({
|
|
100
|
+
message: msg,
|
|
101
|
+
suggestion: "vertaa <command> --help for all options",
|
|
102
|
+
});
|
|
153
103
|
}
|