ssrwire 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/CHANGELOG.md +24 -1
  2. package/CONTRIBUTING.md +2 -1
  3. package/PUBLISHING.md +15 -15
  4. package/README.md +109 -6
  5. package/dist/audit-report.d.ts +8 -0
  6. package/dist/audit-report.d.ts.map +1 -0
  7. package/dist/audit-report.js +243 -0
  8. package/dist/audit-report.js.map +1 -0
  9. package/dist/audit.d.ts.map +1 -1
  10. package/dist/audit.js +2 -0
  11. package/dist/audit.js.map +1 -1
  12. package/dist/cli.d.ts.map +1 -1
  13. package/dist/cli.js +74 -9
  14. package/dist/cli.js.map +1 -1
  15. package/dist/compare.d.ts +6 -0
  16. package/dist/compare.d.ts.map +1 -0
  17. package/dist/compare.js +720 -0
  18. package/dist/compare.js.map +1 -0
  19. package/dist/comparison-reporters.d.ts +9 -0
  20. package/dist/comparison-reporters.d.ts.map +1 -0
  21. package/dist/comparison-reporters.js +223 -0
  22. package/dist/comparison-reporters.js.map +1 -0
  23. package/dist/config.d.ts.map +1 -1
  24. package/dist/config.js +16 -1
  25. package/dist/config.js.map +1 -1
  26. package/dist/index.d.ts +4 -1
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +3 -0
  29. package/dist/index.js.map +1 -1
  30. package/dist/redact.d.ts.map +1 -1
  31. package/dist/redact.js +1 -0
  32. package/dist/redact.js.map +1 -1
  33. package/dist/types.d.ts +83 -1
  34. package/dist/types.d.ts.map +1 -1
  35. package/examples/github-actions.yml +2 -2
  36. package/examples/ssrwire.config.yml +4 -2
  37. package/package.json +1 -1
  38. package/src/audit-report.ts +269 -0
  39. package/src/audit.ts +2 -0
  40. package/src/cli.ts +103 -11
  41. package/src/compare.ts +949 -0
  42. package/src/comparison-reporters.ts +276 -0
  43. package/src/config.ts +15 -1
  44. package/src/index.ts +27 -0
  45. package/src/redact.ts +1 -0
  46. package/src/types.ts +97 -1
package/CHANGELOG.md CHANGED
@@ -5,6 +5,28 @@ All notable changes to SSRWire are documented here. The project follows
5
5
 
6
6
  ## [Unreleased]
7
7
 
8
+ ## [0.4.0] - 2026-09-01
9
+
10
+ ### Added
11
+
12
+ - Offline `ssrwire compare` for two redacted JSON audits, with stable target IDs
13
+ for matching the same route across production and preview origins.
14
+ - Regression, fixed, and neutral-change classification for policy findings,
15
+ completion, HTTP delivery, metadata values and locations, agent coverage, and
16
+ redirect evidence.
17
+ - Dual-floor median timing comparisons with configurable absolute and relative
18
+ thresholds.
19
+ - Terminal and deterministic JSON comparison reports plus a self-contained,
20
+ script-free HTML wire waterfall.
21
+ - Public comparison, report-validation, and comparison-reporter APIs.
22
+
23
+ ### Changed
24
+
25
+ - JSON audits now include an explicit `schemaVersion: 1` persisted-report
26
+ contract independent of the SSRWire package version.
27
+ - Target objects accept an optional unique `id`; exact URL matching remains the
28
+ fallback when an ID is absent.
29
+
8
30
  ## [0.3.0] - 2026-08-28
9
31
 
10
32
  ### Added
@@ -58,7 +80,8 @@ All notable changes to SSRWire are documented here. The project follows
58
80
  - Terminal, JSON, and SARIF reports with CI-safe exit codes.
59
81
  - YAML configuration, one-off URL checks, Docker support, and GitHub Actions examples.
60
82
 
61
- [Unreleased]: https://github.com/lame13/ssrwire/compare/v0.3.0...HEAD
83
+ [Unreleased]: https://github.com/lame13/ssrwire/compare/v0.4.0...HEAD
84
+ [0.4.0]: https://github.com/lame13/ssrwire/compare/v0.3.0...v0.4.0
62
85
  [0.3.0]: https://github.com/lame13/ssrwire/compare/v0.2.0...v0.3.0
63
86
  [0.2.0]: https://github.com/lame13/ssrwire/compare/v0.1.0...v0.2.0
64
87
  [0.1.0]: https://github.com/lame13/ssrwire/releases/tag/v0.1.0
package/CONTRIBUTING.md CHANGED
@@ -26,13 +26,14 @@ before opening a pull request, then run `npm run check` again.
26
26
  Keep each change narrow. Include tests for behavior changes, especially for:
27
27
 
28
28
  - response chunk boundaries and elements split across chunks;
29
+ - persisted audit-report validation, target matching, and comparison classification;
29
30
  - redirects, timeouts, aborted bodies, and size limits;
30
31
  - malformed, duplicated, late, or body-located metadata;
31
32
  - Open Graph and Twitter Card requirements, fallbacks, arrays, and URL values;
32
33
  - user-agent differences and comparison findings;
33
34
  - repeated-sample ordering, aggregation, and instability classification;
34
35
  - redaction of configured header values;
35
- - terminal, JSON, SARIF, and exit-code behavior.
36
+ - terminal, JSON, SARIF, comparison HTML, and exit-code behavior.
36
37
 
37
38
  Do not make timing tests depend on exact millisecond values. Shared runners and
38
39
  local machines have unavoidable scheduling variance. Test ordering,
package/PUBLISHING.md CHANGED
@@ -1,4 +1,4 @@
1
- # Publish SSRWire 0.3.0 from a local machine
1
+ # Publish SSRWire 0.4.0 from a local machine
2
2
 
3
3
  This repository intentionally includes no npm publishing workflow. Publish from
4
4
  a foreground local terminal only after the GitHub `CI` workflow passes. Do not
@@ -10,7 +10,7 @@ request, and do not use an administrator bypass or a direct push to `main`.
10
10
 
11
11
  ## 1. Update the existing repository
12
12
 
13
- Work from a clean clone of the existing public repository. Copy the 0.3.0
13
+ Work from a clean clone of the existing public repository. Copy the 0.4.0
14
14
  source files into that clone while preserving its `.git` directory.
15
15
 
16
16
  ```bash
@@ -18,7 +18,7 @@ cd ssrwire
18
18
  git switch main
19
19
  git pull --ff-only origin main
20
20
  git status --short
21
- git switch -c release/0.3.0
21
+ git switch -c release/0.4.0
22
22
  ```
23
23
 
24
24
  `git status --short` must be empty before creating the release branch and
@@ -36,7 +36,7 @@ npm pack --dry-run
36
36
  node dist/bin.js --version
37
37
  ```
38
38
 
39
- The final command must print `0.3.0`. Inspect the dry-run file list. It must not
39
+ The final command must print `0.4.0`. Inspect the dry-run file list. It must not
40
40
  contain `.env`, `.github`, `node_modules`, `test`, ZIP files, or tarballs.
41
41
 
42
42
  Review the release diff and version references:
@@ -45,7 +45,7 @@ Review the release diff and version references:
45
45
  git diff --check
46
46
  git diff --stat
47
47
  git diff -- package.json package-lock.json CHANGELOG.md README.md PUBLISHING.md
48
- rg '0\.2\.0' README.md examples package.json package-lock.json scripts src test
48
+ rg '0\.3\.0' README.md examples package.json package-lock.json scripts src test
49
49
  ```
50
50
 
51
51
  The final search should return nothing. Historical entries in `CHANGELOG.md`
@@ -58,10 +58,10 @@ gh auth status -h github.com || gh auth login -h github.com --web
58
58
  git add --all
59
59
  git diff --cached --check
60
60
  git diff --cached --stat
61
- git commit -m "feat: release SSRWire 0.3.0"
62
- git push --set-upstream origin release/0.3.0
63
- gh pr create --base main --head release/0.3.0 --fill
64
- PR_NUMBER="$(gh pr view release/0.3.0 --json number --jq .number)"
61
+ git commit -m "feat: release SSRWire 0.4.0"
62
+ git push --set-upstream origin release/0.4.0
63
+ gh pr create --base main --head release/0.4.0 --fill
64
+ PR_NUMBER="$(gh pr view release/0.4.0 --json number --jq .number)"
65
65
  test -n "$PR_NUMBER"
66
66
  gh pr checks "$PR_NUMBER" --watch --fail-fast
67
67
  ```
@@ -102,8 +102,8 @@ npm config get registry
102
102
  npm config get provenance
103
103
  ```
104
104
 
105
- The published version and `latest` tag must still be `0.2.0`. If npm already
106
- reports `0.3.0`, stop: never reuse a version that npm accepted.
105
+ The published version and `latest` tag must still be `0.3.0`. If npm already
106
+ reports `0.4.0`, stop: never reuse a version that npm accepted.
107
107
 
108
108
  In the npm package settings, select **Require two-factor authentication and
109
109
  disallow tokens**. npm documents this as the strongest package publishing
@@ -132,7 +132,7 @@ or add an npm credential to the repository or GitHub Actions. The package-level
132
132
  "disallow tokens" setting ensures that publication remains interactive.
133
133
 
134
134
  If npm's publish-time scanning delays package visibility, wait. Do not publish
135
- `0.3.0` again or change the tag to work around propagation.
135
+ `0.4.0` again or change the tag to work around propagation.
136
136
 
137
137
  ## 6. Tag the exact published commit
138
138
 
@@ -140,9 +140,9 @@ If npm's publish-time scanning delays package visibility, wait. Do not publish
140
140
  node scripts/clean.mjs
141
141
  rm -rf node_modules/.vite
142
142
  git status --short
143
- git tag -a v0.3.0 -m "SSRWire v0.3.0"
144
- git push origin v0.3.0
145
- gh release create v0.3.0 --generate-notes --title "SSRWire v0.3.0"
143
+ git tag -a v0.4.0 -m "SSRWire v0.4.0"
144
+ git push origin v0.4.0
145
+ gh release create v0.4.0 --generate-notes --title "SSRWire v0.4.0"
146
146
  ```
147
147
 
148
148
  `git status --short` must print nothing before tagging.
package/README.md CHANGED
@@ -85,6 +85,65 @@ npx ssrwire check \
85
85
  The root command and `check` are equivalent, so `npx ssrwire URL` is the short
86
86
  form of `npx ssrwire check URL`.
87
87
 
88
+ ## Compare deployments
89
+
90
+ SSRWire can compare two JSON audits without making more network requests. Give
91
+ the same logical target a stable `id` in each environment so reports can match
92
+ across different origins:
93
+
94
+ ```yaml
95
+ # production.yml
96
+ targets:
97
+ - id: home
98
+ url: https://www.example.com/
99
+ - id: pricing
100
+ url: https://www.example.com/pricing/
101
+ ```
102
+
103
+ ```yaml
104
+ # preview.yml
105
+ targets:
106
+ - id: home
107
+ url: https://preview.example.net/
108
+ - id: pricing
109
+ url: https://preview.example.net/pricing/
110
+ ```
111
+
112
+ Capture and compare the already-redacted reports:
113
+
114
+ ```bash
115
+ npx ssrwire check --config production.yml --format json --output production.json
116
+ npx ssrwire check --config preview.yml --format json --output preview.json
117
+
118
+ npx ssrwire compare production.json preview.json
119
+ npx ssrwire compare production.json preview.json \
120
+ --format html \
121
+ --output ssrwire-diff.html
122
+ ```
123
+
124
+ The comparison classifies candidate-only warning/error findings and newly
125
+ incomplete probes as regressions, resolved findings and material timing
126
+ improvements as fixed, and response or metadata differences as neutral changes.
127
+ A metadata change becomes a regression when it causes a candidate policy
128
+ finding, such as required metadata disappearing or head-only crawler metadata
129
+ moving into the body.
130
+
131
+ Timing regressions use per-agent medians and require both an absolute increase
132
+ over 250 ms and a relative increase over 25% by default. Both floors are
133
+ configurable on `compare`; small timing differences remain visible in the HTML
134
+ waterfall without making CI noisy. `--fail-on regression` is the comparison
135
+ default, while `--fail-on never` always exits successfully after valid reports
136
+ are compared.
137
+
138
+ The HTML report is one self-contained, script-free file with synchronized
139
+ baseline and candidate milestones. It never embeds raw response HTML. SSRWire
140
+ does not create or update baseline files automatically.
141
+
142
+ Reports without target IDs match by exact target URL. IDs must be unique within
143
+ one report, so an ID mismatch is shown as one removed and one added target
144
+ instead of being guessed. Comparison requires the explicit `schemaVersion: 1`
145
+ audit contract emitted by SSRWire 0.4.0.
146
+
88
147
  ## What it observes
89
148
 
90
149
  For each target, agent, and configured sample, SSRWire captures:
@@ -208,7 +267,8 @@ takes precedence.
208
267
 
209
268
  ```yaml
210
269
  targets:
211
- - url: https://example.com/
270
+ - id: home
271
+ url: https://example.com/
212
272
  expectedStatus: 200
213
273
  expectedFinalUrl: https://example.com/
214
274
  require:
@@ -222,7 +282,8 @@ targets:
222
282
  maxFirstByteMs: 1200
223
283
  maxCriticalMs: 2500
224
284
 
225
- - url: https://example.com/not-found/
285
+ - id: not-found
286
+ url: https://example.com/not-found/
226
287
  expectedStatus: [404]
227
288
  require:
228
289
  title: true
@@ -256,6 +317,10 @@ targets:
256
317
  - https://example.com/pricing/
257
318
  ```
258
319
 
320
+ Use the object form with a stable `id` when reports from different origins will
321
+ be compared. IDs are 1–64 ASCII letters, digits, dots, underscores, or hyphens,
322
+ and must start with a letter or digit.
323
+
259
324
  Defaults:
260
325
 
261
326
  - expected status: `200`;
@@ -365,6 +430,7 @@ dynamic values commonly change source HTML.
365
430
  ```text
366
431
  ssrwire [urls...] [options]
367
432
  ssrwire check [urls...] [options]
433
+ ssrwire compare <baseline.json> <candidate.json> [options]
368
434
  ssrwire init [path] [--force]
369
435
  ```
370
436
 
@@ -387,6 +453,17 @@ Check options:
387
453
  Config-file targets and CLI URLs are combined, with exact duplicate URLs
388
454
  removed.
389
455
 
456
+ Comparison options:
457
+
458
+ | Option | Purpose |
459
+ |---|---|
460
+ | `-f, --format <format>` | `terminal`, `json`, or self-contained `html` |
461
+ | `-o, --output <path>` | Write the comparison to a file |
462
+ | `--fail-on <level>` | `regression` or `never` |
463
+ | `--timing-regression-ms <ms>` | Absolute median slowdown floor; default `250` |
464
+ | `--timing-regression-percent <percent>` | Relative median slowdown floor; default `25` |
465
+ | `--no-color` | Disable terminal color |
466
+
390
467
  ## Reports and exit codes
391
468
 
392
469
  - `terminal`: compact sample, social-readiness, aggregate-timing, and finding
@@ -395,6 +472,8 @@ removed.
395
472
  signal plus repeated-run stability summaries.
396
473
  - `sarif`: findings suitable for GitHub Code Scanning and other SARIF 2.1.0
397
474
  consumers.
475
+ - comparison `html`: a script-free deployment summary and per-agent wire
476
+ waterfall suitable for a CI artifact.
398
477
 
399
478
  Exit codes are stable:
400
479
 
@@ -402,7 +481,11 @@ Exit codes are stable:
402
481
  - `1`: the run completed but crossed the `--fail-on` threshold;
403
482
  - `2`: configuration/setup failure or incomplete probe evidence.
404
483
 
405
- `--fail-on never` suppresses policy failures, but it never converts an
484
+ For `compare`, exit `1` means at least one regression was introduced under the
485
+ default policy, while invalid or unreadable reports use exit `2`. Neutral
486
+ changes and fixed findings do not fail comparison.
487
+
488
+ `check --fail-on never` suppresses policy failures, but it never converts an
406
489
  incomplete probe into a pass.
407
490
 
408
491
  ## GitHub Actions
@@ -460,9 +543,29 @@ const audit = await runAudit(config);
460
543
  process.stdout.write(renderJson(audit));
461
544
  ```
462
545
 
463
- Treat the JSON report's top-level `version` as the SSRWire software version,
464
- not a promise that every nested field will remain unchanged across major
465
- versions.
546
+ Comparisons use the same primitives as the CLI:
547
+
548
+ ```ts
549
+ import { readFile } from "node:fs/promises";
550
+ import {
551
+ compareAudits,
552
+ parseAuditReportText,
553
+ renderComparisonHtml,
554
+ } from "ssrwire";
555
+
556
+ const [baselineJson, candidateJson] = await Promise.all([
557
+ readFile("production.json", "utf8"),
558
+ readFile("preview.json", "utf8"),
559
+ ]);
560
+ const baseline = parseAuditReportText(baselineJson, "baseline audit report");
561
+ const candidate = parseAuditReportText(candidateJson, "candidate audit report");
562
+ const comparison = compareAudits(baseline, candidate);
563
+ const html = renderComparisonHtml(comparison);
564
+ ```
565
+
566
+ The JSON report's top-level `version` is the SSRWire software version.
567
+ `schemaVersion` separately identifies the persisted report contract used by
568
+ offline comparison.
466
569
 
467
570
  ## Scope
468
571
 
@@ -0,0 +1,8 @@
1
+ import type { AuditResult } from "./types.js";
2
+ export declare const AUDIT_SCHEMA_VERSION: 1;
3
+ export declare class AuditReportError extends Error {
4
+ constructor(message: string);
5
+ }
6
+ export declare function parseAuditReport(value: unknown, source?: string): AuditResult;
7
+ export declare function parseAuditReportText(text: string, source?: string): AuditResult;
8
+ //# sourceMappingURL=audit-report.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-report.d.ts","sourceRoot":"","sources":["../src/audit-report.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,eAAO,MAAM,oBAAoB,EAAG,CAAU,CAAC;AA4O/C,qBAAa,gBAAiB,SAAQ,KAAK;gBACtB,OAAO,EAAE,MAAM;CAInC;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,SAAiB,GAAG,WAAW,CAYrF;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,SAAiB,GAAG,WAAW,CAQvF"}
@@ -0,0 +1,243 @@
1
+ import { z } from "zod";
2
+ export const AUDIT_SCHEMA_VERSION = 1;
3
+ const nonNegativeNumber = z.number().finite().nonnegative();
4
+ const nonNegativeInteger = z.number().int().nonnegative();
5
+ const elementLocation = z.enum(["head", "body", "document"]);
6
+ const severity = z.enum(["info", "warning", "error"]);
7
+ const timingMark = z
8
+ .object({
9
+ atMs: nonNegativeNumber,
10
+ observedByByte: nonNegativeInteger,
11
+ })
12
+ .strict();
13
+ const elementSignal = timingMark
14
+ .extend({
15
+ value: z.string(),
16
+ location: elementLocation,
17
+ })
18
+ .strict();
19
+ const robotsSignal = elementSignal
20
+ .extend({ audience: z.enum(["robots", "googlebot", "bingbot"]) })
21
+ .strict();
22
+ const socialMetadataSignal = elementSignal
23
+ .extend({
24
+ property: z.enum([
25
+ "og:title",
26
+ "og:type",
27
+ "og:url",
28
+ "og:image",
29
+ "og:description",
30
+ "twitter:card",
31
+ "twitter:title",
32
+ "twitter:description",
33
+ "twitter:image",
34
+ ]),
35
+ })
36
+ .strict();
37
+ const jsonLdSignal = timingMark
38
+ .extend({
39
+ location: elementLocation,
40
+ valid: z.boolean().optional(),
41
+ types: z.array(z.string()),
42
+ bytes: nonNegativeInteger,
43
+ analysisLimit: z.string().optional(),
44
+ error: z.string().optional(),
45
+ })
46
+ .strict();
47
+ const documentSignals = z
48
+ .object({
49
+ title: elementSignal.optional(),
50
+ titles: z.array(elementSignal).optional(),
51
+ descriptions: z.array(elementSignal),
52
+ canonicals: z.array(elementSignal),
53
+ robots: z.array(robotsSignal),
54
+ socialMetadata: z.array(socialMetadataSignal).optional(),
55
+ h1s: z.array(elementSignal),
56
+ firstMainText: elementSignal.optional(),
57
+ jsonLd: z.array(jsonLdSignal),
58
+ headClosed: timingMark.optional(),
59
+ bodyStarted: timingMark.optional(),
60
+ documentClosed: timingMark.optional(),
61
+ })
62
+ .strict();
63
+ const agentProfile = z
64
+ .object({
65
+ key: z.string().min(1),
66
+ label: z.string().min(1),
67
+ userAgent: z.string(),
68
+ requiresHeadMetadata: z.boolean(),
69
+ })
70
+ .strict();
71
+ const redirectHop = z
72
+ .object({
73
+ url: z.string(),
74
+ status: z.number().int().min(100).max(599),
75
+ location: z.string(),
76
+ durationMs: nonNegativeNumber,
77
+ })
78
+ .strict();
79
+ const headerSnapshot = z
80
+ .object({
81
+ values: z.record(z.string(), z.string()),
82
+ setCookiePresent: z.boolean(),
83
+ })
84
+ .strict();
85
+ const probeTimings = z
86
+ .object({
87
+ headersMs: nonNegativeNumber,
88
+ firstByteMs: nonNegativeNumber.optional(),
89
+ completeMs: nonNegativeNumber.optional(),
90
+ })
91
+ .strict();
92
+ const probeResult = z
93
+ .object({
94
+ requestedUrl: z.string(),
95
+ finalUrl: z.string(),
96
+ agent: agentProfile,
97
+ status: z.number().int().min(100).max(599).optional(),
98
+ redirects: z.array(redirectHop),
99
+ headers: headerSnapshot,
100
+ timings: probeTimings,
101
+ bytesRead: nonNegativeInteger,
102
+ bodySha256: z.string().optional(),
103
+ signals: documentSignals,
104
+ completion: z.enum([
105
+ "complete",
106
+ "max-bytes-exceeded",
107
+ "timeout",
108
+ "network-error",
109
+ "invalid-response",
110
+ ]),
111
+ error: z.string().optional(),
112
+ sample: z.number().int().positive().optional(),
113
+ })
114
+ .strict();
115
+ const targetExpectations = z
116
+ .object({
117
+ statuses: z.array(z.number().int().min(100).max(599)).min(1),
118
+ finalUrl: z.string().optional(),
119
+ requireTitle: z.boolean(),
120
+ requireDescription: z.boolean(),
121
+ requireCanonical: z.boolean(),
122
+ requireH1: z.boolean(),
123
+ requireMainText: z.boolean(),
124
+ requireOpenGraph: z.boolean().optional(),
125
+ requireTwitterCard: z.boolean().optional(),
126
+ maxFirstByteMs: z.number().positive().finite().optional(),
127
+ maxCriticalMs: z.number().positive().finite().optional(),
128
+ })
129
+ .strict();
130
+ const auditTarget = z
131
+ .object({
132
+ id: z.string().min(1).optional(),
133
+ url: z.string(),
134
+ expectations: targetExpectations,
135
+ })
136
+ .strict();
137
+ const timingStats = z
138
+ .object({
139
+ samples: nonNegativeInteger,
140
+ minMs: nonNegativeNumber,
141
+ medianMs: nonNegativeNumber,
142
+ p95Ms: nonNegativeNumber,
143
+ maxMs: nonNegativeNumber,
144
+ spreadMs: nonNegativeNumber,
145
+ })
146
+ .strict();
147
+ const stabilityTimings = z
148
+ .object({
149
+ headers: timingStats.optional(),
150
+ firstByte: timingStats.optional(),
151
+ criticalSignals: timingStats.optional(),
152
+ complete: timingStats.optional(),
153
+ })
154
+ .strict();
155
+ const stabilityVariants = z
156
+ .object({
157
+ completion: nonNegativeInteger,
158
+ status: nonNegativeInteger,
159
+ finalUrl: nonNegativeInteger,
160
+ redirectChain: nonNegativeInteger,
161
+ bodySha256: nonNegativeInteger,
162
+ metadataValues: nonNegativeInteger,
163
+ metadataLocations: nonNegativeInteger,
164
+ })
165
+ .strict();
166
+ const agentStability = z
167
+ .object({
168
+ agent: agentProfile,
169
+ samples: nonNegativeInteger,
170
+ complete: nonNegativeInteger,
171
+ incomplete: nonNegativeInteger,
172
+ timings: stabilityTimings,
173
+ variants: stabilityVariants,
174
+ })
175
+ .strict();
176
+ const finding = z
177
+ .object({
178
+ code: z.string().min(1),
179
+ severity,
180
+ message: z.string(),
181
+ url: z.string(),
182
+ agent: z.string().optional(),
183
+ evidence: z.record(z.string(), z.union([z.string(), z.number(), z.boolean()])).optional(),
184
+ })
185
+ .strict();
186
+ const targetAuditResult = z
187
+ .object({
188
+ target: auditTarget,
189
+ probes: z.array(probeResult),
190
+ findings: z.array(finding),
191
+ stability: z.array(agentStability).optional(),
192
+ })
193
+ .strict();
194
+ const auditSummary = z
195
+ .object({
196
+ targets: nonNegativeInteger,
197
+ probes: nonNegativeInteger,
198
+ errors: nonNegativeInteger,
199
+ warnings: nonNegativeInteger,
200
+ info: nonNegativeInteger,
201
+ incomplete: nonNegativeInteger,
202
+ })
203
+ .strict();
204
+ const auditReportSchema = z
205
+ .object({
206
+ schemaVersion: z.literal(AUDIT_SCHEMA_VERSION),
207
+ version: z.string().min(1),
208
+ generatedAt: z.string().min(1),
209
+ durationMs: nonNegativeNumber,
210
+ repeat: z.number().int().min(1).max(10).optional(),
211
+ results: z.array(targetAuditResult),
212
+ summary: auditSummary,
213
+ })
214
+ .strict();
215
+ export class AuditReportError extends Error {
216
+ constructor(message) {
217
+ super(message);
218
+ this.name = "AuditReportError";
219
+ }
220
+ }
221
+ export function parseAuditReport(value, source = "audit report") {
222
+ const parsed = auditReportSchema.safeParse(value);
223
+ if (!parsed.success) {
224
+ const detail = parsed.error.issues
225
+ .slice(0, 5)
226
+ .map((issue) => `${issue.path.join(".") || "report"}: ${issue.message}`)
227
+ .join("; ");
228
+ throw new AuditReportError(`Invalid ${source}: ${detail}`);
229
+ }
230
+ // The complete runtime schema above is the persisted counterpart of AuditResult.
231
+ return parsed.data;
232
+ }
233
+ export function parseAuditReportText(text, source = "audit report") {
234
+ let value;
235
+ try {
236
+ value = JSON.parse(text);
237
+ }
238
+ catch {
239
+ throw new AuditReportError(`Could not parse ${source} as JSON.`);
240
+ }
241
+ return parseAuditReport(value, source);
242
+ }
243
+ //# sourceMappingURL=audit-report.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-report.js","sourceRoot":"","sources":["../src/audit-report.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../src/audit.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,WAAW,EAIX,aAAa,EAEd,MAAM,YAAY,CAAC;AAgHpB,wBAAsB,QAAQ,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC,CAyE1E"}
1
+ {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../src/audit.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,WAAW,EAIX,aAAa,EAEd,MAAM,YAAY,CAAC;AAgHpB,wBAAsB,QAAQ,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC,CA0E1E"}
package/dist/audit.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import { analyzeTarget, summarizeAudit } from "./analyze.js";
2
+ import { AUDIT_SCHEMA_VERSION } from "./audit-report.js";
2
3
  import { probeUrl } from "./http-probe.js";
3
4
  import { redactAudit } from "./redact.js";
4
5
  import { analyzeStability } from "./stability.js";
@@ -132,6 +133,7 @@ export async function runAudit(config) {
132
133
  };
133
134
  });
134
135
  const audit = {
136
+ schemaVersion: AUDIT_SCHEMA_VERSION,
135
137
  version: VERSION,
136
138
  generatedAt: new Date().toISOString(),
137
139
  durationMs: Math.round(performance.now() - started),
package/dist/audit.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"audit.js","sourceRoot":"","sources":["../src/audit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"audit.js","sourceRoot":"","sources":["../src/audit.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAwKA,wBAAsB,IAAI,CAAC,IAAI,GAAE,SAAS,MAAM,EAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4ChF"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAiPA,wBAAsB,IAAI,CAAC,IAAI,GAAE,SAAS,MAAM,EAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CA+DhF"}